a very good jj gui
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

remove old-gui and add screenshot

-12887
-133
apps/old-gui/.claude/skills/gpui/SKILL.md
··· 1 - --- 2 - name: gpui 3 - description: GPUI framework for building GPU-accelerated UIs in Rust. Use when working with GPUI, building Zed-like applications, or implementing complex UI components. 4 - --- 5 - 6 - # GPUI Framework 7 - 8 - GPUI is a hybrid immediate/retained-mode, GPU-accelerated UI framework from the Zed editor. 9 - 10 - ## Skill Components 11 - 12 - This skill is organized into focused modules: 13 - 14 - | Skill | Use When | 15 - |-------|----------| 16 - | `gpui-core` | App lifecycle, entities, contexts, subscriptions | 17 - | `gpui-elements` | Building UI with div, text, lists, custom elements | 18 - | `gpui-styling` | Flexbox layout, colors, theming, spacing | 19 - | `gpui-keyboard-actions` | Keyboard handling, actions, keybindings | 20 - | `gpui-async-windows` | Async tasks, multiple windows, modals | 21 - | `gpui-text-editing` | Text rendering, editing, diffs, syntax highlighting | 22 - | `gpui-advanced` | Context menus, drag/drop, animations, performance | 23 - 24 - ## Quick Reference 25 - 26 - ### Minimal App 27 - 28 - ```rust 29 - use gpui::*; 30 - 31 - fn main() { 32 - Application::new().run(|cx: &mut App| { 33 - cx.open_window(WindowOptions::default(), |window, cx| { 34 - cx.new(|_| MyView { count: 0 }) 35 - }).unwrap(); 36 - }); 37 - } 38 - 39 - struct MyView { count: usize } 40 - 41 - impl Render for MyView { 42 - fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 43 - div() 44 - .flex() 45 - .size_full() 46 - .justify_center() 47 - .items_center() 48 - .bg(cx.theme().colors().background) 49 - .child(format!("Count: {}", self.count)) 50 - } 51 - } 52 - ``` 53 - 54 - ### Common Patterns 55 - 56 - ```rust 57 - // Flexbox container 58 - div().flex().flex_col().gap_2().p_4() 59 - 60 - // Horizontal layout with centered items 61 - div().flex().flex_row().items_center().gap_2() 62 - 63 - // Full-size element 64 - div().size_full() 65 - 66 - // Theme colors 67 - .bg(cx.theme().colors().surface_background) 68 - .text_color(cx.theme().colors().text) 69 - .border_color(cx.theme().colors().border) 70 - 71 - // Interactive element 72 - div() 73 - .id("my-button") 74 - .cursor_pointer() 75 - .on_click(cx.listener(|this, _, window, cx| { 76 - this.handle_click(window, cx); 77 - })) 78 - 79 - // Focus management 80 - div() 81 - .track_focus(&self.focus_handle) 82 - .on_action(cx.listener(Self::handle_action)) 83 - 84 - // Async task 85 - cx.spawn_in(window, async move |this, cx| { 86 - let data = fetch_data().await; 87 - this.update(&mut cx, |view, _, cx| { 88 - view.data = data; 89 - cx.notify(); 90 - }).ok(); 91 - }).detach(); 92 - ``` 93 - 94 - ### Element Lifecycle 95 - 96 - 1. `request_layout()` - Request size from Taffy layout engine 97 - 2. `prepaint()` - Calculate bounds, insert hitboxes 98 - 3. `paint()` - Draw to canvas 99 - 100 - ### Key Traits 101 - 102 - | Trait | Purpose | 103 - |-------|---------| 104 - | `Render` | Stateful views with `&mut self` | 105 - | `RenderOnce` | Stateless components with owned `self` | 106 - | `Element` | Custom rendering with full control | 107 - | `IntoElement` | Convert to element (strings, options, etc.) | 108 - | `Styled` | Styling methods (fluent builder) | 109 - | `EventEmitter<E>` | Emit typed events | 110 - | `Global` | App-wide state | 111 - 112 - ### Context Types 113 - 114 - | Context | Scope | 115 - |---------|-------| 116 - | `App` | Global app access | 117 - | `Context<T>` | Entity mutations | 118 - | `Window` | Window operations | 119 - | `AsyncApp` | Async-safe app | 120 - | `AsyncWindowContext` | Async-safe window | 121 - 122 - ## Dependencies 123 - 124 - ```toml 125 - [dependencies] 126 - gpui = { git = "https://github.com/zed-industries/zed" } 127 - ``` 128 - 129 - ## Resources 130 - 131 - - Zed source: https://github.com/zed-industries/zed 132 - - GPUI crate: `zed/crates/gpui/` 133 - - UI components: `zed/crates/ui/`
-428
apps/old-gui/.claude/skills/gpui/advanced.md
··· 1 - --- 2 - name: gpui-advanced 3 - description: GPUI advanced patterns - context menus, tooltips, drag/drop, animations, and performance. Use for complex UI interactions and optimizations. 4 - --- 5 - 6 - # GPUI Advanced Patterns 7 - 8 - ## Context Menus 9 - 10 - ### Building a Context Menu 11 - 12 - ```rust 13 - use gpui::*; 14 - 15 - fn build_context_menu(cx: &mut App) -> Entity<ContextMenu> { 16 - cx.new(|cx| { 17 - ContextMenu::build(cx, |menu, _cx| { 18 - menu.entry("Cut", None, |_cx| { /* handler */ }) 19 - .entry("Copy", None, |_cx| { /* handler */ }) 20 - .entry("Paste", None, |_cx| { /* handler */ }) 21 - .separator() 22 - .entry("Delete", None, |_cx| { /* handler */ }) 23 - }) 24 - }) 25 - } 26 - ``` 27 - 28 - ### Showing Context Menu on Right-Click 29 - 30 - ```rust 31 - div() 32 - .on_mouse_down(MouseButton::Right, cx.listener(|this, event, window, cx| { 33 - let menu = build_context_menu(cx); 34 - window.show_context_menu(event.position, menu, cx); 35 - })) 36 - ``` 37 - 38 - ### Custom Context Menu Items 39 - 40 - ```rust 41 - ContextMenu::build(cx, |menu, cx| { 42 - menu.custom(move |window, cx| { 43 - // Return any element 44 - div() 45 - .p_2() 46 - .child(Label::new("Custom Item")) 47 - .into_any_element() 48 - }) 49 - .entry("Normal Entry", None, |_| {}) 50 - }) 51 - ``` 52 - 53 - ## Tooltips 54 - 55 - ### Simple Tooltip 56 - 57 - ```rust 58 - div() 59 - .id("my-button") 60 - .tooltip(|window, cx| { 61 - Tooltip::text("Click to save") 62 - }) 63 - .child("Save") 64 - ``` 65 - 66 - ### Tooltip with Keybinding 67 - 68 - ```rust 69 - div() 70 - .id("save-button") 71 - .tooltip(|window, cx| { 72 - Tooltip::for_action("Save file", &Save, window, cx) 73 - }) 74 - .child("Save") 75 - ``` 76 - 77 - ### Rich Tooltip 78 - 79 - ```rust 80 - div() 81 - .id("complex-item") 82 - .tooltip(|window, cx| { 83 - Tooltip::rich( 84 - div() 85 - .p_2() 86 - .max_w(px(300.0)) 87 - .child(Label::new("Title").size(LabelSize::Large)) 88 - .child(Label::new("Detailed description here...")) 89 - ) 90 - }) 91 - ``` 92 - 93 - ## Drag and Drop 94 - 95 - ### Draggable Element 96 - 97 - ```rust 98 - div() 99 - .id("draggable-item") 100 - .on_drag(DraggedItem { id: item_id }, |item, window, cx| { 101 - // Return element shown while dragging 102 - div() 103 - .bg(cx.theme().colors().element_background) 104 - .rounded_md() 105 - .p_2() 106 - .child(format!("Dragging: {}", item.id)) 107 - }) 108 - .child("Drag me") 109 - ``` 110 - 111 - ### Drop Target 112 - 113 - ```rust 114 - div() 115 - .on_drop(cx.listener(|this, item: &DraggedItem, window, cx| { 116 - this.handle_drop(item.id, cx); 117 - })) 118 - .drag_over::<DraggedItem>(|style, _, _, _| { 119 - style.bg(hsla(0.0, 0.0, 0.5, 0.2)) 120 - }) 121 - .child("Drop here") 122 - ``` 123 - 124 - ### Drag State 125 - 126 - ```rust 127 - struct MyView { 128 - dragging: Option<DraggedItem>, 129 - } 130 - 131 - impl Render for MyView { 132 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 133 - div() 134 - .when(self.dragging.is_some(), |this| { 135 - this.opacity(0.5) 136 - }) 137 - .on_drag_start(cx.listener(|this, item: &DraggedItem, window, cx| { 138 - this.dragging = Some(item.clone()); 139 - })) 140 - .on_drag_end(cx.listener(|this, _, window, cx| { 141 - this.dragging = None; 142 - })) 143 - } 144 - } 145 - ``` 146 - 147 - ## Popover Menus 148 - 149 - ```rust 150 - struct MyView { 151 - popover_handle: PopoverMenuHandle<ContextMenu>, 152 - } 153 - 154 - impl Render for MyView { 155 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 156 - PopoverMenu::new("my-popover") 157 - .trigger( 158 - Button::new("trigger", "Open Menu") 159 - .style(ButtonStyle::Ghost) 160 - ) 161 - .menu(move |window, cx| { 162 - Some(ContextMenu::build(cx, |menu, _| { 163 - menu.entry("Option 1", None, |_| {}) 164 - .entry("Option 2", None, |_| {}) 165 - })) 166 - }) 167 - .attach(Corner::BottomLeft) 168 - .offset(point(px(0.0), px(4.0))) 169 - } 170 - } 171 - 172 - // Programmatic control 173 - self.popover_handle.toggle(window, cx); 174 - self.popover_handle.show(window, cx); 175 - self.popover_handle.hide(cx); 176 - ``` 177 - 178 - ## Animations 179 - 180 - ### Basic Animation 181 - 182 - ```rust 183 - div() 184 - .with_animation( 185 - "fade-in", 186 - Animation::new(Duration::from_millis(200)) 187 - .with_easing(Easing::EaseOut), 188 - |style, progress| { 189 - style.opacity(progress) 190 - }, 191 - ) 192 - ``` 193 - 194 - ### Keyframe Animation 195 - 196 - ```rust 197 - div() 198 - .with_animation( 199 - "slide-in", 200 - Animation::new(Duration::from_millis(300)) 201 - .with_easing(Easing::EaseInOut), 202 - |style, progress| { 203 - let offset = px(20.0) * (1.0 - progress); 204 - style 205 - .opacity(progress) 206 - .transform(Transform::translate_y(offset)) 207 - }, 208 - ) 209 - ``` 210 - 211 - ### Conditional Animation 212 - 213 - ```rust 214 - div() 215 - .when(is_visible, |this| { 216 - this.with_animation( 217 - "appear", 218 - Animation::new(Duration::from_millis(150)), 219 - |style, t| style.opacity(t), 220 - ) 221 - }) 222 - ``` 223 - 224 - ## Hover and Click States 225 - 226 - ```rust 227 - div() 228 - .id("interactive-item") 229 - .cursor_pointer() 230 - .bg(cx.theme().colors().element_background) 231 - .hover(|style| { 232 - style.bg(cx.theme().colors().element_hover) 233 - }) 234 - .active(|style| { 235 - style.bg(cx.theme().colors().element_active) 236 - }) 237 - .on_click(cx.listener(|this, _, window, cx| { 238 - this.handle_click(window, cx); 239 - })) 240 - ``` 241 - 242 - ## Performance Patterns 243 - 244 - ### Memoization with Cached Elements 245 - 246 - ```rust 247 - struct MyView { 248 - cached_expensive_element: Option<AnyElement>, 249 - cache_key: usize, 250 - } 251 - 252 - impl Render for MyView { 253 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 254 - let current_key = self.compute_cache_key(); 255 - 256 - if self.cache_key != current_key || self.cached_expensive_element.is_none() { 257 - self.cached_expensive_element = Some(self.render_expensive(cx).into_any_element()); 258 - self.cache_key = current_key; 259 - } 260 - 261 - div().child(self.cached_expensive_element.clone().unwrap()) 262 - } 263 - } 264 - ``` 265 - 266 - ### Virtualization for Large Lists 267 - 268 - ```rust 269 - // Use uniform_list for large datasets 270 - uniform_list( 271 - self.scroll_handle.clone(), 272 - "large-list", 273 - self.items.len(), 274 - |this, visible_range, window, cx| { 275 - // Only render visible items 276 - visible_range 277 - .map(|ix| this.render_item(ix, window, cx)) 278 - .collect() 279 - }, 280 - ) 281 - ``` 282 - 283 - ### Pre-fetching Around Viewport 284 - 285 - ```rust 286 - fn prefetch_around_selection(&self, selected: usize, cx: &mut Context<Self>) { 287 - let prefetch_before = 2; 288 - let prefetch_after = 2; 289 - 290 - let start = selected.saturating_sub(prefetch_before); 291 - let end = (selected + prefetch_after + 1).min(self.items.len()); 292 - 293 - for ix in start..end { 294 - self.ensure_item_loaded(ix, cx); 295 - } 296 - } 297 - ``` 298 - 299 - ### SmallVec for Small Collections 300 - 301 - ```rust 302 - use smallvec::SmallVec; 303 - 304 - // Stack-allocate up to 8 items 305 - let mut highlights: SmallVec<[(Range<usize>, Hsla); 8]> = SmallVec::new(); 306 - highlights.push((0..10, hsla(0.0, 1.0, 0.5, 1.0))); 307 - ``` 308 - 309 - ## Hitbox Optimization 310 - 311 - ```rust 312 - impl Element for MyElement { 313 - fn prepaint(&mut self, bounds: Bounds<Pixels>, window: &mut Window, cx: &mut App) { 314 - // Only insert hitbox if interactive 315 - if self.is_interactive { 316 - self.hitbox = Some(window.insert_hitbox(bounds, false)); 317 - } 318 - } 319 - 320 - fn paint(&mut self, bounds: Bounds<Pixels>, window: &mut Window, cx: &mut App) { 321 - // Check if mouse is over this element 322 - if let Some(hitbox) = &self.hitbox { 323 - if hitbox.is_hovered(window) { 324 - // Paint hover state 325 - } 326 - } 327 - } 328 - } 329 - ``` 330 - 331 - ## Scroll Performance 332 - 333 - ```rust 334 - struct ScrollableView { 335 - scroll_handle: ScrollHandle, 336 - last_scroll_position: Point<Pixels>, 337 - } 338 - 339 - impl Render for ScrollableView { 340 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 341 - div() 342 - .size_full() 343 - .overflow_y_scroll() 344 - .track_scroll(&self.scroll_handle) 345 - .on_scroll_wheel(cx.listener(|this, event: &ScrollWheelEvent, window, cx| { 346 - // Custom scroll handling if needed 347 - })) 348 - .children(/* ... */) 349 - } 350 - } 351 - ``` 352 - 353 - ## Deferred Rendering (Overlays) 354 - 355 - ```rust 356 - // Render overlay after other content 357 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 358 - div() 359 - .relative() 360 - .child(self.render_main_content(cx)) 361 - .child( 362 - deferred( 363 - anchored() 364 - .position(self.popup_position) 365 - .child(self.render_popup(cx)) 366 - ) 367 - ) 368 - } 369 - ``` 370 - 371 - ## Click Outside to Dismiss 372 - 373 - ```rust 374 - struct Popup { 375 - is_open: bool, 376 - } 377 - 378 - impl Render for Popup { 379 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 380 - if !self.is_open { 381 - return div().into_any_element(); 382 - } 383 - 384 - // Capture all clicks 385 - div() 386 - .absolute() 387 - .inset(px(0.0)) 388 - .on_mouse_down(MouseButton::Left, cx.listener(|this, event, window, cx| { 389 - // Check if click is outside popup bounds 390 - if !this.popup_bounds.contains(&event.position) { 391 - this.is_open = false; 392 - cx.notify(); 393 - } 394 - })) 395 - .child( 396 - div() 397 - .absolute() 398 - .top(self.position.y) 399 - .left(self.position.x) 400 - .child(self.render_popup_content(cx)) 401 - ) 402 - .into_any_element() 403 - } 404 - } 405 - ``` 406 - 407 - ## Keyboard Trap (Modal Focus) 408 - 409 - ```rust 410 - impl Render for Modal { 411 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 412 - div() 413 - .track_focus(&self.focus_handle) 414 - // Trap tab key within modal 415 - .on_action(cx.listener(|this, _: &Tab, window, cx| { 416 - this.focus_next(window, cx); 417 - })) 418 - .on_action(cx.listener(|this, _: &ShiftTab, window, cx| { 419 - this.focus_previous(window, cx); 420 - })) 421 - // Dismiss on escape 422 - .on_action(cx.listener(|this, _: &Escape, window, cx| { 423 - cx.emit(DismissEvent); 424 - })) 425 - .child(/* modal content */) 426 - } 427 - } 428 - ```
-370
apps/old-gui/.claude/skills/gpui/async-windows.md
··· 1 - --- 2 - name: gpui-async-windows 3 - description: GPUI async patterns and multiple window management. Use when spawning background tasks, opening new windows, or managing window communication. 4 - --- 5 - 6 - # GPUI Async and Windows 7 - 8 - ## Spawning Async Tasks 9 - 10 - ### From Context (main thread) 11 - 12 - ```rust 13 - impl MyView { 14 - fn load_data(&mut self, window: &mut Window, cx: &mut Context<Self>) { 15 - // spawn_in - keeps window context, weak reference to self 16 - cx.spawn_in(window, async move |this, cx| { 17 - // this: WeakEntity<Self> 18 - // cx: AsyncWindowContext 19 - 20 - let data = fetch_data().await; 21 - 22 - // Update view back on main thread 23 - this.update(&mut cx, |view, window, cx| { 24 - view.data = Some(data); 25 - cx.notify(); 26 - }).ok(); 27 - }).detach(); 28 - } 29 - } 30 - ``` 31 - 32 - ### Background Executor (off main thread) 33 - 34 - ```rust 35 - // CPU-intensive work 36 - let result = cx.background_executor().spawn(async move { 37 - expensive_computation() 38 - }).await; 39 - 40 - // With priority 41 - cx.background_executor() 42 - .spawn_with_priority(Priority::Low, async move { 43 - background_work() 44 - }) 45 - .detach(); 46 - ``` 47 - 48 - ### Foreground Executor (main thread) 49 - 50 - ```rust 51 - cx.foreground_executor().spawn(async move { 52 - // Runs on main thread 53 - }).detach(); 54 - ``` 55 - 56 - ## Task Management 57 - 58 - ```rust 59 - struct MyView { 60 - loading_task: Option<Task<()>>, 61 - } 62 - 63 - impl MyView { 64 - fn start_loading(&mut self, window: &mut Window, cx: &mut Context<Self>) { 65 - // Cancel previous task by dropping 66 - self.loading_task = None; 67 - 68 - self.loading_task = Some(cx.spawn_in(window, async move |this, cx| { 69 - let result = load_something().await; 70 - 71 - this.update(&mut cx, |view, window, cx| { 72 - view.data = result; 73 - view.loading_task = None; 74 - cx.notify(); 75 - }).ok(); 76 - })); 77 - } 78 - 79 - fn cancel_loading(&mut self) { 80 - // Dropping the task cancels it 81 - self.loading_task = None; 82 - } 83 - } 84 - ``` 85 - 86 - ## AsyncApp and AsyncWindowContext 87 - 88 - For holding context across await points: 89 - 90 - ```rust 91 - // AsyncApp - app-level async context 92 - cx.spawn(async move |cx: AsyncApp| { 93 - // Read global state 94 - let value = cx.read_global::<MyGlobal, _>(|global, _| { 95 - global.some_value.clone() 96 - })?; 97 - 98 - // Update global state 99 - cx.update_global::<MyGlobal, _>(|global, _| { 100 - global.count += 1; 101 - })?; 102 - 103 - Ok(()) 104 - }); 105 - 106 - // AsyncWindowContext - window-scoped async context 107 - cx.spawn_in(window, async move |this, cx: AsyncWindowContext| { 108 - // Update entity 109 - this.update(&mut cx, |view, window, cx| { 110 - view.do_something(window, cx); 111 - })?; 112 - 113 - Ok(()) 114 - }); 115 - ``` 116 - 117 - ## Creating Windows 118 - 119 - ### Basic Window 120 - 121 - ```rust 122 - cx.open_window( 123 - WindowOptions { 124 - titlebar: Some(TitlebarOptions { 125 - title: Some("My Window".into()), 126 - ..Default::default() 127 - }), 128 - window_bounds: Some(WindowBounds::Windowed(Bounds { 129 - origin: point(px(100.0), px(100.0)), 130 - size: size(px(800.0), px(600.0)), 131 - })), 132 - ..Default::default() 133 - }, 134 - |window, cx| { 135 - cx.new(|cx| MyView::new(cx)) 136 - }, 137 - )?; 138 - ``` 139 - 140 - ### Window Options 141 - 142 - ```rust 143 - WindowOptions { 144 - // Title bar 145 - titlebar: Some(TitlebarOptions { 146 - title: Some("Title".into()), 147 - appears_transparent: false, 148 - traffic_light_position: None, // macOS traffic lights 149 - }), 150 - 151 - // Bounds 152 - window_bounds: Some(WindowBounds::Windowed(bounds)), 153 - // or WindowBounds::Maximized, WindowBounds::Fullscreen 154 - 155 - // Behavior 156 - focus: true, 157 - show: true, 158 - kind: WindowKind::Normal, // or PopUp, Menu 159 - 160 - // Display 161 - display_id: None, // Specific monitor 162 - 163 - // macOS specific 164 - app_id: None, 165 - window_background: WindowBackgroundAppearance::Opaque, 166 - 167 - ..Default::default() 168 - } 169 - ``` 170 - 171 - ### From Async Context 172 - 173 - ```rust 174 - cx.spawn(async move |cx: AsyncApp| { 175 - cx.open_window(options, |window, cx| { 176 - cx.new(|cx| MyView::new(cx)) 177 - })?; 178 - Ok(()) 179 - }); 180 - ``` 181 - 182 - ## Window Handles 183 - 184 - ### WindowHandle<V> (typed) 185 - 186 - ```rust 187 - let handle: WindowHandle<MyView> = cx.open_window(options, build)?; 188 - 189 - // Read root view 190 - let value = handle.read(cx)?.some_field; 191 - 192 - // Update root view 193 - handle.update(cx, |view, window, cx| { 194 - view.do_something(window, cx); 195 - })?; 196 - 197 - // Read with callback 198 - handle.read_with(cx, |view, cx| { 199 - view.get_value() 200 - })?; 201 - ``` 202 - 203 - ### AnyWindowHandle (untyped) 204 - 205 - ```rust 206 - let any_handle: AnyWindowHandle = handle.into(); 207 - 208 - // Downcast back to typed 209 - if let Some(typed) = any_handle.downcast::<MyView>() { 210 - typed.update(cx, |view, window, cx| { /* ... */ })?; 211 - } 212 - 213 - // Update without type 214 - any_handle.update(cx, |any_view, window, cx| { 215 - // any_view: AnyView 216 - })?; 217 - ``` 218 - 219 - ## Window-to-Window Communication 220 - 221 - ### Via Global State 222 - 223 - ```rust 224 - // Global event bus 225 - struct AppEvents { 226 - listeners: Vec<Box<dyn Fn(&AppEvent, &mut App)>>, 227 - } 228 - impl Global for AppEvents {} 229 - 230 - // Window 1: emit event 231 - cx.update_global::<AppEvents, _>(|events, cx| { 232 - for listener in &events.listeners { 233 - listener(&AppEvent::DataChanged, cx); 234 - } 235 - }); 236 - 237 - // Window 2: subscribe to events 238 - let subscription = cx.observe_global::<AppEvents>(|view, cx| { 239 - view.refresh(cx); 240 - }); 241 - ``` 242 - 243 - ### Via Entity 244 - 245 - ```rust 246 - // Shared model between windows 247 - let shared_model: Entity<SharedData> = cx.new(|_| SharedData::new()); 248 - 249 - // Window 1: updates model 250 - shared_model.update(cx, |model, cx| { 251 - model.value = 42; 252 - cx.notify(); 253 - }); 254 - 255 - // Window 2: observes model 256 - cx.observe(&shared_model, |view, model, cx| { 257 - view.sync_from_model(model.read(cx), cx); 258 - }); 259 - ``` 260 - 261 - ### Via Window Handle 262 - 263 - ```rust 264 - // Store handle to other window 265 - struct Window1 { 266 - window2_handle: Option<WindowHandle<Window2>>, 267 - } 268 - 269 - // Communicate 270 - if let Some(handle) = &self.window2_handle { 271 - handle.update(cx, |window2, window, cx| { 272 - window2.receive_message(message, window, cx); 273 - }).ok(); 274 - } 275 - ``` 276 - 277 - ## Modal Windows 278 - 279 - Pattern for modal dialogs: 280 - 281 - ```rust 282 - struct ModalLayer { 283 - active_modal: Option<ActiveModal>, 284 - } 285 - 286 - struct ActiveModal { 287 - view: AnyView, 288 - previous_focus: Option<FocusHandle>, 289 - subscriptions: Vec<Subscription>, 290 - } 291 - 292 - impl ModalLayer { 293 - fn show_modal<V: ModalView>( 294 - &mut self, 295 - build: impl FnOnce(&mut Window, &mut App) -> Entity<V>, 296 - window: &mut Window, 297 - cx: &mut Context<Self>, 298 - ) { 299 - let previous_focus = window.focused(cx); 300 - let modal = cx.new(|cx| build(window, cx)); 301 - 302 - // Subscribe to dismiss 303 - let subscription = cx.subscribe(&modal, |this, _, _: &DismissEvent, window, cx| { 304 - this.hide_modal(window, cx); 305 - }); 306 - 307 - self.active_modal = Some(ActiveModal { 308 - view: modal.into(), 309 - previous_focus, 310 - subscriptions: vec![subscription], 311 - }); 312 - 313 - // Focus modal 314 - cx.defer_in(window, |this, window, cx| { 315 - if let Some(modal) = &this.active_modal { 316 - window.focus(&modal.focus_handle); 317 - } 318 - }); 319 - } 320 - 321 - fn hide_modal(&mut self, window: &mut Window, cx: &mut Context<Self>) { 322 - if let Some(modal) = self.active_modal.take() { 323 - // Restore previous focus 324 - if let Some(handle) = modal.previous_focus { 325 - window.focus(&handle); 326 - } 327 - } 328 - cx.notify(); 329 - } 330 - } 331 - ``` 332 - 333 - ## Timeouts and Intervals 334 - 335 - ```rust 336 - // One-shot timer 337 - cx.spawn_in(window, async move |this, cx| { 338 - cx.background_executor().timer(Duration::from_secs(1)).await; 339 - this.update(&mut cx, |view, _, cx| { 340 - view.on_timeout(cx); 341 - }).ok(); 342 - }).detach(); 343 - 344 - // Repeating interval 345 - cx.spawn_in(window, async move |this, cx| { 346 - loop { 347 - cx.background_executor().timer(Duration::from_millis(100)).await; 348 - if this.update(&mut cx, |view, _, cx| { 349 - view.tick(cx) // returns false to stop 350 - }).unwrap_or(false) == false { 351 - break; 352 - } 353 - } 354 - }).detach(); 355 - ``` 356 - 357 - ## Task Priority 358 - 359 - ```rust 360 - pub enum Priority { 361 - Realtime, // Immediate, blocks UI 362 - High, // Important background work 363 - Medium, // Default 364 - Low, // Can wait 365 - } 366 - 367 - cx.spawn_in_with_priority(Priority::Low, window, async move |this, cx| { 368 - // Low priority background work 369 - }); 370 - ```
-212
apps/old-gui/.claude/skills/gpui/core.md
··· 1 - --- 2 - name: gpui-core 3 - description: GPUI framework fundamentals - App, Window, Context, Entity system, and lifecycle. Use when creating GPUI applications, managing state, or understanding the framework architecture. 4 - --- 5 - 6 - # GPUI Core Concepts 7 - 8 - GPUI is a hybrid immediate/retained-mode, GPU-accelerated UI framework from the Zed editor. 9 - 10 - ## Application Lifecycle 11 - 12 - ```rust 13 - use gpui::*; 14 - 15 - fn main() { 16 - Application::new().run(|cx: &mut App| { 17 - cx.open_window( 18 - WindowOptions::default(), 19 - |window, cx| { 20 - cx.new(|cx| MyView::new(cx)) 21 - }, 22 - ).unwrap(); 23 - }); 24 - } 25 - ``` 26 - 27 - ## The Render Trait 28 - 29 - Views must implement `Render`: 30 - 31 - ```rust 32 - struct MyView { 33 - count: usize, 34 - } 35 - 36 - impl Render for MyView { 37 - fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 38 - div() 39 - .flex() 40 - .size_full() 41 - .child(format!("Count: {}", self.count)) 42 - } 43 - } 44 - ``` 45 - 46 - ## Entity System 47 - 48 - Entities are the core state containers. Use `Entity<T>` for strong references, `WeakEntity<T>` for weak: 49 - 50 - ```rust 51 - // Create an entity 52 - let entity: Entity<MyModel> = cx.new(|cx| MyModel::new()); 53 - 54 - // Read entity state 55 - let value = entity.read(cx).some_field; 56 - 57 - // Update entity state 58 - entity.update(cx, |model, cx| { 59 - model.some_field = new_value; 60 - cx.notify(); // Trigger re-render 61 - }); 62 - 63 - // Weak reference (won't keep entity alive) 64 - let weak: WeakEntity<MyModel> = entity.downgrade(); 65 - if let Some(entity) = weak.upgrade() { 66 - // Entity still exists 67 - } 68 - ``` 69 - 70 - ## Context Types 71 - 72 - Different contexts for different scopes: 73 - 74 - | Context | Purpose | 75 - |---------|---------| 76 - | `App` / `&mut App` | Global app state access | 77 - | `Context<T>` | Entity-specific context for mutations | 78 - | `Window` / `&mut Window` | Window-specific operations | 79 - | `AsyncApp` | Async-safe app context | 80 - | `AsyncWindowContext` | Async-safe window context | 81 - 82 - ```rust 83 - // In a view method 84 - fn some_method(&mut self, window: &mut Window, cx: &mut Context<Self>) { 85 - // cx.notify() triggers re-render 86 - // cx.emit(event) emits events 87 - // cx.spawn() spawns async tasks 88 - // window.focus() manages focus 89 - } 90 - ``` 91 - 92 - ## Subscriptions and Observations 93 - 94 - Subscribe to entity events: 95 - 96 - ```rust 97 - // Subscribe to events from another entity 98 - let subscription = cx.subscribe(&other_entity, |this, emitter, event, cx| { 99 - // Handle event 100 - }); 101 - 102 - // Observe any changes (when notify() is called) 103 - let subscription = cx.observe(&other_entity, |this, observed, cx| { 104 - // Entity was updated 105 - }); 106 - 107 - // Observe global state changes 108 - let subscription = cx.observe_global::<MyGlobal>(|this, cx| { 109 - // Global changed 110 - }); 111 - 112 - // Subscriptions auto-cleanup on drop - store them to keep alive 113 - struct MyView { 114 - _subscriptions: Vec<Subscription>, 115 - } 116 - ``` 117 - 118 - ## Global State 119 - 120 - For app-wide state: 121 - 122 - ```rust 123 - // Define a global 124 - struct AppState { 125 - user: Option<User>, 126 - } 127 - impl Global for AppState {} 128 - 129 - // Set global (once at startup) 130 - cx.set_global(AppState { user: None }); 131 - 132 - // Read global 133 - let state = cx.global::<AppState>(); 134 - 135 - // Update global 136 - cx.update_global::<AppState, _>(|state, cx| { 137 - state.user = Some(user); 138 - }); 139 - ``` 140 - 141 - ## Event Emitting 142 - 143 - Entities can emit typed events: 144 - 145 - ```rust 146 - struct MyView; 147 - 148 - // Define event types 149 - struct SelectionChanged(usize); 150 - 151 - // Implement EventEmitter 152 - impl EventEmitter<SelectionChanged> for MyView {} 153 - 154 - // Emit events 155 - fn select(&mut self, index: usize, cx: &mut Context<Self>) { 156 - cx.emit(SelectionChanged(index)); 157 - } 158 - 159 - // Subscribe from another entity 160 - cx.subscribe(&my_view, |this, _emitter, event: &SelectionChanged, cx| { 161 - println!("Selected: {}", event.0); 162 - }); 163 - ``` 164 - 165 - ## Focus Management 166 - 167 - ```rust 168 - impl MyView { 169 - fn new(cx: &mut Context<Self>) -> Self { 170 - let focus_handle = cx.focus_handle(); 171 - 172 - // React to focus changes 173 - cx.on_focus(&focus_handle, window, Self::handle_focus); 174 - cx.on_blur(&focus_handle, window, Self::handle_blur); 175 - 176 - Self { focus_handle } 177 - } 178 - } 179 - 180 - // In render, make element focusable 181 - div() 182 - .track_focus(&self.focus_handle) 183 - .child("Focusable content") 184 - 185 - // Programmatically focus 186 - window.focus(&self.focus_handle); 187 - ``` 188 - 189 - ## Deferred Execution 190 - 191 - ```rust 192 - // Run after current update cycle 193 - cx.defer(|cx| { 194 - // Deferred work 195 - }); 196 - 197 - // Run in window context after update 198 - cx.defer_in(window, |this, window, cx| { 199 - window.focus(&this.focus_handle); 200 - }); 201 - ``` 202 - 203 - ## Notify for Re-renders 204 - 205 - Call `cx.notify()` to trigger re-render when state changes: 206 - 207 - ```rust 208 - fn increment(&mut self, cx: &mut Context<Self>) { 209 - self.count += 1; 210 - cx.notify(); // Required to update UI 211 - } 212 - ```
-276
apps/old-gui/.claude/skills/gpui/elements.md
··· 1 - --- 2 - name: gpui-elements 3 - description: GPUI element system - div, text, lists, images, and custom elements. Use when building UI components, creating layouts, or implementing custom rendering. 4 - --- 5 - 6 - # GPUI Elements 7 - 8 - Elements are the building blocks of GPUI UIs. They follow a three-phase rendering pipeline. 9 - 10 - ## Basic Elements 11 - 12 - ### Div (Container) 13 - 14 - The primary container element: 15 - 16 - ```rust 17 - div() 18 - .id("my-container") 19 - .flex() 20 - .flex_col() 21 - .gap_2() 22 - .p_4() 23 - .bg(cx.theme().colors().surface_background) 24 - .child(Label::new("Hello")) 25 - .child(Button::new("btn", "Click me")) 26 - ``` 27 - 28 - ### Text 29 - 30 - For text content: 31 - 32 - ```rust 33 - // Simple text (converts to element) 34 - "Hello, World!" 35 - 36 - // Styled text 37 - div() 38 - .text_color(hsla(0.0, 0.0, 1.0, 1.0)) 39 - .text_size(px(16.0)) 40 - .child("Styled text") 41 - 42 - // Shaped text with runs (for syntax highlighting) 43 - let line = window.text_system().shape_line( 44 - text.into(), 45 - font_size, 46 - &[TextRun { len: text.len(), font, color }], 47 - None, 48 - ); 49 - ``` 50 - 51 - ### Images 52 - 53 - ```rust 54 - img(image_source) 55 - .size(px(100.0)) 56 - .rounded_md() 57 - 58 - // From file path 59 - img(PathBuf::from("/path/to/image.png")) 60 - 61 - // SVG icon 62 - svg() 63 - .path("icons/check.svg") 64 - .size(px(16.0)) 65 - .text_color(Color::Success.color(cx)) 66 - ``` 67 - 68 - ## Lists 69 - 70 - ### Uniform List (same height items) 71 - 72 - For large lists with uniform item heights - renders only visible items: 73 - 74 - ```rust 75 - uniform_list( 76 - self.scroll_handle.clone(), 77 - "item-list", 78 - items.len(), 79 - |this, visible_range, window, cx| { 80 - visible_range 81 - .map(|ix| this.render_item(ix, window, cx)) 82 - .collect() 83 - }, 84 - ) 85 - .track_scroll(self.scroll_handle.clone()) 86 - ``` 87 - 88 - ### List (variable height items) 89 - 90 - For lists with variable item heights: 91 - 92 - ```rust 93 - list(self.list_state.clone()) 94 - .size_full() 95 - .with_sizing_behavior(ListSizingBehavior::Auto) 96 - ``` 97 - 98 - ### Scroll Handle 99 - 100 - ```rust 101 - struct MyView { 102 - scroll_handle: UniformListScrollHandle, 103 - } 104 - 105 - impl MyView { 106 - fn new() -> Self { 107 - Self { 108 - scroll_handle: UniformListScrollHandle::new(), 109 - } 110 - } 111 - 112 - fn scroll_to_item(&mut self, index: usize) { 113 - self.scroll_handle.scroll_to_item(index, ScrollStrategy::Center); 114 - } 115 - } 116 - ``` 117 - 118 - ## The Element Trait 119 - 120 - Custom elements implement the three-phase pipeline: 121 - 122 - ```rust 123 - impl Element for MyElement { 124 - type RequestLayoutState = MyLayoutState; 125 - type PrepaintState = MyPrepaintState; 126 - 127 - // Phase 1: Request layout from Taffy 128 - fn request_layout( 129 - &mut self, 130 - id: Option<&GlobalElementId>, 131 - window: &mut Window, 132 - cx: &mut App, 133 - ) -> (LayoutId, Self::RequestLayoutState) { 134 - let mut style = Style::default(); 135 - style.size.width = relative(1.).into(); 136 - style.size.height = px(100.).into(); 137 - 138 - let layout_id = window.request_layout(style, None, cx); 139 - (layout_id, MyLayoutState { /* ... */ }) 140 - } 141 - 142 - // Phase 2: Prepaint - calculate bounds, insert hitboxes 143 - fn prepaint( 144 - &mut self, 145 - id: Option<&GlobalElementId>, 146 - bounds: Bounds<Pixels>, 147 - state: &mut Self::RequestLayoutState, 148 - window: &mut Window, 149 - cx: &mut App, 150 - ) -> Self::PrepaintState { 151 - // Insert hitbox for click detection 152 - let hitbox = window.insert_hitbox(bounds, false); 153 - 154 - MyPrepaintState { hitbox, bounds } 155 - } 156 - 157 - // Phase 3: Paint to canvas 158 - fn paint( 159 - &mut self, 160 - id: Option<&GlobalElementId>, 161 - bounds: Bounds<Pixels>, 162 - state: &mut Self::RequestLayoutState, 163 - prepaint: &mut Self::PrepaintState, 164 - window: &mut Window, 165 - cx: &mut App, 166 - ) { 167 - // Paint background 168 - window.paint_quad(fill(bounds, cx.theme().colors().background)); 169 - 170 - // Paint text, shapes, etc. 171 - } 172 - } 173 - ``` 174 - 175 - ## RenderOnce vs Render 176 - 177 - - `Render` - For stateful views (takes `&mut self`) 178 - - `RenderOnce` - For stateless components (takes owned `self`) 179 - 180 - ```rust 181 - // Stateful view 182 - impl Render for MyView { 183 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 184 - div().child("stateful") 185 - } 186 - } 187 - 188 - // Stateless component 189 - struct MyComponent { 190 - label: SharedString, 191 - } 192 - 193 - impl RenderOnce for MyComponent { 194 - fn render(self, window: &mut Window, cx: &mut App) -> impl IntoElement { 195 - div().child(self.label) 196 - } 197 - } 198 - 199 - // Use stateless component 200 - div().child(MyComponent { label: "hello".into() }) 201 - ``` 202 - 203 - ## IntoElement Trait 204 - 205 - Types that can become elements: 206 - 207 - ```rust 208 - // Strings 209 - "hello" // impl IntoElement 210 - 211 - // Options (renders nothing for None) 212 - let maybe_label: Option<Label> = Some(Label::new("hi")); 213 - div().child(maybe_label) 214 - 215 - // Vectors 216 - let items: Vec<impl IntoElement> = vec![...]; 217 - div().children(items) 218 - ``` 219 - 220 - ## Deferred Elements 221 - 222 - Render later in the paint order (for overlays): 223 - 224 - ```rust 225 - deferred( 226 - div() 227 - .absolute() 228 - .child("Overlay content") 229 - ) 230 - ``` 231 - 232 - ## Anchored Elements (Popovers) 233 - 234 - Position relative to an anchor: 235 - 236 - ```rust 237 - anchored() 238 - .position(AnchoredPosition::Below(anchor_bounds)) 239 - .child( 240 - div() 241 - .elevation_3(cx) 242 - .child("Popover content") 243 - ) 244 - ``` 245 - 246 - ## Canvas (Custom Drawing) 247 - 248 - For imperative drawing: 249 - 250 - ```rust 251 - canvas( 252 - |bounds, window, cx| { 253 - // Prepaint phase - return state 254 - PrepaintState { bounds } 255 - }, 256 - |bounds, state, window, cx| { 257 - // Paint phase 258 - window.paint_quad(fill(bounds, hsla(0.0, 1.0, 0.5, 1.0))); 259 - }, 260 - ) 261 - ``` 262 - 263 - ## Parent Element Methods 264 - 265 - ```rust 266 - div() 267 - .child(single_element) // Add one child 268 - .children(vec_of_elements) // Add multiple children 269 - .children_any(any_elements) // Add AnyElement children 270 - .when(condition, |this| { // Conditional children 271 - this.child(Label::new("Shown when true")) 272 - }) 273 - .when_some(option, |this, value| { 274 - this.child(Label::new(value)) 275 - }) 276 - ```
-286
apps/old-gui/.claude/skills/gpui/keyboard-actions.md
··· 1 - --- 2 - name: gpui-keyboard-actions 3 - description: GPUI keyboard handling, actions, and keybindings. Use when implementing keyboard navigation, shortcuts, or action dispatch. 4 - --- 5 - 6 - # GPUI Keyboard and Actions 7 - 8 - ## Defining Actions 9 - 10 - Actions are the bridge between keybindings and behavior: 11 - 12 - ```rust 13 - use gpui::actions; 14 - 15 - // Simple actions (no data) 16 - actions!(my_app, [ 17 - MoveUp, 18 - MoveDown, 19 - SelectAll, 20 - Delete, 21 - Confirm, 22 - Cancel, 23 - ]); 24 - 25 - // Action with data 26 - #[derive(Clone, PartialEq, Deserialize)] 27 - struct GoToLine { 28 - line: usize, 29 - } 30 - 31 - impl_actions!(my_app, [GoToLine]); 32 - ``` 33 - 34 - ## Registering Action Handlers 35 - 36 - In your view's render or setup: 37 - 38 - ```rust 39 - impl Render for MyView { 40 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 41 - // Register actions on the element 42 - div() 43 - .track_focus(&self.focus_handle) 44 - .on_action(cx.listener(Self::move_up)) 45 - .on_action(cx.listener(Self::move_down)) 46 - .on_action(cx.listener(Self::select_all)) 47 - .child(/* ... */) 48 - } 49 - } 50 - 51 - impl MyView { 52 - fn move_up(&mut self, _: &MoveUp, window: &mut Window, cx: &mut Context<Self>) { 53 - self.selected_index = self.selected_index.saturating_sub(1); 54 - cx.notify(); 55 - } 56 - 57 - fn move_down(&mut self, _: &MoveDown, window: &mut Window, cx: &mut Context<Self>) { 58 - self.selected_index = (self.selected_index + 1).min(self.items.len() - 1); 59 - cx.notify(); 60 - } 61 - } 62 - ``` 63 - 64 - ## Keybindings 65 - 66 - Bind keys to actions in your keymap: 67 - 68 - ```rust 69 - // In app setup 70 - cx.bind_keys([ 71 - KeyBinding::new("up", MoveUp, None), 72 - KeyBinding::new("down", MoveDown, None), 73 - KeyBinding::new("enter", Confirm, None), 74 - KeyBinding::new("escape", Cancel, None), 75 - KeyBinding::new("cmd-a", SelectAll, None), // macOS 76 - KeyBinding::new("ctrl-a", SelectAll, None), // Linux/Windows 77 - ]); 78 - ``` 79 - 80 - ### Key Syntax 81 - 82 - ```rust 83 - // Modifiers 84 - "cmd-s" // Command (macOS) 85 - "ctrl-s" // Control 86 - "alt-s" // Alt/Option 87 - "shift-s" // Shift 88 - "cmd-shift-s" // Multiple modifiers 89 - 90 - // Special keys 91 - "enter" 92 - "escape" 93 - "tab" 94 - "space" 95 - "backspace" 96 - "delete" 97 - "up" / "down" / "left" / "right" 98 - "home" / "end" 99 - "pageup" / "pagedown" 100 - "f1" through "f12" 101 - ``` 102 - 103 - ## Key Context 104 - 105 - Bind actions only in specific contexts: 106 - 107 - ```rust 108 - // Define context 109 - window.set_key_context(KeyContext::new_with_defaults()); 110 - 111 - // Bind with context 112 - KeyBinding::new("j", MoveDown, Some("Editor")) 113 - KeyBinding::new("j", NextItem, Some("List")) 114 - ``` 115 - 116 - In render, set the context: 117 - 118 - ```rust 119 - div() 120 - .key_context("Editor") // This subtree uses "Editor" context 121 - .on_action(cx.listener(Self::move_down)) 122 - ``` 123 - 124 - ## Direct Key Event Handling 125 - 126 - For custom key handling without actions: 127 - 128 - ```rust 129 - div() 130 - .on_key_down(cx.listener(|this, event: &KeyDownEvent, window, cx| { 131 - match &event.keystroke.key { 132 - "j" if event.keystroke.modifiers.control => { 133 - this.move_down(window, cx); 134 - } 135 - _ => {} 136 - } 137 - })) 138 - ``` 139 - 140 - ## Key Event Types 141 - 142 - ```rust 143 - // Key down 144 - .on_key_down(cx.listener(|this, event: &KeyDownEvent, window, cx| { 145 - let key = &event.keystroke.key; 146 - let mods = &event.keystroke.modifiers; 147 - // mods.control, mods.alt, mods.shift, mods.platform (cmd on mac) 148 - })) 149 - 150 - // Key up 151 - .on_key_up(cx.listener(|this, event: &KeyUpEvent, window, cx| { 152 - // Handle key release 153 - })) 154 - 155 - // Modifiers changed (for UI feedback) 156 - .on_modifiers_changed(cx.listener(|this, event: &ModifiersChangedEvent, window, cx| { 157 - this.alt_held = event.modifiers.alt; 158 - cx.notify(); 159 - })) 160 - ``` 161 - 162 - ## Focus and Action Dispatch 163 - 164 - Actions bubble up from the focused element: 165 - 166 - ```rust 167 - struct MyView { 168 - focus_handle: FocusHandle, 169 - } 170 - 171 - impl MyView { 172 - fn new(cx: &mut Context<Self>) -> Self { 173 - Self { 174 - focus_handle: cx.focus_handle(), 175 - } 176 - } 177 - } 178 - 179 - impl Render for MyView { 180 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 181 - div() 182 - // Make this element focusable 183 - .track_focus(&self.focus_handle) 184 - // Register action handlers 185 - .on_action(cx.listener(Self::handle_action)) 186 - } 187 - } 188 - ``` 189 - 190 - ## Dispatching Actions Programmatically 191 - 192 - ```rust 193 - // Dispatch to focused element 194 - window.dispatch_action(Box::new(MoveDown)); 195 - 196 - // Dispatch with data 197 - window.dispatch_action(Box::new(GoToLine { line: 42 })); 198 - ``` 199 - 200 - ## Action Availability 201 - 202 - Check if an action is available: 203 - 204 - ```rust 205 - if window.is_action_available(&MoveDown) { 206 - // Action has a handler in the current focus context 207 - } 208 - ``` 209 - 210 - ## Keyboard Navigation Pattern 211 - 212 - Common pattern for list navigation: 213 - 214 - ```rust 215 - struct ListView { 216 - items: Vec<Item>, 217 - selected: usize, 218 - focus_handle: FocusHandle, 219 - } 220 - 221 - impl Render for ListView { 222 - fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 223 - div() 224 - .track_focus(&self.focus_handle) 225 - .on_action(cx.listener(Self::select_prev)) 226 - .on_action(cx.listener(Self::select_next)) 227 - .on_action(cx.listener(Self::confirm_selection)) 228 - .children( 229 - self.items.iter().enumerate().map(|(i, item)| { 230 - self.render_item(i, item, cx) 231 - }) 232 - ) 233 - } 234 - } 235 - 236 - impl ListView { 237 - fn select_prev(&mut self, _: &SelectPrev, _window: &mut Window, cx: &mut Context<Self>) { 238 - self.selected = self.selected.saturating_sub(1); 239 - cx.notify(); 240 - } 241 - 242 - fn select_next(&mut self, _: &SelectNext, _window: &mut Window, cx: &mut Context<Self>) { 243 - if self.selected < self.items.len().saturating_sub(1) { 244 - self.selected += 1; 245 - } 246 - cx.notify(); 247 - } 248 - 249 - fn confirm_selection(&mut self, _: &Confirm, _window: &mut Window, cx: &mut Context<Self>) { 250 - if let Some(item) = self.items.get(self.selected) { 251 - cx.emit(ItemSelected(item.clone())); 252 - } 253 - } 254 - } 255 - ``` 256 - 257 - ## Input Method (IME) Handling 258 - 259 - For text input with IME support: 260 - 261 - ```rust 262 - impl InputHandler for MyEditor { 263 - fn text_for_range(&mut self, range: Range<usize>, cx: &mut Window) -> Option<String> { 264 - // Return text in range 265 - } 266 - 267 - fn selected_text_range(&mut self, ignore_disabled: bool, cx: &mut Window) -> Option<Range<usize>> { 268 - // Return current selection 269 - } 270 - 271 - fn replace_text_in_range( 272 - &mut self, 273 - range: Option<Range<usize>>, 274 - text: &str, 275 - cx: &mut Window, 276 - ) { 277 - // Insert/replace text 278 - } 279 - 280 - fn marked_text_range(&self, cx: &mut Window) -> Option<Range<usize>> { 281 - // Return IME composition range 282 - } 283 - 284 - // ... other methods 285 - } 286 - ```
-297
apps/old-gui/.claude/skills/gpui/styling.md
··· 1 - --- 2 - name: gpui-styling 3 - description: GPUI styling system - flexbox, colors, spacing, theming. Use when styling components, working with themes, or building layouts. 4 - --- 5 - 6 - # GPUI Styling 7 - 8 - GPUI uses a Tailwind-like builder pattern for styling via the `Styled` trait. 9 - 10 - ## Flexbox Layout 11 - 12 - ```rust 13 - // Horizontal layout 14 - div() 15 - .flex() 16 - .flex_row() // Default direction 17 - .items_center() // Cross-axis alignment 18 - .gap_2() // Gap between children 19 - 20 - // Vertical layout 21 - div() 22 - .flex() 23 - .flex_col() 24 - .gap_3() 25 - 26 - // Shorthand helpers (if available via StyledExt) 27 - h_flex() // flex + flex_row + items_center 28 - v_flex() // flex + flex_col 29 - ``` 30 - 31 - ### Main Axis Alignment (justify) 32 - 33 - ```rust 34 - .justify_start() // Pack at start 35 - .justify_center() // Center items 36 - .justify_end() // Pack at end 37 - .justify_between() // Space between items 38 - .justify_around() // Space around items 39 - .justify_evenly() // Equal spacing 40 - ``` 41 - 42 - ### Cross Axis Alignment (items/align) 43 - 44 - ```rust 45 - .items_start() // Align to start 46 - .items_center() // Center align 47 - .items_end() // Align to end 48 - .items_baseline() // Baseline align 49 - .items_stretch() // Stretch to fill 50 - ``` 51 - 52 - ### Flex Item Properties 53 - 54 - ```rust 55 - .flex_1() // Grow and shrink equally (flex: 1 1 0) 56 - .flex_auto() // Grow/shrink based on content 57 - .flex_initial() // Don't grow, can shrink 58 - .flex_none() // Don't grow or shrink 59 - .flex_grow() // Allow growing 60 - .flex_shrink() // Allow shrinking 61 - .flex_shrink_0() // Prevent shrinking 62 - ``` 63 - 64 - ## Sizing 65 - 66 - ```rust 67 - // Fixed sizes 68 - .w(px(200.0)) // Width in pixels 69 - .h(px(100.0)) // Height in pixels 70 - .size(px(50.0)) // Width and height 71 - 72 - // Relative sizes 73 - .w_full() // 100% width 74 - .h_full() // 100% height 75 - .size_full() // 100% both 76 - .w_half() // 50% width 77 - .min_w(px(100.0)) // Minimum width 78 - .max_w(px(500.0)) // Maximum width 79 - 80 - // Aspect ratio 81 - .aspect_ratio(16.0 / 9.0) 82 - ``` 83 - 84 - ## Spacing 85 - 86 - ### Padding 87 - 88 - ```rust 89 - .p(px(16.0)) // All sides 90 - .p_1() / .p_2() / .p_3() / .p_4() // Preset sizes 91 - .px_2() // Horizontal (left + right) 92 - .py_2() // Vertical (top + bottom) 93 - .pt_2() // Top only 94 - .pb_2() // Bottom only 95 - .pl_2() // Left only 96 - .pr_2() // Right only 97 - ``` 98 - 99 - ### Margin 100 - 101 - ```rust 102 - .m(px(8.0)) // All sides 103 - .m_1() / .m_2() / .m_3() / .m_4() 104 - .mx_auto() // Center horizontally 105 - .my_2() // Vertical margin 106 - .mt_2() / .mb_2() / .ml_2() / .mr_2() // Individual sides 107 - ``` 108 - 109 - ### Gap 110 - 111 - ```rust 112 - .gap(px(8.0)) // Gap between flex children 113 - .gap_1() / .gap_2() / .gap_3() / .gap_4() 114 - .gap_x(px(8.0)) // Horizontal gap only 115 - .gap_y(px(4.0)) // Vertical gap only 116 - ``` 117 - 118 - ## Colors and Backgrounds 119 - 120 - ```rust 121 - // Background 122 - .bg(hsla(0.0, 0.0, 0.2, 1.0)) // HSLA color 123 - .bg(rgb(0x1a1a1a)) // RGB hex 124 - .bg(cx.theme().colors().background) // Theme color 125 - 126 - // Text color (cascades to children) 127 - .text_color(hsla(0.0, 0.0, 1.0, 1.0)) 128 - .text_color(cx.theme().colors().text) 129 - 130 - // Opacity 131 - .opacity(0.5) 132 - ``` 133 - 134 - ## Borders 135 - 136 - ```rust 137 - .border_1() // 1px border all sides 138 - .border_2() // 2px border 139 - .border_t_1() // Top border only 140 - .border_b_1() // Bottom border only 141 - .border_l_1() // Left only 142 - .border_r_1() // Right only 143 - 144 - .border_color(hsla(0.0, 0.0, 0.3, 1.0)) 145 - .border_color(cx.theme().colors().border) 146 - ``` 147 - 148 - ## Corner Radius 149 - 150 - ```rust 151 - .rounded(px(4.0)) // Custom radius 152 - .rounded_sm() // Small 153 - .rounded_md() // Medium 154 - .rounded_lg() // Large 155 - .rounded_xl() // Extra large 156 - .rounded_full() // Fully rounded (pill shape) 157 - .rounded_none() // No rounding 158 - ``` 159 - 160 - ## Shadows 161 - 162 - ```rust 163 - .shadow_sm() // Small shadow 164 - .shadow_md() // Medium shadow 165 - .shadow_lg() // Large shadow 166 - .shadow_xl() // Extra large shadow 167 - ``` 168 - 169 - ## Text Styling 170 - 171 - ```rust 172 - // Size 173 - .text_xs() // 12px 174 - .text_sm() // 14px 175 - .text_base() // 16px 176 - .text_lg() // 18px 177 - .text_xl() // 20px 178 - .text_2xl() // 24px 179 - .text_size(px(18.0)) // Custom size 180 - 181 - // Weight 182 - .font_weight(FontWeight::BOLD) 183 - 184 - // Alignment 185 - .text_left() 186 - .text_center() 187 - .text_right() 188 - 189 - // Overflow 190 - .truncate() // Ellipsis with nowrap 191 - .line_clamp(2) // Max 2 lines 192 - .whitespace_nowrap() // No wrapping 193 - .overflow_hidden() // Hide overflow 194 - 195 - // Decoration 196 - .underline() 197 - .line_through() 198 - ``` 199 - 200 - ## Positioning 201 - 202 - ```rust 203 - .relative() // Position relative 204 - .absolute() // Position absolute 205 - 206 - // Inset (for absolute positioned elements) 207 - .top(px(10.0)) 208 - .bottom(px(10.0)) 209 - .left(px(10.0)) 210 - .right(px(10.0)) 211 - .inset(px(0.0)) // All sides 212 - ``` 213 - 214 - ## Overflow 215 - 216 - ```rust 217 - .overflow_hidden() // Clip overflow 218 - .overflow_scroll() // Scrollable 219 - .overflow_x_scroll() // Horizontal scroll 220 - .overflow_y_scroll() // Vertical scroll 221 - .overflow_visible() // Show overflow 222 - ``` 223 - 224 - ## Cursor 225 - 226 - ```rust 227 - .cursor_default() 228 - .cursor_pointer() 229 - .cursor_text() 230 - .cursor_move() 231 - .cursor_not_allowed() 232 - ``` 233 - 234 - ## Visibility 235 - 236 - ```rust 237 - .visible() 238 - .invisible() // Hidden but takes space 239 - ``` 240 - 241 - ## Theme Integration 242 - 243 - Access theme colors consistently: 244 - 245 - ```rust 246 - fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 247 - let colors = cx.theme().colors(); 248 - 249 - div() 250 - .bg(colors.surface_background) 251 - .border_color(colors.border) 252 - .text_color(colors.text) 253 - .child("Themed content") 254 - } 255 - ``` 256 - 257 - ### Common Theme Colors 258 - 259 - ```rust 260 - colors.background // App background 261 - colors.surface_background // Surface/panel background 262 - colors.elevated_surface_background // Elevated elements 263 - colors.text // Primary text 264 - colors.text_muted // Secondary text 265 - colors.text_disabled // Disabled text 266 - colors.border // Primary borders 267 - colors.border_variant // Secondary borders 268 - colors.border_focused // Focused element border 269 - colors.element_background // Interactive element bg 270 - colors.element_hover // Hover state 271 - colors.element_active // Active/pressed state 272 - colors.element_selected // Selected state 273 - ``` 274 - 275 - ## Conditional Styling 276 - 277 - ```rust 278 - div() 279 - .when(is_selected, |this| { 280 - this.bg(cx.theme().colors().element_selected) 281 - }) 282 - .when(is_hovered, |this| { 283 - this.bg(cx.theme().colors().element_hover) 284 - }) 285 - .when_some(custom_color, |this, color| { 286 - this.bg(color) 287 - }) 288 - ``` 289 - 290 - ## Debug Helpers 291 - 292 - ```rust 293 - // Temporarily visualize layout 294 - .debug_bg_red() 295 - .debug_bg_green() 296 - .debug_bg_blue() 297 - ```
-436
apps/old-gui/.claude/skills/gpui/text-editing.md
··· 1 - --- 2 - name: gpui-text-editing 3 - description: GPUI text rendering, editing, and display mapping. Use when implementing text editors, syntax highlighting, or diff views. 4 - --- 5 - 6 - # GPUI Text Editing 7 - 8 - Patterns from Zed's editor for text rendering and editing. 9 - 10 - ## Text System Basics 11 - 12 - ### Shaping Text 13 - 14 - ```rust 15 - // Shape a line of text for rendering 16 - let line = window.text_system().shape_line( 17 - text.into(), // SharedString 18 - font_size, // Pixels 19 - &[TextRun { 20 - len: text.len(), 21 - font: font.clone(), 22 - color: text_color, 23 - background_color: None, 24 - underline: None, 25 - strikethrough: None, 26 - }], 27 - None, // wrap_width 28 - )?; 29 - 30 - // Get line dimensions 31 - let width = line.width; 32 - let ascent = line.ascent; 33 - let descent = line.descent; 34 - ``` 35 - 36 - ### Multiple Text Runs (Syntax Highlighting) 37 - 38 - ```rust 39 - // Build runs from highlight spans 40 - let mut runs = Vec::new(); 41 - let mut offset = 0; 42 - 43 - for (range, style) in highlights { 44 - if range.start > offset { 45 - // Unstyled gap 46 - runs.push(TextRun { 47 - len: range.start - offset, 48 - font: default_font.clone(), 49 - color: default_color, 50 - ..Default::default() 51 - }); 52 - } 53 - 54 - runs.push(TextRun { 55 - len: range.end - range.start, 56 - font: style.font.unwrap_or(default_font.clone()), 57 - color: style.color.unwrap_or(default_color), 58 - underline: style.underline, 59 - ..Default::default() 60 - }); 61 - 62 - offset = range.end; 63 - } 64 - 65 - let shaped = window.text_system().shape_line(text, font_size, &runs, None)?; 66 - ``` 67 - 68 - ### Line Wrapping 69 - 70 - ```rust 71 - // Create a line wrapper 72 - let mut wrapper = window.text_system().line_wrapper(font.clone(), font_size); 73 - 74 - // Wrap text to width 75 - let wrap_boundaries = wrapper.wrap_line(&text, wrap_width); 76 - // Returns indices where line breaks should occur 77 - ``` 78 - 79 - ## Display Mapping (Zed's Pattern) 80 - 81 - Zed uses layered transformations for display mapping: 82 - 83 - ``` 84 - Buffer Text 85 - ↓ InlayMap (insert inlay hints) 86 - ↓ FoldMap (collapse folded regions) 87 - ↓ TabMap (expand tabs to spaces) 88 - ↓ WrapMap (soft line wrapping) 89 - ↓ BlockMap (insert block decorations) 90 - Display Text 91 - ``` 92 - 93 - ### Basic Display Point Conversion 94 - 95 - ```rust 96 - // Buffer position to display position 97 - struct DisplayMap { 98 - buffer: Entity<Buffer>, 99 - wrap_width: Option<Pixels>, 100 - } 101 - 102 - impl DisplayMap { 103 - fn buffer_point_to_display(&self, point: Point, cx: &App) -> DisplayPoint { 104 - let buffer = self.buffer.read(cx); 105 - // Apply transformations... 106 - DisplayPoint { row, column } 107 - } 108 - 109 - fn display_point_to_buffer(&self, display: DisplayPoint, cx: &App) -> Point { 110 - // Reverse transformations... 111 - Point { row, column } 112 - } 113 - } 114 - 115 - // Display point for rendering 116 - #[derive(Clone, Copy)] 117 - struct DisplayPoint { 118 - row: u32, 119 - column: u32, 120 - } 121 - ``` 122 - 123 - ## Selection Rendering 124 - 125 - ```rust 126 - struct SelectionLayout { 127 - range: Range<DisplayPoint>, 128 - head: DisplayPoint, // Cursor position 129 - is_newest: bool, // Primary selection 130 - cursor_shape: CursorShape, 131 - } 132 - 133 - impl SelectionLayout { 134 - fn from_selection( 135 - selection: &Selection, 136 - map: &DisplayMap, 137 - cx: &App, 138 - ) -> Self { 139 - let start = map.buffer_point_to_display(selection.start, cx); 140 - let end = map.buffer_point_to_display(selection.end, cx); 141 - 142 - Self { 143 - range: start..end, 144 - head: if selection.reversed { start } else { end }, 145 - is_newest: selection.is_primary, 146 - cursor_shape: CursorShape::Bar, 147 - } 148 - } 149 - } 150 - 151 - // Render selection highlight 152 - fn paint_selection( 153 - &self, 154 - selection: &SelectionLayout, 155 - line_height: Pixels, 156 - window: &mut Window, 157 - cx: &App, 158 - ) { 159 - let color = cx.theme().colors().selection; 160 - 161 - for row in selection.range.start.row..=selection.range.end.row { 162 - let start_x = if row == selection.range.start.row { 163 - self.x_for_column(row, selection.range.start.column) 164 - } else { 165 - Pixels::ZERO 166 - }; 167 - 168 - let end_x = if row == selection.range.end.row { 169 - self.x_for_column(row, selection.range.end.column) 170 - } else { 171 - self.line_width(row) 172 - }; 173 - 174 - let y = self.y_for_row(row); 175 - let bounds = Bounds { 176 - origin: point(start_x, y), 177 - size: size(end_x - start_x, line_height), 178 - }; 179 - 180 - window.paint_quad(fill(bounds, color)); 181 - } 182 - } 183 - ``` 184 - 185 - ## Cursor Rendering 186 - 187 - ```rust 188 - enum CursorShape { 189 - Bar, 190 - Block, 191 - Underline, 192 - Hollow, 193 - } 194 - 195 - fn paint_cursor( 196 - &self, 197 - position: DisplayPoint, 198 - shape: CursorShape, 199 - color: Hsla, 200 - line_height: Pixels, 201 - window: &mut Window, 202 - ) { 203 - let x = self.x_for_column(position.row, position.column); 204 - let y = self.y_for_row(position.row); 205 - 206 - let bounds = match shape { 207 - CursorShape::Bar => Bounds { 208 - origin: point(x, y), 209 - size: size(px(2.0), line_height), 210 - }, 211 - CursorShape::Block => Bounds { 212 - origin: point(x, y), 213 - size: size(self.char_width, line_height), 214 - }, 215 - CursorShape::Underline => Bounds { 216 - origin: point(x, y + line_height - px(2.0)), 217 - size: size(self.char_width, px(2.0)), 218 - }, 219 - CursorShape::Hollow => { 220 - // Paint outline 221 - let bounds = Bounds { 222 - origin: point(x, y), 223 - size: size(self.char_width, line_height), 224 - }; 225 - window.paint_quad(outline(bounds, color)); 226 - return; 227 - } 228 - }; 229 - 230 - window.paint_quad(fill(bounds, color)); 231 - } 232 - ``` 233 - 234 - ## Diff Hunks 235 - 236 - ```rust 237 - #[derive(Clone)] 238 - enum DiffHunkStatus { 239 - Added, 240 - Modified, 241 - Deleted, 242 - } 243 - 244 - struct DiffHunk { 245 - buffer_range: Range<Point>, 246 - status: DiffHunkStatus, 247 - } 248 - 249 - // Render diff indicators in gutter 250 - fn paint_diff_hunks( 251 - &self, 252 - hunks: &[DiffHunk], 253 - gutter_width: Pixels, 254 - line_height: Pixels, 255 - window: &mut Window, 256 - cx: &App, 257 - ) { 258 - let colors = cx.theme().colors(); 259 - 260 - for hunk in hunks { 261 - let color = match hunk.status { 262 - DiffHunkStatus::Added => colors.created, 263 - DiffHunkStatus::Modified => colors.modified, 264 - DiffHunkStatus::Deleted => colors.deleted, 265 - }; 266 - 267 - let start_y = self.y_for_row(hunk.buffer_range.start.row); 268 - let end_y = self.y_for_row(hunk.buffer_range.end.row); 269 - let height = end_y - start_y + line_height; 270 - 271 - let indicator_bounds = Bounds { 272 - origin: point(gutter_width - px(3.0), start_y), 273 - size: size(px(2.0), height), 274 - }; 275 - 276 - window.paint_quad(fill(indicator_bounds, color)); 277 - } 278 - } 279 - ``` 280 - 281 - ## Inline Diagnostics 282 - 283 - ```rust 284 - struct Diagnostic { 285 - range: Range<Point>, 286 - severity: DiagnosticSeverity, 287 - message: String, 288 - } 289 - 290 - enum DiagnosticSeverity { 291 - Error, 292 - Warning, 293 - Info, 294 - Hint, 295 - } 296 - 297 - // Underline diagnostic ranges 298 - fn paint_diagnostic_underline( 299 - &self, 300 - diagnostic: &Diagnostic, 301 - window: &mut Window, 302 - cx: &App, 303 - ) { 304 - let color = match diagnostic.severity { 305 - DiagnosticSeverity::Error => cx.theme().colors().error, 306 - DiagnosticSeverity::Warning => cx.theme().colors().warning, 307 - DiagnosticSeverity::Info => cx.theme().colors().info, 308 - DiagnosticSeverity::Hint => cx.theme().colors().hint, 309 - }; 310 - 311 - // Paint wavy underline for error range 312 - let start = self.point_to_pixel(diagnostic.range.start); 313 - let end = self.point_to_pixel(diagnostic.range.end); 314 - 315 - // Use wavy line path or simple underline 316 - window.paint_underline(start, end, color, UnderlineStyle::Wavy); 317 - } 318 - ``` 319 - 320 - ## Gutter Elements 321 - 322 - ```rust 323 - fn render_gutter( 324 - &self, 325 - visible_rows: Range<u32>, 326 - window: &mut Window, 327 - cx: &mut App, 328 - ) -> impl IntoElement { 329 - let line_height = self.line_height; 330 - let gutter_width = self.gutter_width; 331 - 332 - div() 333 - .w(gutter_width) 334 - .h_full() 335 - .flex() 336 - .flex_col() 337 - .children(visible_rows.map(|row| { 338 - self.render_gutter_row(row, line_height, cx) 339 - })) 340 - } 341 - 342 - fn render_gutter_row( 343 - &self, 344 - row: u32, 345 - line_height: Pixels, 346 - cx: &App, 347 - ) -> impl IntoElement { 348 - let line_number = row + 1; 349 - let is_current = row == self.cursor_row; 350 - 351 - div() 352 - .h(line_height) 353 - .w_full() 354 - .flex() 355 - .items_center() 356 - .justify_end() 357 - .pr_2() 358 - .text_color(if is_current { 359 - cx.theme().colors().text 360 - } else { 361 - cx.theme().colors().text_muted 362 - }) 363 - .child(format!("{}", line_number)) 364 - } 365 - ``` 366 - 367 - ## Movement Calculations 368 - 369 - ```rust 370 - impl Editor { 371 - fn move_up(&mut self, cx: &mut Context<Self>) { 372 - self.move_cursors(|cursor, map| { 373 - let current = map.buffer_point_to_display(cursor.position); 374 - if current.row > 0 { 375 - let new_display = DisplayPoint { 376 - row: current.row - 1, 377 - column: cursor.goal_column.unwrap_or(current.column), 378 - }; 379 - let new_buffer = map.display_point_to_buffer(new_display); 380 - cursor.position = new_buffer; 381 - } 382 - }, cx); 383 - } 384 - 385 - fn move_to_line_start(&mut self, cx: &mut Context<Self>) { 386 - self.move_cursors(|cursor, map| { 387 - cursor.position.column = 0; 388 - cursor.goal_column = None; 389 - }, cx); 390 - } 391 - 392 - fn move_to_line_end(&mut self, cx: &mut Context<Self>) { 393 - self.move_cursors(|cursor, map| { 394 - let line_len = map.line_len(cursor.position.row); 395 - cursor.position.column = line_len; 396 - cursor.goal_column = None; 397 - }, cx); 398 - } 399 - } 400 - ``` 401 - 402 - ## Virtual Scrolling for Large Files 403 - 404 - ```rust 405 - struct EditorElement { 406 - scroll_position: Point<Pixels>, 407 - visible_row_range: Range<u32>, 408 - } 409 - 410 - impl EditorElement { 411 - fn calculate_visible_rows( 412 - &self, 413 - viewport_height: Pixels, 414 - line_height: Pixels, 415 - total_rows: u32, 416 - ) -> Range<u32> { 417 - let scroll_top = self.scroll_position.y; 418 - let first_visible = (scroll_top / line_height).floor() as u32; 419 - let visible_count = (viewport_height / line_height).ceil() as u32 + 1; 420 - let last_visible = (first_visible + visible_count).min(total_rows); 421 - 422 - first_visible..last_visible 423 - } 424 - 425 - fn render_visible_lines( 426 - &self, 427 - visible_rows: Range<u32>, 428 - window: &mut Window, 429 - cx: &mut App, 430 - ) -> Vec<impl IntoElement> { 431 - visible_rows 432 - .map(|row| self.render_line(row, window, cx)) 433 - .collect() 434 - } 435 - } 436 - ```
-8570
apps/old-gui/Cargo.lock
··· 1 - # This file is automatically @generated by Cargo. 2 - # It is not intended for manual editing. 3 - version = 4 4 - 5 - [[package]] 6 - name = "adler2" 7 - version = "2.0.1" 8 - source = "registry+https://github.com/rust-lang/crates.io-index" 9 - checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 10 - 11 - [[package]] 12 - name = "aes" 13 - version = "0.8.4" 14 - source = "registry+https://github.com/rust-lang/crates.io-index" 15 - checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" 16 - dependencies = [ 17 - "cfg-if", 18 - "cipher", 19 - "cpufeatures", 20 - "zeroize", 21 - ] 22 - 23 - [[package]] 24 - name = "ahash" 25 - version = "0.8.12" 26 - source = "registry+https://github.com/rust-lang/crates.io-index" 27 - checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 28 - dependencies = [ 29 - "cfg-if", 30 - "const-random", 31 - "once_cell", 32 - "version_check", 33 - "zerocopy", 34 - ] 35 - 36 - [[package]] 37 - name = "aho-corasick" 38 - version = "1.1.4" 39 - source = "registry+https://github.com/rust-lang/crates.io-index" 40 - checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 41 - dependencies = [ 42 - "memchr", 43 - ] 44 - 45 - [[package]] 46 - name = "aligned" 47 - version = "0.4.2" 48 - source = "registry+https://github.com/rust-lang/crates.io-index" 49 - checksum = "377e4c0ba83e4431b10df45c1d4666f178ea9c552cac93e60c3a88bf32785923" 50 - dependencies = [ 51 - "as-slice", 52 - ] 53 - 54 - [[package]] 55 - name = "aligned-vec" 56 - version = "0.6.4" 57 - source = "registry+https://github.com/rust-lang/crates.io-index" 58 - checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" 59 - dependencies = [ 60 - "equator", 61 - ] 62 - 63 - [[package]] 64 - name = "allocator-api2" 65 - version = "0.2.21" 66 - source = "registry+https://github.com/rust-lang/crates.io-index" 67 - checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 68 - 69 - [[package]] 70 - name = "android_system_properties" 71 - version = "0.1.5" 72 - source = "registry+https://github.com/rust-lang/crates.io-index" 73 - checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 74 - dependencies = [ 75 - "libc", 76 - ] 77 - 78 - [[package]] 79 - name = "anyhow" 80 - version = "1.0.100" 81 - source = "registry+https://github.com/rust-lang/crates.io-index" 82 - checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" 83 - 84 - [[package]] 85 - name = "ar_archive_writer" 86 - version = "0.2.0" 87 - source = "registry+https://github.com/rust-lang/crates.io-index" 88 - checksum = "f0c269894b6fe5e9d7ada0cf69b5bf847ff35bc25fc271f08e1d080fce80339a" 89 - dependencies = [ 90 - "object", 91 - ] 92 - 93 - [[package]] 94 - name = "arbitrary" 95 - version = "1.4.2" 96 - source = "registry+https://github.com/rust-lang/crates.io-index" 97 - checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" 98 - 99 - [[package]] 100 - name = "arc-swap" 101 - version = "1.7.1" 102 - source = "registry+https://github.com/rust-lang/crates.io-index" 103 - checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 104 - 105 - [[package]] 106 - name = "arg_enum_proc_macro" 107 - version = "0.3.4" 108 - source = "registry+https://github.com/rust-lang/crates.io-index" 109 - checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" 110 - dependencies = [ 111 - "proc-macro2", 112 - "quote", 113 - "syn 2.0.111", 114 - ] 115 - 116 - [[package]] 117 - name = "arraydeque" 118 - version = "0.5.1" 119 - source = "registry+https://github.com/rust-lang/crates.io-index" 120 - checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" 121 - 122 - [[package]] 123 - name = "arrayref" 124 - version = "0.3.9" 125 - source = "registry+https://github.com/rust-lang/crates.io-index" 126 - checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" 127 - 128 - [[package]] 129 - name = "arrayvec" 130 - version = "0.7.6" 131 - source = "registry+https://github.com/rust-lang/crates.io-index" 132 - checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 133 - 134 - [[package]] 135 - name = "as-raw-xcb-connection" 136 - version = "1.0.1" 137 - source = "registry+https://github.com/rust-lang/crates.io-index" 138 - checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" 139 - 140 - [[package]] 141 - name = "as-slice" 142 - version = "0.2.1" 143 - source = "registry+https://github.com/rust-lang/crates.io-index" 144 - checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" 145 - dependencies = [ 146 - "stable_deref_trait", 147 - ] 148 - 149 - [[package]] 150 - name = "ash" 151 - version = "0.38.0+1.3.281" 152 - source = "registry+https://github.com/rust-lang/crates.io-index" 153 - checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" 154 - dependencies = [ 155 - "libloading", 156 - ] 157 - 158 - [[package]] 159 - name = "ash-window" 160 - version = "0.13.0" 161 - source = "registry+https://github.com/rust-lang/crates.io-index" 162 - checksum = "52bca67b61cb81e5553babde81b8211f713cb6db79766f80168f3e5f40ea6c82" 163 - dependencies = [ 164 - "ash", 165 - "raw-window-handle", 166 - "raw-window-metal", 167 - ] 168 - 169 - [[package]] 170 - name = "ashpd" 171 - version = "0.11.0" 172 - source = "registry+https://github.com/rust-lang/crates.io-index" 173 - checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" 174 - dependencies = [ 175 - "async-fs", 176 - "async-net", 177 - "enumflags2", 178 - "futures-channel", 179 - "futures-util", 180 - "rand 0.9.2", 181 - "serde", 182 - "serde_repr", 183 - "url", 184 - "wayland-backend", 185 - "wayland-client", 186 - "wayland-protocols 0.32.9", 187 - "zbus", 188 - ] 189 - 190 - [[package]] 191 - name = "ashpd" 192 - version = "0.12.0" 193 - source = "registry+https://github.com/rust-lang/crates.io-index" 194 - checksum = "da0986d5b4f0802160191ad75f8d33ada000558757db3defb70299ca95d9fcbd" 195 - dependencies = [ 196 - "async-fs", 197 - "async-net", 198 - "enumflags2", 199 - "futures-channel", 200 - "futures-util", 201 - "rand 0.9.2", 202 - "serde", 203 - "serde_repr", 204 - "url", 205 - "zbus", 206 - ] 207 - 208 - [[package]] 209 - name = "async-broadcast" 210 - version = "0.7.2" 211 - source = "registry+https://github.com/rust-lang/crates.io-index" 212 - checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 213 - dependencies = [ 214 - "event-listener 5.4.1", 215 - "event-listener-strategy", 216 - "futures-core", 217 - "pin-project-lite", 218 - ] 219 - 220 - [[package]] 221 - name = "async-channel" 222 - version = "1.9.0" 223 - source = "registry+https://github.com/rust-lang/crates.io-index" 224 - checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 225 - dependencies = [ 226 - "concurrent-queue", 227 - "event-listener 2.5.3", 228 - "futures-core", 229 - ] 230 - 231 - [[package]] 232 - name = "async-channel" 233 - version = "2.5.0" 234 - source = "registry+https://github.com/rust-lang/crates.io-index" 235 - checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" 236 - dependencies = [ 237 - "concurrent-queue", 238 - "event-listener-strategy", 239 - "futures-core", 240 - "pin-project-lite", 241 - ] 242 - 243 - [[package]] 244 - name = "async-compression" 245 - version = "0.4.36" 246 - source = "registry+https://github.com/rust-lang/crates.io-index" 247 - checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37" 248 - dependencies = [ 249 - "compression-codecs", 250 - "compression-core", 251 - "futures-core", 252 - "futures-io", 253 - "pin-project-lite", 254 - ] 255 - 256 - [[package]] 257 - name = "async-executor" 258 - version = "1.13.3" 259 - source = "registry+https://github.com/rust-lang/crates.io-index" 260 - checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" 261 - dependencies = [ 262 - "async-task", 263 - "concurrent-queue", 264 - "fastrand 2.3.0", 265 - "futures-lite 2.6.1", 266 - "pin-project-lite", 267 - "slab", 268 - ] 269 - 270 - [[package]] 271 - name = "async-fs" 272 - version = "2.2.0" 273 - source = "registry+https://github.com/rust-lang/crates.io-index" 274 - checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" 275 - dependencies = [ 276 - "async-lock", 277 - "blocking", 278 - "futures-lite 2.6.1", 279 - ] 280 - 281 - [[package]] 282 - name = "async-global-executor" 283 - version = "2.4.1" 284 - source = "registry+https://github.com/rust-lang/crates.io-index" 285 - checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" 286 - dependencies = [ 287 - "async-channel 2.5.0", 288 - "async-executor", 289 - "async-io", 290 - "async-lock", 291 - "blocking", 292 - "futures-lite 2.6.1", 293 - "once_cell", 294 - ] 295 - 296 - [[package]] 297 - name = "async-io" 298 - version = "2.6.0" 299 - source = "registry+https://github.com/rust-lang/crates.io-index" 300 - checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" 301 - dependencies = [ 302 - "autocfg", 303 - "cfg-if", 304 - "concurrent-queue", 305 - "futures-io", 306 - "futures-lite 2.6.1", 307 - "parking", 308 - "polling", 309 - "rustix 1.1.2", 310 - "slab", 311 - "windows-sys 0.61.2", 312 - ] 313 - 314 - [[package]] 315 - name = "async-lock" 316 - version = "3.4.1" 317 - source = "registry+https://github.com/rust-lang/crates.io-index" 318 - checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" 319 - dependencies = [ 320 - "event-listener 5.4.1", 321 - "event-listener-strategy", 322 - "pin-project-lite", 323 - ] 324 - 325 - [[package]] 326 - name = "async-net" 327 - version = "2.0.0" 328 - source = "registry+https://github.com/rust-lang/crates.io-index" 329 - checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" 330 - dependencies = [ 331 - "async-io", 332 - "blocking", 333 - "futures-lite 2.6.1", 334 - ] 335 - 336 - [[package]] 337 - name = "async-process" 338 - version = "2.5.0" 339 - source = "registry+https://github.com/rust-lang/crates.io-index" 340 - checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" 341 - dependencies = [ 342 - "async-channel 2.5.0", 343 - "async-io", 344 - "async-lock", 345 - "async-signal", 346 - "async-task", 347 - "blocking", 348 - "cfg-if", 349 - "event-listener 5.4.1", 350 - "futures-lite 2.6.1", 351 - "rustix 1.1.2", 352 - ] 353 - 354 - [[package]] 355 - name = "async-recursion" 356 - version = "1.1.1" 357 - source = "registry+https://github.com/rust-lang/crates.io-index" 358 - checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 359 - dependencies = [ 360 - "proc-macro2", 361 - "quote", 362 - "syn 2.0.111", 363 - ] 364 - 365 - [[package]] 366 - name = "async-signal" 367 - version = "0.2.13" 368 - source = "registry+https://github.com/rust-lang/crates.io-index" 369 - checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" 370 - dependencies = [ 371 - "async-io", 372 - "async-lock", 373 - "atomic-waker", 374 - "cfg-if", 375 - "futures-core", 376 - "futures-io", 377 - "rustix 1.1.2", 378 - "signal-hook-registry", 379 - "slab", 380 - "windows-sys 0.61.2", 381 - ] 382 - 383 - [[package]] 384 - name = "async-std" 385 - version = "1.13.2" 386 - source = "registry+https://github.com/rust-lang/crates.io-index" 387 - checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" 388 - dependencies = [ 389 - "async-channel 1.9.0", 390 - "async-global-executor", 391 - "async-io", 392 - "async-lock", 393 - "async-process", 394 - "crossbeam-utils", 395 - "futures-channel", 396 - "futures-core", 397 - "futures-io", 398 - "futures-lite 2.6.1", 399 - "gloo-timers", 400 - "kv-log-macro", 401 - "log", 402 - "memchr", 403 - "once_cell", 404 - "pin-project-lite", 405 - "pin-utils", 406 - "slab", 407 - "wasm-bindgen-futures", 408 - ] 409 - 410 - [[package]] 411 - name = "async-task" 412 - version = "4.7.1" 413 - source = "registry+https://github.com/rust-lang/crates.io-index" 414 - checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 415 - 416 - [[package]] 417 - name = "async-trait" 418 - version = "0.1.89" 419 - source = "registry+https://github.com/rust-lang/crates.io-index" 420 - checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 421 - dependencies = [ 422 - "proc-macro2", 423 - "quote", 424 - "syn 2.0.111", 425 - ] 426 - 427 - [[package]] 428 - name = "async_zip" 429 - version = "0.0.17" 430 - source = "registry+https://github.com/rust-lang/crates.io-index" 431 - checksum = "00b9f7252833d5ed4b00aa9604b563529dd5e11de9c23615de2dcdf91eb87b52" 432 - dependencies = [ 433 - "async-compression", 434 - "crc32fast", 435 - "futures-lite 2.6.1", 436 - "pin-project", 437 - "thiserror 1.0.69", 438 - ] 439 - 440 - [[package]] 441 - name = "atomic" 442 - version = "0.5.3" 443 - source = "registry+https://github.com/rust-lang/crates.io-index" 444 - checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" 445 - 446 - [[package]] 447 - name = "atomic-waker" 448 - version = "1.1.2" 449 - source = "registry+https://github.com/rust-lang/crates.io-index" 450 - checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 451 - 452 - [[package]] 453 - name = "autocfg" 454 - version = "1.5.0" 455 - source = "registry+https://github.com/rust-lang/crates.io-index" 456 - checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 457 - 458 - [[package]] 459 - name = "av-scenechange" 460 - version = "0.14.1" 461 - source = "registry+https://github.com/rust-lang/crates.io-index" 462 - checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" 463 - dependencies = [ 464 - "aligned", 465 - "anyhow", 466 - "arg_enum_proc_macro", 467 - "arrayvec", 468 - "log", 469 - "num-rational", 470 - "num-traits", 471 - "pastey", 472 - "rayon", 473 - "thiserror 2.0.17", 474 - "v_frame", 475 - "y4m", 476 - ] 477 - 478 - [[package]] 479 - name = "av1-grain" 480 - version = "0.2.5" 481 - source = "registry+https://github.com/rust-lang/crates.io-index" 482 - checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" 483 - dependencies = [ 484 - "anyhow", 485 - "arrayvec", 486 - "log", 487 - "nom 8.0.0", 488 - "num-rational", 489 - "v_frame", 490 - ] 491 - 492 - [[package]] 493 - name = "avif-serialize" 494 - version = "0.8.6" 495 - source = "registry+https://github.com/rust-lang/crates.io-index" 496 - checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" 497 - dependencies = [ 498 - "arrayvec", 499 - ] 500 - 501 - [[package]] 502 - name = "base64" 503 - version = "0.22.1" 504 - source = "registry+https://github.com/rust-lang/crates.io-index" 505 - checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 506 - 507 - [[package]] 508 - name = "beef" 509 - version = "0.5.2" 510 - source = "registry+https://github.com/rust-lang/crates.io-index" 511 - checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" 512 - 513 - [[package]] 514 - name = "bindgen" 515 - version = "0.71.1" 516 - source = "registry+https://github.com/rust-lang/crates.io-index" 517 - checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" 518 - dependencies = [ 519 - "bitflags 2.10.0", 520 - "cexpr", 521 - "clang-sys", 522 - "itertools 0.13.0", 523 - "log", 524 - "prettyplease", 525 - "proc-macro2", 526 - "quote", 527 - "regex", 528 - "rustc-hash 2.1.1", 529 - "shlex", 530 - "syn 2.0.111", 531 - ] 532 - 533 - [[package]] 534 - name = "bit-set" 535 - version = "0.8.0" 536 - source = "registry+https://github.com/rust-lang/crates.io-index" 537 - checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" 538 - dependencies = [ 539 - "bit-vec", 540 - ] 541 - 542 - [[package]] 543 - name = "bit-vec" 544 - version = "0.8.0" 545 - source = "registry+https://github.com/rust-lang/crates.io-index" 546 - checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" 547 - 548 - [[package]] 549 - name = "bit_field" 550 - version = "0.10.3" 551 - source = "registry+https://github.com/rust-lang/crates.io-index" 552 - checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" 553 - 554 - [[package]] 555 - name = "bitflags" 556 - version = "1.3.2" 557 - source = "registry+https://github.com/rust-lang/crates.io-index" 558 - checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 559 - 560 - [[package]] 561 - name = "bitflags" 562 - version = "2.10.0" 563 - source = "registry+https://github.com/rust-lang/crates.io-index" 564 - checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" 565 - dependencies = [ 566 - "serde_core", 567 - ] 568 - 569 - [[package]] 570 - name = "bitstream-io" 571 - version = "4.9.0" 572 - source = "registry+https://github.com/rust-lang/crates.io-index" 573 - checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757" 574 - dependencies = [ 575 - "core2", 576 - ] 577 - 578 - [[package]] 579 - name = "blade-graphics" 580 - version = "0.7.0" 581 - source = "registry+https://github.com/rust-lang/crates.io-index" 582 - checksum = "e4deb8f595ce7f00dee3543ebf6fd9a20ea86fc421ab79600dac30876250bdae" 583 - dependencies = [ 584 - "ash", 585 - "ash-window", 586 - "bitflags 2.10.0", 587 - "bytemuck", 588 - "codespan-reporting", 589 - "glow", 590 - "gpu-alloc", 591 - "gpu-alloc-ash", 592 - "hidden-trait", 593 - "js-sys", 594 - "khronos-egl", 595 - "libloading", 596 - "log", 597 - "mint", 598 - "naga", 599 - "objc2", 600 - "objc2-app-kit", 601 - "objc2-core-foundation", 602 - "objc2-foundation", 603 - "objc2-metal", 604 - "objc2-quartz-core", 605 - "objc2-ui-kit", 606 - "once_cell", 607 - "raw-window-handle", 608 - "slab", 609 - "wasm-bindgen", 610 - "web-sys", 611 - ] 612 - 613 - [[package]] 614 - name = "blade-macros" 615 - version = "0.3.0" 616 - source = "registry+https://github.com/rust-lang/crates.io-index" 617 - checksum = "27142319e2f4c264581067eaccb9f80acccdde60d8b4bf57cc50cd3152f109ca" 618 - dependencies = [ 619 - "proc-macro2", 620 - "quote", 621 - "syn 2.0.111", 622 - ] 623 - 624 - [[package]] 625 - name = "blade-util" 626 - version = "0.3.0" 627 - source = "registry+https://github.com/rust-lang/crates.io-index" 628 - checksum = "3a6be3a82c001ba7a17b6f8e413ede5d1004e6047213f8efaf0ffc15b5c4904c" 629 - dependencies = [ 630 - "blade-graphics", 631 - "bytemuck", 632 - "log", 633 - "profiling", 634 - ] 635 - 636 - [[package]] 637 - name = "blake2" 638 - version = "0.10.6" 639 - source = "registry+https://github.com/rust-lang/crates.io-index" 640 - checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" 641 - dependencies = [ 642 - "digest", 643 - ] 644 - 645 - [[package]] 646 - name = "block" 647 - version = "0.1.6" 648 - source = "registry+https://github.com/rust-lang/crates.io-index" 649 - checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 650 - 651 - [[package]] 652 - name = "block-buffer" 653 - version = "0.10.4" 654 - source = "registry+https://github.com/rust-lang/crates.io-index" 655 - checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 656 - dependencies = [ 657 - "generic-array", 658 - ] 659 - 660 - [[package]] 661 - name = "block-padding" 662 - version = "0.3.3" 663 - source = "registry+https://github.com/rust-lang/crates.io-index" 664 - checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" 665 - dependencies = [ 666 - "generic-array", 667 - ] 668 - 669 - [[package]] 670 - name = "block2" 671 - version = "0.6.2" 672 - source = "registry+https://github.com/rust-lang/crates.io-index" 673 - checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" 674 - dependencies = [ 675 - "objc2", 676 - ] 677 - 678 - [[package]] 679 - name = "blocking" 680 - version = "1.6.2" 681 - source = "registry+https://github.com/rust-lang/crates.io-index" 682 - checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" 683 - dependencies = [ 684 - "async-channel 2.5.0", 685 - "async-task", 686 - "futures-io", 687 - "futures-lite 2.6.1", 688 - "piper", 689 - ] 690 - 691 - [[package]] 692 - name = "bstr" 693 - version = "1.12.1" 694 - source = "registry+https://github.com/rust-lang/crates.io-index" 695 - checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" 696 - dependencies = [ 697 - "memchr", 698 - "regex-automata", 699 - "serde", 700 - ] 701 - 702 - [[package]] 703 - name = "built" 704 - version = "0.8.0" 705 - source = "registry+https://github.com/rust-lang/crates.io-index" 706 - checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" 707 - 708 - [[package]] 709 - name = "bumpalo" 710 - version = "3.19.0" 711 - source = "registry+https://github.com/rust-lang/crates.io-index" 712 - checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 713 - 714 - [[package]] 715 - name = "bytemuck" 716 - version = "1.24.0" 717 - source = "registry+https://github.com/rust-lang/crates.io-index" 718 - checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" 719 - dependencies = [ 720 - "bytemuck_derive", 721 - ] 722 - 723 - [[package]] 724 - name = "bytemuck_derive" 725 - version = "1.10.2" 726 - source = "registry+https://github.com/rust-lang/crates.io-index" 727 - checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" 728 - dependencies = [ 729 - "proc-macro2", 730 - "quote", 731 - "syn 2.0.111", 732 - ] 733 - 734 - [[package]] 735 - name = "byteorder" 736 - version = "1.5.0" 737 - source = "registry+https://github.com/rust-lang/crates.io-index" 738 - checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 739 - 740 - [[package]] 741 - name = "byteorder-lite" 742 - version = "0.1.0" 743 - source = "registry+https://github.com/rust-lang/crates.io-index" 744 - checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 745 - 746 - [[package]] 747 - name = "bytes" 748 - version = "1.11.0" 749 - source = "registry+https://github.com/rust-lang/crates.io-index" 750 - checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" 751 - 752 - [[package]] 753 - name = "calloop" 754 - version = "0.13.0" 755 - source = "registry+https://github.com/rust-lang/crates.io-index" 756 - checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" 757 - dependencies = [ 758 - "bitflags 2.10.0", 759 - "log", 760 - "polling", 761 - "rustix 0.38.44", 762 - "slab", 763 - "thiserror 1.0.69", 764 - ] 765 - 766 - [[package]] 767 - name = "calloop-wayland-source" 768 - version = "0.3.0" 769 - source = "registry+https://github.com/rust-lang/crates.io-index" 770 - checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" 771 - dependencies = [ 772 - "calloop", 773 - "rustix 0.38.44", 774 - "wayland-backend", 775 - "wayland-client", 776 - ] 777 - 778 - [[package]] 779 - name = "cbc" 780 - version = "0.1.2" 781 - source = "registry+https://github.com/rust-lang/crates.io-index" 782 - checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" 783 - dependencies = [ 784 - "cipher", 785 - ] 786 - 787 - [[package]] 788 - name = "cbindgen" 789 - version = "0.28.0" 790 - source = "registry+https://github.com/rust-lang/crates.io-index" 791 - checksum = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff" 792 - dependencies = [ 793 - "heck 0.4.1", 794 - "indexmap", 795 - "log", 796 - "proc-macro2", 797 - "quote", 798 - "serde", 799 - "serde_json", 800 - "syn 2.0.111", 801 - "tempfile", 802 - "toml 0.8.23", 803 - ] 804 - 805 - [[package]] 806 - name = "cc" 807 - version = "1.2.49" 808 - source = "registry+https://github.com/rust-lang/crates.io-index" 809 - checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" 810 - dependencies = [ 811 - "find-msvc-tools", 812 - "jobserver", 813 - "libc", 814 - "shlex", 815 - ] 816 - 817 - [[package]] 818 - name = "cexpr" 819 - version = "0.6.0" 820 - source = "registry+https://github.com/rust-lang/crates.io-index" 821 - checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 822 - dependencies = [ 823 - "nom 7.1.3", 824 - ] 825 - 826 - [[package]] 827 - name = "cfg-if" 828 - version = "1.0.4" 829 - source = "registry+https://github.com/rust-lang/crates.io-index" 830 - checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 831 - 832 - [[package]] 833 - name = "cfg_aliases" 834 - version = "0.2.1" 835 - source = "registry+https://github.com/rust-lang/crates.io-index" 836 - checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 837 - 838 - [[package]] 839 - name = "cgl" 840 - version = "0.3.2" 841 - source = "registry+https://github.com/rust-lang/crates.io-index" 842 - checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" 843 - dependencies = [ 844 - "libc", 845 - ] 846 - 847 - [[package]] 848 - name = "chrono" 849 - version = "0.4.42" 850 - source = "registry+https://github.com/rust-lang/crates.io-index" 851 - checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" 852 - dependencies = [ 853 - "iana-time-zone", 854 - "num-traits", 855 - "serde", 856 - "windows-link 0.2.1", 857 - ] 858 - 859 - [[package]] 860 - name = "cipher" 861 - version = "0.4.4" 862 - source = "registry+https://github.com/rust-lang/crates.io-index" 863 - checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 864 - dependencies = [ 865 - "crypto-common", 866 - "inout", 867 - "zeroize", 868 - ] 869 - 870 - [[package]] 871 - name = "clang-sys" 872 - version = "1.8.1" 873 - source = "registry+https://github.com/rust-lang/crates.io-index" 874 - checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 875 - dependencies = [ 876 - "glob", 877 - "libc", 878 - "libloading", 879 - ] 880 - 881 - [[package]] 882 - name = "clru" 883 - version = "0.6.2" 884 - source = "registry+https://github.com/rust-lang/crates.io-index" 885 - checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" 886 - 887 - [[package]] 888 - name = "cocoa" 889 - version = "0.25.0" 890 - source = "registry+https://github.com/rust-lang/crates.io-index" 891 - checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" 892 - dependencies = [ 893 - "bitflags 1.3.2", 894 - "block", 895 - "cocoa-foundation 0.1.2", 896 - "core-foundation 0.9.4", 897 - "core-graphics 0.23.2", 898 - "foreign-types", 899 - "libc", 900 - "objc", 901 - ] 902 - 903 - [[package]] 904 - name = "cocoa" 905 - version = "0.26.0" 906 - source = "registry+https://github.com/rust-lang/crates.io-index" 907 - checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" 908 - dependencies = [ 909 - "bitflags 2.10.0", 910 - "block", 911 - "cocoa-foundation 0.2.0", 912 - "core-foundation 0.10.0", 913 - "core-graphics 0.24.0", 914 - "foreign-types", 915 - "libc", 916 - "objc", 917 - ] 918 - 919 - [[package]] 920 - name = "cocoa-foundation" 921 - version = "0.1.2" 922 - source = "registry+https://github.com/rust-lang/crates.io-index" 923 - checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" 924 - dependencies = [ 925 - "bitflags 1.3.2", 926 - "block", 927 - "core-foundation 0.9.4", 928 - "core-graphics-types 0.1.3", 929 - "libc", 930 - "objc", 931 - ] 932 - 933 - [[package]] 934 - name = "cocoa-foundation" 935 - version = "0.2.0" 936 - source = "registry+https://github.com/rust-lang/crates.io-index" 937 - checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" 938 - dependencies = [ 939 - "bitflags 2.10.0", 940 - "block", 941 - "core-foundation 0.10.0", 942 - "core-graphics-types 0.2.0", 943 - "libc", 944 - "objc", 945 - ] 946 - 947 - [[package]] 948 - name = "codespan-reporting" 949 - version = "0.12.0" 950 - source = "registry+https://github.com/rust-lang/crates.io-index" 951 - checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" 952 - dependencies = [ 953 - "serde", 954 - "termcolor", 955 - "unicode-width", 956 - ] 957 - 958 - [[package]] 959 - name = "color_quant" 960 - version = "1.1.0" 961 - source = "registry+https://github.com/rust-lang/crates.io-index" 962 - checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 963 - 964 - [[package]] 965 - name = "command-fds" 966 - version = "0.3.2" 967 - source = "registry+https://github.com/rust-lang/crates.io-index" 968 - checksum = "f849b92c694fe237ecd8fafd1ba0df7ae0d45c1df6daeb7f68ed4220d51640bd" 969 - dependencies = [ 970 - "nix 0.30.1", 971 - "thiserror 2.0.17", 972 - ] 973 - 974 - [[package]] 975 - name = "compression-codecs" 976 - version = "0.4.35" 977 - source = "registry+https://github.com/rust-lang/crates.io-index" 978 - checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2" 979 - dependencies = [ 980 - "compression-core", 981 - "deflate64", 982 - "flate2", 983 - "memchr", 984 - ] 985 - 986 - [[package]] 987 - name = "compression-core" 988 - version = "0.4.31" 989 - source = "registry+https://github.com/rust-lang/crates.io-index" 990 - checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" 991 - 992 - [[package]] 993 - name = "concurrent-queue" 994 - version = "2.5.0" 995 - source = "registry+https://github.com/rust-lang/crates.io-index" 996 - checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 997 - dependencies = [ 998 - "crossbeam-utils", 999 - ] 1000 - 1001 - [[package]] 1002 - name = "config" 1003 - version = "0.15.19" 1004 - source = "registry+https://github.com/rust-lang/crates.io-index" 1005 - checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" 1006 - dependencies = [ 1007 - "async-trait", 1008 - "convert_case 0.6.0", 1009 - "json5", 1010 - "pathdiff", 1011 - "ron", 1012 - "rust-ini", 1013 - "serde-untagged", 1014 - "serde_core", 1015 - "serde_json", 1016 - "toml 0.9.8", 1017 - "winnow", 1018 - "yaml-rust2", 1019 - ] 1020 - 1021 - [[package]] 1022 - name = "const-random" 1023 - version = "0.1.18" 1024 - source = "registry+https://github.com/rust-lang/crates.io-index" 1025 - checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" 1026 - dependencies = [ 1027 - "const-random-macro", 1028 - ] 1029 - 1030 - [[package]] 1031 - name = "const-random-macro" 1032 - version = "0.1.16" 1033 - source = "registry+https://github.com/rust-lang/crates.io-index" 1034 - checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" 1035 - dependencies = [ 1036 - "getrandom 0.2.16", 1037 - "once_cell", 1038 - "tiny-keccak", 1039 - ] 1040 - 1041 - [[package]] 1042 - name = "convert_case" 1043 - version = "0.4.0" 1044 - source = "registry+https://github.com/rust-lang/crates.io-index" 1045 - checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 1046 - 1047 - [[package]] 1048 - name = "convert_case" 1049 - version = "0.6.0" 1050 - source = "registry+https://github.com/rust-lang/crates.io-index" 1051 - checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" 1052 - dependencies = [ 1053 - "unicode-segmentation", 1054 - ] 1055 - 1056 - [[package]] 1057 - name = "core-foundation" 1058 - version = "0.9.4" 1059 - source = "registry+https://github.com/rust-lang/crates.io-index" 1060 - checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 1061 - dependencies = [ 1062 - "core-foundation-sys", 1063 - "libc", 1064 - ] 1065 - 1066 - [[package]] 1067 - name = "core-foundation" 1068 - version = "0.10.0" 1069 - source = "registry+https://github.com/rust-lang/crates.io-index" 1070 - checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" 1071 - dependencies = [ 1072 - "core-foundation-sys", 1073 - "libc", 1074 - ] 1075 - 1076 - [[package]] 1077 - name = "core-foundation-sys" 1078 - version = "0.8.7" 1079 - source = "registry+https://github.com/rust-lang/crates.io-index" 1080 - checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 1081 - 1082 - [[package]] 1083 - name = "core-graphics" 1084 - version = "0.23.2" 1085 - source = "registry+https://github.com/rust-lang/crates.io-index" 1086 - checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 1087 - dependencies = [ 1088 - "bitflags 1.3.2", 1089 - "core-foundation 0.9.4", 1090 - "core-graphics-types 0.1.3", 1091 - "foreign-types", 1092 - "libc", 1093 - ] 1094 - 1095 - [[package]] 1096 - name = "core-graphics" 1097 - version = "0.24.0" 1098 - source = "registry+https://github.com/rust-lang/crates.io-index" 1099 - checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" 1100 - dependencies = [ 1101 - "bitflags 2.10.0", 1102 - "core-foundation 0.10.0", 1103 - "core-graphics-types 0.2.0", 1104 - "foreign-types", 1105 - "libc", 1106 - ] 1107 - 1108 - [[package]] 1109 - name = "core-graphics-helmer-fork" 1110 - version = "0.24.0" 1111 - source = "registry+https://github.com/rust-lang/crates.io-index" 1112 - checksum = "32eb7c354ae9f6d437a6039099ce7ecd049337a8109b23d73e48e8ffba8e9cd5" 1113 - dependencies = [ 1114 - "bitflags 2.10.0", 1115 - "core-foundation 0.9.4", 1116 - "core-graphics-types 0.1.3", 1117 - "foreign-types", 1118 - "libc", 1119 - ] 1120 - 1121 - [[package]] 1122 - name = "core-graphics-types" 1123 - version = "0.1.3" 1124 - source = "registry+https://github.com/rust-lang/crates.io-index" 1125 - checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 1126 - dependencies = [ 1127 - "bitflags 1.3.2", 1128 - "core-foundation 0.9.4", 1129 - "libc", 1130 - ] 1131 - 1132 - [[package]] 1133 - name = "core-graphics-types" 1134 - version = "0.2.0" 1135 - source = "registry+https://github.com/rust-lang/crates.io-index" 1136 - checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" 1137 - dependencies = [ 1138 - "bitflags 2.10.0", 1139 - "core-foundation 0.10.0", 1140 - "libc", 1141 - ] 1142 - 1143 - [[package]] 1144 - name = "core-graphics2" 1145 - version = "0.4.1" 1146 - source = "registry+https://github.com/rust-lang/crates.io-index" 1147 - checksum = "7e4583956b9806b69f73fcb23aee05eb3620efc282972f08f6a6db7504f8334d" 1148 - dependencies = [ 1149 - "bitflags 2.10.0", 1150 - "block", 1151 - "cfg-if", 1152 - "core-foundation 0.10.0", 1153 - "libc", 1154 - ] 1155 - 1156 - [[package]] 1157 - name = "core-text" 1158 - version = "21.0.0" 1159 - source = "registry+https://github.com/rust-lang/crates.io-index" 1160 - checksum = "a593227b66cbd4007b2a050dfdd9e1d1318311409c8d600dc82ba1b15ca9c130" 1161 - dependencies = [ 1162 - "core-foundation 0.10.0", 1163 - "core-graphics 0.24.0", 1164 - "foreign-types", 1165 - "libc", 1166 - ] 1167 - 1168 - [[package]] 1169 - name = "core-video" 1170 - version = "0.4.3" 1171 - source = "registry+https://github.com/rust-lang/crates.io-index" 1172 - checksum = "d45e71d5be22206bed53c3c3cb99315fc4c3d31b8963808c6bc4538168c4f8ef" 1173 - dependencies = [ 1174 - "block", 1175 - "core-foundation 0.10.0", 1176 - "core-graphics2", 1177 - "io-surface", 1178 - "libc", 1179 - "metal", 1180 - ] 1181 - 1182 - [[package]] 1183 - name = "core2" 1184 - version = "0.4.0" 1185 - source = "registry+https://github.com/rust-lang/crates.io-index" 1186 - checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" 1187 - dependencies = [ 1188 - "memchr", 1189 - ] 1190 - 1191 - [[package]] 1192 - name = "core_maths" 1193 - version = "0.1.1" 1194 - source = "registry+https://github.com/rust-lang/crates.io-index" 1195 - checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" 1196 - dependencies = [ 1197 - "libm", 1198 - ] 1199 - 1200 - [[package]] 1201 - name = "cosmic-text" 1202 - version = "0.14.2" 1203 - source = "registry+https://github.com/rust-lang/crates.io-index" 1204 - checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" 1205 - dependencies = [ 1206 - "bitflags 2.10.0", 1207 - "fontdb 0.16.2", 1208 - "log", 1209 - "rangemap", 1210 - "rustc-hash 1.1.0", 1211 - "rustybuzz 0.14.1", 1212 - "self_cell", 1213 - "smol_str", 1214 - "swash", 1215 - "sys-locale", 1216 - "ttf-parser 0.21.1", 1217 - "unicode-bidi", 1218 - "unicode-linebreak", 1219 - "unicode-script", 1220 - "unicode-segmentation", 1221 - ] 1222 - 1223 - [[package]] 1224 - name = "cpufeatures" 1225 - version = "0.2.17" 1226 - source = "registry+https://github.com/rust-lang/crates.io-index" 1227 - checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 1228 - dependencies = [ 1229 - "libc", 1230 - ] 1231 - 1232 - [[package]] 1233 - name = "crc32fast" 1234 - version = "1.5.0" 1235 - source = "registry+https://github.com/rust-lang/crates.io-index" 1236 - checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 1237 - dependencies = [ 1238 - "cfg-if", 1239 - ] 1240 - 1241 - [[package]] 1242 - name = "crossbeam-channel" 1243 - version = "0.5.15" 1244 - source = "registry+https://github.com/rust-lang/crates.io-index" 1245 - checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 1246 - dependencies = [ 1247 - "crossbeam-utils", 1248 - ] 1249 - 1250 - [[package]] 1251 - name = "crossbeam-deque" 1252 - version = "0.8.6" 1253 - source = "registry+https://github.com/rust-lang/crates.io-index" 1254 - checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 1255 - dependencies = [ 1256 - "crossbeam-epoch", 1257 - "crossbeam-utils", 1258 - ] 1259 - 1260 - [[package]] 1261 - name = "crossbeam-epoch" 1262 - version = "0.9.18" 1263 - source = "registry+https://github.com/rust-lang/crates.io-index" 1264 - checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 1265 - dependencies = [ 1266 - "crossbeam-utils", 1267 - ] 1268 - 1269 - [[package]] 1270 - name = "crossbeam-queue" 1271 - version = "0.3.12" 1272 - source = "registry+https://github.com/rust-lang/crates.io-index" 1273 - checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 1274 - dependencies = [ 1275 - "crossbeam-utils", 1276 - ] 1277 - 1278 - [[package]] 1279 - name = "crossbeam-utils" 1280 - version = "0.8.21" 1281 - source = "registry+https://github.com/rust-lang/crates.io-index" 1282 - checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 1283 - 1284 - [[package]] 1285 - name = "crunchy" 1286 - version = "0.2.4" 1287 - source = "registry+https://github.com/rust-lang/crates.io-index" 1288 - checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 1289 - 1290 - [[package]] 1291 - name = "crypto-common" 1292 - version = "0.1.7" 1293 - source = "registry+https://github.com/rust-lang/crates.io-index" 1294 - checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" 1295 - dependencies = [ 1296 - "generic-array", 1297 - "rand_core 0.6.4", 1298 - "typenum", 1299 - ] 1300 - 1301 - [[package]] 1302 - name = "ctor" 1303 - version = "0.4.3" 1304 - source = "registry+https://github.com/rust-lang/crates.io-index" 1305 - checksum = "ec09e802f5081de6157da9a75701d6c713d8dc3ba52571fd4bd25f412644e8a6" 1306 - dependencies = [ 1307 - "ctor-proc-macro", 1308 - "dtor", 1309 - ] 1310 - 1311 - [[package]] 1312 - name = "ctor-proc-macro" 1313 - version = "0.0.6" 1314 - source = "registry+https://github.com/rust-lang/crates.io-index" 1315 - checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" 1316 - 1317 - [[package]] 1318 - name = "dashmap" 1319 - version = "6.1.0" 1320 - source = "registry+https://github.com/rust-lang/crates.io-index" 1321 - checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" 1322 - dependencies = [ 1323 - "cfg-if", 1324 - "crossbeam-utils", 1325 - "hashbrown 0.14.5", 1326 - "lock_api", 1327 - "once_cell", 1328 - "parking_lot_core", 1329 - ] 1330 - 1331 - [[package]] 1332 - name = "data-url" 1333 - version = "0.3.2" 1334 - source = "registry+https://github.com/rust-lang/crates.io-index" 1335 - checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" 1336 - 1337 - [[package]] 1338 - name = "deflate64" 1339 - version = "0.1.10" 1340 - source = "registry+https://github.com/rust-lang/crates.io-index" 1341 - checksum = "26bf8fc351c5ed29b5c2f0cbbac1b209b74f60ecd62e675a998df72c49af5204" 1342 - 1343 - [[package]] 1344 - name = "derive_more" 1345 - version = "0.99.20" 1346 - source = "registry+https://github.com/rust-lang/crates.io-index" 1347 - checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" 1348 - dependencies = [ 1349 - "convert_case 0.4.0", 1350 - "proc-macro2", 1351 - "quote", 1352 - "rustc_version", 1353 - "syn 2.0.111", 1354 - ] 1355 - 1356 - [[package]] 1357 - name = "digest" 1358 - version = "0.10.7" 1359 - source = "registry+https://github.com/rust-lang/crates.io-index" 1360 - checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1361 - dependencies = [ 1362 - "block-buffer", 1363 - "crypto-common", 1364 - "subtle", 1365 - ] 1366 - 1367 - [[package]] 1368 - name = "dirs" 1369 - version = "4.0.0" 1370 - source = "registry+https://github.com/rust-lang/crates.io-index" 1371 - checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 1372 - dependencies = [ 1373 - "dirs-sys 0.3.7", 1374 - ] 1375 - 1376 - [[package]] 1377 - name = "dirs" 1378 - version = "5.0.1" 1379 - source = "registry+https://github.com/rust-lang/crates.io-index" 1380 - checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" 1381 - dependencies = [ 1382 - "dirs-sys 0.4.1", 1383 - ] 1384 - 1385 - [[package]] 1386 - name = "dirs-sys" 1387 - version = "0.3.7" 1388 - source = "registry+https://github.com/rust-lang/crates.io-index" 1389 - checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 1390 - dependencies = [ 1391 - "libc", 1392 - "redox_users", 1393 - "winapi", 1394 - ] 1395 - 1396 - [[package]] 1397 - name = "dirs-sys" 1398 - version = "0.4.1" 1399 - source = "registry+https://github.com/rust-lang/crates.io-index" 1400 - checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" 1401 - dependencies = [ 1402 - "libc", 1403 - "option-ext", 1404 - "redox_users", 1405 - "windows-sys 0.48.0", 1406 - ] 1407 - 1408 - [[package]] 1409 - name = "dispatch" 1410 - version = "0.2.0" 1411 - source = "registry+https://github.com/rust-lang/crates.io-index" 1412 - checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 1413 - 1414 - [[package]] 1415 - name = "dispatch2" 1416 - version = "0.3.0" 1417 - source = "registry+https://github.com/rust-lang/crates.io-index" 1418 - checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" 1419 - dependencies = [ 1420 - "bitflags 2.10.0", 1421 - "objc2", 1422 - ] 1423 - 1424 - [[package]] 1425 - name = "displaydoc" 1426 - version = "0.2.5" 1427 - source = "registry+https://github.com/rust-lang/crates.io-index" 1428 - checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 1429 - dependencies = [ 1430 - "proc-macro2", 1431 - "quote", 1432 - "syn 2.0.111", 1433 - ] 1434 - 1435 - [[package]] 1436 - name = "dlib" 1437 - version = "0.5.2" 1438 - source = "registry+https://github.com/rust-lang/crates.io-index" 1439 - checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 1440 - dependencies = [ 1441 - "libloading", 1442 - ] 1443 - 1444 - [[package]] 1445 - name = "dlv-list" 1446 - version = "0.5.2" 1447 - source = "registry+https://github.com/rust-lang/crates.io-index" 1448 - checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" 1449 - dependencies = [ 1450 - "const-random", 1451 - ] 1452 - 1453 - [[package]] 1454 - name = "downcast-rs" 1455 - version = "1.2.1" 1456 - source = "registry+https://github.com/rust-lang/crates.io-index" 1457 - checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 1458 - 1459 - [[package]] 1460 - name = "dtor" 1461 - version = "0.0.6" 1462 - source = "registry+https://github.com/rust-lang/crates.io-index" 1463 - checksum = "97cbdf2ad6846025e8e25df05171abfb30e3ababa12ee0a0e44b9bbe570633a8" 1464 - dependencies = [ 1465 - "dtor-proc-macro", 1466 - ] 1467 - 1468 - [[package]] 1469 - name = "dtor-proc-macro" 1470 - version = "0.0.5" 1471 - source = "registry+https://github.com/rust-lang/crates.io-index" 1472 - checksum = "7454e41ff9012c00d53cf7f475c5e3afa3b91b7c90568495495e8d9bf47a1055" 1473 - 1474 - [[package]] 1475 - name = "dunce" 1476 - version = "1.0.5" 1477 - source = "registry+https://github.com/rust-lang/crates.io-index" 1478 - checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" 1479 - 1480 - [[package]] 1481 - name = "dwrote" 1482 - version = "0.11.5" 1483 - source = "registry+https://github.com/rust-lang/crates.io-index" 1484 - checksum = "9e1b35532432acc8b19ceed096e35dfa088d3ea037fe4f3c085f1f97f33b4d02" 1485 - dependencies = [ 1486 - "lazy_static", 1487 - "libc", 1488 - "winapi", 1489 - "wio", 1490 - ] 1491 - 1492 - [[package]] 1493 - name = "dyn-clone" 1494 - version = "1.0.20" 1495 - source = "registry+https://github.com/rust-lang/crates.io-index" 1496 - checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" 1497 - 1498 - [[package]] 1499 - name = "either" 1500 - version = "1.15.0" 1501 - source = "registry+https://github.com/rust-lang/crates.io-index" 1502 - checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1503 - 1504 - [[package]] 1505 - name = "embed-resource" 1506 - version = "3.0.6" 1507 - source = "registry+https://github.com/rust-lang/crates.io-index" 1508 - checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" 1509 - dependencies = [ 1510 - "cc", 1511 - "memchr", 1512 - "rustc_version", 1513 - "toml 0.9.8", 1514 - "vswhom", 1515 - "winreg", 1516 - ] 1517 - 1518 - [[package]] 1519 - name = "encoding_rs" 1520 - version = "0.8.35" 1521 - source = "registry+https://github.com/rust-lang/crates.io-index" 1522 - checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 1523 - dependencies = [ 1524 - "cfg-if", 1525 - ] 1526 - 1527 - [[package]] 1528 - name = "endi" 1529 - version = "1.1.1" 1530 - source = "registry+https://github.com/rust-lang/crates.io-index" 1531 - checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" 1532 - 1533 - [[package]] 1534 - name = "enumflags2" 1535 - version = "0.7.12" 1536 - source = "registry+https://github.com/rust-lang/crates.io-index" 1537 - checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" 1538 - dependencies = [ 1539 - "enumflags2_derive", 1540 - "serde", 1541 - ] 1542 - 1543 - [[package]] 1544 - name = "enumflags2_derive" 1545 - version = "0.7.12" 1546 - source = "registry+https://github.com/rust-lang/crates.io-index" 1547 - checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" 1548 - dependencies = [ 1549 - "proc-macro2", 1550 - "quote", 1551 - "syn 2.0.111", 1552 - ] 1553 - 1554 - [[package]] 1555 - name = "equator" 1556 - version = "0.4.2" 1557 - source = "registry+https://github.com/rust-lang/crates.io-index" 1558 - checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" 1559 - dependencies = [ 1560 - "equator-macro", 1561 - ] 1562 - 1563 - [[package]] 1564 - name = "equator-macro" 1565 - version = "0.4.2" 1566 - source = "registry+https://github.com/rust-lang/crates.io-index" 1567 - checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" 1568 - dependencies = [ 1569 - "proc-macro2", 1570 - "quote", 1571 - "syn 2.0.111", 1572 - ] 1573 - 1574 - [[package]] 1575 - name = "equivalent" 1576 - version = "1.0.2" 1577 - source = "registry+https://github.com/rust-lang/crates.io-index" 1578 - checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 1579 - 1580 - [[package]] 1581 - name = "erased-serde" 1582 - version = "0.4.9" 1583 - source = "registry+https://github.com/rust-lang/crates.io-index" 1584 - checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" 1585 - dependencies = [ 1586 - "serde", 1587 - "serde_core", 1588 - "typeid", 1589 - ] 1590 - 1591 - [[package]] 1592 - name = "errno" 1593 - version = "0.3.14" 1594 - source = "registry+https://github.com/rust-lang/crates.io-index" 1595 - checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 1596 - dependencies = [ 1597 - "libc", 1598 - "windows-sys 0.61.2", 1599 - ] 1600 - 1601 - [[package]] 1602 - name = "etagere" 1603 - version = "0.2.15" 1604 - source = "registry+https://github.com/rust-lang/crates.io-index" 1605 - checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342" 1606 - dependencies = [ 1607 - "euclid", 1608 - "svg_fmt", 1609 - ] 1610 - 1611 - [[package]] 1612 - name = "euclid" 1613 - version = "0.22.11" 1614 - source = "registry+https://github.com/rust-lang/crates.io-index" 1615 - checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" 1616 - dependencies = [ 1617 - "num-traits", 1618 - ] 1619 - 1620 - [[package]] 1621 - name = "event-listener" 1622 - version = "2.5.3" 1623 - source = "registry+https://github.com/rust-lang/crates.io-index" 1624 - checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1625 - 1626 - [[package]] 1627 - name = "event-listener" 1628 - version = "5.4.1" 1629 - source = "registry+https://github.com/rust-lang/crates.io-index" 1630 - checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 1631 - dependencies = [ 1632 - "concurrent-queue", 1633 - "parking", 1634 - "pin-project-lite", 1635 - ] 1636 - 1637 - [[package]] 1638 - name = "event-listener-strategy" 1639 - version = "0.5.4" 1640 - source = "registry+https://github.com/rust-lang/crates.io-index" 1641 - checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 1642 - dependencies = [ 1643 - "event-listener 5.4.1", 1644 - "pin-project-lite", 1645 - ] 1646 - 1647 - [[package]] 1648 - name = "exr" 1649 - version = "1.74.0" 1650 - source = "registry+https://github.com/rust-lang/crates.io-index" 1651 - checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" 1652 - dependencies = [ 1653 - "bit_field", 1654 - "half", 1655 - "lebe", 1656 - "miniz_oxide", 1657 - "rayon-core", 1658 - "smallvec", 1659 - "zune-inflate", 1660 - ] 1661 - 1662 - [[package]] 1663 - name = "faster-hex" 1664 - version = "0.10.0" 1665 - source = "registry+https://github.com/rust-lang/crates.io-index" 1666 - checksum = "7223ae2d2f179b803433d9c830478527e92b8117eab39460edae7f1614d9fb73" 1667 - dependencies = [ 1668 - "heapless", 1669 - "serde", 1670 - ] 1671 - 1672 - [[package]] 1673 - name = "fastrand" 1674 - version = "1.9.0" 1675 - source = "registry+https://github.com/rust-lang/crates.io-index" 1676 - checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 1677 - dependencies = [ 1678 - "instant", 1679 - ] 1680 - 1681 - [[package]] 1682 - name = "fastrand" 1683 - version = "2.3.0" 1684 - source = "registry+https://github.com/rust-lang/crates.io-index" 1685 - checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1686 - 1687 - [[package]] 1688 - name = "fax" 1689 - version = "0.2.6" 1690 - source = "registry+https://github.com/rust-lang/crates.io-index" 1691 - checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" 1692 - dependencies = [ 1693 - "fax_derive", 1694 - ] 1695 - 1696 - [[package]] 1697 - name = "fax_derive" 1698 - version = "0.2.0" 1699 - source = "registry+https://github.com/rust-lang/crates.io-index" 1700 - checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" 1701 - dependencies = [ 1702 - "proc-macro2", 1703 - "quote", 1704 - "syn 2.0.111", 1705 - ] 1706 - 1707 - [[package]] 1708 - name = "fdeflate" 1709 - version = "0.3.7" 1710 - source = "registry+https://github.com/rust-lang/crates.io-index" 1711 - checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" 1712 - dependencies = [ 1713 - "simd-adler32", 1714 - ] 1715 - 1716 - [[package]] 1717 - name = "filedescriptor" 1718 - version = "0.8.3" 1719 - source = "registry+https://github.com/rust-lang/crates.io-index" 1720 - checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d" 1721 - dependencies = [ 1722 - "libc", 1723 - "thiserror 1.0.69", 1724 - "winapi", 1725 - ] 1726 - 1727 - [[package]] 1728 - name = "filetime" 1729 - version = "0.2.26" 1730 - source = "registry+https://github.com/rust-lang/crates.io-index" 1731 - checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" 1732 - dependencies = [ 1733 - "cfg-if", 1734 - "libc", 1735 - "libredox", 1736 - "windows-sys 0.60.2", 1737 - ] 1738 - 1739 - [[package]] 1740 - name = "find-msvc-tools" 1741 - version = "0.1.5" 1742 - source = "registry+https://github.com/rust-lang/crates.io-index" 1743 - checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" 1744 - 1745 - [[package]] 1746 - name = "flate2" 1747 - version = "1.1.5" 1748 - source = "registry+https://github.com/rust-lang/crates.io-index" 1749 - checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" 1750 - dependencies = [ 1751 - "crc32fast", 1752 - "miniz_oxide", 1753 - ] 1754 - 1755 - [[package]] 1756 - name = "float-cmp" 1757 - version = "0.9.0" 1758 - source = "registry+https://github.com/rust-lang/crates.io-index" 1759 - checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" 1760 - 1761 - [[package]] 1762 - name = "float-ord" 1763 - version = "0.3.2" 1764 - source = "registry+https://github.com/rust-lang/crates.io-index" 1765 - checksum = "8ce81f49ae8a0482e4c55ea62ebbd7e5a686af544c00b9d090bba3ff9be97b3d" 1766 - 1767 - [[package]] 1768 - name = "float_next_after" 1769 - version = "1.0.0" 1770 - source = "registry+https://github.com/rust-lang/crates.io-index" 1771 - checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" 1772 - 1773 - [[package]] 1774 - name = "flume" 1775 - version = "0.11.1" 1776 - source = "registry+https://github.com/rust-lang/crates.io-index" 1777 - checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" 1778 - dependencies = [ 1779 - "futures-core", 1780 - "futures-sink", 1781 - "nanorand", 1782 - "spin", 1783 - ] 1784 - 1785 - [[package]] 1786 - name = "fnv" 1787 - version = "1.0.7" 1788 - source = "registry+https://github.com/rust-lang/crates.io-index" 1789 - checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1790 - 1791 - [[package]] 1792 - name = "foldhash" 1793 - version = "0.1.5" 1794 - source = "registry+https://github.com/rust-lang/crates.io-index" 1795 - checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 1796 - 1797 - [[package]] 1798 - name = "foldhash" 1799 - version = "0.2.0" 1800 - source = "registry+https://github.com/rust-lang/crates.io-index" 1801 - checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" 1802 - 1803 - [[package]] 1804 - name = "font-types" 1805 - version = "0.10.1" 1806 - source = "registry+https://github.com/rust-lang/crates.io-index" 1807 - checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" 1808 - dependencies = [ 1809 - "bytemuck", 1810 - ] 1811 - 1812 - [[package]] 1813 - name = "fontconfig-parser" 1814 - version = "0.5.8" 1815 - source = "registry+https://github.com/rust-lang/crates.io-index" 1816 - checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" 1817 - dependencies = [ 1818 - "roxmltree", 1819 - ] 1820 - 1821 - [[package]] 1822 - name = "fontdb" 1823 - version = "0.16.2" 1824 - source = "registry+https://github.com/rust-lang/crates.io-index" 1825 - checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" 1826 - dependencies = [ 1827 - "fontconfig-parser", 1828 - "log", 1829 - "memmap2", 1830 - "slotmap", 1831 - "tinyvec", 1832 - "ttf-parser 0.20.0", 1833 - ] 1834 - 1835 - [[package]] 1836 - name = "fontdb" 1837 - version = "0.23.0" 1838 - source = "registry+https://github.com/rust-lang/crates.io-index" 1839 - checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" 1840 - dependencies = [ 1841 - "fontconfig-parser", 1842 - "log", 1843 - "memmap2", 1844 - "slotmap", 1845 - "tinyvec", 1846 - "ttf-parser 0.25.1", 1847 - ] 1848 - 1849 - [[package]] 1850 - name = "foreign-types" 1851 - version = "0.5.0" 1852 - source = "registry+https://github.com/rust-lang/crates.io-index" 1853 - checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 1854 - dependencies = [ 1855 - "foreign-types-macros", 1856 - "foreign-types-shared", 1857 - ] 1858 - 1859 - [[package]] 1860 - name = "foreign-types-macros" 1861 - version = "0.2.3" 1862 - source = "registry+https://github.com/rust-lang/crates.io-index" 1863 - checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 1864 - dependencies = [ 1865 - "proc-macro2", 1866 - "quote", 1867 - "syn 2.0.111", 1868 - ] 1869 - 1870 - [[package]] 1871 - name = "foreign-types-shared" 1872 - version = "0.3.1" 1873 - source = "registry+https://github.com/rust-lang/crates.io-index" 1874 - checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 1875 - 1876 - [[package]] 1877 - name = "form_urlencoded" 1878 - version = "1.2.2" 1879 - source = "registry+https://github.com/rust-lang/crates.io-index" 1880 - checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1881 - dependencies = [ 1882 - "percent-encoding", 1883 - ] 1884 - 1885 - [[package]] 1886 - name = "freetype-sys" 1887 - version = "0.20.1" 1888 - source = "registry+https://github.com/rust-lang/crates.io-index" 1889 - checksum = "0e7edc5b9669349acfda99533e9e0bcf26a51862ab43b08ee7745c55d28eb134" 1890 - dependencies = [ 1891 - "cc", 1892 - "libc", 1893 - "pkg-config", 1894 - ] 1895 - 1896 - [[package]] 1897 - name = "fsevent-sys" 1898 - version = "4.1.0" 1899 - source = "registry+https://github.com/rust-lang/crates.io-index" 1900 - checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" 1901 - dependencies = [ 1902 - "libc", 1903 - ] 1904 - 1905 - [[package]] 1906 - name = "futf" 1907 - version = "0.1.5" 1908 - source = "registry+https://github.com/rust-lang/crates.io-index" 1909 - checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 1910 - dependencies = [ 1911 - "mac", 1912 - "new_debug_unreachable", 1913 - ] 1914 - 1915 - [[package]] 1916 - name = "futures" 1917 - version = "0.3.31" 1918 - source = "registry+https://github.com/rust-lang/crates.io-index" 1919 - checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 1920 - dependencies = [ 1921 - "futures-channel", 1922 - "futures-core", 1923 - "futures-executor", 1924 - "futures-io", 1925 - "futures-sink", 1926 - "futures-task", 1927 - "futures-util", 1928 - ] 1929 - 1930 - [[package]] 1931 - name = "futures-channel" 1932 - version = "0.3.31" 1933 - source = "registry+https://github.com/rust-lang/crates.io-index" 1934 - checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 1935 - dependencies = [ 1936 - "futures-core", 1937 - "futures-sink", 1938 - ] 1939 - 1940 - [[package]] 1941 - name = "futures-core" 1942 - version = "0.3.31" 1943 - source = "registry+https://github.com/rust-lang/crates.io-index" 1944 - checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 1945 - 1946 - [[package]] 1947 - name = "futures-executor" 1948 - version = "0.3.31" 1949 - source = "registry+https://github.com/rust-lang/crates.io-index" 1950 - checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 1951 - dependencies = [ 1952 - "futures-core", 1953 - "futures-task", 1954 - "futures-util", 1955 - ] 1956 - 1957 - [[package]] 1958 - name = "futures-io" 1959 - version = "0.3.31" 1960 - source = "registry+https://github.com/rust-lang/crates.io-index" 1961 - checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 1962 - 1963 - [[package]] 1964 - name = "futures-lite" 1965 - version = "1.13.0" 1966 - source = "registry+https://github.com/rust-lang/crates.io-index" 1967 - checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" 1968 - dependencies = [ 1969 - "fastrand 1.9.0", 1970 - "futures-core", 1971 - "futures-io", 1972 - "memchr", 1973 - "parking", 1974 - "pin-project-lite", 1975 - "waker-fn", 1976 - ] 1977 - 1978 - [[package]] 1979 - name = "futures-lite" 1980 - version = "2.6.1" 1981 - source = "registry+https://github.com/rust-lang/crates.io-index" 1982 - checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 1983 - dependencies = [ 1984 - "fastrand 2.3.0", 1985 - "futures-core", 1986 - "futures-io", 1987 - "parking", 1988 - "pin-project-lite", 1989 - ] 1990 - 1991 - [[package]] 1992 - name = "futures-macro" 1993 - version = "0.3.31" 1994 - source = "registry+https://github.com/rust-lang/crates.io-index" 1995 - checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 1996 - dependencies = [ 1997 - "proc-macro2", 1998 - "quote", 1999 - "syn 2.0.111", 2000 - ] 2001 - 2002 - [[package]] 2003 - name = "futures-sink" 2004 - version = "0.3.31" 2005 - source = "registry+https://github.com/rust-lang/crates.io-index" 2006 - checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 2007 - 2008 - [[package]] 2009 - name = "futures-task" 2010 - version = "0.3.31" 2011 - source = "registry+https://github.com/rust-lang/crates.io-index" 2012 - checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 2013 - 2014 - [[package]] 2015 - name = "futures-util" 2016 - version = "0.3.31" 2017 - source = "registry+https://github.com/rust-lang/crates.io-index" 2018 - checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 2019 - dependencies = [ 2020 - "futures-channel", 2021 - "futures-core", 2022 - "futures-io", 2023 - "futures-macro", 2024 - "futures-sink", 2025 - "futures-task", 2026 - "memchr", 2027 - "pin-project-lite", 2028 - "pin-utils", 2029 - "slab", 2030 - ] 2031 - 2032 - [[package]] 2033 - name = "generic-array" 2034 - version = "0.14.7" 2035 - source = "registry+https://github.com/rust-lang/crates.io-index" 2036 - checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 2037 - dependencies = [ 2038 - "typenum", 2039 - "version_check", 2040 - ] 2041 - 2042 - [[package]] 2043 - name = "gethostname" 2044 - version = "1.1.0" 2045 - source = "registry+https://github.com/rust-lang/crates.io-index" 2046 - checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" 2047 - dependencies = [ 2048 - "rustix 1.1.2", 2049 - "windows-link 0.2.1", 2050 - ] 2051 - 2052 - [[package]] 2053 - name = "getrandom" 2054 - version = "0.2.16" 2055 - source = "registry+https://github.com/rust-lang/crates.io-index" 2056 - checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 2057 - dependencies = [ 2058 - "cfg-if", 2059 - "js-sys", 2060 - "libc", 2061 - "wasi", 2062 - "wasm-bindgen", 2063 - ] 2064 - 2065 - [[package]] 2066 - name = "getrandom" 2067 - version = "0.3.4" 2068 - source = "registry+https://github.com/rust-lang/crates.io-index" 2069 - checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 2070 - dependencies = [ 2071 - "cfg-if", 2072 - "js-sys", 2073 - "libc", 2074 - "r-efi", 2075 - "wasip2", 2076 - "wasm-bindgen", 2077 - ] 2078 - 2079 - [[package]] 2080 - name = "gif" 2081 - version = "0.14.1" 2082 - source = "registry+https://github.com/rust-lang/crates.io-index" 2083 - checksum = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e" 2084 - dependencies = [ 2085 - "color_quant", 2086 - "weezl", 2087 - ] 2088 - 2089 - [[package]] 2090 - name = "gix" 2091 - version = "0.74.1" 2092 - source = "registry+https://github.com/rust-lang/crates.io-index" 2093 - checksum = "5fd3a6fea165debe0e80648495f894aa2371a771e3ceb7a7dcc304f1c4344c43" 2094 - dependencies = [ 2095 - "gix-actor", 2096 - "gix-attributes", 2097 - "gix-command", 2098 - "gix-commitgraph", 2099 - "gix-config", 2100 - "gix-date", 2101 - "gix-diff", 2102 - "gix-discover", 2103 - "gix-features", 2104 - "gix-filter", 2105 - "gix-fs", 2106 - "gix-glob", 2107 - "gix-hash", 2108 - "gix-hashtable", 2109 - "gix-ignore", 2110 - "gix-index", 2111 - "gix-lock", 2112 - "gix-object", 2113 - "gix-odb", 2114 - "gix-pack", 2115 - "gix-path", 2116 - "gix-pathspec", 2117 - "gix-protocol", 2118 - "gix-ref", 2119 - "gix-refspec", 2120 - "gix-revision", 2121 - "gix-revwalk", 2122 - "gix-sec", 2123 - "gix-shallow", 2124 - "gix-submodule", 2125 - "gix-tempfile", 2126 - "gix-trace", 2127 - "gix-traverse", 2128 - "gix-url", 2129 - "gix-utils", 2130 - "gix-validate", 2131 - "gix-worktree", 2132 - "smallvec", 2133 - "thiserror 2.0.17", 2134 - ] 2135 - 2136 - [[package]] 2137 - name = "gix-actor" 2138 - version = "0.35.6" 2139 - source = "registry+https://github.com/rust-lang/crates.io-index" 2140 - checksum = "987a51a7e66db6ef4dc030418eb2a42af6b913a79edd8670766122d8af3ba59e" 2141 - dependencies = [ 2142 - "bstr", 2143 - "gix-date", 2144 - "gix-utils", 2145 - "itoa", 2146 - "thiserror 2.0.17", 2147 - "winnow", 2148 - ] 2149 - 2150 - [[package]] 2151 - name = "gix-attributes" 2152 - version = "0.28.1" 2153 - source = "registry+https://github.com/rust-lang/crates.io-index" 2154 - checksum = "cc6591add69314fc43db078076a8da6f07957c65abb0b21c3e1b6a3cf50aa18d" 2155 - dependencies = [ 2156 - "bstr", 2157 - "gix-glob", 2158 - "gix-path", 2159 - "gix-quote", 2160 - "gix-trace", 2161 - "kstring", 2162 - "smallvec", 2163 - "thiserror 2.0.17", 2164 - "unicode-bom", 2165 - ] 2166 - 2167 - [[package]] 2168 - name = "gix-bitmap" 2169 - version = "0.2.15" 2170 - source = "registry+https://github.com/rust-lang/crates.io-index" 2171 - checksum = "5e150161b8a75b5860521cb876b506879a3376d3adc857ec7a9d35e7c6a5e531" 2172 - dependencies = [ 2173 - "thiserror 2.0.17", 2174 - ] 2175 - 2176 - [[package]] 2177 - name = "gix-chunk" 2178 - version = "0.4.12" 2179 - source = "registry+https://github.com/rust-lang/crates.io-index" 2180 - checksum = "5c356b3825677cb6ff579551bb8311a81821e184453cbd105e2fc5311b288eeb" 2181 - dependencies = [ 2182 - "thiserror 2.0.17", 2183 - ] 2184 - 2185 - [[package]] 2186 - name = "gix-command" 2187 - version = "0.6.3" 2188 - source = "registry+https://github.com/rust-lang/crates.io-index" 2189 - checksum = "095c8367c9dc4872a7706fbc39c7f34271b88b541120a4365ff0e36366f66e62" 2190 - dependencies = [ 2191 - "bstr", 2192 - "gix-path", 2193 - "gix-quote", 2194 - "gix-trace", 2195 - "shell-words", 2196 - ] 2197 - 2198 - [[package]] 2199 - name = "gix-commitgraph" 2200 - version = "0.30.1" 2201 - source = "registry+https://github.com/rust-lang/crates.io-index" 2202 - checksum = "826994ff6c01f1ff00d6a1844d7506717810a91ffed143da71e3bf39369751ef" 2203 - dependencies = [ 2204 - "bstr", 2205 - "gix-chunk", 2206 - "gix-hash", 2207 - "memmap2", 2208 - "thiserror 2.0.17", 2209 - ] 2210 - 2211 - [[package]] 2212 - name = "gix-config" 2213 - version = "0.47.1" 2214 - source = "registry+https://github.com/rust-lang/crates.io-index" 2215 - checksum = "1e74f57ea99025de9207db53488be4d59cf2000f617964c1b550880524fefbc3" 2216 - dependencies = [ 2217 - "bstr", 2218 - "gix-config-value", 2219 - "gix-features", 2220 - "gix-glob", 2221 - "gix-path", 2222 - "gix-ref", 2223 - "gix-sec", 2224 - "memchr", 2225 - "smallvec", 2226 - "thiserror 2.0.17", 2227 - "unicode-bom", 2228 - "winnow", 2229 - ] 2230 - 2231 - [[package]] 2232 - name = "gix-config-value" 2233 - version = "0.15.3" 2234 - source = "registry+https://github.com/rust-lang/crates.io-index" 2235 - checksum = "2c489abb061c74b0c3ad790e24a606ef968cebab48ec673d6a891ece7d5aef64" 2236 - dependencies = [ 2237 - "bitflags 2.10.0", 2238 - "bstr", 2239 - "gix-path", 2240 - "libc", 2241 - "thiserror 2.0.17", 2242 - ] 2243 - 2244 - [[package]] 2245 - name = "gix-date" 2246 - version = "0.10.7" 2247 - source = "registry+https://github.com/rust-lang/crates.io-index" 2248 - checksum = "661245d045aa7c16ba4244daaabd823c562c3e45f1f25b816be2c57ee09f2171" 2249 - dependencies = [ 2250 - "bstr", 2251 - "itoa", 2252 - "jiff", 2253 - "smallvec", 2254 - "thiserror 2.0.17", 2255 - ] 2256 - 2257 - [[package]] 2258 - name = "gix-diff" 2259 - version = "0.54.1" 2260 - source = "registry+https://github.com/rust-lang/crates.io-index" 2261 - checksum = "cd78d9da421baca219a650d71c797706117095635d7963f21bb6fdf2410abe04" 2262 - dependencies = [ 2263 - "bstr", 2264 - "gix-command", 2265 - "gix-filter", 2266 - "gix-fs", 2267 - "gix-hash", 2268 - "gix-object", 2269 - "gix-path", 2270 - "gix-tempfile", 2271 - "gix-trace", 2272 - "gix-traverse", 2273 - "gix-worktree", 2274 - "imara-diff", 2275 - "thiserror 2.0.17", 2276 - ] 2277 - 2278 - [[package]] 2279 - name = "gix-discover" 2280 - version = "0.42.0" 2281 - source = "registry+https://github.com/rust-lang/crates.io-index" 2282 - checksum = "9d24547153810634636471af88338240e6ab0831308cd41eb6ebfffea77811c6" 2283 - dependencies = [ 2284 - "bstr", 2285 - "dunce", 2286 - "gix-fs", 2287 - "gix-hash", 2288 - "gix-path", 2289 - "gix-ref", 2290 - "gix-sec", 2291 - "thiserror 2.0.17", 2292 - ] 2293 - 2294 - [[package]] 2295 - name = "gix-features" 2296 - version = "0.44.1" 2297 - source = "registry+https://github.com/rust-lang/crates.io-index" 2298 - checksum = "dfa64593d1586135102307fb57fb3a9d3868b6b1f45a4da1352cce5070f8916a" 2299 - dependencies = [ 2300 - "crc32fast", 2301 - "crossbeam-channel", 2302 - "gix-path", 2303 - "gix-trace", 2304 - "gix-utils", 2305 - "libc", 2306 - "libz-rs-sys", 2307 - "once_cell", 2308 - "parking_lot", 2309 - "prodash", 2310 - "thiserror 2.0.17", 2311 - "walkdir", 2312 - ] 2313 - 2314 - [[package]] 2315 - name = "gix-filter" 2316 - version = "0.21.0" 2317 - source = "registry+https://github.com/rust-lang/crates.io-index" 2318 - checksum = "1d1253452c9808da01eaaf9b1c4929b9982efec29ef0a668b3326b8046d9b8fb" 2319 - dependencies = [ 2320 - "bstr", 2321 - "encoding_rs", 2322 - "gix-attributes", 2323 - "gix-command", 2324 - "gix-hash", 2325 - "gix-object", 2326 - "gix-packetline-blocking", 2327 - "gix-path", 2328 - "gix-quote", 2329 - "gix-trace", 2330 - "gix-utils", 2331 - "smallvec", 2332 - "thiserror 2.0.17", 2333 - ] 2334 - 2335 - [[package]] 2336 - name = "gix-fs" 2337 - version = "0.17.0" 2338 - source = "registry+https://github.com/rust-lang/crates.io-index" 2339 - checksum = "3f1ecd896258cdc5ccd94d18386d17906b8de265ad2ecf68e3bea6b007f6a28f" 2340 - dependencies = [ 2341 - "bstr", 2342 - "fastrand 2.3.0", 2343 - "gix-features", 2344 - "gix-path", 2345 - "gix-utils", 2346 - "thiserror 2.0.17", 2347 - ] 2348 - 2349 - [[package]] 2350 - name = "gix-glob" 2351 - version = "0.22.1" 2352 - source = "registry+https://github.com/rust-lang/crates.io-index" 2353 - checksum = "74254992150b0a88fdb3ad47635ab649512dff2cbbefca7916bb459894fc9d56" 2354 - dependencies = [ 2355 - "bitflags 2.10.0", 2356 - "bstr", 2357 - "gix-features", 2358 - "gix-path", 2359 - ] 2360 - 2361 - [[package]] 2362 - name = "gix-hash" 2363 - version = "0.20.1" 2364 - source = "registry+https://github.com/rust-lang/crates.io-index" 2365 - checksum = "826036a9bee95945b0be1e2394c64cd4289916c34a639818f8fd5153906985c1" 2366 - dependencies = [ 2367 - "faster-hex", 2368 - "gix-features", 2369 - "sha1-checked", 2370 - "thiserror 2.0.17", 2371 - ] 2372 - 2373 - [[package]] 2374 - name = "gix-hashtable" 2375 - version = "0.10.0" 2376 - source = "registry+https://github.com/rust-lang/crates.io-index" 2377 - checksum = "a27d4a3ea9640da504a2657fef3419c517fd71f1767ad8935298bcc805edd195" 2378 - dependencies = [ 2379 - "gix-hash", 2380 - "hashbrown 0.16.1", 2381 - "parking_lot", 2382 - ] 2383 - 2384 - [[package]] 2385 - name = "gix-ignore" 2386 - version = "0.17.1" 2387 - source = "registry+https://github.com/rust-lang/crates.io-index" 2388 - checksum = "93b6a9679a1488123b7f2929684bacfd9cd2a24f286b52203b8752cbb8d7fc49" 2389 - dependencies = [ 2390 - "bstr", 2391 - "gix-glob", 2392 - "gix-path", 2393 - "gix-trace", 2394 - "unicode-bom", 2395 - ] 2396 - 2397 - [[package]] 2398 - name = "gix-index" 2399 - version = "0.42.1" 2400 - source = "registry+https://github.com/rust-lang/crates.io-index" 2401 - checksum = "31244542fb98ea4f3e964a4f8deafc2f4c77ad42bed58a1e8424bca1965fae99" 2402 - dependencies = [ 2403 - "bitflags 2.10.0", 2404 - "bstr", 2405 - "filetime", 2406 - "fnv", 2407 - "gix-bitmap", 2408 - "gix-features", 2409 - "gix-fs", 2410 - "gix-hash", 2411 - "gix-lock", 2412 - "gix-object", 2413 - "gix-traverse", 2414 - "gix-utils", 2415 - "gix-validate", 2416 - "hashbrown 0.16.1", 2417 - "itoa", 2418 - "libc", 2419 - "memmap2", 2420 - "rustix 1.1.2", 2421 - "smallvec", 2422 - "thiserror 2.0.17", 2423 - ] 2424 - 2425 - [[package]] 2426 - name = "gix-lock" 2427 - version = "19.0.0" 2428 - source = "registry+https://github.com/rust-lang/crates.io-index" 2429 - checksum = "729d7857429a66023bc0c29d60fa21d0d6ae8862f33c1937ba89e0f74dd5c67f" 2430 - dependencies = [ 2431 - "gix-tempfile", 2432 - "gix-utils", 2433 - "thiserror 2.0.17", 2434 - ] 2435 - 2436 - [[package]] 2437 - name = "gix-object" 2438 - version = "0.51.1" 2439 - source = "registry+https://github.com/rust-lang/crates.io-index" 2440 - checksum = "87ba1815638759c80d2318c8e98296fb396f577c2e588a3d9c13f9a5d5184051" 2441 - dependencies = [ 2442 - "bstr", 2443 - "gix-actor", 2444 - "gix-date", 2445 - "gix-features", 2446 - "gix-hash", 2447 - "gix-hashtable", 2448 - "gix-path", 2449 - "gix-utils", 2450 - "gix-validate", 2451 - "itoa", 2452 - "smallvec", 2453 - "thiserror 2.0.17", 2454 - "winnow", 2455 - ] 2456 - 2457 - [[package]] 2458 - name = "gix-odb" 2459 - version = "0.71.1" 2460 - source = "registry+https://github.com/rust-lang/crates.io-index" 2461 - checksum = "6efc6736d3ea62640efe8c1be695fb0760af63614a7356d2091208a841f1a634" 2462 - dependencies = [ 2463 - "arc-swap", 2464 - "gix-date", 2465 - "gix-features", 2466 - "gix-fs", 2467 - "gix-hash", 2468 - "gix-hashtable", 2469 - "gix-object", 2470 - "gix-pack", 2471 - "gix-path", 2472 - "gix-quote", 2473 - "parking_lot", 2474 - "tempfile", 2475 - "thiserror 2.0.17", 2476 - ] 2477 - 2478 - [[package]] 2479 - name = "gix-pack" 2480 - version = "0.61.1" 2481 - source = "registry+https://github.com/rust-lang/crates.io-index" 2482 - checksum = "719c60524be76874f4769da20d525ad2c00a0e7059943cc4f31fcb65cfb6b260" 2483 - dependencies = [ 2484 - "clru", 2485 - "gix-chunk", 2486 - "gix-features", 2487 - "gix-hash", 2488 - "gix-hashtable", 2489 - "gix-object", 2490 - "gix-path", 2491 - "memmap2", 2492 - "smallvec", 2493 - "thiserror 2.0.17", 2494 - "uluru", 2495 - ] 2496 - 2497 - [[package]] 2498 - name = "gix-packetline" 2499 - version = "0.19.3" 2500 - source = "registry+https://github.com/rust-lang/crates.io-index" 2501 - checksum = "64286a8b5148e76ab80932e72762dd27ccf6169dd7a134b027c8a262a8262fcf" 2502 - dependencies = [ 2503 - "bstr", 2504 - "faster-hex", 2505 - "gix-trace", 2506 - "thiserror 2.0.17", 2507 - ] 2508 - 2509 - [[package]] 2510 - name = "gix-packetline-blocking" 2511 - version = "0.19.3" 2512 - source = "registry+https://github.com/rust-lang/crates.io-index" 2513 - checksum = "89c59c3ad41e68cb38547d849e9ef5ccfc0d00f282244ba1441ae856be54d001" 2514 - dependencies = [ 2515 - "bstr", 2516 - "faster-hex", 2517 - "gix-trace", 2518 - "thiserror 2.0.17", 2519 - ] 2520 - 2521 - [[package]] 2522 - name = "gix-path" 2523 - version = "0.10.22" 2524 - source = "registry+https://github.com/rust-lang/crates.io-index" 2525 - checksum = "7cb06c3e4f8eed6e24fd915fa93145e28a511f4ea0e768bae16673e05ed3f366" 2526 - dependencies = [ 2527 - "bstr", 2528 - "gix-trace", 2529 - "gix-validate", 2530 - "thiserror 2.0.17", 2531 - ] 2532 - 2533 - [[package]] 2534 - name = "gix-pathspec" 2535 - version = "0.13.0" 2536 - source = "registry+https://github.com/rust-lang/crates.io-index" 2537 - checksum = "d05e28457dca7c65a2dbe118869aab922a5bd382b7bb10cff5354f366845c128" 2538 - dependencies = [ 2539 - "bitflags 2.10.0", 2540 - "bstr", 2541 - "gix-attributes", 2542 - "gix-config-value", 2543 - "gix-glob", 2544 - "gix-path", 2545 - "thiserror 2.0.17", 2546 - ] 2547 - 2548 - [[package]] 2549 - name = "gix-protocol" 2550 - version = "0.52.1" 2551 - source = "registry+https://github.com/rust-lang/crates.io-index" 2552 - checksum = "64f19873bbf924fd077580d4ccaaaeddb67c3b3c09a8ffb61e6b4cb67e3c9302" 2553 - dependencies = [ 2554 - "bstr", 2555 - "gix-date", 2556 - "gix-features", 2557 - "gix-hash", 2558 - "gix-ref", 2559 - "gix-shallow", 2560 - "gix-transport", 2561 - "gix-utils", 2562 - "maybe-async", 2563 - "thiserror 2.0.17", 2564 - "winnow", 2565 - ] 2566 - 2567 - [[package]] 2568 - name = "gix-quote" 2569 - version = "0.6.1" 2570 - source = "registry+https://github.com/rust-lang/crates.io-index" 2571 - checksum = "e912ec04b7b1566a85ad486db0cab6b9955e3e32bcd3c3a734542ab3af084c5b" 2572 - dependencies = [ 2573 - "bstr", 2574 - "gix-utils", 2575 - "thiserror 2.0.17", 2576 - ] 2577 - 2578 - [[package]] 2579 - name = "gix-ref" 2580 - version = "0.54.1" 2581 - source = "registry+https://github.com/rust-lang/crates.io-index" 2582 - checksum = "8881d262f28eda39c244e60ae968f4f6e56c747f65addd6f4100b25f75ed8b88" 2583 - dependencies = [ 2584 - "gix-actor", 2585 - "gix-features", 2586 - "gix-fs", 2587 - "gix-hash", 2588 - "gix-lock", 2589 - "gix-object", 2590 - "gix-path", 2591 - "gix-tempfile", 2592 - "gix-utils", 2593 - "gix-validate", 2594 - "memmap2", 2595 - "thiserror 2.0.17", 2596 - "winnow", 2597 - ] 2598 - 2599 - [[package]] 2600 - name = "gix-refspec" 2601 - version = "0.32.0" 2602 - source = "registry+https://github.com/rust-lang/crates.io-index" 2603 - checksum = "93147960f77695ba89b72019b789679278dd4dad6a0f9a4a5bf2fd07aba56912" 2604 - dependencies = [ 2605 - "bstr", 2606 - "gix-hash", 2607 - "gix-revision", 2608 - "gix-validate", 2609 - "smallvec", 2610 - "thiserror 2.0.17", 2611 - ] 2612 - 2613 - [[package]] 2614 - name = "gix-revision" 2615 - version = "0.36.1" 2616 - source = "registry+https://github.com/rust-lang/crates.io-index" 2617 - checksum = "13c5267e530d8762842be7d51b48d2b134c9dec5b650ca607f735a56a4b12413" 2618 - dependencies = [ 2619 - "bstr", 2620 - "gix-commitgraph", 2621 - "gix-date", 2622 - "gix-hash", 2623 - "gix-object", 2624 - "gix-revwalk", 2625 - "thiserror 2.0.17", 2626 - ] 2627 - 2628 - [[package]] 2629 - name = "gix-revwalk" 2630 - version = "0.22.0" 2631 - source = "registry+https://github.com/rust-lang/crates.io-index" 2632 - checksum = "02e2de4f91d712b1f6873477f769225fe430ffce2af8c7c85721c3ff955783b3" 2633 - dependencies = [ 2634 - "gix-commitgraph", 2635 - "gix-date", 2636 - "gix-hash", 2637 - "gix-hashtable", 2638 - "gix-object", 2639 - "smallvec", 2640 - "thiserror 2.0.17", 2641 - ] 2642 - 2643 - [[package]] 2644 - name = "gix-sec" 2645 - version = "0.12.2" 2646 - source = "registry+https://github.com/rust-lang/crates.io-index" 2647 - checksum = "ea9962ed6d9114f7f100efe038752f41283c225bb507a2888903ac593dffa6be" 2648 - dependencies = [ 2649 - "bitflags 2.10.0", 2650 - "gix-path", 2651 - "libc", 2652 - "windows-sys 0.61.2", 2653 - ] 2654 - 2655 - [[package]] 2656 - name = "gix-shallow" 2657 - version = "0.6.0" 2658 - source = "registry+https://github.com/rust-lang/crates.io-index" 2659 - checksum = "e2374692db1ee1ffa0eddcb9e86ec218f7c4cdceda800ebc5a9fdf73a8c08223" 2660 - dependencies = [ 2661 - "bstr", 2662 - "gix-hash", 2663 - "gix-lock", 2664 - "thiserror 2.0.17", 2665 - ] 2666 - 2667 - [[package]] 2668 - name = "gix-submodule" 2669 - version = "0.21.0" 2670 - source = "registry+https://github.com/rust-lang/crates.io-index" 2671 - checksum = "9bacc06333b50abc4fc06204622c2dd92850de2066bb5d421ac776d2bef7ae55" 2672 - dependencies = [ 2673 - "bstr", 2674 - "gix-config", 2675 - "gix-path", 2676 - "gix-pathspec", 2677 - "gix-refspec", 2678 - "gix-url", 2679 - "thiserror 2.0.17", 2680 - ] 2681 - 2682 - [[package]] 2683 - name = "gix-tempfile" 2684 - version = "19.0.1" 2685 - source = "registry+https://github.com/rust-lang/crates.io-index" 2686 - checksum = "e265fc6b54e57693232a79d84038381ebfda7b1a3b1b8a9320d4d5fe6e820086" 2687 - dependencies = [ 2688 - "dashmap", 2689 - "gix-fs", 2690 - "libc", 2691 - "parking_lot", 2692 - "tempfile", 2693 - ] 2694 - 2695 - [[package]] 2696 - name = "gix-trace" 2697 - version = "0.1.15" 2698 - source = "registry+https://github.com/rust-lang/crates.io-index" 2699 - checksum = "1d3f59a8de2934f6391b6b3a1a7654eae18961fcb9f9c843533fed34ad0f3457" 2700 - 2701 - [[package]] 2702 - name = "gix-transport" 2703 - version = "0.49.1" 2704 - source = "registry+https://github.com/rust-lang/crates.io-index" 2705 - checksum = "c8da4a77922accb1e26e610c7a84ef7e6b34fd07112e6a84afd68d7f3e795957" 2706 - dependencies = [ 2707 - "bstr", 2708 - "gix-command", 2709 - "gix-features", 2710 - "gix-packetline", 2711 - "gix-quote", 2712 - "gix-sec", 2713 - "gix-url", 2714 - "thiserror 2.0.17", 2715 - ] 2716 - 2717 - [[package]] 2718 - name = "gix-traverse" 2719 - version = "0.48.0" 2720 - source = "registry+https://github.com/rust-lang/crates.io-index" 2721 - checksum = "412126bade03a34f5d4125fd64878852718575b3b360eaae3b29970cb555e2a2" 2722 - dependencies = [ 2723 - "bitflags 2.10.0", 2724 - "gix-commitgraph", 2725 - "gix-date", 2726 - "gix-hash", 2727 - "gix-hashtable", 2728 - "gix-object", 2729 - "gix-revwalk", 2730 - "smallvec", 2731 - "thiserror 2.0.17", 2732 - ] 2733 - 2734 - [[package]] 2735 - name = "gix-url" 2736 - version = "0.33.2" 2737 - source = "registry+https://github.com/rust-lang/crates.io-index" 2738 - checksum = "d995249a1cf1ad79ba10af6499d4bf37cb78035c0983eaa09ec5910da694957c" 2739 - dependencies = [ 2740 - "bstr", 2741 - "gix-features", 2742 - "gix-path", 2743 - "percent-encoding", 2744 - "thiserror 2.0.17", 2745 - ] 2746 - 2747 - [[package]] 2748 - name = "gix-utils" 2749 - version = "0.3.1" 2750 - source = "registry+https://github.com/rust-lang/crates.io-index" 2751 - checksum = "befcdbdfb1238d2854591f760a48711bed85e72d80a10e8f2f93f656746ef7c5" 2752 - dependencies = [ 2753 - "fastrand 2.3.0", 2754 - "unicode-normalization", 2755 - ] 2756 - 2757 - [[package]] 2758 - name = "gix-validate" 2759 - version = "0.10.1" 2760 - source = "registry+https://github.com/rust-lang/crates.io-index" 2761 - checksum = "5b1e63a5b516e970a594f870ed4571a8fdcb8a344e7bd407a20db8bd61dbfde4" 2762 - dependencies = [ 2763 - "bstr", 2764 - "thiserror 2.0.17", 2765 - ] 2766 - 2767 - [[package]] 2768 - name = "gix-worktree" 2769 - version = "0.43.1" 2770 - source = "registry+https://github.com/rust-lang/crates.io-index" 2771 - checksum = "8df3dfc8b62b0eccc923c757b40f488abc357c85c03d798622edfc3eb5137e04" 2772 - dependencies = [ 2773 - "bstr", 2774 - "gix-attributes", 2775 - "gix-features", 2776 - "gix-fs", 2777 - "gix-glob", 2778 - "gix-hash", 2779 - "gix-ignore", 2780 - "gix-index", 2781 - "gix-object", 2782 - "gix-path", 2783 - "gix-validate", 2784 - ] 2785 - 2786 - [[package]] 2787 - name = "glob" 2788 - version = "0.3.3" 2789 - source = "registry+https://github.com/rust-lang/crates.io-index" 2790 - checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 2791 - 2792 - [[package]] 2793 - name = "globset" 2794 - version = "0.4.18" 2795 - source = "registry+https://github.com/rust-lang/crates.io-index" 2796 - checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" 2797 - dependencies = [ 2798 - "aho-corasick", 2799 - "bstr", 2800 - "log", 2801 - "regex-automata", 2802 - "regex-syntax", 2803 - ] 2804 - 2805 - [[package]] 2806 - name = "gloo-timers" 2807 - version = "0.3.0" 2808 - source = "registry+https://github.com/rust-lang/crates.io-index" 2809 - checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" 2810 - dependencies = [ 2811 - "futures-channel", 2812 - "futures-core", 2813 - "js-sys", 2814 - "wasm-bindgen", 2815 - ] 2816 - 2817 - [[package]] 2818 - name = "glow" 2819 - version = "0.16.0" 2820 - source = "registry+https://github.com/rust-lang/crates.io-index" 2821 - checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" 2822 - dependencies = [ 2823 - "js-sys", 2824 - "slotmap", 2825 - "wasm-bindgen", 2826 - "web-sys", 2827 - ] 2828 - 2829 - [[package]] 2830 - name = "gpu-alloc" 2831 - version = "0.6.0" 2832 - source = "registry+https://github.com/rust-lang/crates.io-index" 2833 - checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 2834 - dependencies = [ 2835 - "bitflags 2.10.0", 2836 - "gpu-alloc-types", 2837 - ] 2838 - 2839 - [[package]] 2840 - name = "gpu-alloc-ash" 2841 - version = "0.7.0" 2842 - source = "registry+https://github.com/rust-lang/crates.io-index" 2843 - checksum = "cbda7a18a29bc98c2e0de0435c347df935bf59489935d0cbd0b73f1679b6f79a" 2844 - dependencies = [ 2845 - "ash", 2846 - "gpu-alloc-types", 2847 - "tinyvec", 2848 - ] 2849 - 2850 - [[package]] 2851 - name = "gpu-alloc-types" 2852 - version = "0.3.0" 2853 - source = "registry+https://github.com/rust-lang/crates.io-index" 2854 - checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 2855 - dependencies = [ 2856 - "bitflags 2.10.0", 2857 - ] 2858 - 2859 - [[package]] 2860 - name = "gpui" 2861 - version = "0.2.2" 2862 - source = "registry+https://github.com/rust-lang/crates.io-index" 2863 - checksum = "979b45cfa6ec723b6f42330915a1b3769b930d02b2d505f9697f8ca602bee707" 2864 - dependencies = [ 2865 - "anyhow", 2866 - "as-raw-xcb-connection", 2867 - "ashpd 0.11.0", 2868 - "async-task", 2869 - "bindgen", 2870 - "blade-graphics", 2871 - "blade-macros", 2872 - "blade-util", 2873 - "block", 2874 - "bytemuck", 2875 - "calloop", 2876 - "calloop-wayland-source", 2877 - "cbindgen", 2878 - "cocoa 0.26.0", 2879 - "cocoa-foundation 0.2.0", 2880 - "core-foundation 0.10.0", 2881 - "core-foundation-sys", 2882 - "core-graphics 0.24.0", 2883 - "core-text", 2884 - "core-video", 2885 - "cosmic-text", 2886 - "ctor", 2887 - "derive_more", 2888 - "embed-resource", 2889 - "etagere", 2890 - "filedescriptor", 2891 - "flume", 2892 - "foreign-types", 2893 - "futures", 2894 - "gpui-macros", 2895 - "gpui_collections", 2896 - "gpui_http_client", 2897 - "gpui_media", 2898 - "gpui_refineable", 2899 - "gpui_semantic_version", 2900 - "gpui_sum_tree", 2901 - "gpui_util", 2902 - "gpui_util_macros", 2903 - "image", 2904 - "inventory", 2905 - "itertools 0.14.0", 2906 - "libc", 2907 - "log", 2908 - "lyon", 2909 - "metal", 2910 - "naga", 2911 - "num_cpus", 2912 - "objc", 2913 - "oo7", 2914 - "open", 2915 - "parking", 2916 - "parking_lot", 2917 - "pathfinder_geometry", 2918 - "pin-project", 2919 - "postage", 2920 - "profiling", 2921 - "rand 0.9.2", 2922 - "raw-window-handle", 2923 - "resvg", 2924 - "schemars", 2925 - "seahash", 2926 - "serde", 2927 - "serde_json", 2928 - "slotmap", 2929 - "smallvec", 2930 - "smol", 2931 - "stacksafe", 2932 - "strum 0.27.2", 2933 - "taffy", 2934 - "thiserror 2.0.17", 2935 - "usvg", 2936 - "uuid", 2937 - "waker-fn", 2938 - "wayland-backend", 2939 - "wayland-client", 2940 - "wayland-cursor", 2941 - "wayland-protocols 0.31.2", 2942 - "wayland-protocols-plasma", 2943 - "windows 0.61.3", 2944 - "windows-core 0.61.2", 2945 - "windows-numerics", 2946 - "windows-registry 0.5.3", 2947 - "x11-clipboard", 2948 - "x11rb", 2949 - "xkbcommon", 2950 - "zed-font-kit", 2951 - "zed-scap", 2952 - "zed-xim", 2953 - ] 2954 - 2955 - [[package]] 2956 - name = "gpui-macros" 2957 - version = "0.2.2" 2958 - source = "registry+https://github.com/rust-lang/crates.io-index" 2959 - checksum = "bcb02dd63a2859714ac7b6b476937617c3c744157af1b49f7c904023a79039be" 2960 - dependencies = [ 2961 - "heck 0.5.0", 2962 - "proc-macro2", 2963 - "quote", 2964 - "syn 2.0.111", 2965 - ] 2966 - 2967 - [[package]] 2968 - name = "gpui_collections" 2969 - version = "0.2.2" 2970 - source = "registry+https://github.com/rust-lang/crates.io-index" 2971 - checksum = "ae39dc6d3d201be97e4bc08d96dbef2bc5b5c3d5734e05786e8cc3043342351c" 2972 - dependencies = [ 2973 - "indexmap", 2974 - "rustc-hash 2.1.1", 2975 - ] 2976 - 2977 - [[package]] 2978 - name = "gpui_derive_refineable" 2979 - version = "0.2.2" 2980 - source = "registry+https://github.com/rust-lang/crates.io-index" 2981 - checksum = "644de174341a87b3478bd65b66bca38af868bcf2b2e865700523734f83cfc664" 2982 - dependencies = [ 2983 - "proc-macro2", 2984 - "quote", 2985 - "syn 2.0.111", 2986 - ] 2987 - 2988 - [[package]] 2989 - name = "gpui_http_client" 2990 - version = "0.2.2" 2991 - source = "registry+https://github.com/rust-lang/crates.io-index" 2992 - checksum = "23822b0a6d2c5e6a42507980a0ab3848610ea908942c8ef98187f646f690335e" 2993 - dependencies = [ 2994 - "anyhow", 2995 - "async-compression", 2996 - "async-fs", 2997 - "bytes", 2998 - "derive_more", 2999 - "futures", 3000 - "gpui_util", 3001 - "http", 3002 - "http-body", 3003 - "log", 3004 - "parking_lot", 3005 - "serde", 3006 - "serde_json", 3007 - "sha2", 3008 - "tempfile", 3009 - "url", 3010 - "zed-async-tar", 3011 - "zed-reqwest", 3012 - ] 3013 - 3014 - [[package]] 3015 - name = "gpui_media" 3016 - version = "0.2.2" 3017 - source = "registry+https://github.com/rust-lang/crates.io-index" 3018 - checksum = "05cb8912ae17371725132d2b7eec6797a255accc95d58ee5c1134b529810f14b" 3019 - dependencies = [ 3020 - "anyhow", 3021 - "bindgen", 3022 - "core-foundation 0.10.0", 3023 - "core-video", 3024 - "ctor", 3025 - "foreign-types", 3026 - "metal", 3027 - "objc", 3028 - ] 3029 - 3030 - [[package]] 3031 - name = "gpui_perf" 3032 - version = "0.2.2" 3033 - source = "registry+https://github.com/rust-lang/crates.io-index" 3034 - checksum = "f40a0961dcf598955130e867f4b731150a20546427b41b1a63767c1037a86d77" 3035 - dependencies = [ 3036 - "gpui_collections", 3037 - "serde", 3038 - "serde_json", 3039 - ] 3040 - 3041 - [[package]] 3042 - name = "gpui_refineable" 3043 - version = "0.2.2" 3044 - source = "registry+https://github.com/rust-lang/crates.io-index" 3045 - checksum = "258cb099254e9468181aee5614410fba61db4ae115fc1d51b4a0b985f60d6641" 3046 - dependencies = [ 3047 - "gpui_derive_refineable", 3048 - ] 3049 - 3050 - [[package]] 3051 - name = "gpui_semantic_version" 3052 - version = "0.2.2" 3053 - source = "registry+https://github.com/rust-lang/crates.io-index" 3054 - checksum = "201e45eff7b695528fb3af6560a534943fbc2db5323d755b9d198bd743948e35" 3055 - dependencies = [ 3056 - "anyhow", 3057 - "serde", 3058 - ] 3059 - 3060 - [[package]] 3061 - name = "gpui_sum_tree" 3062 - version = "0.2.2" 3063 - source = "registry+https://github.com/rust-lang/crates.io-index" 3064 - checksum = "e4f3bedd573fafafa13d1200b356c588cf094fb2786e3684bb3f5ea59b549fa9" 3065 - dependencies = [ 3066 - "arrayvec", 3067 - "log", 3068 - "rayon", 3069 - ] 3070 - 3071 - [[package]] 3072 - name = "gpui_util" 3073 - version = "0.2.2" 3074 - source = "registry+https://github.com/rust-lang/crates.io-index" 3075 - checksum = "68faea25903ae524de9af83990b9aa51bcbc8dd085929ac0aea7fd41905e05c3" 3076 - dependencies = [ 3077 - "anyhow", 3078 - "async-fs", 3079 - "async_zip", 3080 - "command-fds", 3081 - "dirs 4.0.0", 3082 - "dunce", 3083 - "futures", 3084 - "futures-lite 1.13.0", 3085 - "globset", 3086 - "gpui_collections", 3087 - "itertools 0.14.0", 3088 - "libc", 3089 - "log", 3090 - "nix 0.29.0", 3091 - "regex", 3092 - "rust-embed", 3093 - "schemars", 3094 - "serde", 3095 - "serde_json", 3096 - "serde_json_lenient", 3097 - "shlex", 3098 - "smol", 3099 - "take-until", 3100 - "tempfile", 3101 - "tendril", 3102 - "unicase", 3103 - "walkdir", 3104 - "which", 3105 - ] 3106 - 3107 - [[package]] 3108 - name = "gpui_util_macros" 3109 - version = "0.2.2" 3110 - source = "registry+https://github.com/rust-lang/crates.io-index" 3111 - checksum = "2c28f65ef47fb97e21e82fd4dd75ccc2506eda010c846dc8054015ea234f1a22" 3112 - dependencies = [ 3113 - "gpui_perf", 3114 - "quote", 3115 - "syn 2.0.111", 3116 - ] 3117 - 3118 - [[package]] 3119 - name = "grid" 3120 - version = "0.18.0" 3121 - source = "registry+https://github.com/rust-lang/crates.io-index" 3122 - checksum = "12101ecc8225ea6d675bc70263074eab6169079621c2186fe0c66590b2df9681" 3123 - 3124 - [[package]] 3125 - name = "h2" 3126 - version = "0.4.12" 3127 - source = "registry+https://github.com/rust-lang/crates.io-index" 3128 - checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" 3129 - dependencies = [ 3130 - "atomic-waker", 3131 - "bytes", 3132 - "fnv", 3133 - "futures-core", 3134 - "futures-sink", 3135 - "http", 3136 - "indexmap", 3137 - "slab", 3138 - "tokio", 3139 - "tokio-util", 3140 - "tracing", 3141 - ] 3142 - 3143 - [[package]] 3144 - name = "half" 3145 - version = "2.7.1" 3146 - source = "registry+https://github.com/rust-lang/crates.io-index" 3147 - checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" 3148 - dependencies = [ 3149 - "cfg-if", 3150 - "crunchy", 3151 - "num-traits", 3152 - "zerocopy", 3153 - ] 3154 - 3155 - [[package]] 3156 - name = "hash32" 3157 - version = "0.3.1" 3158 - source = "registry+https://github.com/rust-lang/crates.io-index" 3159 - checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" 3160 - dependencies = [ 3161 - "byteorder", 3162 - ] 3163 - 3164 - [[package]] 3165 - name = "hashbrown" 3166 - version = "0.14.5" 3167 - source = "registry+https://github.com/rust-lang/crates.io-index" 3168 - checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 3169 - 3170 - [[package]] 3171 - name = "hashbrown" 3172 - version = "0.15.5" 3173 - source = "registry+https://github.com/rust-lang/crates.io-index" 3174 - checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 3175 - dependencies = [ 3176 - "foldhash 0.1.5", 3177 - ] 3178 - 3179 - [[package]] 3180 - name = "hashbrown" 3181 - version = "0.16.1" 3182 - source = "registry+https://github.com/rust-lang/crates.io-index" 3183 - checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" 3184 - dependencies = [ 3185 - "allocator-api2", 3186 - "equivalent", 3187 - "foldhash 0.2.0", 3188 - ] 3189 - 3190 - [[package]] 3191 - name = "hashlink" 3192 - version = "0.10.0" 3193 - source = "registry+https://github.com/rust-lang/crates.io-index" 3194 - checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" 3195 - dependencies = [ 3196 - "hashbrown 0.15.5", 3197 - ] 3198 - 3199 - [[package]] 3200 - name = "heapless" 3201 - version = "0.8.0" 3202 - source = "registry+https://github.com/rust-lang/crates.io-index" 3203 - checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" 3204 - dependencies = [ 3205 - "hash32", 3206 - "stable_deref_trait", 3207 - ] 3208 - 3209 - [[package]] 3210 - name = "heck" 3211 - version = "0.4.1" 3212 - source = "registry+https://github.com/rust-lang/crates.io-index" 3213 - checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 3214 - 3215 - [[package]] 3216 - name = "heck" 3217 - version = "0.5.0" 3218 - source = "registry+https://github.com/rust-lang/crates.io-index" 3219 - checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 3220 - 3221 - [[package]] 3222 - name = "hermit-abi" 3223 - version = "0.5.2" 3224 - source = "registry+https://github.com/rust-lang/crates.io-index" 3225 - checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" 3226 - 3227 - [[package]] 3228 - name = "hex" 3229 - version = "0.4.3" 3230 - source = "registry+https://github.com/rust-lang/crates.io-index" 3231 - checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 3232 - 3233 - [[package]] 3234 - name = "hexf-parse" 3235 - version = "0.2.1" 3236 - source = "registry+https://github.com/rust-lang/crates.io-index" 3237 - checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 3238 - 3239 - [[package]] 3240 - name = "hidden-trait" 3241 - version = "0.1.2" 3242 - source = "registry+https://github.com/rust-lang/crates.io-index" 3243 - checksum = "68ed9e850438ac849bec07e7d09fbe9309cbd396a5988c30b010580ce08860df" 3244 - dependencies = [ 3245 - "proc-macro2", 3246 - "quote", 3247 - "syn 1.0.109", 3248 - ] 3249 - 3250 - [[package]] 3251 - name = "hkdf" 3252 - version = "0.12.4" 3253 - source = "registry+https://github.com/rust-lang/crates.io-index" 3254 - checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 3255 - dependencies = [ 3256 - "hmac", 3257 - ] 3258 - 3259 - [[package]] 3260 - name = "hmac" 3261 - version = "0.12.1" 3262 - source = "registry+https://github.com/rust-lang/crates.io-index" 3263 - checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 3264 - dependencies = [ 3265 - "digest", 3266 - ] 3267 - 3268 - [[package]] 3269 - name = "home" 3270 - version = "0.5.12" 3271 - source = "registry+https://github.com/rust-lang/crates.io-index" 3272 - checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" 3273 - dependencies = [ 3274 - "windows-sys 0.61.2", 3275 - ] 3276 - 3277 - [[package]] 3278 - name = "hostname" 3279 - version = "0.4.2" 3280 - source = "registry+https://github.com/rust-lang/crates.io-index" 3281 - checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd" 3282 - dependencies = [ 3283 - "cfg-if", 3284 - "libc", 3285 - "windows-link 0.2.1", 3286 - ] 3287 - 3288 - [[package]] 3289 - name = "http" 3290 - version = "1.4.0" 3291 - source = "registry+https://github.com/rust-lang/crates.io-index" 3292 - checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 3293 - dependencies = [ 3294 - "bytes", 3295 - "itoa", 3296 - ] 3297 - 3298 - [[package]] 3299 - name = "http-body" 3300 - version = "1.0.1" 3301 - source = "registry+https://github.com/rust-lang/crates.io-index" 3302 - checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 3303 - dependencies = [ 3304 - "bytes", 3305 - "http", 3306 - ] 3307 - 3308 - [[package]] 3309 - name = "http-body-util" 3310 - version = "0.1.3" 3311 - source = "registry+https://github.com/rust-lang/crates.io-index" 3312 - checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 3313 - dependencies = [ 3314 - "bytes", 3315 - "futures-core", 3316 - "http", 3317 - "http-body", 3318 - "pin-project-lite", 3319 - ] 3320 - 3321 - [[package]] 3322 - name = "httparse" 3323 - version = "1.10.1" 3324 - source = "registry+https://github.com/rust-lang/crates.io-index" 3325 - checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 3326 - 3327 - [[package]] 3328 - name = "hyper" 3329 - version = "1.8.1" 3330 - source = "registry+https://github.com/rust-lang/crates.io-index" 3331 - checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" 3332 - dependencies = [ 3333 - "atomic-waker", 3334 - "bytes", 3335 - "futures-channel", 3336 - "futures-core", 3337 - "h2", 3338 - "http", 3339 - "http-body", 3340 - "httparse", 3341 - "itoa", 3342 - "pin-project-lite", 3343 - "pin-utils", 3344 - "smallvec", 3345 - "tokio", 3346 - "want", 3347 - ] 3348 - 3349 - [[package]] 3350 - name = "hyper-rustls" 3351 - version = "0.27.7" 3352 - source = "registry+https://github.com/rust-lang/crates.io-index" 3353 - checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 3354 - dependencies = [ 3355 - "http", 3356 - "hyper", 3357 - "hyper-util", 3358 - "rustls", 3359 - "rustls-native-certs", 3360 - "rustls-pki-types", 3361 - "tokio", 3362 - "tokio-rustls", 3363 - "tower-service", 3364 - ] 3365 - 3366 - [[package]] 3367 - name = "hyper-util" 3368 - version = "0.1.19" 3369 - source = "registry+https://github.com/rust-lang/crates.io-index" 3370 - checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" 3371 - dependencies = [ 3372 - "bytes", 3373 - "futures-channel", 3374 - "futures-core", 3375 - "futures-util", 3376 - "http", 3377 - "http-body", 3378 - "hyper", 3379 - "libc", 3380 - "pin-project-lite", 3381 - "socket2", 3382 - "tokio", 3383 - "tower-service", 3384 - "tracing", 3385 - ] 3386 - 3387 - [[package]] 3388 - name = "iana-time-zone" 3389 - version = "0.1.64" 3390 - source = "registry+https://github.com/rust-lang/crates.io-index" 3391 - checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" 3392 - dependencies = [ 3393 - "android_system_properties", 3394 - "core-foundation-sys", 3395 - "iana-time-zone-haiku", 3396 - "js-sys", 3397 - "log", 3398 - "wasm-bindgen", 3399 - "windows-core 0.61.2", 3400 - ] 3401 - 3402 - [[package]] 3403 - name = "iana-time-zone-haiku" 3404 - version = "0.1.2" 3405 - source = "registry+https://github.com/rust-lang/crates.io-index" 3406 - checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 3407 - dependencies = [ 3408 - "cc", 3409 - ] 3410 - 3411 - [[package]] 3412 - name = "icu_collections" 3413 - version = "2.1.1" 3414 - source = "registry+https://github.com/rust-lang/crates.io-index" 3415 - checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" 3416 - dependencies = [ 3417 - "displaydoc", 3418 - "potential_utf", 3419 - "yoke", 3420 - "zerofrom", 3421 - "zerovec", 3422 - ] 3423 - 3424 - [[package]] 3425 - name = "icu_locale_core" 3426 - version = "2.1.1" 3427 - source = "registry+https://github.com/rust-lang/crates.io-index" 3428 - checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" 3429 - dependencies = [ 3430 - "displaydoc", 3431 - "litemap", 3432 - "tinystr", 3433 - "writeable", 3434 - "zerovec", 3435 - ] 3436 - 3437 - [[package]] 3438 - name = "icu_normalizer" 3439 - version = "2.1.1" 3440 - source = "registry+https://github.com/rust-lang/crates.io-index" 3441 - checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" 3442 - dependencies = [ 3443 - "icu_collections", 3444 - "icu_normalizer_data", 3445 - "icu_properties", 3446 - "icu_provider", 3447 - "smallvec", 3448 - "zerovec", 3449 - ] 3450 - 3451 - [[package]] 3452 - name = "icu_normalizer_data" 3453 - version = "2.1.1" 3454 - source = "registry+https://github.com/rust-lang/crates.io-index" 3455 - checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" 3456 - 3457 - [[package]] 3458 - name = "icu_properties" 3459 - version = "2.1.2" 3460 - source = "registry+https://github.com/rust-lang/crates.io-index" 3461 - checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" 3462 - dependencies = [ 3463 - "icu_collections", 3464 - "icu_locale_core", 3465 - "icu_properties_data", 3466 - "icu_provider", 3467 - "zerotrie", 3468 - "zerovec", 3469 - ] 3470 - 3471 - [[package]] 3472 - name = "icu_properties_data" 3473 - version = "2.1.2" 3474 - source = "registry+https://github.com/rust-lang/crates.io-index" 3475 - checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" 3476 - 3477 - [[package]] 3478 - name = "icu_provider" 3479 - version = "2.1.1" 3480 - source = "registry+https://github.com/rust-lang/crates.io-index" 3481 - checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" 3482 - dependencies = [ 3483 - "displaydoc", 3484 - "icu_locale_core", 3485 - "writeable", 3486 - "yoke", 3487 - "zerofrom", 3488 - "zerotrie", 3489 - "zerovec", 3490 - ] 3491 - 3492 - [[package]] 3493 - name = "idna" 3494 - version = "1.1.0" 3495 - source = "registry+https://github.com/rust-lang/crates.io-index" 3496 - checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 3497 - dependencies = [ 3498 - "idna_adapter", 3499 - "smallvec", 3500 - "utf8_iter", 3501 - ] 3502 - 3503 - [[package]] 3504 - name = "idna_adapter" 3505 - version = "1.2.1" 3506 - source = "registry+https://github.com/rust-lang/crates.io-index" 3507 - checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 3508 - dependencies = [ 3509 - "icu_normalizer", 3510 - "icu_properties", 3511 - ] 3512 - 3513 - [[package]] 3514 - name = "ignore" 3515 - version = "0.4.25" 3516 - source = "registry+https://github.com/rust-lang/crates.io-index" 3517 - checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" 3518 - dependencies = [ 3519 - "crossbeam-deque", 3520 - "globset", 3521 - "log", 3522 - "memchr", 3523 - "regex-automata", 3524 - "same-file", 3525 - "walkdir", 3526 - "winapi-util", 3527 - ] 3528 - 3529 - [[package]] 3530 - name = "image" 3531 - version = "0.25.9" 3532 - source = "registry+https://github.com/rust-lang/crates.io-index" 3533 - checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" 3534 - dependencies = [ 3535 - "bytemuck", 3536 - "byteorder-lite", 3537 - "color_quant", 3538 - "exr", 3539 - "gif", 3540 - "image-webp", 3541 - "moxcms", 3542 - "num-traits", 3543 - "png 0.18.0", 3544 - "qoi", 3545 - "ravif", 3546 - "rayon", 3547 - "rgb", 3548 - "tiff", 3549 - "zune-core 0.5.0", 3550 - "zune-jpeg 0.5.6", 3551 - ] 3552 - 3553 - [[package]] 3554 - name = "image-webp" 3555 - version = "0.2.4" 3556 - source = "registry+https://github.com/rust-lang/crates.io-index" 3557 - checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" 3558 - dependencies = [ 3559 - "byteorder-lite", 3560 - "quick-error", 3561 - ] 3562 - 3563 - [[package]] 3564 - name = "imagesize" 3565 - version = "0.13.0" 3566 - source = "registry+https://github.com/rust-lang/crates.io-index" 3567 - checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" 3568 - 3569 - [[package]] 3570 - name = "imara-diff" 3571 - version = "0.1.8" 3572 - source = "registry+https://github.com/rust-lang/crates.io-index" 3573 - checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2" 3574 - dependencies = [ 3575 - "hashbrown 0.15.5", 3576 - ] 3577 - 3578 - [[package]] 3579 - name = "imgref" 3580 - version = "1.12.0" 3581 - source = "registry+https://github.com/rust-lang/crates.io-index" 3582 - checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" 3583 - 3584 - [[package]] 3585 - name = "indexmap" 3586 - version = "2.12.1" 3587 - source = "registry+https://github.com/rust-lang/crates.io-index" 3588 - checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" 3589 - dependencies = [ 3590 - "equivalent", 3591 - "hashbrown 0.16.1", 3592 - "serde", 3593 - "serde_core", 3594 - ] 3595 - 3596 - [[package]] 3597 - name = "inotify" 3598 - version = "0.11.0" 3599 - source = "registry+https://github.com/rust-lang/crates.io-index" 3600 - checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" 3601 - dependencies = [ 3602 - "bitflags 2.10.0", 3603 - "inotify-sys", 3604 - "libc", 3605 - ] 3606 - 3607 - [[package]] 3608 - name = "inotify-sys" 3609 - version = "0.1.5" 3610 - source = "registry+https://github.com/rust-lang/crates.io-index" 3611 - checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 3612 - dependencies = [ 3613 - "libc", 3614 - ] 3615 - 3616 - [[package]] 3617 - name = "inout" 3618 - version = "0.1.4" 3619 - source = "registry+https://github.com/rust-lang/crates.io-index" 3620 - checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" 3621 - dependencies = [ 3622 - "block-padding", 3623 - "generic-array", 3624 - ] 3625 - 3626 - [[package]] 3627 - name = "instant" 3628 - version = "0.1.13" 3629 - source = "registry+https://github.com/rust-lang/crates.io-index" 3630 - checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 3631 - dependencies = [ 3632 - "cfg-if", 3633 - ] 3634 - 3635 - [[package]] 3636 - name = "interim" 3637 - version = "0.2.1" 3638 - source = "registry+https://github.com/rust-lang/crates.io-index" 3639 - checksum = "a9ce9099a85f468663d3225bf87e85d0548968441e1db12248b996b24f0f5b5a" 3640 - dependencies = [ 3641 - "chrono", 3642 - "logos", 3643 - ] 3644 - 3645 - [[package]] 3646 - name = "interpolate_name" 3647 - version = "0.2.4" 3648 - source = "registry+https://github.com/rust-lang/crates.io-index" 3649 - checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" 3650 - dependencies = [ 3651 - "proc-macro2", 3652 - "quote", 3653 - "syn 2.0.111", 3654 - ] 3655 - 3656 - [[package]] 3657 - name = "inventory" 3658 - version = "0.3.21" 3659 - source = "registry+https://github.com/rust-lang/crates.io-index" 3660 - checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" 3661 - dependencies = [ 3662 - "rustversion", 3663 - ] 3664 - 3665 - [[package]] 3666 - name = "io-surface" 3667 - version = "0.16.1" 3668 - source = "registry+https://github.com/rust-lang/crates.io-index" 3669 - checksum = "554b8c5d64ec09a3a520fe58e4d48a73e00ff32899cdcbe32a4877afd4968b8e" 3670 - dependencies = [ 3671 - "cgl", 3672 - "core-foundation 0.10.0", 3673 - "core-foundation-sys", 3674 - "leaky-cow", 3675 - ] 3676 - 3677 - [[package]] 3678 - name = "ipnet" 3679 - version = "2.11.0" 3680 - source = "registry+https://github.com/rust-lang/crates.io-index" 3681 - checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 3682 - 3683 - [[package]] 3684 - name = "is-docker" 3685 - version = "0.2.0" 3686 - source = "registry+https://github.com/rust-lang/crates.io-index" 3687 - checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" 3688 - dependencies = [ 3689 - "once_cell", 3690 - ] 3691 - 3692 - [[package]] 3693 - name = "is-wsl" 3694 - version = "0.4.0" 3695 - source = "registry+https://github.com/rust-lang/crates.io-index" 3696 - checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" 3697 - dependencies = [ 3698 - "is-docker", 3699 - "once_cell", 3700 - ] 3701 - 3702 - [[package]] 3703 - name = "itertools" 3704 - version = "0.13.0" 3705 - source = "registry+https://github.com/rust-lang/crates.io-index" 3706 - checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 3707 - dependencies = [ 3708 - "either", 3709 - ] 3710 - 3711 - [[package]] 3712 - name = "itertools" 3713 - version = "0.14.0" 3714 - source = "registry+https://github.com/rust-lang/crates.io-index" 3715 - checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 3716 - dependencies = [ 3717 - "either", 3718 - ] 3719 - 3720 - [[package]] 3721 - name = "itoa" 3722 - version = "1.0.15" 3723 - source = "registry+https://github.com/rust-lang/crates.io-index" 3724 - checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 3725 - 3726 - [[package]] 3727 - name = "jiff" 3728 - version = "0.2.16" 3729 - source = "registry+https://github.com/rust-lang/crates.io-index" 3730 - checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" 3731 - dependencies = [ 3732 - "jiff-static", 3733 - "jiff-tzdb-platform", 3734 - "log", 3735 - "portable-atomic", 3736 - "portable-atomic-util", 3737 - "serde_core", 3738 - "windows-sys 0.61.2", 3739 - ] 3740 - 3741 - [[package]] 3742 - name = "jiff-static" 3743 - version = "0.2.16" 3744 - source = "registry+https://github.com/rust-lang/crates.io-index" 3745 - checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" 3746 - dependencies = [ 3747 - "proc-macro2", 3748 - "quote", 3749 - "syn 2.0.111", 3750 - ] 3751 - 3752 - [[package]] 3753 - name = "jiff-tzdb" 3754 - version = "0.1.5" 3755 - source = "registry+https://github.com/rust-lang/crates.io-index" 3756 - checksum = "68971ebff725b9e2ca27a601c5eb38a4c5d64422c4cbab0c535f248087eda5c2" 3757 - 3758 - [[package]] 3759 - name = "jiff-tzdb-platform" 3760 - version = "0.1.3" 3761 - source = "registry+https://github.com/rust-lang/crates.io-index" 3762 - checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" 3763 - dependencies = [ 3764 - "jiff-tzdb", 3765 - ] 3766 - 3767 - [[package]] 3768 - name = "jj-lib" 3769 - version = "0.35.0" 3770 - source = "registry+https://github.com/rust-lang/crates.io-index" 3771 - checksum = "7359906e1e4fbc7316590a31760da95719a11b2f32ce3a76b8c6e8de1ccd93d7" 3772 - dependencies = [ 3773 - "async-trait", 3774 - "blake2", 3775 - "bstr", 3776 - "chrono", 3777 - "clru", 3778 - "digest", 3779 - "dunce", 3780 - "either", 3781 - "futures", 3782 - "gix", 3783 - "globset", 3784 - "hashbrown 0.16.1", 3785 - "ignore", 3786 - "indexmap", 3787 - "interim", 3788 - "itertools 0.14.0", 3789 - "jj-lib-proc-macros", 3790 - "maplit", 3791 - "once_cell", 3792 - "pest", 3793 - "pest_derive", 3794 - "pollster 0.4.0", 3795 - "prost", 3796 - "rand 0.9.2", 3797 - "rand_chacha 0.9.0", 3798 - "rayon", 3799 - "ref-cast", 3800 - "regex", 3801 - "rustix 1.1.2", 3802 - "same-file", 3803 - "serde", 3804 - "smallvec", 3805 - "strsim", 3806 - "tempfile", 3807 - "thiserror 2.0.17", 3808 - "tokio", 3809 - "toml_edit 0.23.9", 3810 - "tracing", 3811 - "version_check", 3812 - "winreg", 3813 - ] 3814 - 3815 - [[package]] 3816 - name = "jj-lib-proc-macros" 3817 - version = "0.35.0" 3818 - source = "registry+https://github.com/rust-lang/crates.io-index" 3819 - checksum = "326132a09bea618b2035a13c17fe9d5542ca260c0895dacca8ad95f0d6d4011c" 3820 - dependencies = [ 3821 - "proc-macro2", 3822 - "quote", 3823 - "syn 2.0.111", 3824 - ] 3825 - 3826 - [[package]] 3827 - name = "jobserver" 3828 - version = "0.1.34" 3829 - source = "registry+https://github.com/rust-lang/crates.io-index" 3830 - checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 3831 - dependencies = [ 3832 - "getrandom 0.3.4", 3833 - "libc", 3834 - ] 3835 - 3836 - [[package]] 3837 - name = "js-sys" 3838 - version = "0.3.83" 3839 - source = "registry+https://github.com/rust-lang/crates.io-index" 3840 - checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" 3841 - dependencies = [ 3842 - "once_cell", 3843 - "wasm-bindgen", 3844 - ] 3845 - 3846 - [[package]] 3847 - name = "json5" 3848 - version = "0.4.1" 3849 - source = "registry+https://github.com/rust-lang/crates.io-index" 3850 - checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" 3851 - dependencies = [ 3852 - "pest", 3853 - "pest_derive", 3854 - "serde", 3855 - ] 3856 - 3857 - [[package]] 3858 - name = "khronos-egl" 3859 - version = "6.0.0" 3860 - source = "registry+https://github.com/rust-lang/crates.io-index" 3861 - checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 3862 - dependencies = [ 3863 - "libc", 3864 - "libloading", 3865 - ] 3866 - 3867 - [[package]] 3868 - name = "kqueue" 3869 - version = "1.1.1" 3870 - source = "registry+https://github.com/rust-lang/crates.io-index" 3871 - checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" 3872 - dependencies = [ 3873 - "kqueue-sys", 3874 - "libc", 3875 - ] 3876 - 3877 - [[package]] 3878 - name = "kqueue-sys" 3879 - version = "1.0.4" 3880 - source = "registry+https://github.com/rust-lang/crates.io-index" 3881 - checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" 3882 - dependencies = [ 3883 - "bitflags 1.3.2", 3884 - "libc", 3885 - ] 3886 - 3887 - [[package]] 3888 - name = "kstring" 3889 - version = "2.0.2" 3890 - source = "registry+https://github.com/rust-lang/crates.io-index" 3891 - checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1" 3892 - dependencies = [ 3893 - "static_assertions", 3894 - ] 3895 - 3896 - [[package]] 3897 - name = "kurbo" 3898 - version = "0.11.3" 3899 - source = "registry+https://github.com/rust-lang/crates.io-index" 3900 - checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62" 3901 - dependencies = [ 3902 - "arrayvec", 3903 - "euclid", 3904 - "smallvec", 3905 - ] 3906 - 3907 - [[package]] 3908 - name = "kv-log-macro" 3909 - version = "1.0.7" 3910 - source = "registry+https://github.com/rust-lang/crates.io-index" 3911 - checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 3912 - dependencies = [ 3913 - "log", 3914 - ] 3915 - 3916 - [[package]] 3917 - name = "lazy_static" 3918 - version = "1.5.0" 3919 - source = "registry+https://github.com/rust-lang/crates.io-index" 3920 - checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 3921 - dependencies = [ 3922 - "spin", 3923 - ] 3924 - 3925 - [[package]] 3926 - name = "leak" 3927 - version = "0.1.2" 3928 - source = "registry+https://github.com/rust-lang/crates.io-index" 3929 - checksum = "bd100e01f1154f2908dfa7d02219aeab25d0b9c7fa955164192e3245255a0c73" 3930 - 3931 - [[package]] 3932 - name = "leaky-cow" 3933 - version = "0.1.1" 3934 - source = "registry+https://github.com/rust-lang/crates.io-index" 3935 - checksum = "40a8225d44241fd324a8af2806ba635fc7c8a7e9a7de4d5cf3ef54e71f5926fc" 3936 - dependencies = [ 3937 - "leak", 3938 - ] 3939 - 3940 - [[package]] 3941 - name = "lebe" 3942 - version = "0.5.3" 3943 - source = "registry+https://github.com/rust-lang/crates.io-index" 3944 - checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" 3945 - 3946 - [[package]] 3947 - name = "libc" 3948 - version = "0.2.178" 3949 - source = "registry+https://github.com/rust-lang/crates.io-index" 3950 - checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" 3951 - 3952 - [[package]] 3953 - name = "libfuzzer-sys" 3954 - version = "0.4.10" 3955 - source = "registry+https://github.com/rust-lang/crates.io-index" 3956 - checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" 3957 - dependencies = [ 3958 - "arbitrary", 3959 - "cc", 3960 - ] 3961 - 3962 - [[package]] 3963 - name = "libloading" 3964 - version = "0.8.9" 3965 - source = "registry+https://github.com/rust-lang/crates.io-index" 3966 - checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" 3967 - dependencies = [ 3968 - "cfg-if", 3969 - "windows-link 0.2.1", 3970 - ] 3971 - 3972 - [[package]] 3973 - name = "libm" 3974 - version = "0.2.15" 3975 - source = "registry+https://github.com/rust-lang/crates.io-index" 3976 - checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" 3977 - 3978 - [[package]] 3979 - name = "libredox" 3980 - version = "0.1.10" 3981 - source = "registry+https://github.com/rust-lang/crates.io-index" 3982 - checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" 3983 - dependencies = [ 3984 - "bitflags 2.10.0", 3985 - "libc", 3986 - "redox_syscall 0.5.18", 3987 - ] 3988 - 3989 - [[package]] 3990 - name = "libz-rs-sys" 3991 - version = "0.5.4" 3992 - source = "registry+https://github.com/rust-lang/crates.io-index" 3993 - checksum = "15413ef615ad868d4d65dce091cb233b229419c7c0c4bcaa746c0901c49ff39c" 3994 - dependencies = [ 3995 - "zlib-rs", 3996 - ] 3997 - 3998 - [[package]] 3999 - name = "linux-raw-sys" 4000 - version = "0.4.15" 4001 - source = "registry+https://github.com/rust-lang/crates.io-index" 4002 - checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 4003 - 4004 - [[package]] 4005 - name = "linux-raw-sys" 4006 - version = "0.11.0" 4007 - source = "registry+https://github.com/rust-lang/crates.io-index" 4008 - checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" 4009 - 4010 - [[package]] 4011 - name = "litemap" 4012 - version = "0.8.1" 4013 - source = "registry+https://github.com/rust-lang/crates.io-index" 4014 - checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" 4015 - 4016 - [[package]] 4017 - name = "lock_api" 4018 - version = "0.4.14" 4019 - source = "registry+https://github.com/rust-lang/crates.io-index" 4020 - checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 4021 - dependencies = [ 4022 - "scopeguard", 4023 - ] 4024 - 4025 - [[package]] 4026 - name = "log" 4027 - version = "0.4.29" 4028 - source = "registry+https://github.com/rust-lang/crates.io-index" 4029 - checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 4030 - dependencies = [ 4031 - "serde_core", 4032 - "value-bag", 4033 - ] 4034 - 4035 - [[package]] 4036 - name = "logos" 4037 - version = "0.15.1" 4038 - source = "registry+https://github.com/rust-lang/crates.io-index" 4039 - checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154" 4040 - dependencies = [ 4041 - "logos-derive", 4042 - ] 4043 - 4044 - [[package]] 4045 - name = "logos-codegen" 4046 - version = "0.15.1" 4047 - source = "registry+https://github.com/rust-lang/crates.io-index" 4048 - checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c" 4049 - dependencies = [ 4050 - "beef", 4051 - "fnv", 4052 - "lazy_static", 4053 - "proc-macro2", 4054 - "quote", 4055 - "regex-syntax", 4056 - "rustc_version", 4057 - "syn 2.0.111", 4058 - ] 4059 - 4060 - [[package]] 4061 - name = "logos-derive" 4062 - version = "0.15.1" 4063 - source = "registry+https://github.com/rust-lang/crates.io-index" 4064 - checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" 4065 - dependencies = [ 4066 - "logos-codegen", 4067 - ] 4068 - 4069 - [[package]] 4070 - name = "loop9" 4071 - version = "0.1.5" 4072 - source = "registry+https://github.com/rust-lang/crates.io-index" 4073 - checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" 4074 - dependencies = [ 4075 - "imgref", 4076 - ] 4077 - 4078 - [[package]] 4079 - name = "lru-slab" 4080 - version = "0.1.2" 4081 - source = "registry+https://github.com/rust-lang/crates.io-index" 4082 - checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 4083 - 4084 - [[package]] 4085 - name = "lyon" 4086 - version = "1.0.16" 4087 - source = "registry+https://github.com/rust-lang/crates.io-index" 4088 - checksum = "dbcb7d54d54c8937364c9d41902d066656817dce1e03a44e5533afebd1ef4352" 4089 - dependencies = [ 4090 - "lyon_algorithms", 4091 - "lyon_tessellation", 4092 - ] 4093 - 4094 - [[package]] 4095 - name = "lyon_algorithms" 4096 - version = "1.0.16" 4097 - source = "registry+https://github.com/rust-lang/crates.io-index" 4098 - checksum = "f4c0829e28c4f336396f250d850c3987e16ce6db057ffe047ce0dd54aab6b647" 4099 - dependencies = [ 4100 - "lyon_path", 4101 - "num-traits", 4102 - ] 4103 - 4104 - [[package]] 4105 - name = "lyon_geom" 4106 - version = "1.0.18" 4107 - source = "registry+https://github.com/rust-lang/crates.io-index" 4108 - checksum = "e260b6de923e6e47adfedf6243013a7a874684165a6a277594ee3906021b2343" 4109 - dependencies = [ 4110 - "arrayvec", 4111 - "euclid", 4112 - "num-traits", 4113 - ] 4114 - 4115 - [[package]] 4116 - name = "lyon_path" 4117 - version = "1.0.16" 4118 - source = "registry+https://github.com/rust-lang/crates.io-index" 4119 - checksum = "1aeca86bcfd632a15984ba029b539ffb811e0a70bf55e814ef8b0f54f506fdeb" 4120 - dependencies = [ 4121 - "lyon_geom", 4122 - "num-traits", 4123 - ] 4124 - 4125 - [[package]] 4126 - name = "lyon_tessellation" 4127 - version = "1.0.16" 4128 - source = "registry+https://github.com/rust-lang/crates.io-index" 4129 - checksum = "f3f586142e1280335b1bc89539f7c97dd80f08fc43e9ab1b74ef0a42b04aa353" 4130 - dependencies = [ 4131 - "float_next_after", 4132 - "lyon_path", 4133 - "num-traits", 4134 - ] 4135 - 4136 - [[package]] 4137 - name = "mac" 4138 - version = "0.1.1" 4139 - source = "registry+https://github.com/rust-lang/crates.io-index" 4140 - checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 4141 - 4142 - [[package]] 4143 - name = "malloc_buf" 4144 - version = "0.0.6" 4145 - source = "registry+https://github.com/rust-lang/crates.io-index" 4146 - checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 4147 - dependencies = [ 4148 - "libc", 4149 - ] 4150 - 4151 - [[package]] 4152 - name = "maplit" 4153 - version = "1.0.2" 4154 - source = "registry+https://github.com/rust-lang/crates.io-index" 4155 - checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" 4156 - 4157 - [[package]] 4158 - name = "maybe-async" 4159 - version = "0.2.10" 4160 - source = "registry+https://github.com/rust-lang/crates.io-index" 4161 - checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" 4162 - dependencies = [ 4163 - "proc-macro2", 4164 - "quote", 4165 - "syn 2.0.111", 4166 - ] 4167 - 4168 - [[package]] 4169 - name = "maybe-rayon" 4170 - version = "0.1.1" 4171 - source = "registry+https://github.com/rust-lang/crates.io-index" 4172 - checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" 4173 - dependencies = [ 4174 - "cfg-if", 4175 - "rayon", 4176 - ] 4177 - 4178 - [[package]] 4179 - name = "md-5" 4180 - version = "0.10.6" 4181 - source = "registry+https://github.com/rust-lang/crates.io-index" 4182 - checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 4183 - dependencies = [ 4184 - "cfg-if", 4185 - "digest", 4186 - ] 4187 - 4188 - [[package]] 4189 - name = "memchr" 4190 - version = "2.7.6" 4191 - source = "registry+https://github.com/rust-lang/crates.io-index" 4192 - checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 4193 - 4194 - [[package]] 4195 - name = "memmap2" 4196 - version = "0.9.9" 4197 - source = "registry+https://github.com/rust-lang/crates.io-index" 4198 - checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" 4199 - dependencies = [ 4200 - "libc", 4201 - ] 4202 - 4203 - [[package]] 4204 - name = "memoffset" 4205 - version = "0.9.1" 4206 - source = "registry+https://github.com/rust-lang/crates.io-index" 4207 - checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 4208 - dependencies = [ 4209 - "autocfg", 4210 - ] 4211 - 4212 - [[package]] 4213 - name = "metal" 4214 - version = "0.29.0" 4215 - source = "registry+https://github.com/rust-lang/crates.io-index" 4216 - checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" 4217 - dependencies = [ 4218 - "bitflags 2.10.0", 4219 - "block", 4220 - "core-graphics-types 0.1.3", 4221 - "foreign-types", 4222 - "log", 4223 - "objc", 4224 - "paste", 4225 - ] 4226 - 4227 - [[package]] 4228 - name = "mime" 4229 - version = "0.3.17" 4230 - source = "registry+https://github.com/rust-lang/crates.io-index" 4231 - checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 4232 - 4233 - [[package]] 4234 - name = "mime_guess" 4235 - version = "2.0.5" 4236 - source = "registry+https://github.com/rust-lang/crates.io-index" 4237 - checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 4238 - dependencies = [ 4239 - "mime", 4240 - "unicase", 4241 - ] 4242 - 4243 - [[package]] 4244 - name = "minimal-lexical" 4245 - version = "0.2.1" 4246 - source = "registry+https://github.com/rust-lang/crates.io-index" 4247 - checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 4248 - 4249 - [[package]] 4250 - name = "miniz_oxide" 4251 - version = "0.8.9" 4252 - source = "registry+https://github.com/rust-lang/crates.io-index" 4253 - checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 4254 - dependencies = [ 4255 - "adler2", 4256 - "simd-adler32", 4257 - ] 4258 - 4259 - [[package]] 4260 - name = "mint" 4261 - version = "0.5.9" 4262 - source = "registry+https://github.com/rust-lang/crates.io-index" 4263 - checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" 4264 - 4265 - [[package]] 4266 - name = "mio" 4267 - version = "1.1.1" 4268 - source = "registry+https://github.com/rust-lang/crates.io-index" 4269 - checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" 4270 - dependencies = [ 4271 - "libc", 4272 - "log", 4273 - "wasi", 4274 - "windows-sys 0.61.2", 4275 - ] 4276 - 4277 - [[package]] 4278 - name = "moxcms" 4279 - version = "0.7.10" 4280 - source = "registry+https://github.com/rust-lang/crates.io-index" 4281 - checksum = "80986bbbcf925ebd3be54c26613d861255284584501595cf418320c078945608" 4282 - dependencies = [ 4283 - "num-traits", 4284 - "pxfm", 4285 - ] 4286 - 4287 - [[package]] 4288 - name = "naga" 4289 - version = "25.0.1" 4290 - source = "registry+https://github.com/rust-lang/crates.io-index" 4291 - checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" 4292 - dependencies = [ 4293 - "arrayvec", 4294 - "bit-set", 4295 - "bitflags 2.10.0", 4296 - "cfg_aliases", 4297 - "codespan-reporting", 4298 - "half", 4299 - "hashbrown 0.15.5", 4300 - "hexf-parse", 4301 - "indexmap", 4302 - "log", 4303 - "num-traits", 4304 - "once_cell", 4305 - "rustc-hash 1.1.0", 4306 - "spirv", 4307 - "strum 0.26.3", 4308 - "thiserror 2.0.17", 4309 - "unicode-ident", 4310 - ] 4311 - 4312 - [[package]] 4313 - name = "nanorand" 4314 - version = "0.7.0" 4315 - source = "registry+https://github.com/rust-lang/crates.io-index" 4316 - checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" 4317 - dependencies = [ 4318 - "getrandom 0.2.16", 4319 - ] 4320 - 4321 - [[package]] 4322 - name = "new_debug_unreachable" 4323 - version = "1.0.6" 4324 - source = "registry+https://github.com/rust-lang/crates.io-index" 4325 - checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 4326 - 4327 - [[package]] 4328 - name = "nix" 4329 - version = "0.29.0" 4330 - source = "registry+https://github.com/rust-lang/crates.io-index" 4331 - checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 4332 - dependencies = [ 4333 - "bitflags 2.10.0", 4334 - "cfg-if", 4335 - "cfg_aliases", 4336 - "libc", 4337 - ] 4338 - 4339 - [[package]] 4340 - name = "nix" 4341 - version = "0.30.1" 4342 - source = "registry+https://github.com/rust-lang/crates.io-index" 4343 - checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" 4344 - dependencies = [ 4345 - "bitflags 2.10.0", 4346 - "cfg-if", 4347 - "cfg_aliases", 4348 - "libc", 4349 - "memoffset", 4350 - ] 4351 - 4352 - [[package]] 4353 - name = "nom" 4354 - version = "7.1.3" 4355 - source = "registry+https://github.com/rust-lang/crates.io-index" 4356 - checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 4357 - dependencies = [ 4358 - "memchr", 4359 - "minimal-lexical", 4360 - ] 4361 - 4362 - [[package]] 4363 - name = "nom" 4364 - version = "8.0.0" 4365 - source = "registry+https://github.com/rust-lang/crates.io-index" 4366 - checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" 4367 - dependencies = [ 4368 - "memchr", 4369 - ] 4370 - 4371 - [[package]] 4372 - name = "noop_proc_macro" 4373 - version = "0.3.0" 4374 - source = "registry+https://github.com/rust-lang/crates.io-index" 4375 - checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" 4376 - 4377 - [[package]] 4378 - name = "notify" 4379 - version = "8.2.0" 4380 - source = "registry+https://github.com/rust-lang/crates.io-index" 4381 - checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" 4382 - dependencies = [ 4383 - "bitflags 2.10.0", 4384 - "fsevent-sys", 4385 - "inotify", 4386 - "kqueue", 4387 - "libc", 4388 - "log", 4389 - "mio", 4390 - "notify-types", 4391 - "walkdir", 4392 - "windows-sys 0.60.2", 4393 - ] 4394 - 4395 - [[package]] 4396 - name = "notify-debouncer-mini" 4397 - version = "0.7.0" 4398 - source = "registry+https://github.com/rust-lang/crates.io-index" 4399 - checksum = "17849edfaabd9a5fef1c606d99cfc615a8e99f7ac4366406d86c7942a3184cf2" 4400 - dependencies = [ 4401 - "log", 4402 - "notify", 4403 - "notify-types", 4404 - "tempfile", 4405 - ] 4406 - 4407 - [[package]] 4408 - name = "notify-types" 4409 - version = "2.0.0" 4410 - source = "registry+https://github.com/rust-lang/crates.io-index" 4411 - checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" 4412 - 4413 - [[package]] 4414 - name = "ntapi" 4415 - version = "0.4.1" 4416 - source = "registry+https://github.com/rust-lang/crates.io-index" 4417 - checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" 4418 - dependencies = [ 4419 - "winapi", 4420 - ] 4421 - 4422 - [[package]] 4423 - name = "num" 4424 - version = "0.4.3" 4425 - source = "registry+https://github.com/rust-lang/crates.io-index" 4426 - checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" 4427 - dependencies = [ 4428 - "num-bigint", 4429 - "num-complex", 4430 - "num-integer", 4431 - "num-iter", 4432 - "num-rational", 4433 - "num-traits", 4434 - ] 4435 - 4436 - [[package]] 4437 - name = "num-bigint" 4438 - version = "0.4.6" 4439 - source = "registry+https://github.com/rust-lang/crates.io-index" 4440 - checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 4441 - dependencies = [ 4442 - "num-integer", 4443 - "num-traits", 4444 - ] 4445 - 4446 - [[package]] 4447 - name = "num-bigint-dig" 4448 - version = "0.8.6" 4449 - source = "registry+https://github.com/rust-lang/crates.io-index" 4450 - checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 4451 - dependencies = [ 4452 - "lazy_static", 4453 - "libm", 4454 - "num-integer", 4455 - "num-iter", 4456 - "num-traits", 4457 - "rand 0.8.5", 4458 - "serde", 4459 - "smallvec", 4460 - "zeroize", 4461 - ] 4462 - 4463 - [[package]] 4464 - name = "num-complex" 4465 - version = "0.4.6" 4466 - source = "registry+https://github.com/rust-lang/crates.io-index" 4467 - checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" 4468 - dependencies = [ 4469 - "num-traits", 4470 - ] 4471 - 4472 - [[package]] 4473 - name = "num-derive" 4474 - version = "0.4.2" 4475 - source = "registry+https://github.com/rust-lang/crates.io-index" 4476 - checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 4477 - dependencies = [ 4478 - "proc-macro2", 4479 - "quote", 4480 - "syn 2.0.111", 4481 - ] 4482 - 4483 - [[package]] 4484 - name = "num-integer" 4485 - version = "0.1.46" 4486 - source = "registry+https://github.com/rust-lang/crates.io-index" 4487 - checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 4488 - dependencies = [ 4489 - "num-traits", 4490 - ] 4491 - 4492 - [[package]] 4493 - name = "num-iter" 4494 - version = "0.1.45" 4495 - source = "registry+https://github.com/rust-lang/crates.io-index" 4496 - checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 4497 - dependencies = [ 4498 - "autocfg", 4499 - "num-integer", 4500 - "num-traits", 4501 - ] 4502 - 4503 - [[package]] 4504 - name = "num-rational" 4505 - version = "0.4.2" 4506 - source = "registry+https://github.com/rust-lang/crates.io-index" 4507 - checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 4508 - dependencies = [ 4509 - "num-bigint", 4510 - "num-integer", 4511 - "num-traits", 4512 - ] 4513 - 4514 - [[package]] 4515 - name = "num-traits" 4516 - version = "0.2.19" 4517 - source = "registry+https://github.com/rust-lang/crates.io-index" 4518 - checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 4519 - dependencies = [ 4520 - "autocfg", 4521 - "libm", 4522 - ] 4523 - 4524 - [[package]] 4525 - name = "num_cpus" 4526 - version = "1.17.0" 4527 - source = "registry+https://github.com/rust-lang/crates.io-index" 4528 - checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" 4529 - dependencies = [ 4530 - "hermit-abi", 4531 - "libc", 4532 - ] 4533 - 4534 - [[package]] 4535 - name = "objc" 4536 - version = "0.2.7" 4537 - source = "registry+https://github.com/rust-lang/crates.io-index" 4538 - checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 4539 - dependencies = [ 4540 - "malloc_buf", 4541 - "objc_exception", 4542 - ] 4543 - 4544 - [[package]] 4545 - name = "objc-foundation" 4546 - version = "0.1.1" 4547 - source = "registry+https://github.com/rust-lang/crates.io-index" 4548 - checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 4549 - dependencies = [ 4550 - "block", 4551 - "objc", 4552 - "objc_id", 4553 - ] 4554 - 4555 - [[package]] 4556 - name = "objc2" 4557 - version = "0.6.3" 4558 - source = "registry+https://github.com/rust-lang/crates.io-index" 4559 - checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" 4560 - dependencies = [ 4561 - "objc2-encode", 4562 - ] 4563 - 4564 - [[package]] 4565 - name = "objc2-app-kit" 4566 - version = "0.3.2" 4567 - source = "registry+https://github.com/rust-lang/crates.io-index" 4568 - checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" 4569 - dependencies = [ 4570 - "bitflags 2.10.0", 4571 - "objc2", 4572 - "objc2-core-foundation", 4573 - "objc2-foundation", 4574 - "objc2-quartz-core", 4575 - ] 4576 - 4577 - [[package]] 4578 - name = "objc2-core-foundation" 4579 - version = "0.3.2" 4580 - source = "registry+https://github.com/rust-lang/crates.io-index" 4581 - checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" 4582 - dependencies = [ 4583 - "bitflags 2.10.0", 4584 - "dispatch2", 4585 - "objc2", 4586 - ] 4587 - 4588 - [[package]] 4589 - name = "objc2-encode" 4590 - version = "4.1.0" 4591 - source = "registry+https://github.com/rust-lang/crates.io-index" 4592 - checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" 4593 - 4594 - [[package]] 4595 - name = "objc2-foundation" 4596 - version = "0.3.2" 4597 - source = "registry+https://github.com/rust-lang/crates.io-index" 4598 - checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" 4599 - dependencies = [ 4600 - "bitflags 2.10.0", 4601 - "objc2", 4602 - "objc2-core-foundation", 4603 - ] 4604 - 4605 - [[package]] 4606 - name = "objc2-metal" 4607 - version = "0.3.2" 4608 - source = "registry+https://github.com/rust-lang/crates.io-index" 4609 - checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" 4610 - dependencies = [ 4611 - "bitflags 2.10.0", 4612 - "block2", 4613 - "objc2", 4614 - "objc2-foundation", 4615 - ] 4616 - 4617 - [[package]] 4618 - name = "objc2-quartz-core" 4619 - version = "0.3.2" 4620 - source = "registry+https://github.com/rust-lang/crates.io-index" 4621 - checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" 4622 - dependencies = [ 4623 - "bitflags 2.10.0", 4624 - "objc2", 4625 - "objc2-core-foundation", 4626 - "objc2-foundation", 4627 - "objc2-metal", 4628 - ] 4629 - 4630 - [[package]] 4631 - name = "objc2-ui-kit" 4632 - version = "0.3.2" 4633 - source = "registry+https://github.com/rust-lang/crates.io-index" 4634 - checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" 4635 - dependencies = [ 4636 - "bitflags 2.10.0", 4637 - "objc2", 4638 - "objc2-core-foundation", 4639 - "objc2-foundation", 4640 - "objc2-quartz-core", 4641 - ] 4642 - 4643 - [[package]] 4644 - name = "objc_exception" 4645 - version = "0.1.2" 4646 - source = "registry+https://github.com/rust-lang/crates.io-index" 4647 - checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 4648 - dependencies = [ 4649 - "cc", 4650 - ] 4651 - 4652 - [[package]] 4653 - name = "objc_id" 4654 - version = "0.1.1" 4655 - source = "registry+https://github.com/rust-lang/crates.io-index" 4656 - checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 4657 - dependencies = [ 4658 - "objc", 4659 - ] 4660 - 4661 - [[package]] 4662 - name = "object" 4663 - version = "0.32.2" 4664 - source = "registry+https://github.com/rust-lang/crates.io-index" 4665 - checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" 4666 - dependencies = [ 4667 - "memchr", 4668 - ] 4669 - 4670 - [[package]] 4671 - name = "once_cell" 4672 - version = "1.21.3" 4673 - source = "registry+https://github.com/rust-lang/crates.io-index" 4674 - checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 4675 - 4676 - [[package]] 4677 - name = "oo7" 4678 - version = "0.5.0" 4679 - source = "registry+https://github.com/rust-lang/crates.io-index" 4680 - checksum = "e3299dd401feaf1d45afd8fd1c0586f10fcfb22f244bb9afa942cec73503b89d" 4681 - dependencies = [ 4682 - "aes", 4683 - "ashpd 0.12.0", 4684 - "async-fs", 4685 - "async-io", 4686 - "async-lock", 4687 - "blocking", 4688 - "cbc", 4689 - "cipher", 4690 - "digest", 4691 - "endi", 4692 - "futures-lite 2.6.1", 4693 - "futures-util", 4694 - "getrandom 0.3.4", 4695 - "hkdf", 4696 - "hmac", 4697 - "md-5", 4698 - "num", 4699 - "num-bigint-dig", 4700 - "pbkdf2", 4701 - "rand 0.9.2", 4702 - "serde", 4703 - "sha2", 4704 - "subtle", 4705 - "zbus", 4706 - "zbus_macros", 4707 - "zeroize", 4708 - "zvariant", 4709 - ] 4710 - 4711 - [[package]] 4712 - name = "open" 4713 - version = "5.3.3" 4714 - source = "registry+https://github.com/rust-lang/crates.io-index" 4715 - checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc" 4716 - dependencies = [ 4717 - "is-wsl", 4718 - "libc", 4719 - "pathdiff", 4720 - ] 4721 - 4722 - [[package]] 4723 - name = "openssl-probe" 4724 - version = "0.1.6" 4725 - source = "registry+https://github.com/rust-lang/crates.io-index" 4726 - checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 4727 - 4728 - [[package]] 4729 - name = "option-ext" 4730 - version = "0.2.0" 4731 - source = "registry+https://github.com/rust-lang/crates.io-index" 4732 - checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 4733 - 4734 - [[package]] 4735 - name = "ordered-multimap" 4736 - version = "0.7.3" 4737 - source = "registry+https://github.com/rust-lang/crates.io-index" 4738 - checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" 4739 - dependencies = [ 4740 - "dlv-list", 4741 - "hashbrown 0.14.5", 4742 - ] 4743 - 4744 - [[package]] 4745 - name = "ordered-stream" 4746 - version = "0.2.0" 4747 - source = "registry+https://github.com/rust-lang/crates.io-index" 4748 - checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 4749 - dependencies = [ 4750 - "futures-core", 4751 - "pin-project-lite", 4752 - ] 4753 - 4754 - [[package]] 4755 - name = "parking" 4756 - version = "2.2.1" 4757 - source = "registry+https://github.com/rust-lang/crates.io-index" 4758 - checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 4759 - 4760 - [[package]] 4761 - name = "parking_lot" 4762 - version = "0.12.5" 4763 - source = "registry+https://github.com/rust-lang/crates.io-index" 4764 - checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 4765 - dependencies = [ 4766 - "lock_api", 4767 - "parking_lot_core", 4768 - ] 4769 - 4770 - [[package]] 4771 - name = "parking_lot_core" 4772 - version = "0.9.12" 4773 - source = "registry+https://github.com/rust-lang/crates.io-index" 4774 - checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 4775 - dependencies = [ 4776 - "cfg-if", 4777 - "libc", 4778 - "redox_syscall 0.5.18", 4779 - "smallvec", 4780 - "windows-link 0.2.1", 4781 - ] 4782 - 4783 - [[package]] 4784 - name = "paste" 4785 - version = "1.0.15" 4786 - source = "registry+https://github.com/rust-lang/crates.io-index" 4787 - checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 4788 - 4789 - [[package]] 4790 - name = "pastey" 4791 - version = "0.1.1" 4792 - source = "registry+https://github.com/rust-lang/crates.io-index" 4793 - checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" 4794 - 4795 - [[package]] 4796 - name = "pathdiff" 4797 - version = "0.2.3" 4798 - source = "registry+https://github.com/rust-lang/crates.io-index" 4799 - checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 4800 - 4801 - [[package]] 4802 - name = "pathfinder_geometry" 4803 - version = "0.5.1" 4804 - source = "registry+https://github.com/rust-lang/crates.io-index" 4805 - checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3" 4806 - dependencies = [ 4807 - "log", 4808 - "pathfinder_simd", 4809 - ] 4810 - 4811 - [[package]] 4812 - name = "pathfinder_simd" 4813 - version = "0.5.5" 4814 - source = "registry+https://github.com/rust-lang/crates.io-index" 4815 - checksum = "bf9027960355bf3afff9841918474a81a5f972ac6d226d518060bba758b5ad57" 4816 - dependencies = [ 4817 - "rustc_version", 4818 - ] 4819 - 4820 - [[package]] 4821 - name = "pbkdf2" 4822 - version = "0.12.2" 4823 - source = "registry+https://github.com/rust-lang/crates.io-index" 4824 - checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" 4825 - dependencies = [ 4826 - "digest", 4827 - "hmac", 4828 - ] 4829 - 4830 - [[package]] 4831 - name = "percent-encoding" 4832 - version = "2.3.2" 4833 - source = "registry+https://github.com/rust-lang/crates.io-index" 4834 - checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 4835 - 4836 - [[package]] 4837 - name = "pest" 4838 - version = "2.8.4" 4839 - source = "registry+https://github.com/rust-lang/crates.io-index" 4840 - checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" 4841 - dependencies = [ 4842 - "memchr", 4843 - "ucd-trie", 4844 - ] 4845 - 4846 - [[package]] 4847 - name = "pest_derive" 4848 - version = "2.8.4" 4849 - source = "registry+https://github.com/rust-lang/crates.io-index" 4850 - checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f" 4851 - dependencies = [ 4852 - "pest", 4853 - "pest_generator", 4854 - ] 4855 - 4856 - [[package]] 4857 - name = "pest_generator" 4858 - version = "2.8.4" 4859 - source = "registry+https://github.com/rust-lang/crates.io-index" 4860 - checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625" 4861 - dependencies = [ 4862 - "pest", 4863 - "pest_meta", 4864 - "proc-macro2", 4865 - "quote", 4866 - "syn 2.0.111", 4867 - ] 4868 - 4869 - [[package]] 4870 - name = "pest_meta" 4871 - version = "2.8.4" 4872 - source = "registry+https://github.com/rust-lang/crates.io-index" 4873 - checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82" 4874 - dependencies = [ 4875 - "pest", 4876 - "sha2", 4877 - ] 4878 - 4879 - [[package]] 4880 - name = "pico-args" 4881 - version = "0.5.0" 4882 - source = "registry+https://github.com/rust-lang/crates.io-index" 4883 - checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" 4884 - 4885 - [[package]] 4886 - name = "pin-project" 4887 - version = "1.1.10" 4888 - source = "registry+https://github.com/rust-lang/crates.io-index" 4889 - checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 4890 - dependencies = [ 4891 - "pin-project-internal", 4892 - ] 4893 - 4894 - [[package]] 4895 - name = "pin-project-internal" 4896 - version = "1.1.10" 4897 - source = "registry+https://github.com/rust-lang/crates.io-index" 4898 - checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 4899 - dependencies = [ 4900 - "proc-macro2", 4901 - "quote", 4902 - "syn 2.0.111", 4903 - ] 4904 - 4905 - [[package]] 4906 - name = "pin-project-lite" 4907 - version = "0.2.16" 4908 - source = "registry+https://github.com/rust-lang/crates.io-index" 4909 - checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 4910 - 4911 - [[package]] 4912 - name = "pin-utils" 4913 - version = "0.1.0" 4914 - source = "registry+https://github.com/rust-lang/crates.io-index" 4915 - checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 4916 - 4917 - [[package]] 4918 - name = "piper" 4919 - version = "0.2.4" 4920 - source = "registry+https://github.com/rust-lang/crates.io-index" 4921 - checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 4922 - dependencies = [ 4923 - "atomic-waker", 4924 - "fastrand 2.3.0", 4925 - "futures-io", 4926 - ] 4927 - 4928 - [[package]] 4929 - name = "pkg-config" 4930 - version = "0.3.32" 4931 - source = "registry+https://github.com/rust-lang/crates.io-index" 4932 - checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 4933 - 4934 - [[package]] 4935 - name = "png" 4936 - version = "0.17.16" 4937 - source = "registry+https://github.com/rust-lang/crates.io-index" 4938 - checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" 4939 - dependencies = [ 4940 - "bitflags 1.3.2", 4941 - "crc32fast", 4942 - "fdeflate", 4943 - "flate2", 4944 - "miniz_oxide", 4945 - ] 4946 - 4947 - [[package]] 4948 - name = "png" 4949 - version = "0.18.0" 4950 - source = "registry+https://github.com/rust-lang/crates.io-index" 4951 - checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" 4952 - dependencies = [ 4953 - "bitflags 2.10.0", 4954 - "crc32fast", 4955 - "fdeflate", 4956 - "flate2", 4957 - "miniz_oxide", 4958 - ] 4959 - 4960 - [[package]] 4961 - name = "polling" 4962 - version = "3.11.0" 4963 - source = "registry+https://github.com/rust-lang/crates.io-index" 4964 - checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" 4965 - dependencies = [ 4966 - "cfg-if", 4967 - "concurrent-queue", 4968 - "hermit-abi", 4969 - "pin-project-lite", 4970 - "rustix 1.1.2", 4971 - "windows-sys 0.61.2", 4972 - ] 4973 - 4974 - [[package]] 4975 - name = "pollster" 4976 - version = "0.2.5" 4977 - source = "registry+https://github.com/rust-lang/crates.io-index" 4978 - checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7" 4979 - 4980 - [[package]] 4981 - name = "pollster" 4982 - version = "0.4.0" 4983 - source = "registry+https://github.com/rust-lang/crates.io-index" 4984 - checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" 4985 - 4986 - [[package]] 4987 - name = "portable-atomic" 4988 - version = "1.11.1" 4989 - source = "registry+https://github.com/rust-lang/crates.io-index" 4990 - checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" 4991 - 4992 - [[package]] 4993 - name = "portable-atomic-util" 4994 - version = "0.2.4" 4995 - source = "registry+https://github.com/rust-lang/crates.io-index" 4996 - checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" 4997 - dependencies = [ 4998 - "portable-atomic", 4999 - ] 5000 - 5001 - [[package]] 5002 - name = "postage" 5003 - version = "0.5.0" 5004 - source = "registry+https://github.com/rust-lang/crates.io-index" 5005 - checksum = "af3fb618632874fb76937c2361a7f22afd393c982a2165595407edc75b06d3c1" 5006 - dependencies = [ 5007 - "atomic", 5008 - "crossbeam-queue", 5009 - "futures", 5010 - "log", 5011 - "parking_lot", 5012 - "pin-project", 5013 - "pollster 0.2.5", 5014 - "static_assertions", 5015 - "thiserror 1.0.69", 5016 - ] 5017 - 5018 - [[package]] 5019 - name = "potential_utf" 5020 - version = "0.1.4" 5021 - source = "registry+https://github.com/rust-lang/crates.io-index" 5022 - checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" 5023 - dependencies = [ 5024 - "zerovec", 5025 - ] 5026 - 5027 - [[package]] 5028 - name = "ppv-lite86" 5029 - version = "0.2.21" 5030 - source = "registry+https://github.com/rust-lang/crates.io-index" 5031 - checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 5032 - dependencies = [ 5033 - "zerocopy", 5034 - ] 5035 - 5036 - [[package]] 5037 - name = "prettyplease" 5038 - version = "0.2.37" 5039 - source = "registry+https://github.com/rust-lang/crates.io-index" 5040 - checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 5041 - dependencies = [ 5042 - "proc-macro2", 5043 - "syn 2.0.111", 5044 - ] 5045 - 5046 - [[package]] 5047 - name = "proc-macro-crate" 5048 - version = "3.4.0" 5049 - source = "registry+https://github.com/rust-lang/crates.io-index" 5050 - checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" 5051 - dependencies = [ 5052 - "toml_edit 0.23.9", 5053 - ] 5054 - 5055 - [[package]] 5056 - name = "proc-macro-error-attr2" 5057 - version = "2.0.0" 5058 - source = "registry+https://github.com/rust-lang/crates.io-index" 5059 - checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" 5060 - dependencies = [ 5061 - "proc-macro2", 5062 - "quote", 5063 - ] 5064 - 5065 - [[package]] 5066 - name = "proc-macro-error2" 5067 - version = "2.0.1" 5068 - source = "registry+https://github.com/rust-lang/crates.io-index" 5069 - checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" 5070 - dependencies = [ 5071 - "proc-macro-error-attr2", 5072 - "proc-macro2", 5073 - "quote", 5074 - "syn 2.0.111", 5075 - ] 5076 - 5077 - [[package]] 5078 - name = "proc-macro2" 5079 - version = "1.0.103" 5080 - source = "registry+https://github.com/rust-lang/crates.io-index" 5081 - checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" 5082 - dependencies = [ 5083 - "unicode-ident", 5084 - ] 5085 - 5086 - [[package]] 5087 - name = "prodash" 5088 - version = "30.0.1" 5089 - source = "registry+https://github.com/rust-lang/crates.io-index" 5090 - checksum = "5a6efc566849d3d9d737c5cb06cc50e48950ebe3d3f9d70631490fff3a07b139" 5091 - dependencies = [ 5092 - "parking_lot", 5093 - ] 5094 - 5095 - [[package]] 5096 - name = "profiling" 5097 - version = "1.0.17" 5098 - source = "registry+https://github.com/rust-lang/crates.io-index" 5099 - checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" 5100 - dependencies = [ 5101 - "profiling-procmacros", 5102 - ] 5103 - 5104 - [[package]] 5105 - name = "profiling-procmacros" 5106 - version = "1.0.17" 5107 - source = "registry+https://github.com/rust-lang/crates.io-index" 5108 - checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" 5109 - dependencies = [ 5110 - "quote", 5111 - "syn 2.0.111", 5112 - ] 5113 - 5114 - [[package]] 5115 - name = "prost" 5116 - version = "0.14.1" 5117 - source = "registry+https://github.com/rust-lang/crates.io-index" 5118 - checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" 5119 - dependencies = [ 5120 - "bytes", 5121 - "prost-derive", 5122 - ] 5123 - 5124 - [[package]] 5125 - name = "prost-derive" 5126 - version = "0.14.1" 5127 - source = "registry+https://github.com/rust-lang/crates.io-index" 5128 - checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" 5129 - dependencies = [ 5130 - "anyhow", 5131 - "itertools 0.14.0", 5132 - "proc-macro2", 5133 - "quote", 5134 - "syn 2.0.111", 5135 - ] 5136 - 5137 - [[package]] 5138 - name = "psm" 5139 - version = "0.1.28" 5140 - source = "registry+https://github.com/rust-lang/crates.io-index" 5141 - checksum = "d11f2fedc3b7dafdc2851bc52f277377c5473d378859be234bc7ebb593144d01" 5142 - dependencies = [ 5143 - "ar_archive_writer", 5144 - "cc", 5145 - ] 5146 - 5147 - [[package]] 5148 - name = "pxfm" 5149 - version = "0.1.27" 5150 - source = "registry+https://github.com/rust-lang/crates.io-index" 5151 - checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" 5152 - dependencies = [ 5153 - "num-traits", 5154 - ] 5155 - 5156 - [[package]] 5157 - name = "qoi" 5158 - version = "0.4.1" 5159 - source = "registry+https://github.com/rust-lang/crates.io-index" 5160 - checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" 5161 - dependencies = [ 5162 - "bytemuck", 5163 - ] 5164 - 5165 - [[package]] 5166 - name = "quick-error" 5167 - version = "2.0.1" 5168 - source = "registry+https://github.com/rust-lang/crates.io-index" 5169 - checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" 5170 - 5171 - [[package]] 5172 - name = "quick-xml" 5173 - version = "0.30.0" 5174 - source = "registry+https://github.com/rust-lang/crates.io-index" 5175 - checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" 5176 - dependencies = [ 5177 - "memchr", 5178 - ] 5179 - 5180 - [[package]] 5181 - name = "quick-xml" 5182 - version = "0.37.5" 5183 - source = "registry+https://github.com/rust-lang/crates.io-index" 5184 - checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" 5185 - dependencies = [ 5186 - "memchr", 5187 - ] 5188 - 5189 - [[package]] 5190 - name = "quinn" 5191 - version = "0.11.9" 5192 - source = "registry+https://github.com/rust-lang/crates.io-index" 5193 - checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" 5194 - dependencies = [ 5195 - "bytes", 5196 - "cfg_aliases", 5197 - "pin-project-lite", 5198 - "quinn-proto", 5199 - "quinn-udp", 5200 - "rustc-hash 2.1.1", 5201 - "rustls", 5202 - "socket2", 5203 - "thiserror 2.0.17", 5204 - "tokio", 5205 - "tracing", 5206 - "web-time", 5207 - ] 5208 - 5209 - [[package]] 5210 - name = "quinn-proto" 5211 - version = "0.11.13" 5212 - source = "registry+https://github.com/rust-lang/crates.io-index" 5213 - checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" 5214 - dependencies = [ 5215 - "bytes", 5216 - "getrandom 0.3.4", 5217 - "lru-slab", 5218 - "rand 0.9.2", 5219 - "ring", 5220 - "rustc-hash 2.1.1", 5221 - "rustls", 5222 - "rustls-pki-types", 5223 - "slab", 5224 - "thiserror 2.0.17", 5225 - "tinyvec", 5226 - "tracing", 5227 - "web-time", 5228 - ] 5229 - 5230 - [[package]] 5231 - name = "quinn-udp" 5232 - version = "0.5.14" 5233 - source = "registry+https://github.com/rust-lang/crates.io-index" 5234 - checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" 5235 - dependencies = [ 5236 - "cfg_aliases", 5237 - "libc", 5238 - "once_cell", 5239 - "socket2", 5240 - "tracing", 5241 - "windows-sys 0.60.2", 5242 - ] 5243 - 5244 - [[package]] 5245 - name = "quote" 5246 - version = "1.0.42" 5247 - source = "registry+https://github.com/rust-lang/crates.io-index" 5248 - checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" 5249 - dependencies = [ 5250 - "proc-macro2", 5251 - ] 5252 - 5253 - [[package]] 5254 - name = "r-efi" 5255 - version = "5.3.0" 5256 - source = "registry+https://github.com/rust-lang/crates.io-index" 5257 - checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 5258 - 5259 - [[package]] 5260 - name = "rand" 5261 - version = "0.8.5" 5262 - source = "registry+https://github.com/rust-lang/crates.io-index" 5263 - checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 5264 - dependencies = [ 5265 - "libc", 5266 - "rand_chacha 0.3.1", 5267 - "rand_core 0.6.4", 5268 - ] 5269 - 5270 - [[package]] 5271 - name = "rand" 5272 - version = "0.9.2" 5273 - source = "registry+https://github.com/rust-lang/crates.io-index" 5274 - checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" 5275 - dependencies = [ 5276 - "rand_chacha 0.9.0", 5277 - "rand_core 0.9.3", 5278 - ] 5279 - 5280 - [[package]] 5281 - name = "rand_chacha" 5282 - version = "0.3.1" 5283 - source = "registry+https://github.com/rust-lang/crates.io-index" 5284 - checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 5285 - dependencies = [ 5286 - "ppv-lite86", 5287 - "rand_core 0.6.4", 5288 - ] 5289 - 5290 - [[package]] 5291 - name = "rand_chacha" 5292 - version = "0.9.0" 5293 - source = "registry+https://github.com/rust-lang/crates.io-index" 5294 - checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 5295 - dependencies = [ 5296 - "ppv-lite86", 5297 - "rand_core 0.9.3", 5298 - ] 5299 - 5300 - [[package]] 5301 - name = "rand_core" 5302 - version = "0.6.4" 5303 - source = "registry+https://github.com/rust-lang/crates.io-index" 5304 - checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 5305 - dependencies = [ 5306 - "getrandom 0.2.16", 5307 - ] 5308 - 5309 - [[package]] 5310 - name = "rand_core" 5311 - version = "0.9.3" 5312 - source = "registry+https://github.com/rust-lang/crates.io-index" 5313 - checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 5314 - dependencies = [ 5315 - "getrandom 0.3.4", 5316 - ] 5317 - 5318 - [[package]] 5319 - name = "rangemap" 5320 - version = "1.7.0" 5321 - source = "registry+https://github.com/rust-lang/crates.io-index" 5322 - checksum = "acbbbbea733ec66275512d0b9694f34102e7d5406fdbe2ad8d21b28dce92887c" 5323 - 5324 - [[package]] 5325 - name = "rav1e" 5326 - version = "0.8.1" 5327 - source = "registry+https://github.com/rust-lang/crates.io-index" 5328 - checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" 5329 - dependencies = [ 5330 - "aligned-vec", 5331 - "arbitrary", 5332 - "arg_enum_proc_macro", 5333 - "arrayvec", 5334 - "av-scenechange", 5335 - "av1-grain", 5336 - "bitstream-io", 5337 - "built", 5338 - "cfg-if", 5339 - "interpolate_name", 5340 - "itertools 0.14.0", 5341 - "libc", 5342 - "libfuzzer-sys", 5343 - "log", 5344 - "maybe-rayon", 5345 - "new_debug_unreachable", 5346 - "noop_proc_macro", 5347 - "num-derive", 5348 - "num-traits", 5349 - "paste", 5350 - "profiling", 5351 - "rand 0.9.2", 5352 - "rand_chacha 0.9.0", 5353 - "simd_helpers", 5354 - "thiserror 2.0.17", 5355 - "v_frame", 5356 - "wasm-bindgen", 5357 - ] 5358 - 5359 - [[package]] 5360 - name = "ravif" 5361 - version = "0.12.0" 5362 - source = "registry+https://github.com/rust-lang/crates.io-index" 5363 - checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285" 5364 - dependencies = [ 5365 - "avif-serialize", 5366 - "imgref", 5367 - "loop9", 5368 - "quick-error", 5369 - "rav1e", 5370 - "rayon", 5371 - "rgb", 5372 - ] 5373 - 5374 - [[package]] 5375 - name = "raw-window-handle" 5376 - version = "0.6.2" 5377 - source = "registry+https://github.com/rust-lang/crates.io-index" 5378 - checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 5379 - 5380 - [[package]] 5381 - name = "raw-window-metal" 5382 - version = "0.4.0" 5383 - source = "registry+https://github.com/rust-lang/crates.io-index" 5384 - checksum = "76e8caa82e31bb98fee12fa8f051c94a6aa36b07cddb03f0d4fc558988360ff1" 5385 - dependencies = [ 5386 - "cocoa 0.25.0", 5387 - "core-graphics 0.23.2", 5388 - "objc", 5389 - "raw-window-handle", 5390 - ] 5391 - 5392 - [[package]] 5393 - name = "rayon" 5394 - version = "1.11.0" 5395 - source = "registry+https://github.com/rust-lang/crates.io-index" 5396 - checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" 5397 - dependencies = [ 5398 - "either", 5399 - "rayon-core", 5400 - ] 5401 - 5402 - [[package]] 5403 - name = "rayon-core" 5404 - version = "1.13.0" 5405 - source = "registry+https://github.com/rust-lang/crates.io-index" 5406 - checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 5407 - dependencies = [ 5408 - "crossbeam-deque", 5409 - "crossbeam-utils", 5410 - ] 5411 - 5412 - [[package]] 5413 - name = "read-fonts" 5414 - version = "0.35.0" 5415 - source = "registry+https://github.com/rust-lang/crates.io-index" 5416 - checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" 5417 - dependencies = [ 5418 - "bytemuck", 5419 - "font-types", 5420 - ] 5421 - 5422 - [[package]] 5423 - name = "redox_syscall" 5424 - version = "0.2.16" 5425 - source = "registry+https://github.com/rust-lang/crates.io-index" 5426 - checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 5427 - dependencies = [ 5428 - "bitflags 1.3.2", 5429 - ] 5430 - 5431 - [[package]] 5432 - name = "redox_syscall" 5433 - version = "0.5.18" 5434 - source = "registry+https://github.com/rust-lang/crates.io-index" 5435 - checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 5436 - dependencies = [ 5437 - "bitflags 2.10.0", 5438 - ] 5439 - 5440 - [[package]] 5441 - name = "redox_users" 5442 - version = "0.4.6" 5443 - source = "registry+https://github.com/rust-lang/crates.io-index" 5444 - checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" 5445 - dependencies = [ 5446 - "getrandom 0.2.16", 5447 - "libredox", 5448 - "thiserror 1.0.69", 5449 - ] 5450 - 5451 - [[package]] 5452 - name = "ref-cast" 5453 - version = "1.0.25" 5454 - source = "registry+https://github.com/rust-lang/crates.io-index" 5455 - checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" 5456 - dependencies = [ 5457 - "ref-cast-impl", 5458 - ] 5459 - 5460 - [[package]] 5461 - name = "ref-cast-impl" 5462 - version = "1.0.25" 5463 - source = "registry+https://github.com/rust-lang/crates.io-index" 5464 - checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" 5465 - dependencies = [ 5466 - "proc-macro2", 5467 - "quote", 5468 - "syn 2.0.111", 5469 - ] 5470 - 5471 - [[package]] 5472 - name = "regex" 5473 - version = "1.12.2" 5474 - source = "registry+https://github.com/rust-lang/crates.io-index" 5475 - checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" 5476 - dependencies = [ 5477 - "aho-corasick", 5478 - "memchr", 5479 - "regex-automata", 5480 - "regex-syntax", 5481 - ] 5482 - 5483 - [[package]] 5484 - name = "regex-automata" 5485 - version = "0.4.13" 5486 - source = "registry+https://github.com/rust-lang/crates.io-index" 5487 - checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" 5488 - dependencies = [ 5489 - "aho-corasick", 5490 - "memchr", 5491 - "regex-syntax", 5492 - ] 5493 - 5494 - [[package]] 5495 - name = "regex-syntax" 5496 - version = "0.8.8" 5497 - source = "registry+https://github.com/rust-lang/crates.io-index" 5498 - checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" 5499 - 5500 - [[package]] 5501 - name = "resvg" 5502 - version = "0.45.1" 5503 - source = "registry+https://github.com/rust-lang/crates.io-index" 5504 - checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" 5505 - dependencies = [ 5506 - "log", 5507 - "pico-args", 5508 - "rgb", 5509 - "svgtypes", 5510 - "tiny-skia", 5511 - "usvg", 5512 - ] 5513 - 5514 - [[package]] 5515 - name = "rgb" 5516 - version = "0.8.52" 5517 - source = "registry+https://github.com/rust-lang/crates.io-index" 5518 - checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" 5519 - dependencies = [ 5520 - "bytemuck", 5521 - ] 5522 - 5523 - [[package]] 5524 - name = "ring" 5525 - version = "0.17.14" 5526 - source = "registry+https://github.com/rust-lang/crates.io-index" 5527 - checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 5528 - dependencies = [ 5529 - "cc", 5530 - "cfg-if", 5531 - "getrandom 0.2.16", 5532 - "libc", 5533 - "untrusted", 5534 - "windows-sys 0.52.0", 5535 - ] 5536 - 5537 - [[package]] 5538 - name = "ron" 5539 - version = "0.12.0" 5540 - source = "registry+https://github.com/rust-lang/crates.io-index" 5541 - checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" 5542 - dependencies = [ 5543 - "bitflags 2.10.0", 5544 - "once_cell", 5545 - "serde", 5546 - "serde_derive", 5547 - "typeid", 5548 - "unicode-ident", 5549 - ] 5550 - 5551 - [[package]] 5552 - name = "roxmltree" 5553 - version = "0.20.0" 5554 - source = "registry+https://github.com/rust-lang/crates.io-index" 5555 - checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" 5556 - 5557 - [[package]] 5558 - name = "rust-embed" 5559 - version = "8.9.0" 5560 - source = "registry+https://github.com/rust-lang/crates.io-index" 5561 - checksum = "947d7f3fad52b283d261c4c99a084937e2fe492248cb9a68a8435a861b8798ca" 5562 - dependencies = [ 5563 - "rust-embed-impl", 5564 - "rust-embed-utils", 5565 - "walkdir", 5566 - ] 5567 - 5568 - [[package]] 5569 - name = "rust-embed-impl" 5570 - version = "8.9.0" 5571 - source = "registry+https://github.com/rust-lang/crates.io-index" 5572 - checksum = "5fa2c8c9e8711e10f9c4fd2d64317ef13feaab820a4c51541f1a8c8e2e851ab2" 5573 - dependencies = [ 5574 - "proc-macro2", 5575 - "quote", 5576 - "rust-embed-utils", 5577 - "syn 2.0.111", 5578 - "walkdir", 5579 - ] 5580 - 5581 - [[package]] 5582 - name = "rust-embed-utils" 5583 - version = "8.9.0" 5584 - source = "registry+https://github.com/rust-lang/crates.io-index" 5585 - checksum = "60b161f275cb337fe0a44d924a5f4df0ed69c2c39519858f931ce61c779d3475" 5586 - dependencies = [ 5587 - "globset", 5588 - "sha2", 5589 - "walkdir", 5590 - ] 5591 - 5592 - [[package]] 5593 - name = "rust-ini" 5594 - version = "0.21.3" 5595 - source = "registry+https://github.com/rust-lang/crates.io-index" 5596 - checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7" 5597 - dependencies = [ 5598 - "cfg-if", 5599 - "ordered-multimap", 5600 - ] 5601 - 5602 - [[package]] 5603 - name = "rustc-hash" 5604 - version = "1.1.0" 5605 - source = "registry+https://github.com/rust-lang/crates.io-index" 5606 - checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 5607 - 5608 - [[package]] 5609 - name = "rustc-hash" 5610 - version = "2.1.1" 5611 - source = "registry+https://github.com/rust-lang/crates.io-index" 5612 - checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 5613 - 5614 - [[package]] 5615 - name = "rustc_version" 5616 - version = "0.4.1" 5617 - source = "registry+https://github.com/rust-lang/crates.io-index" 5618 - checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 5619 - dependencies = [ 5620 - "semver", 5621 - ] 5622 - 5623 - [[package]] 5624 - name = "rustix" 5625 - version = "0.38.44" 5626 - source = "registry+https://github.com/rust-lang/crates.io-index" 5627 - checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" 5628 - dependencies = [ 5629 - "bitflags 2.10.0", 5630 - "errno", 5631 - "libc", 5632 - "linux-raw-sys 0.4.15", 5633 - "windows-sys 0.59.0", 5634 - ] 5635 - 5636 - [[package]] 5637 - name = "rustix" 5638 - version = "1.1.2" 5639 - source = "registry+https://github.com/rust-lang/crates.io-index" 5640 - checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" 5641 - dependencies = [ 5642 - "bitflags 2.10.0", 5643 - "errno", 5644 - "libc", 5645 - "linux-raw-sys 0.11.0", 5646 - "windows-sys 0.61.2", 5647 - ] 5648 - 5649 - [[package]] 5650 - name = "rustls" 5651 - version = "0.23.35" 5652 - source = "registry+https://github.com/rust-lang/crates.io-index" 5653 - checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" 5654 - dependencies = [ 5655 - "once_cell", 5656 - "ring", 5657 - "rustls-pki-types", 5658 - "rustls-webpki", 5659 - "subtle", 5660 - "zeroize", 5661 - ] 5662 - 5663 - [[package]] 5664 - name = "rustls-native-certs" 5665 - version = "0.8.2" 5666 - source = "registry+https://github.com/rust-lang/crates.io-index" 5667 - checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" 5668 - dependencies = [ 5669 - "openssl-probe", 5670 - "rustls-pki-types", 5671 - "schannel", 5672 - "security-framework", 5673 - ] 5674 - 5675 - [[package]] 5676 - name = "rustls-pemfile" 5677 - version = "2.2.0" 5678 - source = "registry+https://github.com/rust-lang/crates.io-index" 5679 - checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" 5680 - dependencies = [ 5681 - "rustls-pki-types", 5682 - ] 5683 - 5684 - [[package]] 5685 - name = "rustls-pki-types" 5686 - version = "1.13.1" 5687 - source = "registry+https://github.com/rust-lang/crates.io-index" 5688 - checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" 5689 - dependencies = [ 5690 - "web-time", 5691 - "zeroize", 5692 - ] 5693 - 5694 - [[package]] 5695 - name = "rustls-webpki" 5696 - version = "0.103.8" 5697 - source = "registry+https://github.com/rust-lang/crates.io-index" 5698 - checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" 5699 - dependencies = [ 5700 - "ring", 5701 - "rustls-pki-types", 5702 - "untrusted", 5703 - ] 5704 - 5705 - [[package]] 5706 - name = "rustversion" 5707 - version = "1.0.22" 5708 - source = "registry+https://github.com/rust-lang/crates.io-index" 5709 - checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 5710 - 5711 - [[package]] 5712 - name = "rustybuzz" 5713 - version = "0.14.1" 5714 - source = "registry+https://github.com/rust-lang/crates.io-index" 5715 - checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" 5716 - dependencies = [ 5717 - "bitflags 2.10.0", 5718 - "bytemuck", 5719 - "libm", 5720 - "smallvec", 5721 - "ttf-parser 0.21.1", 5722 - "unicode-bidi-mirroring 0.2.0", 5723 - "unicode-ccc 0.2.0", 5724 - "unicode-properties", 5725 - "unicode-script", 5726 - ] 5727 - 5728 - [[package]] 5729 - name = "rustybuzz" 5730 - version = "0.20.1" 5731 - source = "registry+https://github.com/rust-lang/crates.io-index" 5732 - checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" 5733 - dependencies = [ 5734 - "bitflags 2.10.0", 5735 - "bytemuck", 5736 - "core_maths", 5737 - "log", 5738 - "smallvec", 5739 - "ttf-parser 0.25.1", 5740 - "unicode-bidi-mirroring 0.4.0", 5741 - "unicode-ccc 0.4.0", 5742 - "unicode-properties", 5743 - "unicode-script", 5744 - ] 5745 - 5746 - [[package]] 5747 - name = "ryu" 5748 - version = "1.0.20" 5749 - source = "registry+https://github.com/rust-lang/crates.io-index" 5750 - checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 5751 - 5752 - [[package]] 5753 - name = "same-file" 5754 - version = "1.0.6" 5755 - source = "registry+https://github.com/rust-lang/crates.io-index" 5756 - checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 5757 - dependencies = [ 5758 - "winapi-util", 5759 - ] 5760 - 5761 - [[package]] 5762 - name = "schannel" 5763 - version = "0.1.28" 5764 - source = "registry+https://github.com/rust-lang/crates.io-index" 5765 - checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" 5766 - dependencies = [ 5767 - "windows-sys 0.61.2", 5768 - ] 5769 - 5770 - [[package]] 5771 - name = "schemars" 5772 - version = "1.1.0" 5773 - source = "registry+https://github.com/rust-lang/crates.io-index" 5774 - checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" 5775 - dependencies = [ 5776 - "dyn-clone", 5777 - "indexmap", 5778 - "ref-cast", 5779 - "schemars_derive", 5780 - "serde", 5781 - "serde_json", 5782 - ] 5783 - 5784 - [[package]] 5785 - name = "schemars_derive" 5786 - version = "1.1.0" 5787 - source = "registry+https://github.com/rust-lang/crates.io-index" 5788 - checksum = "301858a4023d78debd2353c7426dc486001bddc91ae31a76fb1f55132f7e2633" 5789 - dependencies = [ 5790 - "proc-macro2", 5791 - "quote", 5792 - "serde_derive_internals", 5793 - "syn 2.0.111", 5794 - ] 5795 - 5796 - [[package]] 5797 - name = "scoped-tls" 5798 - version = "1.0.1" 5799 - source = "registry+https://github.com/rust-lang/crates.io-index" 5800 - checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 5801 - 5802 - [[package]] 5803 - name = "scopeguard" 5804 - version = "1.2.0" 5805 - source = "registry+https://github.com/rust-lang/crates.io-index" 5806 - checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 5807 - 5808 - [[package]] 5809 - name = "screencapturekit" 5810 - version = "0.2.8" 5811 - source = "registry+https://github.com/rust-lang/crates.io-index" 5812 - checksum = "1a5eeeb57ac94960cfe5ff4c402be6585ae4c8d29a2cf41b276048c2e849d64e" 5813 - dependencies = [ 5814 - "screencapturekit-sys", 5815 - ] 5816 - 5817 - [[package]] 5818 - name = "screencapturekit-sys" 5819 - version = "0.2.8" 5820 - source = "registry+https://github.com/rust-lang/crates.io-index" 5821 - checksum = "22411b57f7d49e7fe08025198813ee6fd65e1ee5eff4ebc7880c12c82bde4c60" 5822 - dependencies = [ 5823 - "block", 5824 - "dispatch", 5825 - "objc", 5826 - "objc-foundation", 5827 - "objc_id", 5828 - "once_cell", 5829 - ] 5830 - 5831 - [[package]] 5832 - name = "seahash" 5833 - version = "4.1.0" 5834 - source = "registry+https://github.com/rust-lang/crates.io-index" 5835 - checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" 5836 - 5837 - [[package]] 5838 - name = "security-framework" 5839 - version = "3.5.1" 5840 - source = "registry+https://github.com/rust-lang/crates.io-index" 5841 - checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" 5842 - dependencies = [ 5843 - "bitflags 2.10.0", 5844 - "core-foundation 0.10.0", 5845 - "core-foundation-sys", 5846 - "libc", 5847 - "security-framework-sys", 5848 - ] 5849 - 5850 - [[package]] 5851 - name = "security-framework-sys" 5852 - version = "2.15.0" 5853 - source = "registry+https://github.com/rust-lang/crates.io-index" 5854 - checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" 5855 - dependencies = [ 5856 - "core-foundation-sys", 5857 - "libc", 5858 - ] 5859 - 5860 - [[package]] 5861 - name = "self_cell" 5862 - version = "1.2.1" 5863 - source = "registry+https://github.com/rust-lang/crates.io-index" 5864 - checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" 5865 - 5866 - [[package]] 5867 - name = "semver" 5868 - version = "1.0.27" 5869 - source = "registry+https://github.com/rust-lang/crates.io-index" 5870 - checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" 5871 - 5872 - [[package]] 5873 - name = "serde" 5874 - version = "1.0.228" 5875 - source = "registry+https://github.com/rust-lang/crates.io-index" 5876 - checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 5877 - dependencies = [ 5878 - "serde_core", 5879 - "serde_derive", 5880 - ] 5881 - 5882 - [[package]] 5883 - name = "serde-untagged" 5884 - version = "0.1.9" 5885 - source = "registry+https://github.com/rust-lang/crates.io-index" 5886 - checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" 5887 - dependencies = [ 5888 - "erased-serde", 5889 - "serde", 5890 - "serde_core", 5891 - "typeid", 5892 - ] 5893 - 5894 - [[package]] 5895 - name = "serde_core" 5896 - version = "1.0.228" 5897 - source = "registry+https://github.com/rust-lang/crates.io-index" 5898 - checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 5899 - dependencies = [ 5900 - "serde_derive", 5901 - ] 5902 - 5903 - [[package]] 5904 - name = "serde_derive" 5905 - version = "1.0.228" 5906 - source = "registry+https://github.com/rust-lang/crates.io-index" 5907 - checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 5908 - dependencies = [ 5909 - "proc-macro2", 5910 - "quote", 5911 - "syn 2.0.111", 5912 - ] 5913 - 5914 - [[package]] 5915 - name = "serde_derive_internals" 5916 - version = "0.29.1" 5917 - source = "registry+https://github.com/rust-lang/crates.io-index" 5918 - checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" 5919 - dependencies = [ 5920 - "proc-macro2", 5921 - "quote", 5922 - "syn 2.0.111", 5923 - ] 5924 - 5925 - [[package]] 5926 - name = "serde_fmt" 5927 - version = "1.1.0" 5928 - source = "registry+https://github.com/rust-lang/crates.io-index" 5929 - checksum = "6e497af288b3b95d067a23a4f749f2861121ffcb2f6d8379310dcda040c345ed" 5930 - dependencies = [ 5931 - "serde_core", 5932 - ] 5933 - 5934 - [[package]] 5935 - name = "serde_json" 5936 - version = "1.0.145" 5937 - source = "registry+https://github.com/rust-lang/crates.io-index" 5938 - checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 5939 - dependencies = [ 5940 - "indexmap", 5941 - "itoa", 5942 - "memchr", 5943 - "ryu", 5944 - "serde", 5945 - "serde_core", 5946 - ] 5947 - 5948 - [[package]] 5949 - name = "serde_json_lenient" 5950 - version = "0.2.4" 5951 - source = "registry+https://github.com/rust-lang/crates.io-index" 5952 - checksum = "0e033097bf0d2b59a62b42c18ebbb797503839b26afdda2c4e1415cb6c813540" 5953 - dependencies = [ 5954 - "indexmap", 5955 - "itoa", 5956 - "memchr", 5957 - "ryu", 5958 - "serde", 5959 - ] 5960 - 5961 - [[package]] 5962 - name = "serde_repr" 5963 - version = "0.1.20" 5964 - source = "registry+https://github.com/rust-lang/crates.io-index" 5965 - checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 5966 - dependencies = [ 5967 - "proc-macro2", 5968 - "quote", 5969 - "syn 2.0.111", 5970 - ] 5971 - 5972 - [[package]] 5973 - name = "serde_spanned" 5974 - version = "0.6.9" 5975 - source = "registry+https://github.com/rust-lang/crates.io-index" 5976 - checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 5977 - dependencies = [ 5978 - "serde", 5979 - ] 5980 - 5981 - [[package]] 5982 - name = "serde_spanned" 5983 - version = "1.0.3" 5984 - source = "registry+https://github.com/rust-lang/crates.io-index" 5985 - checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" 5986 - dependencies = [ 5987 - "serde_core", 5988 - ] 5989 - 5990 - [[package]] 5991 - name = "serde_urlencoded" 5992 - version = "0.7.1" 5993 - source = "registry+https://github.com/rust-lang/crates.io-index" 5994 - checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 5995 - dependencies = [ 5996 - "form_urlencoded", 5997 - "itoa", 5998 - "ryu", 5999 - "serde", 6000 - ] 6001 - 6002 - [[package]] 6003 - name = "sha1" 6004 - version = "0.10.6" 6005 - source = "registry+https://github.com/rust-lang/crates.io-index" 6006 - checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 6007 - dependencies = [ 6008 - "cfg-if", 6009 - "cpufeatures", 6010 - "digest", 6011 - ] 6012 - 6013 - [[package]] 6014 - name = "sha1-checked" 6015 - version = "0.10.0" 6016 - source = "registry+https://github.com/rust-lang/crates.io-index" 6017 - checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" 6018 - dependencies = [ 6019 - "digest", 6020 - "sha1", 6021 - ] 6022 - 6023 - [[package]] 6024 - name = "sha1_smol" 6025 - version = "1.0.1" 6026 - source = "registry+https://github.com/rust-lang/crates.io-index" 6027 - checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" 6028 - 6029 - [[package]] 6030 - name = "sha2" 6031 - version = "0.10.9" 6032 - source = "registry+https://github.com/rust-lang/crates.io-index" 6033 - checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 6034 - dependencies = [ 6035 - "cfg-if", 6036 - "cpufeatures", 6037 - "digest", 6038 - ] 6039 - 6040 - [[package]] 6041 - name = "shell-words" 6042 - version = "1.1.1" 6043 - source = "registry+https://github.com/rust-lang/crates.io-index" 6044 - checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" 6045 - 6046 - [[package]] 6047 - name = "shlex" 6048 - version = "1.3.0" 6049 - source = "registry+https://github.com/rust-lang/crates.io-index" 6050 - checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 6051 - 6052 - [[package]] 6053 - name = "signal-hook-registry" 6054 - version = "1.4.7" 6055 - source = "registry+https://github.com/rust-lang/crates.io-index" 6056 - checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" 6057 - dependencies = [ 6058 - "libc", 6059 - ] 6060 - 6061 - [[package]] 6062 - name = "simd-adler32" 6063 - version = "0.3.8" 6064 - source = "registry+https://github.com/rust-lang/crates.io-index" 6065 - checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" 6066 - 6067 - [[package]] 6068 - name = "simd_helpers" 6069 - version = "0.1.0" 6070 - source = "registry+https://github.com/rust-lang/crates.io-index" 6071 - checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" 6072 - dependencies = [ 6073 - "quote", 6074 - ] 6075 - 6076 - [[package]] 6077 - name = "similar" 6078 - version = "2.7.0" 6079 - source = "registry+https://github.com/rust-lang/crates.io-index" 6080 - checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" 6081 - 6082 - [[package]] 6083 - name = "simplecss" 6084 - version = "0.2.2" 6085 - source = "registry+https://github.com/rust-lang/crates.io-index" 6086 - checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c" 6087 - dependencies = [ 6088 - "log", 6089 - ] 6090 - 6091 - [[package]] 6092 - name = "siphasher" 6093 - version = "1.0.1" 6094 - source = "registry+https://github.com/rust-lang/crates.io-index" 6095 - checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 6096 - 6097 - [[package]] 6098 - name = "skrifa" 6099 - version = "0.37.0" 6100 - source = "registry+https://github.com/rust-lang/crates.io-index" 6101 - checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" 6102 - dependencies = [ 6103 - "bytemuck", 6104 - "read-fonts", 6105 - ] 6106 - 6107 - [[package]] 6108 - name = "slab" 6109 - version = "0.4.11" 6110 - source = "registry+https://github.com/rust-lang/crates.io-index" 6111 - checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 6112 - 6113 - [[package]] 6114 - name = "slotmap" 6115 - version = "1.1.1" 6116 - source = "registry+https://github.com/rust-lang/crates.io-index" 6117 - checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" 6118 - dependencies = [ 6119 - "version_check", 6120 - ] 6121 - 6122 - [[package]] 6123 - name = "smallvec" 6124 - version = "1.15.1" 6125 - source = "registry+https://github.com/rust-lang/crates.io-index" 6126 - checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 6127 - dependencies = [ 6128 - "serde", 6129 - ] 6130 - 6131 - [[package]] 6132 - name = "smol" 6133 - version = "2.0.2" 6134 - source = "registry+https://github.com/rust-lang/crates.io-index" 6135 - checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" 6136 - dependencies = [ 6137 - "async-channel 2.5.0", 6138 - "async-executor", 6139 - "async-fs", 6140 - "async-io", 6141 - "async-lock", 6142 - "async-net", 6143 - "async-process", 6144 - "blocking", 6145 - "futures-lite 2.6.1", 6146 - ] 6147 - 6148 - [[package]] 6149 - name = "smol_str" 6150 - version = "0.2.2" 6151 - source = "registry+https://github.com/rust-lang/crates.io-index" 6152 - checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" 6153 - 6154 - [[package]] 6155 - name = "socket2" 6156 - version = "0.6.1" 6157 - source = "registry+https://github.com/rust-lang/crates.io-index" 6158 - checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" 6159 - dependencies = [ 6160 - "libc", 6161 - "windows-sys 0.60.2", 6162 - ] 6163 - 6164 - [[package]] 6165 - name = "spin" 6166 - version = "0.9.8" 6167 - source = "registry+https://github.com/rust-lang/crates.io-index" 6168 - checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 6169 - dependencies = [ 6170 - "lock_api", 6171 - ] 6172 - 6173 - [[package]] 6174 - name = "spirv" 6175 - version = "0.3.0+sdk-1.3.268.0" 6176 - source = "registry+https://github.com/rust-lang/crates.io-index" 6177 - checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 6178 - dependencies = [ 6179 - "bitflags 2.10.0", 6180 - ] 6181 - 6182 - [[package]] 6183 - name = "stable_deref_trait" 6184 - version = "1.2.1" 6185 - source = "registry+https://github.com/rust-lang/crates.io-index" 6186 - checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 6187 - 6188 - [[package]] 6189 - name = "stacker" 6190 - version = "0.1.22" 6191 - source = "registry+https://github.com/rust-lang/crates.io-index" 6192 - checksum = "e1f8b29fb42aafcea4edeeb6b2f2d7ecd0d969c48b4cf0d2e64aafc471dd6e59" 6193 - dependencies = [ 6194 - "cc", 6195 - "cfg-if", 6196 - "libc", 6197 - "psm", 6198 - "windows-sys 0.59.0", 6199 - ] 6200 - 6201 - [[package]] 6202 - name = "stacksafe" 6203 - version = "0.1.4" 6204 - source = "registry+https://github.com/rust-lang/crates.io-index" 6205 - checksum = "1d9c1172965d317e87ddb6d364a040d958b40a1db82b6ef97da26253a8b3d090" 6206 - dependencies = [ 6207 - "stacker", 6208 - "stacksafe-macro", 6209 - ] 6210 - 6211 - [[package]] 6212 - name = "stacksafe-macro" 6213 - version = "0.1.4" 6214 - source = "registry+https://github.com/rust-lang/crates.io-index" 6215 - checksum = "172175341049678163e979d9107ca3508046d4d2a7c6682bee46ac541b17db69" 6216 - dependencies = [ 6217 - "proc-macro-error2", 6218 - "quote", 6219 - "syn 2.0.111", 6220 - ] 6221 - 6222 - [[package]] 6223 - name = "static_assertions" 6224 - version = "1.1.0" 6225 - source = "registry+https://github.com/rust-lang/crates.io-index" 6226 - checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 6227 - 6228 - [[package]] 6229 - name = "streaming-iterator" 6230 - version = "0.1.9" 6231 - source = "registry+https://github.com/rust-lang/crates.io-index" 6232 - checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" 6233 - 6234 - [[package]] 6235 - name = "strict-num" 6236 - version = "0.1.1" 6237 - source = "registry+https://github.com/rust-lang/crates.io-index" 6238 - checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" 6239 - dependencies = [ 6240 - "float-cmp", 6241 - ] 6242 - 6243 - [[package]] 6244 - name = "strsim" 6245 - version = "0.11.1" 6246 - source = "registry+https://github.com/rust-lang/crates.io-index" 6247 - checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 6248 - 6249 - [[package]] 6250 - name = "strum" 6251 - version = "0.26.3" 6252 - source = "registry+https://github.com/rust-lang/crates.io-index" 6253 - checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" 6254 - dependencies = [ 6255 - "strum_macros 0.26.4", 6256 - ] 6257 - 6258 - [[package]] 6259 - name = "strum" 6260 - version = "0.27.2" 6261 - source = "registry+https://github.com/rust-lang/crates.io-index" 6262 - checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" 6263 - dependencies = [ 6264 - "strum_macros 0.27.2", 6265 - ] 6266 - 6267 - [[package]] 6268 - name = "strum_macros" 6269 - version = "0.26.4" 6270 - source = "registry+https://github.com/rust-lang/crates.io-index" 6271 - checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" 6272 - dependencies = [ 6273 - "heck 0.5.0", 6274 - "proc-macro2", 6275 - "quote", 6276 - "rustversion", 6277 - "syn 2.0.111", 6278 - ] 6279 - 6280 - [[package]] 6281 - name = "strum_macros" 6282 - version = "0.27.2" 6283 - source = "registry+https://github.com/rust-lang/crates.io-index" 6284 - checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" 6285 - dependencies = [ 6286 - "heck 0.5.0", 6287 - "proc-macro2", 6288 - "quote", 6289 - "syn 2.0.111", 6290 - ] 6291 - 6292 - [[package]] 6293 - name = "subtle" 6294 - version = "2.6.1" 6295 - source = "registry+https://github.com/rust-lang/crates.io-index" 6296 - checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 6297 - 6298 - [[package]] 6299 - name = "sval" 6300 - version = "2.16.0" 6301 - source = "registry+https://github.com/rust-lang/crates.io-index" 6302 - checksum = "502b8906c4736190684646827fbab1e954357dfe541013bbd7994d033d53a1ca" 6303 - 6304 - [[package]] 6305 - name = "sval_buffer" 6306 - version = "2.16.0" 6307 - source = "registry+https://github.com/rust-lang/crates.io-index" 6308 - checksum = "c4b854348b15b6c441bdd27ce9053569b016a0723eab2d015b1fd8e6abe4f708" 6309 - dependencies = [ 6310 - "sval", 6311 - "sval_ref", 6312 - ] 6313 - 6314 - [[package]] 6315 - name = "sval_dynamic" 6316 - version = "2.16.0" 6317 - source = "registry+https://github.com/rust-lang/crates.io-index" 6318 - checksum = "a0bd9e8b74410ddad37c6962587c5f9801a2caadba9e11f3f916ee3f31ae4a1f" 6319 - dependencies = [ 6320 - "sval", 6321 - ] 6322 - 6323 - [[package]] 6324 - name = "sval_fmt" 6325 - version = "2.16.0" 6326 - source = "registry+https://github.com/rust-lang/crates.io-index" 6327 - checksum = "6fe17b8deb33a9441280b4266c2d257e166bafbaea6e66b4b34ca139c91766d9" 6328 - dependencies = [ 6329 - "itoa", 6330 - "ryu", 6331 - "sval", 6332 - ] 6333 - 6334 - [[package]] 6335 - name = "sval_json" 6336 - version = "2.16.0" 6337 - source = "registry+https://github.com/rust-lang/crates.io-index" 6338 - checksum = "854addb048a5bafb1f496c98e0ab5b9b581c3843f03ca07c034ae110d3b7c623" 6339 - dependencies = [ 6340 - "itoa", 6341 - "ryu", 6342 - "sval", 6343 - ] 6344 - 6345 - [[package]] 6346 - name = "sval_nested" 6347 - version = "2.16.0" 6348 - source = "registry+https://github.com/rust-lang/crates.io-index" 6349 - checksum = "96cf068f482108ff44ae8013477cb047a1665d5f1a635ad7cf79582c1845dce9" 6350 - dependencies = [ 6351 - "sval", 6352 - "sval_buffer", 6353 - "sval_ref", 6354 - ] 6355 - 6356 - [[package]] 6357 - name = "sval_ref" 6358 - version = "2.16.0" 6359 - source = "registry+https://github.com/rust-lang/crates.io-index" 6360 - checksum = "ed02126365ffe5ab8faa0abd9be54fbe68d03d607cd623725b0a71541f8aaa6f" 6361 - dependencies = [ 6362 - "sval", 6363 - ] 6364 - 6365 - [[package]] 6366 - name = "sval_serde" 6367 - version = "2.16.0" 6368 - source = "registry+https://github.com/rust-lang/crates.io-index" 6369 - checksum = "a263383c6aa2076c4ef6011d3bae1b356edf6ea2613e3d8e8ebaa7b57dd707d5" 6370 - dependencies = [ 6371 - "serde_core", 6372 - "sval", 6373 - "sval_nested", 6374 - ] 6375 - 6376 - [[package]] 6377 - name = "svg_fmt" 6378 - version = "0.4.5" 6379 - source = "registry+https://github.com/rust-lang/crates.io-index" 6380 - checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" 6381 - 6382 - [[package]] 6383 - name = "svgtypes" 6384 - version = "0.15.3" 6385 - source = "registry+https://github.com/rust-lang/crates.io-index" 6386 - checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" 6387 - dependencies = [ 6388 - "kurbo", 6389 - "siphasher", 6390 - ] 6391 - 6392 - [[package]] 6393 - name = "swash" 6394 - version = "0.2.6" 6395 - source = "registry+https://github.com/rust-lang/crates.io-index" 6396 - checksum = "47846491253e976bdd07d0f9cc24b7daf24720d11309302ccbbc6e6b6e53550a" 6397 - dependencies = [ 6398 - "skrifa", 6399 - "yazi", 6400 - "zeno", 6401 - ] 6402 - 6403 - [[package]] 6404 - name = "syn" 6405 - version = "1.0.109" 6406 - source = "registry+https://github.com/rust-lang/crates.io-index" 6407 - checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 6408 - dependencies = [ 6409 - "proc-macro2", 6410 - "quote", 6411 - "unicode-ident", 6412 - ] 6413 - 6414 - [[package]] 6415 - name = "syn" 6416 - version = "2.0.111" 6417 - source = "registry+https://github.com/rust-lang/crates.io-index" 6418 - checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" 6419 - dependencies = [ 6420 - "proc-macro2", 6421 - "quote", 6422 - "unicode-ident", 6423 - ] 6424 - 6425 - [[package]] 6426 - name = "sync_wrapper" 6427 - version = "1.0.2" 6428 - source = "registry+https://github.com/rust-lang/crates.io-index" 6429 - checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 6430 - dependencies = [ 6431 - "futures-core", 6432 - ] 6433 - 6434 - [[package]] 6435 - name = "synstructure" 6436 - version = "0.13.2" 6437 - source = "registry+https://github.com/rust-lang/crates.io-index" 6438 - checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 6439 - dependencies = [ 6440 - "proc-macro2", 6441 - "quote", 6442 - "syn 2.0.111", 6443 - ] 6444 - 6445 - [[package]] 6446 - name = "sys-locale" 6447 - version = "0.3.2" 6448 - source = "registry+https://github.com/rust-lang/crates.io-index" 6449 - checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" 6450 - dependencies = [ 6451 - "libc", 6452 - ] 6453 - 6454 - [[package]] 6455 - name = "sysinfo" 6456 - version = "0.31.4" 6457 - source = "registry+https://github.com/rust-lang/crates.io-index" 6458 - checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" 6459 - dependencies = [ 6460 - "core-foundation-sys", 6461 - "libc", 6462 - "memchr", 6463 - "ntapi", 6464 - "rayon", 6465 - "windows 0.57.0", 6466 - ] 6467 - 6468 - [[package]] 6469 - name = "system-configuration" 6470 - version = "0.6.1" 6471 - source = "registry+https://github.com/rust-lang/crates.io-index" 6472 - checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 6473 - dependencies = [ 6474 - "bitflags 2.10.0", 6475 - "core-foundation 0.9.4", 6476 - "system-configuration-sys", 6477 - ] 6478 - 6479 - [[package]] 6480 - name = "system-configuration-sys" 6481 - version = "0.6.0" 6482 - source = "registry+https://github.com/rust-lang/crates.io-index" 6483 - checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 6484 - dependencies = [ 6485 - "core-foundation-sys", 6486 - "libc", 6487 - ] 6488 - 6489 - [[package]] 6490 - name = "taffy" 6491 - version = "0.9.0" 6492 - source = "registry+https://github.com/rust-lang/crates.io-index" 6493 - checksum = "a13e5d13f79d558b5d353a98072ca8ca0e99da429467804de959aa8c83c9a004" 6494 - dependencies = [ 6495 - "arrayvec", 6496 - "grid", 6497 - "serde", 6498 - "slotmap", 6499 - ] 6500 - 6501 - [[package]] 6502 - name = "take-until" 6503 - version = "0.2.0" 6504 - source = "registry+https://github.com/rust-lang/crates.io-index" 6505 - checksum = "8bdb6fa0dfa67b38c1e66b7041ba9dcf23b99d8121907cd31c807a332f7a0bbb" 6506 - 6507 - [[package]] 6508 - name = "tao-core-video-sys" 6509 - version = "0.2.0" 6510 - source = "registry+https://github.com/rust-lang/crates.io-index" 6511 - checksum = "271450eb289cb4d8d0720c6ce70c72c8c858c93dd61fc625881616752e6b98f6" 6512 - dependencies = [ 6513 - "cfg-if", 6514 - "core-foundation-sys", 6515 - "libc", 6516 - "objc", 6517 - ] 6518 - 6519 - [[package]] 6520 - name = "tatami" 6521 - version = "0.1.0" 6522 - dependencies = [ 6523 - "anyhow", 6524 - "config", 6525 - "futures", 6526 - "gpui", 6527 - "hex", 6528 - "hostname", 6529 - "jj-lib", 6530 - "notify", 6531 - "notify-debouncer-mini", 6532 - "pollster 0.4.0", 6533 - "similar", 6534 - "tokio", 6535 - "toml_edit 0.23.9", 6536 - "tree-sitter", 6537 - "tree-sitter-highlight", 6538 - "tree-sitter-json", 6539 - "tree-sitter-python", 6540 - "tree-sitter-rust", 6541 - "tree-sitter-typescript", 6542 - ] 6543 - 6544 - [[package]] 6545 - name = "tempfile" 6546 - version = "3.23.0" 6547 - source = "registry+https://github.com/rust-lang/crates.io-index" 6548 - checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" 6549 - dependencies = [ 6550 - "fastrand 2.3.0", 6551 - "getrandom 0.3.4", 6552 - "once_cell", 6553 - "rustix 1.1.2", 6554 - "windows-sys 0.61.2", 6555 - ] 6556 - 6557 - [[package]] 6558 - name = "tendril" 6559 - version = "0.4.3" 6560 - source = "registry+https://github.com/rust-lang/crates.io-index" 6561 - checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 6562 - dependencies = [ 6563 - "futf", 6564 - "mac", 6565 - "utf-8", 6566 - ] 6567 - 6568 - [[package]] 6569 - name = "termcolor" 6570 - version = "1.4.1" 6571 - source = "registry+https://github.com/rust-lang/crates.io-index" 6572 - checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 6573 - dependencies = [ 6574 - "winapi-util", 6575 - ] 6576 - 6577 - [[package]] 6578 - name = "thiserror" 6579 - version = "1.0.69" 6580 - source = "registry+https://github.com/rust-lang/crates.io-index" 6581 - checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 6582 - dependencies = [ 6583 - "thiserror-impl 1.0.69", 6584 - ] 6585 - 6586 - [[package]] 6587 - name = "thiserror" 6588 - version = "2.0.17" 6589 - source = "registry+https://github.com/rust-lang/crates.io-index" 6590 - checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" 6591 - dependencies = [ 6592 - "thiserror-impl 2.0.17", 6593 - ] 6594 - 6595 - [[package]] 6596 - name = "thiserror-impl" 6597 - version = "1.0.69" 6598 - source = "registry+https://github.com/rust-lang/crates.io-index" 6599 - checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 6600 - dependencies = [ 6601 - "proc-macro2", 6602 - "quote", 6603 - "syn 2.0.111", 6604 - ] 6605 - 6606 - [[package]] 6607 - name = "thiserror-impl" 6608 - version = "2.0.17" 6609 - source = "registry+https://github.com/rust-lang/crates.io-index" 6610 - checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" 6611 - dependencies = [ 6612 - "proc-macro2", 6613 - "quote", 6614 - "syn 2.0.111", 6615 - ] 6616 - 6617 - [[package]] 6618 - name = "tiff" 6619 - version = "0.10.3" 6620 - source = "registry+https://github.com/rust-lang/crates.io-index" 6621 - checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" 6622 - dependencies = [ 6623 - "fax", 6624 - "flate2", 6625 - "half", 6626 - "quick-error", 6627 - "weezl", 6628 - "zune-jpeg 0.4.21", 6629 - ] 6630 - 6631 - [[package]] 6632 - name = "tiny-keccak" 6633 - version = "2.0.2" 6634 - source = "registry+https://github.com/rust-lang/crates.io-index" 6635 - checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" 6636 - dependencies = [ 6637 - "crunchy", 6638 - ] 6639 - 6640 - [[package]] 6641 - name = "tiny-skia" 6642 - version = "0.11.4" 6643 - source = "registry+https://github.com/rust-lang/crates.io-index" 6644 - checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" 6645 - dependencies = [ 6646 - "arrayref", 6647 - "arrayvec", 6648 - "bytemuck", 6649 - "cfg-if", 6650 - "log", 6651 - "png 0.17.16", 6652 - "tiny-skia-path", 6653 - ] 6654 - 6655 - [[package]] 6656 - name = "tiny-skia-path" 6657 - version = "0.11.4" 6658 - source = "registry+https://github.com/rust-lang/crates.io-index" 6659 - checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" 6660 - dependencies = [ 6661 - "arrayref", 6662 - "bytemuck", 6663 - "strict-num", 6664 - ] 6665 - 6666 - [[package]] 6667 - name = "tinystr" 6668 - version = "0.8.2" 6669 - source = "registry+https://github.com/rust-lang/crates.io-index" 6670 - checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" 6671 - dependencies = [ 6672 - "displaydoc", 6673 - "zerovec", 6674 - ] 6675 - 6676 - [[package]] 6677 - name = "tinyvec" 6678 - version = "1.10.0" 6679 - source = "registry+https://github.com/rust-lang/crates.io-index" 6680 - checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" 6681 - dependencies = [ 6682 - "tinyvec_macros", 6683 - ] 6684 - 6685 - [[package]] 6686 - name = "tinyvec_macros" 6687 - version = "0.1.1" 6688 - source = "registry+https://github.com/rust-lang/crates.io-index" 6689 - checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 6690 - 6691 - [[package]] 6692 - name = "tokio" 6693 - version = "1.48.0" 6694 - source = "registry+https://github.com/rust-lang/crates.io-index" 6695 - checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" 6696 - dependencies = [ 6697 - "bytes", 6698 - "libc", 6699 - "mio", 6700 - "pin-project-lite", 6701 - "socket2", 6702 - "windows-sys 0.61.2", 6703 - ] 6704 - 6705 - [[package]] 6706 - name = "tokio-rustls" 6707 - version = "0.26.4" 6708 - source = "registry+https://github.com/rust-lang/crates.io-index" 6709 - checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 6710 - dependencies = [ 6711 - "rustls", 6712 - "tokio", 6713 - ] 6714 - 6715 - [[package]] 6716 - name = "tokio-socks" 6717 - version = "0.5.2" 6718 - source = "registry+https://github.com/rust-lang/crates.io-index" 6719 - checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" 6720 - dependencies = [ 6721 - "either", 6722 - "futures-util", 6723 - "thiserror 1.0.69", 6724 - "tokio", 6725 - ] 6726 - 6727 - [[package]] 6728 - name = "tokio-util" 6729 - version = "0.7.17" 6730 - source = "registry+https://github.com/rust-lang/crates.io-index" 6731 - checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" 6732 - dependencies = [ 6733 - "bytes", 6734 - "futures-core", 6735 - "futures-sink", 6736 - "pin-project-lite", 6737 - "tokio", 6738 - ] 6739 - 6740 - [[package]] 6741 - name = "toml" 6742 - version = "0.8.23" 6743 - source = "registry+https://github.com/rust-lang/crates.io-index" 6744 - checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" 6745 - dependencies = [ 6746 - "serde", 6747 - "serde_spanned 0.6.9", 6748 - "toml_datetime 0.6.11", 6749 - "toml_edit 0.22.27", 6750 - ] 6751 - 6752 - [[package]] 6753 - name = "toml" 6754 - version = "0.9.8" 6755 - source = "registry+https://github.com/rust-lang/crates.io-index" 6756 - checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" 6757 - dependencies = [ 6758 - "indexmap", 6759 - "serde_core", 6760 - "serde_spanned 1.0.3", 6761 - "toml_datetime 0.7.3", 6762 - "toml_parser", 6763 - "toml_writer", 6764 - "winnow", 6765 - ] 6766 - 6767 - [[package]] 6768 - name = "toml_datetime" 6769 - version = "0.6.11" 6770 - source = "registry+https://github.com/rust-lang/crates.io-index" 6771 - checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 6772 - dependencies = [ 6773 - "serde", 6774 - ] 6775 - 6776 - [[package]] 6777 - name = "toml_datetime" 6778 - version = "0.7.3" 6779 - source = "registry+https://github.com/rust-lang/crates.io-index" 6780 - checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" 6781 - dependencies = [ 6782 - "serde_core", 6783 - ] 6784 - 6785 - [[package]] 6786 - name = "toml_edit" 6787 - version = "0.22.27" 6788 - source = "registry+https://github.com/rust-lang/crates.io-index" 6789 - checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 6790 - dependencies = [ 6791 - "indexmap", 6792 - "serde", 6793 - "serde_spanned 0.6.9", 6794 - "toml_datetime 0.6.11", 6795 - "toml_write", 6796 - "winnow", 6797 - ] 6798 - 6799 - [[package]] 6800 - name = "toml_edit" 6801 - version = "0.23.9" 6802 - source = "registry+https://github.com/rust-lang/crates.io-index" 6803 - checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" 6804 - dependencies = [ 6805 - "indexmap", 6806 - "serde_core", 6807 - "serde_spanned 1.0.3", 6808 - "toml_datetime 0.7.3", 6809 - "toml_parser", 6810 - "toml_writer", 6811 - "winnow", 6812 - ] 6813 - 6814 - [[package]] 6815 - name = "toml_parser" 6816 - version = "1.0.4" 6817 - source = "registry+https://github.com/rust-lang/crates.io-index" 6818 - checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" 6819 - dependencies = [ 6820 - "winnow", 6821 - ] 6822 - 6823 - [[package]] 6824 - name = "toml_write" 6825 - version = "0.1.2" 6826 - source = "registry+https://github.com/rust-lang/crates.io-index" 6827 - checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" 6828 - 6829 - [[package]] 6830 - name = "toml_writer" 6831 - version = "1.0.4" 6832 - source = "registry+https://github.com/rust-lang/crates.io-index" 6833 - checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" 6834 - 6835 - [[package]] 6836 - name = "tower" 6837 - version = "0.5.2" 6838 - source = "registry+https://github.com/rust-lang/crates.io-index" 6839 - checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" 6840 - dependencies = [ 6841 - "futures-core", 6842 - "futures-util", 6843 - "pin-project-lite", 6844 - "sync_wrapper", 6845 - "tokio", 6846 - "tower-layer", 6847 - "tower-service", 6848 - ] 6849 - 6850 - [[package]] 6851 - name = "tower-layer" 6852 - version = "0.3.3" 6853 - source = "registry+https://github.com/rust-lang/crates.io-index" 6854 - checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 6855 - 6856 - [[package]] 6857 - name = "tower-service" 6858 - version = "0.3.3" 6859 - source = "registry+https://github.com/rust-lang/crates.io-index" 6860 - checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 6861 - 6862 - [[package]] 6863 - name = "tracing" 6864 - version = "0.1.43" 6865 - source = "registry+https://github.com/rust-lang/crates.io-index" 6866 - checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" 6867 - dependencies = [ 6868 - "pin-project-lite", 6869 - "tracing-attributes", 6870 - "tracing-core", 6871 - ] 6872 - 6873 - [[package]] 6874 - name = "tracing-attributes" 6875 - version = "0.1.31" 6876 - source = "registry+https://github.com/rust-lang/crates.io-index" 6877 - checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 6878 - dependencies = [ 6879 - "proc-macro2", 6880 - "quote", 6881 - "syn 2.0.111", 6882 - ] 6883 - 6884 - [[package]] 6885 - name = "tracing-core" 6886 - version = "0.1.35" 6887 - source = "registry+https://github.com/rust-lang/crates.io-index" 6888 - checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" 6889 - dependencies = [ 6890 - "once_cell", 6891 - ] 6892 - 6893 - [[package]] 6894 - name = "tree-sitter" 6895 - version = "0.26.3" 6896 - source = "registry+https://github.com/rust-lang/crates.io-index" 6897 - checksum = "974d205cc395652cfa8b37daa053fe56eebd429acf8dc055503fee648dae981e" 6898 - dependencies = [ 6899 - "cc", 6900 - "regex", 6901 - "regex-syntax", 6902 - "serde_json", 6903 - "streaming-iterator", 6904 - "tree-sitter-language", 6905 - ] 6906 - 6907 - [[package]] 6908 - name = "tree-sitter-highlight" 6909 - version = "0.26.3" 6910 - source = "registry+https://github.com/rust-lang/crates.io-index" 6911 - checksum = "bb0636662a03005d9289649e0b4a89ff37b75df5033e8d4a16398740ae6496d2" 6912 - dependencies = [ 6913 - "regex", 6914 - "streaming-iterator", 6915 - "thiserror 2.0.17", 6916 - "tree-sitter", 6917 - ] 6918 - 6919 - [[package]] 6920 - name = "tree-sitter-json" 6921 - version = "0.24.8" 6922 - source = "registry+https://github.com/rust-lang/crates.io-index" 6923 - checksum = "4d727acca406c0020cffc6cf35516764f36c8e3dc4408e5ebe2cb35a947ec471" 6924 - dependencies = [ 6925 - "cc", 6926 - "tree-sitter-language", 6927 - ] 6928 - 6929 - [[package]] 6930 - name = "tree-sitter-language" 6931 - version = "0.1.6" 6932 - source = "registry+https://github.com/rust-lang/crates.io-index" 6933 - checksum = "4ae62f7eae5eb549c71b76658648b72cc6111f2d87d24a1e31fa907f4943e3ce" 6934 - 6935 - [[package]] 6936 - name = "tree-sitter-python" 6937 - version = "0.25.0" 6938 - source = "registry+https://github.com/rust-lang/crates.io-index" 6939 - checksum = "6bf85fd39652e740bf60f46f4cda9492c3a9ad75880575bf14960f775cb74a1c" 6940 - dependencies = [ 6941 - "cc", 6942 - "tree-sitter-language", 6943 - ] 6944 - 6945 - [[package]] 6946 - name = "tree-sitter-rust" 6947 - version = "0.24.0" 6948 - source = "registry+https://github.com/rust-lang/crates.io-index" 6949 - checksum = "4b9b18034c684a2420722be8b2a91c9c44f2546b631c039edf575ccba8c61be1" 6950 - dependencies = [ 6951 - "cc", 6952 - "tree-sitter-language", 6953 - ] 6954 - 6955 - [[package]] 6956 - name = "tree-sitter-typescript" 6957 - version = "0.23.2" 6958 - source = "registry+https://github.com/rust-lang/crates.io-index" 6959 - checksum = "6c5f76ed8d947a75cc446d5fccd8b602ebf0cde64ccf2ffa434d873d7a575eff" 6960 - dependencies = [ 6961 - "cc", 6962 - "tree-sitter-language", 6963 - ] 6964 - 6965 - [[package]] 6966 - name = "try-lock" 6967 - version = "0.2.5" 6968 - source = "registry+https://github.com/rust-lang/crates.io-index" 6969 - checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 6970 - 6971 - [[package]] 6972 - name = "ttf-parser" 6973 - version = "0.20.0" 6974 - source = "registry+https://github.com/rust-lang/crates.io-index" 6975 - checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" 6976 - 6977 - [[package]] 6978 - name = "ttf-parser" 6979 - version = "0.21.1" 6980 - source = "registry+https://github.com/rust-lang/crates.io-index" 6981 - checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" 6982 - 6983 - [[package]] 6984 - name = "ttf-parser" 6985 - version = "0.25.1" 6986 - source = "registry+https://github.com/rust-lang/crates.io-index" 6987 - checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" 6988 - dependencies = [ 6989 - "core_maths", 6990 - ] 6991 - 6992 - [[package]] 6993 - name = "typeid" 6994 - version = "1.0.3" 6995 - source = "registry+https://github.com/rust-lang/crates.io-index" 6996 - checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" 6997 - 6998 - [[package]] 6999 - name = "typenum" 7000 - version = "1.19.0" 7001 - source = "registry+https://github.com/rust-lang/crates.io-index" 7002 - checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 7003 - 7004 - [[package]] 7005 - name = "ucd-trie" 7006 - version = "0.1.7" 7007 - source = "registry+https://github.com/rust-lang/crates.io-index" 7008 - checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" 7009 - 7010 - [[package]] 7011 - name = "uds_windows" 7012 - version = "1.1.0" 7013 - source = "registry+https://github.com/rust-lang/crates.io-index" 7014 - checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 7015 - dependencies = [ 7016 - "memoffset", 7017 - "tempfile", 7018 - "winapi", 7019 - ] 7020 - 7021 - [[package]] 7022 - name = "uluru" 7023 - version = "3.1.0" 7024 - source = "registry+https://github.com/rust-lang/crates.io-index" 7025 - checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da" 7026 - dependencies = [ 7027 - "arrayvec", 7028 - ] 7029 - 7030 - [[package]] 7031 - name = "unicase" 7032 - version = "2.8.1" 7033 - source = "registry+https://github.com/rust-lang/crates.io-index" 7034 - checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 7035 - 7036 - [[package]] 7037 - name = "unicode-bidi" 7038 - version = "0.3.18" 7039 - source = "registry+https://github.com/rust-lang/crates.io-index" 7040 - checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 7041 - 7042 - [[package]] 7043 - name = "unicode-bidi-mirroring" 7044 - version = "0.2.0" 7045 - source = "registry+https://github.com/rust-lang/crates.io-index" 7046 - checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" 7047 - 7048 - [[package]] 7049 - name = "unicode-bidi-mirroring" 7050 - version = "0.4.0" 7051 - source = "registry+https://github.com/rust-lang/crates.io-index" 7052 - checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe" 7053 - 7054 - [[package]] 7055 - name = "unicode-bom" 7056 - version = "2.0.3" 7057 - source = "registry+https://github.com/rust-lang/crates.io-index" 7058 - checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" 7059 - 7060 - [[package]] 7061 - name = "unicode-ccc" 7062 - version = "0.2.0" 7063 - source = "registry+https://github.com/rust-lang/crates.io-index" 7064 - checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" 7065 - 7066 - [[package]] 7067 - name = "unicode-ccc" 7068 - version = "0.4.0" 7069 - source = "registry+https://github.com/rust-lang/crates.io-index" 7070 - checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" 7071 - 7072 - [[package]] 7073 - name = "unicode-ident" 7074 - version = "1.0.22" 7075 - source = "registry+https://github.com/rust-lang/crates.io-index" 7076 - checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" 7077 - 7078 - [[package]] 7079 - name = "unicode-linebreak" 7080 - version = "0.1.5" 7081 - source = "registry+https://github.com/rust-lang/crates.io-index" 7082 - checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 7083 - 7084 - [[package]] 7085 - name = "unicode-normalization" 7086 - version = "0.1.25" 7087 - source = "registry+https://github.com/rust-lang/crates.io-index" 7088 - checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" 7089 - dependencies = [ 7090 - "tinyvec", 7091 - ] 7092 - 7093 - [[package]] 7094 - name = "unicode-properties" 7095 - version = "0.1.4" 7096 - source = "registry+https://github.com/rust-lang/crates.io-index" 7097 - checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" 7098 - 7099 - [[package]] 7100 - name = "unicode-script" 7101 - version = "0.5.8" 7102 - source = "registry+https://github.com/rust-lang/crates.io-index" 7103 - checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" 7104 - 7105 - [[package]] 7106 - name = "unicode-segmentation" 7107 - version = "1.12.0" 7108 - source = "registry+https://github.com/rust-lang/crates.io-index" 7109 - checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 7110 - 7111 - [[package]] 7112 - name = "unicode-vo" 7113 - version = "0.1.0" 7114 - source = "registry+https://github.com/rust-lang/crates.io-index" 7115 - checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" 7116 - 7117 - [[package]] 7118 - name = "unicode-width" 7119 - version = "0.2.2" 7120 - source = "registry+https://github.com/rust-lang/crates.io-index" 7121 - checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" 7122 - 7123 - [[package]] 7124 - name = "untrusted" 7125 - version = "0.9.0" 7126 - source = "registry+https://github.com/rust-lang/crates.io-index" 7127 - checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 7128 - 7129 - [[package]] 7130 - name = "url" 7131 - version = "2.5.7" 7132 - source = "registry+https://github.com/rust-lang/crates.io-index" 7133 - checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 7134 - dependencies = [ 7135 - "form_urlencoded", 7136 - "idna", 7137 - "percent-encoding", 7138 - "serde", 7139 - ] 7140 - 7141 - [[package]] 7142 - name = "usvg" 7143 - version = "0.45.1" 7144 - source = "registry+https://github.com/rust-lang/crates.io-index" 7145 - checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef" 7146 - dependencies = [ 7147 - "base64", 7148 - "data-url", 7149 - "flate2", 7150 - "fontdb 0.23.0", 7151 - "imagesize", 7152 - "kurbo", 7153 - "log", 7154 - "pico-args", 7155 - "roxmltree", 7156 - "rustybuzz 0.20.1", 7157 - "simplecss", 7158 - "siphasher", 7159 - "strict-num", 7160 - "svgtypes", 7161 - "tiny-skia-path", 7162 - "unicode-bidi", 7163 - "unicode-script", 7164 - "unicode-vo", 7165 - "xmlwriter", 7166 - ] 7167 - 7168 - [[package]] 7169 - name = "utf-8" 7170 - version = "0.7.6" 7171 - source = "registry+https://github.com/rust-lang/crates.io-index" 7172 - checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 7173 - 7174 - [[package]] 7175 - name = "utf8_iter" 7176 - version = "1.0.4" 7177 - source = "registry+https://github.com/rust-lang/crates.io-index" 7178 - checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 7179 - 7180 - [[package]] 7181 - name = "uuid" 7182 - version = "1.19.0" 7183 - source = "registry+https://github.com/rust-lang/crates.io-index" 7184 - checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" 7185 - dependencies = [ 7186 - "getrandom 0.3.4", 7187 - "js-sys", 7188 - "serde_core", 7189 - "sha1_smol", 7190 - "wasm-bindgen", 7191 - ] 7192 - 7193 - [[package]] 7194 - name = "v_frame" 7195 - version = "0.3.9" 7196 - source = "registry+https://github.com/rust-lang/crates.io-index" 7197 - checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" 7198 - dependencies = [ 7199 - "aligned-vec", 7200 - "num-traits", 7201 - "wasm-bindgen", 7202 - ] 7203 - 7204 - [[package]] 7205 - name = "value-bag" 7206 - version = "1.12.0" 7207 - source = "registry+https://github.com/rust-lang/crates.io-index" 7208 - checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" 7209 - dependencies = [ 7210 - "value-bag-serde1", 7211 - "value-bag-sval2", 7212 - ] 7213 - 7214 - [[package]] 7215 - name = "value-bag-serde1" 7216 - version = "1.12.0" 7217 - source = "registry+https://github.com/rust-lang/crates.io-index" 7218 - checksum = "16530907bfe2999a1773ca5900a65101e092c70f642f25cc23ca0c43573262c5" 7219 - dependencies = [ 7220 - "erased-serde", 7221 - "serde_core", 7222 - "serde_fmt", 7223 - ] 7224 - 7225 - [[package]] 7226 - name = "value-bag-sval2" 7227 - version = "1.12.0" 7228 - source = "registry+https://github.com/rust-lang/crates.io-index" 7229 - checksum = "d00ae130edd690eaa877e4f40605d534790d1cf1d651e7685bd6a144521b251f" 7230 - dependencies = [ 7231 - "sval", 7232 - "sval_buffer", 7233 - "sval_dynamic", 7234 - "sval_fmt", 7235 - "sval_json", 7236 - "sval_ref", 7237 - "sval_serde", 7238 - ] 7239 - 7240 - [[package]] 7241 - name = "version_check" 7242 - version = "0.9.5" 7243 - source = "registry+https://github.com/rust-lang/crates.io-index" 7244 - checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 7245 - 7246 - [[package]] 7247 - name = "vswhom" 7248 - version = "0.1.0" 7249 - source = "registry+https://github.com/rust-lang/crates.io-index" 7250 - checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" 7251 - dependencies = [ 7252 - "libc", 7253 - "vswhom-sys", 7254 - ] 7255 - 7256 - [[package]] 7257 - name = "vswhom-sys" 7258 - version = "0.1.3" 7259 - source = "registry+https://github.com/rust-lang/crates.io-index" 7260 - checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" 7261 - dependencies = [ 7262 - "cc", 7263 - "libc", 7264 - ] 7265 - 7266 - [[package]] 7267 - name = "waker-fn" 7268 - version = "1.2.0" 7269 - source = "registry+https://github.com/rust-lang/crates.io-index" 7270 - checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" 7271 - 7272 - [[package]] 7273 - name = "walkdir" 7274 - version = "2.5.0" 7275 - source = "registry+https://github.com/rust-lang/crates.io-index" 7276 - checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 7277 - dependencies = [ 7278 - "same-file", 7279 - "winapi-util", 7280 - ] 7281 - 7282 - [[package]] 7283 - name = "want" 7284 - version = "0.3.1" 7285 - source = "registry+https://github.com/rust-lang/crates.io-index" 7286 - checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 7287 - dependencies = [ 7288 - "try-lock", 7289 - ] 7290 - 7291 - [[package]] 7292 - name = "wasi" 7293 - version = "0.11.1+wasi-snapshot-preview1" 7294 - source = "registry+https://github.com/rust-lang/crates.io-index" 7295 - checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 7296 - 7297 - [[package]] 7298 - name = "wasip2" 7299 - version = "1.0.1+wasi-0.2.4" 7300 - source = "registry+https://github.com/rust-lang/crates.io-index" 7301 - checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" 7302 - dependencies = [ 7303 - "wit-bindgen", 7304 - ] 7305 - 7306 - [[package]] 7307 - name = "wasm-bindgen" 7308 - version = "0.2.106" 7309 - source = "registry+https://github.com/rust-lang/crates.io-index" 7310 - checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" 7311 - dependencies = [ 7312 - "cfg-if", 7313 - "once_cell", 7314 - "rustversion", 7315 - "wasm-bindgen-macro", 7316 - "wasm-bindgen-shared", 7317 - ] 7318 - 7319 - [[package]] 7320 - name = "wasm-bindgen-futures" 7321 - version = "0.4.56" 7322 - source = "registry+https://github.com/rust-lang/crates.io-index" 7323 - checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" 7324 - dependencies = [ 7325 - "cfg-if", 7326 - "js-sys", 7327 - "once_cell", 7328 - "wasm-bindgen", 7329 - "web-sys", 7330 - ] 7331 - 7332 - [[package]] 7333 - name = "wasm-bindgen-macro" 7334 - version = "0.2.106" 7335 - source = "registry+https://github.com/rust-lang/crates.io-index" 7336 - checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" 7337 - dependencies = [ 7338 - "quote", 7339 - "wasm-bindgen-macro-support", 7340 - ] 7341 - 7342 - [[package]] 7343 - name = "wasm-bindgen-macro-support" 7344 - version = "0.2.106" 7345 - source = "registry+https://github.com/rust-lang/crates.io-index" 7346 - checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" 7347 - dependencies = [ 7348 - "bumpalo", 7349 - "proc-macro2", 7350 - "quote", 7351 - "syn 2.0.111", 7352 - "wasm-bindgen-shared", 7353 - ] 7354 - 7355 - [[package]] 7356 - name = "wasm-bindgen-shared" 7357 - version = "0.2.106" 7358 - source = "registry+https://github.com/rust-lang/crates.io-index" 7359 - checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" 7360 - dependencies = [ 7361 - "unicode-ident", 7362 - ] 7363 - 7364 - [[package]] 7365 - name = "wasm-streams" 7366 - version = "0.4.2" 7367 - source = "registry+https://github.com/rust-lang/crates.io-index" 7368 - checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 7369 - dependencies = [ 7370 - "futures-util", 7371 - "js-sys", 7372 - "wasm-bindgen", 7373 - "wasm-bindgen-futures", 7374 - "web-sys", 7375 - ] 7376 - 7377 - [[package]] 7378 - name = "wayland-backend" 7379 - version = "0.3.11" 7380 - source = "registry+https://github.com/rust-lang/crates.io-index" 7381 - checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" 7382 - dependencies = [ 7383 - "cc", 7384 - "downcast-rs", 7385 - "rustix 1.1.2", 7386 - "scoped-tls", 7387 - "smallvec", 7388 - "wayland-sys", 7389 - ] 7390 - 7391 - [[package]] 7392 - name = "wayland-client" 7393 - version = "0.31.11" 7394 - source = "registry+https://github.com/rust-lang/crates.io-index" 7395 - checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" 7396 - dependencies = [ 7397 - "bitflags 2.10.0", 7398 - "rustix 1.1.2", 7399 - "wayland-backend", 7400 - "wayland-scanner", 7401 - ] 7402 - 7403 - [[package]] 7404 - name = "wayland-cursor" 7405 - version = "0.31.11" 7406 - source = "registry+https://github.com/rust-lang/crates.io-index" 7407 - checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" 7408 - dependencies = [ 7409 - "rustix 1.1.2", 7410 - "wayland-client", 7411 - "xcursor", 7412 - ] 7413 - 7414 - [[package]] 7415 - name = "wayland-protocols" 7416 - version = "0.31.2" 7417 - source = "registry+https://github.com/rust-lang/crates.io-index" 7418 - checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" 7419 - dependencies = [ 7420 - "bitflags 2.10.0", 7421 - "wayland-backend", 7422 - "wayland-client", 7423 - "wayland-scanner", 7424 - ] 7425 - 7426 - [[package]] 7427 - name = "wayland-protocols" 7428 - version = "0.32.9" 7429 - source = "registry+https://github.com/rust-lang/crates.io-index" 7430 - checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" 7431 - dependencies = [ 7432 - "bitflags 2.10.0", 7433 - "wayland-backend", 7434 - "wayland-client", 7435 - "wayland-scanner", 7436 - ] 7437 - 7438 - [[package]] 7439 - name = "wayland-protocols-plasma" 7440 - version = "0.2.0" 7441 - source = "registry+https://github.com/rust-lang/crates.io-index" 7442 - checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" 7443 - dependencies = [ 7444 - "bitflags 2.10.0", 7445 - "wayland-backend", 7446 - "wayland-client", 7447 - "wayland-protocols 0.31.2", 7448 - "wayland-scanner", 7449 - ] 7450 - 7451 - [[package]] 7452 - name = "wayland-scanner" 7453 - version = "0.31.7" 7454 - source = "registry+https://github.com/rust-lang/crates.io-index" 7455 - checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" 7456 - dependencies = [ 7457 - "proc-macro2", 7458 - "quick-xml 0.37.5", 7459 - "quote", 7460 - ] 7461 - 7462 - [[package]] 7463 - name = "wayland-sys" 7464 - version = "0.31.7" 7465 - source = "registry+https://github.com/rust-lang/crates.io-index" 7466 - checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" 7467 - dependencies = [ 7468 - "dlib", 7469 - "log", 7470 - "once_cell", 7471 - "pkg-config", 7472 - ] 7473 - 7474 - [[package]] 7475 - name = "web-sys" 7476 - version = "0.3.83" 7477 - source = "registry+https://github.com/rust-lang/crates.io-index" 7478 - checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" 7479 - dependencies = [ 7480 - "js-sys", 7481 - "wasm-bindgen", 7482 - ] 7483 - 7484 - [[package]] 7485 - name = "web-time" 7486 - version = "1.1.0" 7487 - source = "registry+https://github.com/rust-lang/crates.io-index" 7488 - checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 7489 - dependencies = [ 7490 - "js-sys", 7491 - "wasm-bindgen", 7492 - ] 7493 - 7494 - [[package]] 7495 - name = "weezl" 7496 - version = "0.1.12" 7497 - source = "registry+https://github.com/rust-lang/crates.io-index" 7498 - checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" 7499 - 7500 - [[package]] 7501 - name = "which" 7502 - version = "6.0.3" 7503 - source = "registry+https://github.com/rust-lang/crates.io-index" 7504 - checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" 7505 - dependencies = [ 7506 - "either", 7507 - "home", 7508 - "rustix 0.38.44", 7509 - "winsafe", 7510 - ] 7511 - 7512 - [[package]] 7513 - name = "winapi" 7514 - version = "0.3.9" 7515 - source = "registry+https://github.com/rust-lang/crates.io-index" 7516 - checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 7517 - dependencies = [ 7518 - "winapi-i686-pc-windows-gnu", 7519 - "winapi-x86_64-pc-windows-gnu", 7520 - ] 7521 - 7522 - [[package]] 7523 - name = "winapi-i686-pc-windows-gnu" 7524 - version = "0.4.0" 7525 - source = "registry+https://github.com/rust-lang/crates.io-index" 7526 - checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 7527 - 7528 - [[package]] 7529 - name = "winapi-util" 7530 - version = "0.1.11" 7531 - source = "registry+https://github.com/rust-lang/crates.io-index" 7532 - checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 7533 - dependencies = [ 7534 - "windows-sys 0.61.2", 7535 - ] 7536 - 7537 - [[package]] 7538 - name = "winapi-x86_64-pc-windows-gnu" 7539 - version = "0.4.0" 7540 - source = "registry+https://github.com/rust-lang/crates.io-index" 7541 - checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 7542 - 7543 - [[package]] 7544 - name = "windows" 7545 - version = "0.57.0" 7546 - source = "registry+https://github.com/rust-lang/crates.io-index" 7547 - checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" 7548 - dependencies = [ 7549 - "windows-core 0.57.0", 7550 - "windows-targets 0.52.6", 7551 - ] 7552 - 7553 - [[package]] 7554 - name = "windows" 7555 - version = "0.61.3" 7556 - source = "registry+https://github.com/rust-lang/crates.io-index" 7557 - checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 7558 - dependencies = [ 7559 - "windows-collections", 7560 - "windows-core 0.61.2", 7561 - "windows-future", 7562 - "windows-link 0.1.3", 7563 - "windows-numerics", 7564 - ] 7565 - 7566 - [[package]] 7567 - name = "windows-capture" 7568 - version = "1.5.0" 7569 - source = "registry+https://github.com/rust-lang/crates.io-index" 7570 - checksum = "3a4df73e95feddb9ec1a7e9c2ca6323b8c97d5eeeff78d28f1eccdf19c882b24" 7571 - dependencies = [ 7572 - "parking_lot", 7573 - "rayon", 7574 - "thiserror 2.0.17", 7575 - "windows 0.61.3", 7576 - "windows-future", 7577 - ] 7578 - 7579 - [[package]] 7580 - name = "windows-collections" 7581 - version = "0.2.0" 7582 - source = "registry+https://github.com/rust-lang/crates.io-index" 7583 - checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 7584 - dependencies = [ 7585 - "windows-core 0.61.2", 7586 - ] 7587 - 7588 - [[package]] 7589 - name = "windows-core" 7590 - version = "0.57.0" 7591 - source = "registry+https://github.com/rust-lang/crates.io-index" 7592 - checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" 7593 - dependencies = [ 7594 - "windows-implement 0.57.0", 7595 - "windows-interface 0.57.0", 7596 - "windows-result 0.1.2", 7597 - "windows-targets 0.52.6", 7598 - ] 7599 - 7600 - [[package]] 7601 - name = "windows-core" 7602 - version = "0.61.2" 7603 - source = "registry+https://github.com/rust-lang/crates.io-index" 7604 - checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 7605 - dependencies = [ 7606 - "windows-implement 0.60.2", 7607 - "windows-interface 0.59.3", 7608 - "windows-link 0.1.3", 7609 - "windows-result 0.3.4", 7610 - "windows-strings 0.4.2", 7611 - ] 7612 - 7613 - [[package]] 7614 - name = "windows-future" 7615 - version = "0.2.1" 7616 - source = "registry+https://github.com/rust-lang/crates.io-index" 7617 - checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" 7618 - dependencies = [ 7619 - "windows-core 0.61.2", 7620 - "windows-link 0.1.3", 7621 - "windows-threading", 7622 - ] 7623 - 7624 - [[package]] 7625 - name = "windows-implement" 7626 - version = "0.57.0" 7627 - source = "registry+https://github.com/rust-lang/crates.io-index" 7628 - checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" 7629 - dependencies = [ 7630 - "proc-macro2", 7631 - "quote", 7632 - "syn 2.0.111", 7633 - ] 7634 - 7635 - [[package]] 7636 - name = "windows-implement" 7637 - version = "0.60.2" 7638 - source = "registry+https://github.com/rust-lang/crates.io-index" 7639 - checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 7640 - dependencies = [ 7641 - "proc-macro2", 7642 - "quote", 7643 - "syn 2.0.111", 7644 - ] 7645 - 7646 - [[package]] 7647 - name = "windows-interface" 7648 - version = "0.57.0" 7649 - source = "registry+https://github.com/rust-lang/crates.io-index" 7650 - checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" 7651 - dependencies = [ 7652 - "proc-macro2", 7653 - "quote", 7654 - "syn 2.0.111", 7655 - ] 7656 - 7657 - [[package]] 7658 - name = "windows-interface" 7659 - version = "0.59.3" 7660 - source = "registry+https://github.com/rust-lang/crates.io-index" 7661 - checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 7662 - dependencies = [ 7663 - "proc-macro2", 7664 - "quote", 7665 - "syn 2.0.111", 7666 - ] 7667 - 7668 - [[package]] 7669 - name = "windows-link" 7670 - version = "0.1.3" 7671 - source = "registry+https://github.com/rust-lang/crates.io-index" 7672 - checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 7673 - 7674 - [[package]] 7675 - name = "windows-link" 7676 - version = "0.2.1" 7677 - source = "registry+https://github.com/rust-lang/crates.io-index" 7678 - checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 7679 - 7680 - [[package]] 7681 - name = "windows-numerics" 7682 - version = "0.2.0" 7683 - source = "registry+https://github.com/rust-lang/crates.io-index" 7684 - checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 7685 - dependencies = [ 7686 - "windows-core 0.61.2", 7687 - "windows-link 0.1.3", 7688 - ] 7689 - 7690 - [[package]] 7691 - name = "windows-registry" 7692 - version = "0.4.0" 7693 - source = "registry+https://github.com/rust-lang/crates.io-index" 7694 - checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" 7695 - dependencies = [ 7696 - "windows-result 0.3.4", 7697 - "windows-strings 0.3.1", 7698 - "windows-targets 0.53.5", 7699 - ] 7700 - 7701 - [[package]] 7702 - name = "windows-registry" 7703 - version = "0.5.3" 7704 - source = "registry+https://github.com/rust-lang/crates.io-index" 7705 - checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" 7706 - dependencies = [ 7707 - "windows-link 0.1.3", 7708 - "windows-result 0.3.4", 7709 - "windows-strings 0.4.2", 7710 - ] 7711 - 7712 - [[package]] 7713 - name = "windows-result" 7714 - version = "0.1.2" 7715 - source = "registry+https://github.com/rust-lang/crates.io-index" 7716 - checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 7717 - dependencies = [ 7718 - "windows-targets 0.52.6", 7719 - ] 7720 - 7721 - [[package]] 7722 - name = "windows-result" 7723 - version = "0.3.4" 7724 - source = "registry+https://github.com/rust-lang/crates.io-index" 7725 - checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 7726 - dependencies = [ 7727 - "windows-link 0.1.3", 7728 - ] 7729 - 7730 - [[package]] 7731 - name = "windows-strings" 7732 - version = "0.3.1" 7733 - source = "registry+https://github.com/rust-lang/crates.io-index" 7734 - checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" 7735 - dependencies = [ 7736 - "windows-link 0.1.3", 7737 - ] 7738 - 7739 - [[package]] 7740 - name = "windows-strings" 7741 - version = "0.4.2" 7742 - source = "registry+https://github.com/rust-lang/crates.io-index" 7743 - checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 7744 - dependencies = [ 7745 - "windows-link 0.1.3", 7746 - ] 7747 - 7748 - [[package]] 7749 - name = "windows-sys" 7750 - version = "0.48.0" 7751 - source = "registry+https://github.com/rust-lang/crates.io-index" 7752 - checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 7753 - dependencies = [ 7754 - "windows-targets 0.48.5", 7755 - ] 7756 - 7757 - [[package]] 7758 - name = "windows-sys" 7759 - version = "0.52.0" 7760 - source = "registry+https://github.com/rust-lang/crates.io-index" 7761 - checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 7762 - dependencies = [ 7763 - "windows-targets 0.52.6", 7764 - ] 7765 - 7766 - [[package]] 7767 - name = "windows-sys" 7768 - version = "0.59.0" 7769 - source = "registry+https://github.com/rust-lang/crates.io-index" 7770 - checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 7771 - dependencies = [ 7772 - "windows-targets 0.52.6", 7773 - ] 7774 - 7775 - [[package]] 7776 - name = "windows-sys" 7777 - version = "0.60.2" 7778 - source = "registry+https://github.com/rust-lang/crates.io-index" 7779 - checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 7780 - dependencies = [ 7781 - "windows-targets 0.53.5", 7782 - ] 7783 - 7784 - [[package]] 7785 - name = "windows-sys" 7786 - version = "0.61.2" 7787 - source = "registry+https://github.com/rust-lang/crates.io-index" 7788 - checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 7789 - dependencies = [ 7790 - "windows-link 0.2.1", 7791 - ] 7792 - 7793 - [[package]] 7794 - name = "windows-targets" 7795 - version = "0.48.5" 7796 - source = "registry+https://github.com/rust-lang/crates.io-index" 7797 - checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 7798 - dependencies = [ 7799 - "windows_aarch64_gnullvm 0.48.5", 7800 - "windows_aarch64_msvc 0.48.5", 7801 - "windows_i686_gnu 0.48.5", 7802 - "windows_i686_msvc 0.48.5", 7803 - "windows_x86_64_gnu 0.48.5", 7804 - "windows_x86_64_gnullvm 0.48.5", 7805 - "windows_x86_64_msvc 0.48.5", 7806 - ] 7807 - 7808 - [[package]] 7809 - name = "windows-targets" 7810 - version = "0.52.6" 7811 - source = "registry+https://github.com/rust-lang/crates.io-index" 7812 - checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 7813 - dependencies = [ 7814 - "windows_aarch64_gnullvm 0.52.6", 7815 - "windows_aarch64_msvc 0.52.6", 7816 - "windows_i686_gnu 0.52.6", 7817 - "windows_i686_gnullvm 0.52.6", 7818 - "windows_i686_msvc 0.52.6", 7819 - "windows_x86_64_gnu 0.52.6", 7820 - "windows_x86_64_gnullvm 0.52.6", 7821 - "windows_x86_64_msvc 0.52.6", 7822 - ] 7823 - 7824 - [[package]] 7825 - name = "windows-targets" 7826 - version = "0.53.5" 7827 - source = "registry+https://github.com/rust-lang/crates.io-index" 7828 - checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 7829 - dependencies = [ 7830 - "windows-link 0.2.1", 7831 - "windows_aarch64_gnullvm 0.53.1", 7832 - "windows_aarch64_msvc 0.53.1", 7833 - "windows_i686_gnu 0.53.1", 7834 - "windows_i686_gnullvm 0.53.1", 7835 - "windows_i686_msvc 0.53.1", 7836 - "windows_x86_64_gnu 0.53.1", 7837 - "windows_x86_64_gnullvm 0.53.1", 7838 - "windows_x86_64_msvc 0.53.1", 7839 - ] 7840 - 7841 - [[package]] 7842 - name = "windows-threading" 7843 - version = "0.1.0" 7844 - source = "registry+https://github.com/rust-lang/crates.io-index" 7845 - checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 7846 - dependencies = [ 7847 - "windows-link 0.1.3", 7848 - ] 7849 - 7850 - [[package]] 7851 - name = "windows_aarch64_gnullvm" 7852 - version = "0.48.5" 7853 - source = "registry+https://github.com/rust-lang/crates.io-index" 7854 - checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 7855 - 7856 - [[package]] 7857 - name = "windows_aarch64_gnullvm" 7858 - version = "0.52.6" 7859 - source = "registry+https://github.com/rust-lang/crates.io-index" 7860 - checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 7861 - 7862 - [[package]] 7863 - name = "windows_aarch64_gnullvm" 7864 - version = "0.53.1" 7865 - source = "registry+https://github.com/rust-lang/crates.io-index" 7866 - checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 7867 - 7868 - [[package]] 7869 - name = "windows_aarch64_msvc" 7870 - version = "0.48.5" 7871 - source = "registry+https://github.com/rust-lang/crates.io-index" 7872 - checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 7873 - 7874 - [[package]] 7875 - name = "windows_aarch64_msvc" 7876 - version = "0.52.6" 7877 - source = "registry+https://github.com/rust-lang/crates.io-index" 7878 - checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 7879 - 7880 - [[package]] 7881 - name = "windows_aarch64_msvc" 7882 - version = "0.53.1" 7883 - source = "registry+https://github.com/rust-lang/crates.io-index" 7884 - checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 7885 - 7886 - [[package]] 7887 - name = "windows_i686_gnu" 7888 - version = "0.48.5" 7889 - source = "registry+https://github.com/rust-lang/crates.io-index" 7890 - checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 7891 - 7892 - [[package]] 7893 - name = "windows_i686_gnu" 7894 - version = "0.52.6" 7895 - source = "registry+https://github.com/rust-lang/crates.io-index" 7896 - checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 7897 - 7898 - [[package]] 7899 - name = "windows_i686_gnu" 7900 - version = "0.53.1" 7901 - source = "registry+https://github.com/rust-lang/crates.io-index" 7902 - checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 7903 - 7904 - [[package]] 7905 - name = "windows_i686_gnullvm" 7906 - version = "0.52.6" 7907 - source = "registry+https://github.com/rust-lang/crates.io-index" 7908 - checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 7909 - 7910 - [[package]] 7911 - name = "windows_i686_gnullvm" 7912 - version = "0.53.1" 7913 - source = "registry+https://github.com/rust-lang/crates.io-index" 7914 - checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 7915 - 7916 - [[package]] 7917 - name = "windows_i686_msvc" 7918 - version = "0.48.5" 7919 - source = "registry+https://github.com/rust-lang/crates.io-index" 7920 - checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 7921 - 7922 - [[package]] 7923 - name = "windows_i686_msvc" 7924 - version = "0.52.6" 7925 - source = "registry+https://github.com/rust-lang/crates.io-index" 7926 - checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 7927 - 7928 - [[package]] 7929 - name = "windows_i686_msvc" 7930 - version = "0.53.1" 7931 - source = "registry+https://github.com/rust-lang/crates.io-index" 7932 - checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 7933 - 7934 - [[package]] 7935 - name = "windows_x86_64_gnu" 7936 - version = "0.48.5" 7937 - source = "registry+https://github.com/rust-lang/crates.io-index" 7938 - checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 7939 - 7940 - [[package]] 7941 - name = "windows_x86_64_gnu" 7942 - version = "0.52.6" 7943 - source = "registry+https://github.com/rust-lang/crates.io-index" 7944 - checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 7945 - 7946 - [[package]] 7947 - name = "windows_x86_64_gnu" 7948 - version = "0.53.1" 7949 - source = "registry+https://github.com/rust-lang/crates.io-index" 7950 - checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 7951 - 7952 - [[package]] 7953 - name = "windows_x86_64_gnullvm" 7954 - version = "0.48.5" 7955 - source = "registry+https://github.com/rust-lang/crates.io-index" 7956 - checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 7957 - 7958 - [[package]] 7959 - name = "windows_x86_64_gnullvm" 7960 - version = "0.52.6" 7961 - source = "registry+https://github.com/rust-lang/crates.io-index" 7962 - checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 7963 - 7964 - [[package]] 7965 - name = "windows_x86_64_gnullvm" 7966 - version = "0.53.1" 7967 - source = "registry+https://github.com/rust-lang/crates.io-index" 7968 - checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 7969 - 7970 - [[package]] 7971 - name = "windows_x86_64_msvc" 7972 - version = "0.48.5" 7973 - source = "registry+https://github.com/rust-lang/crates.io-index" 7974 - checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 7975 - 7976 - [[package]] 7977 - name = "windows_x86_64_msvc" 7978 - version = "0.52.6" 7979 - source = "registry+https://github.com/rust-lang/crates.io-index" 7980 - checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 7981 - 7982 - [[package]] 7983 - name = "windows_x86_64_msvc" 7984 - version = "0.53.1" 7985 - source = "registry+https://github.com/rust-lang/crates.io-index" 7986 - checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 7987 - 7988 - [[package]] 7989 - name = "winnow" 7990 - version = "0.7.14" 7991 - source = "registry+https://github.com/rust-lang/crates.io-index" 7992 - checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" 7993 - dependencies = [ 7994 - "memchr", 7995 - ] 7996 - 7997 - [[package]] 7998 - name = "winreg" 7999 - version = "0.55.0" 8000 - source = "registry+https://github.com/rust-lang/crates.io-index" 8001 - checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" 8002 - dependencies = [ 8003 - "cfg-if", 8004 - "windows-sys 0.59.0", 8005 - ] 8006 - 8007 - [[package]] 8008 - name = "winsafe" 8009 - version = "0.0.19" 8010 - source = "registry+https://github.com/rust-lang/crates.io-index" 8011 - checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" 8012 - 8013 - [[package]] 8014 - name = "wio" 8015 - version = "0.2.2" 8016 - source = "registry+https://github.com/rust-lang/crates.io-index" 8017 - checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" 8018 - dependencies = [ 8019 - "winapi", 8020 - ] 8021 - 8022 - [[package]] 8023 - name = "wit-bindgen" 8024 - version = "0.46.0" 8025 - source = "registry+https://github.com/rust-lang/crates.io-index" 8026 - checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" 8027 - 8028 - [[package]] 8029 - name = "writeable" 8030 - version = "0.6.2" 8031 - source = "registry+https://github.com/rust-lang/crates.io-index" 8032 - checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 8033 - 8034 - [[package]] 8035 - name = "x11" 8036 - version = "2.21.0" 8037 - source = "registry+https://github.com/rust-lang/crates.io-index" 8038 - checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 8039 - dependencies = [ 8040 - "libc", 8041 - "pkg-config", 8042 - ] 8043 - 8044 - [[package]] 8045 - name = "x11-clipboard" 8046 - version = "0.9.3" 8047 - source = "registry+https://github.com/rust-lang/crates.io-index" 8048 - checksum = "662d74b3d77e396b8e5beb00b9cad6a9eccf40b2ef68cc858784b14c41d535a3" 8049 - dependencies = [ 8050 - "libc", 8051 - "x11rb", 8052 - ] 8053 - 8054 - [[package]] 8055 - name = "x11rb" 8056 - version = "0.13.2" 8057 - source = "registry+https://github.com/rust-lang/crates.io-index" 8058 - checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" 8059 - dependencies = [ 8060 - "as-raw-xcb-connection", 8061 - "gethostname", 8062 - "libc", 8063 - "rustix 1.1.2", 8064 - "x11rb-protocol", 8065 - "xcursor", 8066 - ] 8067 - 8068 - [[package]] 8069 - name = "x11rb-protocol" 8070 - version = "0.13.2" 8071 - source = "registry+https://github.com/rust-lang/crates.io-index" 8072 - checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" 8073 - 8074 - [[package]] 8075 - name = "xattr" 8076 - version = "0.2.3" 8077 - source = "registry+https://github.com/rust-lang/crates.io-index" 8078 - checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" 8079 - dependencies = [ 8080 - "libc", 8081 - ] 8082 - 8083 - [[package]] 8084 - name = "xcb" 8085 - version = "1.6.0" 8086 - source = "registry+https://github.com/rust-lang/crates.io-index" 8087 - checksum = "f07c123b796139bfe0603e654eaf08e132e52387ba95b252c78bad3640ba37ea" 8088 - dependencies = [ 8089 - "bitflags 1.3.2", 8090 - "libc", 8091 - "quick-xml 0.30.0", 8092 - "x11", 8093 - ] 8094 - 8095 - [[package]] 8096 - name = "xcursor" 8097 - version = "0.3.10" 8098 - source = "registry+https://github.com/rust-lang/crates.io-index" 8099 - checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" 8100 - 8101 - [[package]] 8102 - name = "xim-ctext" 8103 - version = "0.3.0" 8104 - source = "registry+https://github.com/rust-lang/crates.io-index" 8105 - checksum = "2ac61a7062c40f3c37b6e82eeeef835d5cc7824b632a72784a89b3963c33284c" 8106 - dependencies = [ 8107 - "encoding_rs", 8108 - ] 8109 - 8110 - [[package]] 8111 - name = "xim-parser" 8112 - version = "0.2.2" 8113 - source = "registry+https://github.com/rust-lang/crates.io-index" 8114 - checksum = "5dcee45f89572d5a65180af3a84e7ddb24f5ea690a6d3aa9de231281544dd7b7" 8115 - dependencies = [ 8116 - "bitflags 2.10.0", 8117 - ] 8118 - 8119 - [[package]] 8120 - name = "xkbcommon" 8121 - version = "0.8.0" 8122 - source = "registry+https://github.com/rust-lang/crates.io-index" 8123 - checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" 8124 - dependencies = [ 8125 - "as-raw-xcb-connection", 8126 - "libc", 8127 - "memmap2", 8128 - "xkeysym", 8129 - ] 8130 - 8131 - [[package]] 8132 - name = "xkeysym" 8133 - version = "0.2.1" 8134 - source = "registry+https://github.com/rust-lang/crates.io-index" 8135 - checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" 8136 - 8137 - [[package]] 8138 - name = "xmlwriter" 8139 - version = "0.1.0" 8140 - source = "registry+https://github.com/rust-lang/crates.io-index" 8141 - checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" 8142 - 8143 - [[package]] 8144 - name = "y4m" 8145 - version = "0.8.0" 8146 - source = "registry+https://github.com/rust-lang/crates.io-index" 8147 - checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" 8148 - 8149 - [[package]] 8150 - name = "yaml-rust2" 8151 - version = "0.10.4" 8152 - source = "registry+https://github.com/rust-lang/crates.io-index" 8153 - checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" 8154 - dependencies = [ 8155 - "arraydeque", 8156 - "encoding_rs", 8157 - "hashlink", 8158 - ] 8159 - 8160 - [[package]] 8161 - name = "yazi" 8162 - version = "0.2.1" 8163 - source = "registry+https://github.com/rust-lang/crates.io-index" 8164 - checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" 8165 - 8166 - [[package]] 8167 - name = "yeslogic-fontconfig-sys" 8168 - version = "6.0.0" 8169 - source = "registry+https://github.com/rust-lang/crates.io-index" 8170 - checksum = "503a066b4c037c440169d995b869046827dbc71263f6e8f3be6d77d4f3229dbd" 8171 - dependencies = [ 8172 - "dlib", 8173 - "once_cell", 8174 - "pkg-config", 8175 - ] 8176 - 8177 - [[package]] 8178 - name = "yoke" 8179 - version = "0.8.1" 8180 - source = "registry+https://github.com/rust-lang/crates.io-index" 8181 - checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" 8182 - dependencies = [ 8183 - "stable_deref_trait", 8184 - "yoke-derive", 8185 - "zerofrom", 8186 - ] 8187 - 8188 - [[package]] 8189 - name = "yoke-derive" 8190 - version = "0.8.1" 8191 - source = "registry+https://github.com/rust-lang/crates.io-index" 8192 - checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" 8193 - dependencies = [ 8194 - "proc-macro2", 8195 - "quote", 8196 - "syn 2.0.111", 8197 - "synstructure", 8198 - ] 8199 - 8200 - [[package]] 8201 - name = "zbus" 8202 - version = "5.12.0" 8203 - source = "registry+https://github.com/rust-lang/crates.io-index" 8204 - checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" 8205 - dependencies = [ 8206 - "async-broadcast", 8207 - "async-executor", 8208 - "async-io", 8209 - "async-lock", 8210 - "async-process", 8211 - "async-recursion", 8212 - "async-task", 8213 - "async-trait", 8214 - "blocking", 8215 - "enumflags2", 8216 - "event-listener 5.4.1", 8217 - "futures-core", 8218 - "futures-lite 2.6.1", 8219 - "hex", 8220 - "nix 0.30.1", 8221 - "ordered-stream", 8222 - "serde", 8223 - "serde_repr", 8224 - "tracing", 8225 - "uds_windows", 8226 - "uuid", 8227 - "windows-sys 0.61.2", 8228 - "winnow", 8229 - "zbus_macros", 8230 - "zbus_names", 8231 - "zvariant", 8232 - ] 8233 - 8234 - [[package]] 8235 - name = "zbus_macros" 8236 - version = "5.12.0" 8237 - source = "registry+https://github.com/rust-lang/crates.io-index" 8238 - checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" 8239 - dependencies = [ 8240 - "proc-macro-crate", 8241 - "proc-macro2", 8242 - "quote", 8243 - "syn 2.0.111", 8244 - "zbus_names", 8245 - "zvariant", 8246 - "zvariant_utils", 8247 - ] 8248 - 8249 - [[package]] 8250 - name = "zbus_names" 8251 - version = "4.2.0" 8252 - source = "registry+https://github.com/rust-lang/crates.io-index" 8253 - checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" 8254 - dependencies = [ 8255 - "serde", 8256 - "static_assertions", 8257 - "winnow", 8258 - "zvariant", 8259 - ] 8260 - 8261 - [[package]] 8262 - name = "zed-async-tar" 8263 - version = "0.5.0-zed" 8264 - source = "registry+https://github.com/rust-lang/crates.io-index" 8265 - checksum = "6cf4b5f655e29700e473cb1acd914ab112b37b62f96f7e642d5fc6a0c02eb881" 8266 - dependencies = [ 8267 - "async-std", 8268 - "filetime", 8269 - "libc", 8270 - "pin-project", 8271 - "redox_syscall 0.2.16", 8272 - "xattr", 8273 - ] 8274 - 8275 - [[package]] 8276 - name = "zed-font-kit" 8277 - version = "0.14.1-zed" 8278 - source = "registry+https://github.com/rust-lang/crates.io-index" 8279 - checksum = "a3898e450f36f852edda72e3f985c34426042c4951790b23b107f93394f9bff5" 8280 - dependencies = [ 8281 - "bitflags 2.10.0", 8282 - "byteorder", 8283 - "core-foundation 0.10.0", 8284 - "core-graphics 0.24.0", 8285 - "core-text", 8286 - "dirs 5.0.1", 8287 - "dwrote", 8288 - "float-ord", 8289 - "freetype-sys", 8290 - "lazy_static", 8291 - "libc", 8292 - "log", 8293 - "pathfinder_geometry", 8294 - "pathfinder_simd", 8295 - "walkdir", 8296 - "winapi", 8297 - "yeslogic-fontconfig-sys", 8298 - ] 8299 - 8300 - [[package]] 8301 - name = "zed-reqwest" 8302 - version = "0.12.15-zed" 8303 - source = "registry+https://github.com/rust-lang/crates.io-index" 8304 - checksum = "ac2d05756ff48539950c3282ad7acf3817ad3f08797c205ad1c34a2ce03b9970" 8305 - dependencies = [ 8306 - "base64", 8307 - "bytes", 8308 - "encoding_rs", 8309 - "futures-core", 8310 - "futures-util", 8311 - "h2", 8312 - "http", 8313 - "http-body", 8314 - "http-body-util", 8315 - "hyper", 8316 - "hyper-rustls", 8317 - "hyper-util", 8318 - "ipnet", 8319 - "js-sys", 8320 - "log", 8321 - "mime", 8322 - "mime_guess", 8323 - "once_cell", 8324 - "percent-encoding", 8325 - "pin-project-lite", 8326 - "quinn", 8327 - "rustls", 8328 - "rustls-native-certs", 8329 - "rustls-pemfile", 8330 - "rustls-pki-types", 8331 - "serde", 8332 - "serde_json", 8333 - "serde_urlencoded", 8334 - "sync_wrapper", 8335 - "system-configuration", 8336 - "tokio", 8337 - "tokio-rustls", 8338 - "tokio-socks", 8339 - "tokio-util", 8340 - "tower", 8341 - "tower-service", 8342 - "url", 8343 - "wasm-bindgen", 8344 - "wasm-bindgen-futures", 8345 - "wasm-streams", 8346 - "web-sys", 8347 - "windows-registry 0.4.0", 8348 - ] 8349 - 8350 - [[package]] 8351 - name = "zed-scap" 8352 - version = "0.0.8-zed" 8353 - source = "registry+https://github.com/rust-lang/crates.io-index" 8354 - checksum = "b6b338d705ae33a43ca00287c11129303a7a0aa57b101b72a1c08c863f698ac8" 8355 - dependencies = [ 8356 - "anyhow", 8357 - "cocoa 0.25.0", 8358 - "core-graphics-helmer-fork", 8359 - "log", 8360 - "objc", 8361 - "rand 0.8.5", 8362 - "screencapturekit", 8363 - "screencapturekit-sys", 8364 - "sysinfo", 8365 - "tao-core-video-sys", 8366 - "windows 0.61.3", 8367 - "windows-capture", 8368 - "x11", 8369 - "xcb", 8370 - ] 8371 - 8372 - [[package]] 8373 - name = "zed-xim" 8374 - version = "0.4.0-zed" 8375 - source = "registry+https://github.com/rust-lang/crates.io-index" 8376 - checksum = "0c0b46ed118eba34d9ba53d94ddc0b665e0e06a2cf874cfa2dd5dec278148642" 8377 - dependencies = [ 8378 - "ahash", 8379 - "hashbrown 0.14.5", 8380 - "log", 8381 - "x11rb", 8382 - "xim-ctext", 8383 - "xim-parser", 8384 - ] 8385 - 8386 - [[package]] 8387 - name = "zeno" 8388 - version = "0.3.3" 8389 - source = "registry+https://github.com/rust-lang/crates.io-index" 8390 - checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" 8391 - 8392 - [[package]] 8393 - name = "zerocopy" 8394 - version = "0.8.31" 8395 - source = "registry+https://github.com/rust-lang/crates.io-index" 8396 - checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" 8397 - dependencies = [ 8398 - "zerocopy-derive", 8399 - ] 8400 - 8401 - [[package]] 8402 - name = "zerocopy-derive" 8403 - version = "0.8.31" 8404 - source = "registry+https://github.com/rust-lang/crates.io-index" 8405 - checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" 8406 - dependencies = [ 8407 - "proc-macro2", 8408 - "quote", 8409 - "syn 2.0.111", 8410 - ] 8411 - 8412 - [[package]] 8413 - name = "zerofrom" 8414 - version = "0.1.6" 8415 - source = "registry+https://github.com/rust-lang/crates.io-index" 8416 - checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 8417 - dependencies = [ 8418 - "zerofrom-derive", 8419 - ] 8420 - 8421 - [[package]] 8422 - name = "zerofrom-derive" 8423 - version = "0.1.6" 8424 - source = "registry+https://github.com/rust-lang/crates.io-index" 8425 - checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 8426 - dependencies = [ 8427 - "proc-macro2", 8428 - "quote", 8429 - "syn 2.0.111", 8430 - "synstructure", 8431 - ] 8432 - 8433 - [[package]] 8434 - name = "zeroize" 8435 - version = "1.8.2" 8436 - source = "registry+https://github.com/rust-lang/crates.io-index" 8437 - checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 8438 - dependencies = [ 8439 - "zeroize_derive", 8440 - ] 8441 - 8442 - [[package]] 8443 - name = "zeroize_derive" 8444 - version = "1.4.2" 8445 - source = "registry+https://github.com/rust-lang/crates.io-index" 8446 - checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" 8447 - dependencies = [ 8448 - "proc-macro2", 8449 - "quote", 8450 - "syn 2.0.111", 8451 - ] 8452 - 8453 - [[package]] 8454 - name = "zerotrie" 8455 - version = "0.2.3" 8456 - source = "registry+https://github.com/rust-lang/crates.io-index" 8457 - checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" 8458 - dependencies = [ 8459 - "displaydoc", 8460 - "yoke", 8461 - "zerofrom", 8462 - ] 8463 - 8464 - [[package]] 8465 - name = "zerovec" 8466 - version = "0.11.5" 8467 - source = "registry+https://github.com/rust-lang/crates.io-index" 8468 - checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" 8469 - dependencies = [ 8470 - "yoke", 8471 - "zerofrom", 8472 - "zerovec-derive", 8473 - ] 8474 - 8475 - [[package]] 8476 - name = "zerovec-derive" 8477 - version = "0.11.2" 8478 - source = "registry+https://github.com/rust-lang/crates.io-index" 8479 - checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" 8480 - dependencies = [ 8481 - "proc-macro2", 8482 - "quote", 8483 - "syn 2.0.111", 8484 - ] 8485 - 8486 - [[package]] 8487 - name = "zlib-rs" 8488 - version = "0.5.4" 8489 - source = "registry+https://github.com/rust-lang/crates.io-index" 8490 - checksum = "51f936044d677be1a1168fae1d03b583a285a5dd9d8cbf7b24c23aa1fc775235" 8491 - 8492 - [[package]] 8493 - name = "zune-core" 8494 - version = "0.4.12" 8495 - source = "registry+https://github.com/rust-lang/crates.io-index" 8496 - checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" 8497 - 8498 - [[package]] 8499 - name = "zune-core" 8500 - version = "0.5.0" 8501 - source = "registry+https://github.com/rust-lang/crates.io-index" 8502 - checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773" 8503 - 8504 - [[package]] 8505 - name = "zune-inflate" 8506 - version = "0.2.54" 8507 - source = "registry+https://github.com/rust-lang/crates.io-index" 8508 - checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" 8509 - dependencies = [ 8510 - "simd-adler32", 8511 - ] 8512 - 8513 - [[package]] 8514 - name = "zune-jpeg" 8515 - version = "0.4.21" 8516 - source = "registry+https://github.com/rust-lang/crates.io-index" 8517 - checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" 8518 - dependencies = [ 8519 - "zune-core 0.4.12", 8520 - ] 8521 - 8522 - [[package]] 8523 - name = "zune-jpeg" 8524 - version = "0.5.6" 8525 - source = "registry+https://github.com/rust-lang/crates.io-index" 8526 - checksum = "f520eebad972262a1dde0ec455bce4f8b298b1e5154513de58c114c4c54303e8" 8527 - dependencies = [ 8528 - "zune-core 0.5.0", 8529 - ] 8530 - 8531 - [[package]] 8532 - name = "zvariant" 8533 - version = "5.8.0" 8534 - source = "registry+https://github.com/rust-lang/crates.io-index" 8535 - checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" 8536 - dependencies = [ 8537 - "endi", 8538 - "enumflags2", 8539 - "serde", 8540 - "url", 8541 - "winnow", 8542 - "zvariant_derive", 8543 - "zvariant_utils", 8544 - ] 8545 - 8546 - [[package]] 8547 - name = "zvariant_derive" 8548 - version = "5.8.0" 8549 - source = "registry+https://github.com/rust-lang/crates.io-index" 8550 - checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" 8551 - dependencies = [ 8552 - "proc-macro-crate", 8553 - "proc-macro2", 8554 - "quote", 8555 - "syn 2.0.111", 8556 - "zvariant_utils", 8557 - ] 8558 - 8559 - [[package]] 8560 - name = "zvariant_utils" 8561 - version = "3.2.1" 8562 - source = "registry+https://github.com/rust-lang/crates.io-index" 8563 - checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" 8564 - dependencies = [ 8565 - "proc-macro2", 8566 - "quote", 8567 - "serde", 8568 - "syn 2.0.111", 8569 - "winnow", 8570 - ]
-32
apps/old-gui/Cargo.toml
··· 1 - [package] 2 - name = "tatami" 3 - version = "0.1.0" 4 - edition = "2024" 5 - build = "build.rs" 6 - 7 - [package.metadata.bundle] 8 - name = "Tatami" 9 - identifier = "com.laulauland.tatami" 10 - icon = ["resources/AppIcon.png"] 11 - osx_minimum_system_version = "10.15.7" 12 - 13 - [dependencies] 14 - anyhow = "1.0.100" 15 - config = "0.15.19" 16 - futures = "0.3.31" 17 - gpui = "0.2.2" 18 - hex = "0.4.3" 19 - hostname = "0.4.2" 20 - jj-lib = "0.35.0" 21 - notify = "8.2.0" 22 - notify-debouncer-mini = "0.7.0" 23 - pollster = "0.4.0" 24 - similar = "2.7.0" 25 - tokio = { version = "1.48.0", features = ["io-util"] } 26 - toml_edit = "0.23.9" 27 - tree-sitter = "0.26.3" 28 - tree-sitter-highlight = "0.26.3" 29 - tree-sitter-json = "0.24.8" 30 - tree-sitter-python = "0.25.0" 31 - tree-sitter-rust = "0.24.0" 32 - tree-sitter-typescript = "0.23.2"
-5
apps/old-gui/build.rs
··· 1 - fn main() { 2 - if cfg!(target_os = "macos") { 3 - println!("cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.15.7"); 4 - } 5 - }
apps/old-gui/resources/AppIcon.png

This is a binary file and will not be displayed.

-10
apps/old-gui/resources/tatami.entitlements
··· 1 - <?xml version="1.0" encoding="UTF-8"?> 2 - <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 - <plist version="1.0"> 4 - <dict> 5 - <key>com.apple.security.cs.allow-jit</key> 6 - <true/> 7 - <key>com.apple.security.cs.allow-unsigned-executable-memory</key> 8 - <true/> 9 - </dict> 10 - </plist>
-211
apps/old-gui/src/app.rs
··· 1 - use futures::StreamExt; 2 - use gpui::{ 3 - div, px, rgb, size, App, AppContext, Bounds, Context, Entity, IntoElement, ParentElement, 4 - Render, Styled, Window, WindowBounds, WindowOptions, 5 - }; 6 - use std::path::PathBuf; 7 - 8 - use crate::repo::diff::FileDiff; 9 - use crate::repo::RepoState; 10 - use crate::ui::diff_view::DiffView; 11 - use crate::ui::log_view::render_log_view; 12 - use crate::ui::theme::{self, Colors, TextSize}; 13 - use crate::watcher::RepoWatcher; 14 - 15 - pub struct Tatami { 16 - repo: RepoState, 17 - workspace_root: PathBuf, 18 - selected_revision: Option<usize>, 19 - selected_file: Option<(String, String)>, 20 - diff_view: Option<Entity<DiffView>>, 21 - _watcher: Option<RepoWatcher>, 22 - } 23 - 24 - impl Tatami { 25 - pub fn new(repo: RepoState, workspace_root: PathBuf) -> Self { 26 - Self { 27 - repo, 28 - workspace_root, 29 - selected_revision: Some(0), 30 - selected_file: None, 31 - diff_view: None, 32 - _watcher: None, 33 - } 34 - } 35 - 36 - pub fn set_watcher(&mut self, watcher: RepoWatcher) { 37 - self._watcher = Some(watcher); 38 - } 39 - 40 - pub fn reload_repo(&mut self) { 41 - self.repo = crate::repo::load_workspace(&self.workspace_root); 42 - } 43 - } 44 - 45 - impl Tatami { 46 - pub fn select_revision(&mut self, index: usize, cx: &mut Context<Self>) { 47 - if self.selected_revision == Some(index) { 48 - self.selected_revision = None; 49 - } else { 50 - self.selected_revision = Some(index); 51 - } 52 - self.selected_file = None; 53 - self.diff_view = None; 54 - cx.notify(); 55 - } 56 - 57 - pub fn select_file(&mut self, change_id: String, file_path: String, cx: &mut Context<Self>) { 58 - if self.selected_file == Some((change_id.clone(), file_path.clone())) { 59 - self.selected_file = None; 60 - self.diff_view = None; 61 - } else { 62 - self.selected_file = Some((change_id.clone(), file_path.clone())); 63 - self.load_file_diff(change_id, file_path, cx); 64 - } 65 - cx.notify(); 66 - } 67 - 68 - fn load_file_diff(&mut self, change_id: String, file_path: String, cx: &mut Context<Self>) { 69 - use crate::repo::diff::compute_file_diff; 70 - use crate::repo::jj::JjRepo; 71 - 72 - let file_path_for_closure = file_path.clone(); 73 - let result = (|| -> anyhow::Result<FileDiff> { 74 - let jj_repo = JjRepo::open(&self.workspace_root)?; 75 - let commit = jj_repo.get_commit(&change_id)?; 76 - let new_content = jj_repo.get_file_content(&commit, &file_path_for_closure)?; 77 - let old_content = jj_repo.get_parent_file_content(&commit, &file_path_for_closure)?; 78 - Ok(compute_file_diff( 79 - &old_content, 80 - &new_content, 81 - file_path_for_closure.clone(), 82 - )) 83 - })(); 84 - 85 - match result { 86 - Ok(diff) => { 87 - let diff_view = cx.new(|cx| DiffView::new(&diff, Some(&file_path), cx)); 88 - self.diff_view = Some(diff_view); 89 - } 90 - Err(_) => self.diff_view = None, 91 - } 92 - } 93 - 94 - pub fn diff_view(&self) -> Option<&Entity<DiffView>> { 95 - self.diff_view.as_ref() 96 - } 97 - } 98 - 99 - impl Render for Tatami { 100 - fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 101 - let content = match &self.repo { 102 - RepoState::NotFound { path } => div() 103 - .flex_1() 104 - .p_3() 105 - .child(format!("No jj repository at {}", path.display())), 106 - RepoState::Loaded { revisions, .. } => div().flex_1().child(render_log_view( 107 - revisions, 108 - self.selected_revision, 109 - &self.selected_file, 110 - self.diff_view.clone(), 111 - cx, 112 - )), 113 - RepoState::Error { message } => { 114 - div().flex_1().p_3().child(format!("Error: {}", message)) 115 - } 116 - }; 117 - 118 - let status_text = match &self.repo { 119 - RepoState::NotFound { .. } => "No repository".to_string(), 120 - RepoState::Loaded { 121 - workspace_root, 122 - revisions, 123 - .. 124 - } => { 125 - format!( 126 - "{} · {} revisions", 127 - workspace_root 128 - .file_name() 129 - .unwrap_or_default() 130 - .to_string_lossy(), 131 - revisions.len(), 132 - ) 133 - } 134 - RepoState::Error { .. } => "Error".to_string(), 135 - }; 136 - 137 - div() 138 - .size_full() 139 - .flex() 140 - .flex_col() 141 - .font_family(theme::font_family()) 142 - .text_size(TextSize::BASE) 143 - .bg(rgb(Colors::BG_BASE)) 144 - .text_color(rgb(Colors::TEXT)) 145 - .child(content) 146 - .child( 147 - div() 148 - .h(px(22.0)) 149 - .w_full() 150 - .flex() 151 - .flex_shrink_0() 152 - .items_center() 153 - .px_3() 154 - .bg(rgb(Colors::BG_SURFACE)) 155 - .border_t_1() 156 - .border_color(rgb(Colors::BORDER_MUTED)) 157 - .text_size(TextSize::XS) 158 - .text_color(rgb(Colors::TEXT_SUBTLE)) 159 - .child(status_text), 160 - ) 161 - } 162 - } 163 - 164 - pub fn open_window(cx: &mut App, repo: RepoState, workspace_root: PathBuf) { 165 - let bounds = Bounds::centered(None, size(px(1200.0), px(800.0)), cx); 166 - 167 - cx.open_window( 168 - WindowOptions { 169 - window_bounds: Some(WindowBounds::Windowed(bounds)), 170 - ..Default::default() 171 - }, 172 - |_window, cx| { 173 - let entity = cx.new(|_cx| { 174 - let tatami = Tatami::new(repo.clone(), workspace_root.clone()); 175 - tatami 176 - }); 177 - 178 - if let RepoState::Loaded { .. } = &repo { 179 - let (watcher, mut receiver) = crate::watcher::watch_repo(workspace_root.clone()); 180 - 181 - entity.update(cx, |tatami, cx| { 182 - tatami.set_watcher(watcher); 183 - 184 - cx.spawn(|weak_self: gpui::WeakEntity<Tatami>, async_cx: &mut gpui::AsyncApp| { 185 - let mut async_cx = async_cx.clone(); 186 - async move { 187 - while let Some(()) = receiver.next().await { 188 - let Some(entity) = weak_self.upgrade() else { 189 - break; 190 - }; 191 - if async_cx 192 - .update_entity(&entity, |tatami, ctx| { 193 - tatami.reload_repo(); 194 - ctx.notify(); 195 - }) 196 - .is_err() 197 - { 198 - break; 199 - } 200 - } 201 - } 202 - }) 203 - .detach(); 204 - }); 205 - } 206 - 207 - entity 208 - }, 209 - ) 210 - .expect("Failed to open window"); 211 - }
-16
apps/old-gui/src/main.rs
··· 1 - mod app; 2 - mod repo; 3 - mod ui; 4 - mod watcher; 5 - 6 - use gpui::Application; 7 - 8 - fn main() { 9 - let current_dir = std::env::current_dir().unwrap_or_default(); 10 - let repo_state = repo::load_workspace(&current_dir); 11 - let workspace_root = current_dir.clone(); 12 - 13 - Application::new().run(|cx| { 14 - app::open_window(cx, repo_state, workspace_root); 15 - }); 16 - }
-52
apps/old-gui/src/repo.rs
··· 1 - pub mod diff; 2 - pub mod jj; 3 - pub mod log; 4 - pub mod status; 5 - 6 - use std::path::PathBuf; 7 - 8 - use crate::repo::log::Revision; 9 - use crate::repo::status::WorkingCopyStatus; 10 - 11 - #[derive(Clone)] 12 - pub enum RepoState { 13 - NotFound { path: PathBuf }, 14 - Loaded { 15 - workspace_root: PathBuf, 16 - revisions: Vec<Revision>, 17 - status: Option<WorkingCopyStatus>, 18 - }, 19 - Error { message: String }, 20 - } 21 - 22 - pub fn find_jj_repo(start_path: &std::path::Path) -> Option<PathBuf> { 23 - let mut current = start_path.to_path_buf(); 24 - 25 - loop { 26 - let jj_dir = current.join(".jj"); 27 - if jj_dir.is_dir() { 28 - return Some(current); 29 - } 30 - 31 - if !current.pop() { 32 - return None; 33 - } 34 - } 35 - } 36 - 37 - pub fn load_workspace(path: &std::path::Path) -> RepoState { 38 - match find_jj_repo(path) { 39 - Some(workspace_root) => { 40 - let revisions = log::fetch_log(&workspace_root, 50).unwrap_or_default(); 41 - let status = status::fetch_status(&workspace_root).ok(); 42 - RepoState::Loaded { 43 - workspace_root, 44 - revisions, 45 - status, 46 - } 47 - } 48 - None => RepoState::NotFound { 49 - path: path.to_path_buf(), 50 - }, 51 - } 52 - }
-44
apps/old-gui/src/repo/diff.rs
··· 1 - use similar::{ChangeTag, TextDiff}; 2 - 3 - #[derive(Clone, Debug)] 4 - pub struct FileDiff { 5 - pub path: String, 6 - pub hunks: Vec<DiffDisplayHunk>, 7 - } 8 - 9 - #[derive(Clone, Debug)] 10 - pub struct DiffDisplayHunk { 11 - pub lines: Vec<DiffLine>, 12 - } 13 - 14 - #[derive(Clone, Debug)] 15 - pub enum DiffLine { 16 - Context(String), 17 - Added(String), 18 - Deleted(String), 19 - } 20 - 21 - pub fn compute_file_diff(old_content: &[u8], new_content: &[u8], path: String) -> FileDiff { 22 - let old_text = String::from_utf8_lossy(old_content); 23 - let new_text = String::from_utf8_lossy(new_content); 24 - 25 - let diff = TextDiff::from_lines(&old_text, &new_text); 26 - let mut lines = Vec::new(); 27 - 28 - for change in diff.iter_all_changes() { 29 - let line = change.to_string(); 30 - let diff_line = match change.tag() { 31 - ChangeTag::Delete => DiffLine::Deleted(line), 32 - ChangeTag::Insert => DiffLine::Added(line), 33 - ChangeTag::Equal => DiffLine::Context(line), 34 - }; 35 - lines.push(diff_line); 36 - } 37 - 38 - let hunk = DiffDisplayHunk { lines }; 39 - 40 - FileDiff { 41 - path, 42 - hunks: vec![hunk], 43 - } 44 - }
-168
apps/old-gui/src/repo/jj.rs
··· 1 - use anyhow::{Context, Result}; 2 - use jj_lib::backend::CommitId; 3 - use jj_lib::commit::Commit; 4 - use jj_lib::config::ConfigSource; 5 - use jj_lib::merged_tree::MergedTree; 6 - use jj_lib::object_id::{HexPrefix, PrefixResolution}; 7 - use jj_lib::repo::{Repo, StoreFactories}; 8 - use jj_lib::repo_path::RepoPath; 9 - use jj_lib::workspace::{default_working_copy_factories, Workspace}; 10 - use std::path::Path; 11 - use tokio::io::AsyncReadExt; 12 - 13 - pub struct JjRepo { 14 - workspace: Workspace, 15 - } 16 - 17 - impl JjRepo { 18 - pub fn open(path: &Path) -> Result<Self> { 19 - let config = Self::load_config()?; 20 - let user_settings = jj_lib::settings::UserSettings::from_config(config) 21 - .context("Failed to create user settings")?; 22 - let store_factories = StoreFactories::default(); 23 - let working_copy_factories = default_working_copy_factories(); 24 - 25 - let workspace = Workspace::load( 26 - &user_settings, 27 - path, 28 - &store_factories, 29 - &working_copy_factories, 30 - ) 31 - .context("Failed to load jj workspace")?; 32 - 33 - Ok(Self { workspace }) 34 - } 35 - 36 - fn load_config() -> Result<jj_lib::config::StackedConfig> { 37 - use jj_lib::config::{ConfigLayer, StackedConfig}; 38 - 39 - // Start with jj-lib's built-in defaults 40 - let mut config = StackedConfig::with_defaults(); 41 - 42 - // Fill in empty values that jj-lib leaves for the CLI to set 43 - let hostname = hostname::get() 44 - .map(|h| h.to_string_lossy().to_string()) 45 - .unwrap_or_else(|_| "localhost".to_string()); 46 - let username = std::env::var("USER").unwrap_or_else(|_| "user".to_string()); 47 - 48 - let env_defaults = format!( 49 - r#" 50 - [user] 51 - name = "{username}" 52 - email = "{username}@localhost" 53 - 54 - [operation] 55 - hostname = "{hostname}" 56 - username = "{username}" 57 - "# 58 - ); 59 - let env_doc: toml_edit::DocumentMut = env_defaults.parse().unwrap(); 60 - config.add_layer(ConfigLayer::with_data(ConfigSource::EnvBase, env_doc)); 61 - 62 - // Load user config (higher priority) 63 - if let Ok(home) = std::env::var("HOME") { 64 - let xdg_config = std::env::var("XDG_CONFIG_HOME") 65 - .map(std::path::PathBuf::from) 66 - .unwrap_or_else(|_| Path::new(&home).join(".config")); 67 - 68 - let jj_config = xdg_config.join("jj/config.toml"); 69 - if jj_config.exists() { 70 - let _ = config.load_file(ConfigSource::User, &jj_config); 71 - } 72 - 73 - let legacy = Path::new(&home).join(".jjconfig.toml"); 74 - if legacy.exists() { 75 - let _ = config.load_file(ConfigSource::User, &legacy); 76 - } 77 - } 78 - 79 - Ok(config) 80 - } 81 - 82 - pub fn get_commit(&self, change_id: &str) -> Result<Commit> { 83 - let repo = self.workspace.repo_loader().load_at_head()?; 84 - let commit_id = self.resolve_change_id(repo.as_ref(), change_id)?; 85 - Ok(repo.store().get_commit(&commit_id)?) 86 - } 87 - 88 - pub fn get_parent_tree(&self, commit: &Commit) -> Result<MergedTree> { 89 - let repo = self.workspace.repo_loader().load_at_head()?; 90 - let parents = commit.parents(); 91 - let parent = parents.into_iter().next().context("Commit has no parent")?; 92 - let parent_commit = repo.store().get_commit(parent?.id())?; 93 - Ok(parent_commit.tree()?) 94 - } 95 - 96 - pub fn get_file_content(&self, commit: &Commit, path: &str) -> Result<Vec<u8>> { 97 - let repo_path = RepoPath::from_internal_string(path).context("Invalid path")?; 98 - let tree = commit.tree()?; 99 - let file_value = tree.path_value(&repo_path)?; 100 - 101 - match file_value.into_resolved() { 102 - Ok(Some(value)) => { 103 - use jj_lib::backend::TreeValue; 104 - match value { 105 - TreeValue::File { id, .. } => { 106 - let repo = self.workspace.repo_loader().load_at_head()?; 107 - let mut reader = 108 - pollster::block_on(async { repo.store().read_file(&repo_path, &id).await })?; 109 - let mut content = Vec::new(); 110 - pollster::block_on(async { reader.read_to_end(&mut content).await })?; 111 - Ok(content) 112 - } 113 - _ => Ok(Vec::new()), 114 - } 115 - } 116 - _ => Ok(Vec::new()), 117 - } 118 - } 119 - 120 - pub fn get_parent_file_content(&self, commit: &Commit, path: &str) -> Result<Vec<u8>> { 121 - let repo_path = RepoPath::from_internal_string(path).context("Invalid path")?; 122 - let repo = self.workspace.repo_loader().load_at_head()?; 123 - let parents = commit.parents(); 124 - let parent = parents.into_iter().next().context("Commit has no parent")?; 125 - let parent_commit = repo.store().get_commit(parent?.id())?; 126 - let parent_tree = parent_commit.tree()?; 127 - let file_value = parent_tree.path_value(&repo_path)?; 128 - 129 - match file_value.into_resolved() { 130 - Ok(Some(value)) => { 131 - use jj_lib::backend::TreeValue; 132 - match value { 133 - TreeValue::File { id, .. } => { 134 - let mut reader = 135 - pollster::block_on(async { repo.store().read_file(&repo_path, &id).await })?; 136 - let mut content = Vec::new(); 137 - pollster::block_on(async { reader.read_to_end(&mut content).await })?; 138 - Ok(content) 139 - } 140 - _ => Ok(Vec::new()), 141 - } 142 - } 143 - _ => Ok(Vec::new()), 144 - } 145 - } 146 - 147 - fn resolve_change_id(&self, repo: &impl Repo, change_id_prefix: &str) -> Result<CommitId> { 148 - // Change IDs use reverse hex (z-k alphabet), not standard hex (0-9a-f) 149 - let prefix = HexPrefix::try_from_reverse_hex(change_id_prefix) 150 - .context("Invalid change ID prefix format")?; 151 - 152 - let resolution = repo 153 - .resolve_change_id_prefix(&prefix) 154 - .context("Failed to resolve change ID")?; 155 - 156 - match resolution { 157 - PrefixResolution::SingleMatch(commit_ids) => { 158 - commit_ids.first().cloned().context("No commit ID found") 159 - } 160 - PrefixResolution::NoMatch => { 161 - anyhow::bail!("Change ID not found: {}", change_id_prefix) 162 - } 163 - PrefixResolution::AmbiguousMatch => { 164 - anyhow::bail!("Ambiguous change ID prefix: {}", change_id_prefix) 165 - } 166 - } 167 - } 168 - }
-134
apps/old-gui/src/repo/log.rs
··· 1 - use std::path::Path; 2 - use std::process::Command; 3 - 4 - #[derive(Clone, Debug)] 5 - pub struct Revision { 6 - pub commit_id: String, 7 - pub change_id: String, 8 - pub description: String, 9 - pub author: String, 10 - pub timestamp: String, 11 - pub is_working_copy: bool, 12 - pub is_immutable: bool, 13 - pub bookmarks: Vec<String>, 14 - pub files: Vec<ChangedFile>, 15 - } 16 - 17 - #[derive(Clone, Debug)] 18 - pub struct ChangedFile { 19 - pub path: String, 20 - pub status: FileStatus, 21 - } 22 - 23 - #[derive(Clone, Debug, PartialEq)] 24 - pub enum FileStatus { 25 - Added, 26 - Modified, 27 - Deleted, 28 - } 29 - 30 - pub fn fetch_log(repo_path: &Path, limit: usize) -> Result<Vec<Revision>, String> { 31 - let template = r#"commit_id.short() ++ "\x00" ++ change_id.short() ++ "\x00" ++ if(description, description.first_line(), "(no description)") ++ "\x00" ++ author.name() ++ "\x00" ++ author.timestamp().ago() ++ "\x00" ++ if(immutable, "immutable", "mutable") ++ "\x00" ++ bookmarks.map(|b| b.name()).join(",") ++ "\x1e""#; 32 - 33 - let output = Command::new("jj") 34 - .args([ 35 - "log", 36 - "--no-pager", 37 - "-T", 38 - template, 39 - "--limit", 40 - &limit.to_string(), 41 - ]) 42 - .current_dir(repo_path) 43 - .output() 44 - .map_err(|e| format!("Failed to run jj log: {}", e))?; 45 - 46 - if !output.status.success() { 47 - let stderr = String::from_utf8_lossy(&output.stderr); 48 - return Err(format!("jj log failed: {}", stderr)); 49 - } 50 - 51 - let stdout = String::from_utf8_lossy(&output.stdout); 52 - let mut revisions = Vec::new(); 53 - 54 - for (idx, record) in stdout.split('\x1e').enumerate() { 55 - let record = record.trim(); 56 - if record.is_empty() { 57 - continue; 58 - } 59 - 60 - let line = record.trim_start_matches(['@', '│', '├', '└', '◆', '○', '◉', ' ', '─']); 61 - let parts: Vec<&str> = line.split('\x00').collect(); 62 - 63 - if parts.len() >= 6 { 64 - let bookmarks: Vec<String> = if parts.len() > 6 && !parts[6].is_empty() { 65 - parts[6].split(',').map(|s| s.to_string()).collect() 66 - } else { 67 - Vec::new() 68 - }; 69 - 70 - let change_id = parts[1].to_string(); 71 - let timestamp = format_timestamp(parts[4], &change_id); 72 - let files = fetch_files(repo_path, &change_id); 73 - 74 - revisions.push(Revision { 75 - commit_id: parts[0].to_string(), 76 - change_id, 77 - description: parts[2].to_string(), 78 - author: parts[3].to_string(), 79 - timestamp, 80 - is_working_copy: idx == 0, 81 - is_immutable: parts[5] == "immutable", 82 - bookmarks, 83 - files, 84 - }); 85 - } 86 - } 87 - 88 - Ok(revisions) 89 - } 90 - 91 - fn format_timestamp(raw: &str, change_id: &str) -> String { 92 - if change_id == "zzzzzzzz" { 93 - "root".to_string() 94 - } else { 95 - raw.to_string() 96 - } 97 - } 98 - 99 - pub fn fetch_files(repo_path: &Path, change_id: &str) -> Vec<ChangedFile> { 100 - let output = Command::new("jj") 101 - .args(["diff", "--summary", "-r", change_id, "--no-pager"]) 102 - .current_dir(repo_path) 103 - .output(); 104 - 105 - let Ok(output) = output else { 106 - return Vec::new(); 107 - }; 108 - 109 - if !output.status.success() { 110 - return Vec::new(); 111 - } 112 - 113 - let stdout = String::from_utf8_lossy(&output.stdout); 114 - stdout 115 - .lines() 116 - .filter_map(|line| { 117 - let line = line.trim(); 118 - if line.len() < 2 { 119 - return None; 120 - } 121 - let status_char = line.chars().next()?; 122 - let path = line[1..].trim().to_string(); 123 - 124 - let status = match status_char { 125 - 'A' => FileStatus::Added, 126 - 'M' => FileStatus::Modified, 127 - 'D' => FileStatus::Deleted, 128 - _ => return None, 129 - }; 130 - 131 - Some(ChangedFile { path, status }) 132 - }) 133 - .collect() 134 - }
-89
apps/old-gui/src/repo/status.rs
··· 1 - use std::path::Path; 2 - use std::process::Command; 3 - 4 - #[derive(Clone, Debug, PartialEq)] 5 - pub enum FileStatus { 6 - Added, 7 - Modified, 8 - Deleted, 9 - } 10 - 11 - #[derive(Clone, Debug)] 12 - pub struct ChangedFile { 13 - pub path: String, 14 - pub status: FileStatus, 15 - } 16 - 17 - #[derive(Clone, Debug)] 18 - pub struct WorkingCopyStatus { 19 - pub change_id: String, 20 - pub commit_id: String, 21 - pub description: String, 22 - pub parent_description: String, 23 - pub files: Vec<ChangedFile>, 24 - } 25 - 26 - pub fn fetch_status(repo_path: &Path) -> Result<WorkingCopyStatus, String> { 27 - let output = Command::new("jj") 28 - .args(["status", "--no-pager"]) 29 - .current_dir(repo_path) 30 - .output() 31 - .map_err(|e| format!("Failed to run jj status: {}", e))?; 32 - 33 - if !output.status.success() { 34 - let stderr = String::from_utf8_lossy(&output.stderr); 35 - return Err(format!("jj status failed: {}", stderr)); 36 - } 37 - 38 - let stdout = String::from_utf8_lossy(&output.stdout); 39 - let mut files = Vec::new(); 40 - let mut change_id = String::new(); 41 - let mut commit_id = String::new(); 42 - let mut description = String::new(); 43 - let mut parent_description = String::new(); 44 - 45 - for line in stdout.lines() { 46 - if line.starts_with("Working copy") && line.contains("(@)") { 47 - if let Some(rest) = line.strip_prefix("Working copy (@) :") { 48 - let parts: Vec<&str> = rest.trim().splitn(3, ' ').collect(); 49 - if parts.len() >= 2 { 50 - change_id = parts[0].to_string(); 51 - commit_id = parts[1].to_string(); 52 - if parts.len() >= 3 { 53 - description = parts[2].to_string(); 54 - } 55 - } 56 - } 57 - } else if line.starts_with("Parent commit") { 58 - if let Some(rest) = line.strip_prefix("Parent commit (@-):") { 59 - let parts: Vec<&str> = rest.trim().splitn(3, ' ').collect(); 60 - if parts.len() >= 3 { 61 - parent_description = parts[2].to_string(); 62 - } 63 - } 64 - } else if line.starts_with("A ") { 65 - files.push(ChangedFile { 66 - path: line[2..].to_string(), 67 - status: FileStatus::Added, 68 - }); 69 - } else if line.starts_with("M ") { 70 - files.push(ChangedFile { 71 - path: line[2..].to_string(), 72 - status: FileStatus::Modified, 73 - }); 74 - } else if line.starts_with("D ") { 75 - files.push(ChangedFile { 76 - path: line[2..].to_string(), 77 - status: FileStatus::Deleted, 78 - }); 79 - } 80 - } 81 - 82 - Ok(WorkingCopyStatus { 83 - change_id, 84 - commit_id, 85 - description, 86 - parent_description, 87 - files, 88 - }) 89 - }
-267
apps/old-gui/src/ui/diff_view.rs
··· 1 - use std::cell::RefCell; 2 - 3 - use gpui::{ 4 - div, px, rgb, rgba, uniform_list, Context, IntoElement, InteractiveElement, MouseButton, 5 - MouseDownEvent, MouseMoveEvent, ParentElement, Pixels, Point, Render, Styled, Window, 6 - prelude::FluentBuilder, 7 - }; 8 - 9 - use super::syntax::{StyledSpan, SyntaxHighlighter}; 10 - use super::theme::{Colors, TextSize}; 11 - use crate::repo::diff::{DiffLine, FileDiff}; 12 - 13 - const LINE_HEIGHT: f32 = 20.0; 14 - const MAX_VISIBLE_LINES: usize = 20; 15 - 16 - #[derive(Clone, Debug)] 17 - pub struct TextPosition { 18 - pub line: usize, 19 - pub column: usize, 20 - } 21 - 22 - #[derive(Clone)] 23 - struct HighlightedLine { 24 - text: String, 25 - spans: Vec<StyledSpan>, 26 - bg_color: u32, 27 - prefix: &'static str, 28 - prefix_color: u32, 29 - } 30 - 31 - pub struct DiffView { 32 - lines: Vec<HighlightedLine>, 33 - selection_start: Option<TextPosition>, 34 - selection_end: Option<TextPosition>, 35 - } 36 - 37 - impl DiffView { 38 - pub fn new(diff: &FileDiff, file_path: Option<&str>, _cx: &mut Context<Self>) -> Self { 39 - let raw_lines: Vec<DiffLine> = diff 40 - .hunks 41 - .iter() 42 - .flat_map(|hunk| hunk.lines.clone()) 43 - .collect(); 44 - 45 - let language = file_path.and_then(SyntaxHighlighter::detect_language); 46 - let highlighter = RefCell::new(SyntaxHighlighter::new()); 47 - 48 - let lines: Vec<HighlightedLine> = raw_lines 49 - .iter() 50 - .map(|line| { 51 - let (text, bg_color, prefix_color, prefix) = match line { 52 - DiffLine::Context(content) => { 53 - (content.clone(), Colors::BG_BASE, Colors::TEXT, " ") 54 - } 55 - DiffLine::Added(content) => (content.clone(), 0x0d3a1f, Colors::ADDED, "+"), 56 - DiffLine::Deleted(content) => (content.clone(), 0x3d1014, Colors::DELETED, "-"), 57 - }; 58 - 59 - let trimmed_text = text.trim_end_matches('\n').to_string(); 60 - let spans = if let Some(ref lang) = language { 61 - highlighter.borrow_mut().highlight_line(&trimmed_text, lang) 62 - } else { 63 - vec![StyledSpan { 64 - text: trimmed_text.clone(), 65 - color: Colors::TEXT, 66 - }] 67 - }; 68 - 69 - HighlightedLine { 70 - text: trimmed_text, 71 - spans, 72 - bg_color, 73 - prefix, 74 - prefix_color, 75 - } 76 - }) 77 - .collect(); 78 - 79 - Self { 80 - lines, 81 - selection_start: None, 82 - selection_end: None, 83 - } 84 - } 85 - 86 - fn position_from_point(&self, point: Point<Pixels>) -> TextPosition { 87 - const GUTTER_WIDTH: f32 = 40.0; 88 - const PREFIX_WIDTH: f32 = 16.0; 89 - const CHAR_WIDTH: f32 = 7.5; 90 - 91 - let y_pixels: f32 = point.y.into(); 92 - let line = (y_pixels / LINE_HEIGHT).floor() as usize; 93 - let line = line.min(self.lines.len().saturating_sub(1)); 94 - 95 - let x_pixels: f32 = point.x.into(); 96 - let content_x = x_pixels - GUTTER_WIDTH - PREFIX_WIDTH; 97 - let column = if content_x > 0.0 { 98 - (content_x / CHAR_WIDTH).floor() as usize 99 - } else { 100 - 0 101 - }; 102 - 103 - let column = column.min(self.lines.get(line).map_or(0, |l| l.text.len())); 104 - 105 - TextPosition { line, column } 106 - } 107 - 108 - fn get_selection_for_line(&self, line_idx: usize) -> Option<(usize, usize)> { 109 - let start = self.selection_start.as_ref()?; 110 - let end = self.selection_end.as_ref()?; 111 - 112 - let (start, end) = if start.line < end.line || (start.line == end.line && start.column <= end.column) { 113 - (start, end) 114 - } else { 115 - (end, start) 116 - }; 117 - 118 - if line_idx < start.line || line_idx > end.line { 119 - return None; 120 - } 121 - 122 - let line_len = self.lines.get(line_idx)?.text.len(); 123 - 124 - let start_col = if line_idx == start.line { 125 - start.column.min(line_len) 126 - } else { 127 - 0 128 - }; 129 - 130 - let end_col = if line_idx == end.line { 131 - end.column.min(line_len) 132 - } else { 133 - line_len 134 - }; 135 - 136 - if start_col >= end_col { 137 - return None; 138 - } 139 - 140 - Some((start_col, end_col)) 141 - } 142 - 143 - fn handle_mouse_down(&mut self, event: &MouseDownEvent, _window: &mut Window, cx: &mut Context<Self>) { 144 - let position = self.position_from_point(event.position); 145 - self.selection_start = Some(position.clone()); 146 - self.selection_end = Some(position); 147 - cx.notify(); 148 - } 149 - 150 - fn handle_mouse_move(&mut self, event: &MouseMoveEvent, _window: &mut Window, cx: &mut Context<Self>) { 151 - if event.pressed_button == Some(MouseButton::Left) { 152 - let position = self.position_from_point(event.position); 153 - self.selection_end = Some(position); 154 - cx.notify(); 155 - } 156 - } 157 - } 158 - 159 - impl Render for DiffView { 160 - fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement { 161 - let line_count = self.lines.len(); 162 - let visible_height = (line_count.min(MAX_VISIBLE_LINES) as f32) * LINE_HEIGHT; 163 - let lines = self.lines.clone(); 164 - let selection_ranges: Vec<Option<(usize, usize)>> = (0..line_count) 165 - .map(|idx| self.get_selection_for_line(idx)) 166 - .collect(); 167 - 168 - div() 169 - .flex() 170 - .flex_col() 171 - .bg(rgb(Colors::BG_BASE)) 172 - .rounded_md() 173 - .border_1() 174 - .border_color(rgb(Colors::BORDER_MUTED)) 175 - .overflow_hidden() 176 - .h(px(visible_height)) 177 - .on_mouse_down(MouseButton::Left, cx.listener(Self::handle_mouse_down)) 178 - .on_mouse_move(cx.listener(Self::handle_mouse_move)) 179 - .child( 180 - uniform_list("diff-lines", line_count, move |range, _window, _cx| { 181 - range 182 - .map(|idx| { 183 - let line = lines[idx].clone(); 184 - let selection = selection_ranges[idx]; 185 - render_highlighted_line(line, idx + 1, selection) 186 - }) 187 - .collect() 188 - }) 189 - .flex_1() 190 - .text_size(TextSize::XS), 191 - ) 192 - } 193 - } 194 - 195 - fn render_highlighted_line( 196 - line: HighlightedLine, 197 - line_number: usize, 198 - selection: Option<(usize, usize)>, 199 - ) -> impl IntoElement { 200 - const GUTTER_WIDTH: f32 = 40.0; 201 - const PREFIX_WIDTH: f32 = 16.0; 202 - const CHAR_WIDTH: f32 = 7.5; 203 - 204 - div() 205 - .h(px(LINE_HEIGHT)) 206 - .w_full() 207 - .flex() 208 - .items_center() 209 - .bg(rgb(line.bg_color)) 210 - .relative() 211 - .when_some(selection, |element, (start_col, end_col)| { 212 - let x_offset = GUTTER_WIDTH + PREFIX_WIDTH + (start_col as f32 * CHAR_WIDTH); 213 - let width = (end_col - start_col) as f32 * CHAR_WIDTH; 214 - 215 - element.child( 216 - div() 217 - .absolute() 218 - .top_0() 219 - .left(px(x_offset)) 220 - .h(px(LINE_HEIGHT)) 221 - .w(px(width)) 222 - .bg(rgba(0x4a9eff40)) 223 - ) 224 - }) 225 - .child( 226 - div() 227 - .w(px(40.0)) 228 - .flex_shrink_0() 229 - .text_color(rgb(Colors::TEXT_SUBTLE)) 230 - .text_right() 231 - .pr_2() 232 - .child(format!("{line_number}")), 233 - ) 234 - .child( 235 - div() 236 - .w(px(16.0)) 237 - .flex_shrink_0() 238 - .text_color(rgb(line.prefix_color)) 239 - .child(line.prefix), 240 - ) 241 - .child( 242 - div() 243 - .flex_1() 244 - .flex() 245 - .overflow_hidden() 246 - .whitespace_nowrap() 247 - .children(line.spans.into_iter().map(|span| { 248 - div().text_color(rgb(span.color)).child(span.text) 249 - })), 250 - ) 251 - } 252 - 253 - pub fn get_diff_text(diff: &FileDiff) -> String { 254 - diff.hunks 255 - .iter() 256 - .flat_map(|hunk| hunk.lines.iter()) 257 - .map(|line| { 258 - let (prefix, text) = match line { 259 - DiffLine::Context(content) => (" ", content.as_str()), 260 - DiffLine::Added(content) => ("+", content.as_str()), 261 - DiffLine::Deleted(content) => ("-", content.as_str()), 262 - }; 263 - format!("{}{}", prefix, text.trim_end_matches('\n')) 264 - }) 265 - .collect::<Vec<_>>() 266 - .join("\n") 267 - }
-391
apps/old-gui/src/ui/log_view.rs
··· 1 - use gpui::{ 2 - div, px, rgb, prelude::FluentBuilder, Context, Entity, Hsla, InteractiveElement, IntoElement, 3 - ParentElement, SharedString, StatefulInteractiveElement, Styled, 4 - }; 5 - 6 - use super::diff_view::DiffView; 7 - use super::theme::{Colors, TextSize}; 8 - use crate::app::Tatami; 9 - use crate::repo::log::{FileStatus, Revision}; 10 - 11 - pub fn render_log_view( 12 - revisions: &[Revision], 13 - selected_index: Option<usize>, 14 - selected_file: &Option<(String, String)>, 15 - diff_view: Option<Entity<DiffView>>, 16 - cx: &mut Context<Tatami>, 17 - ) -> impl IntoElement { 18 - let revision_count = revisions.len(); 19 - let selected_file_cloned = selected_file.clone(); 20 - 21 - let entries: Vec<_> = revisions 22 - .iter() 23 - .enumerate() 24 - .map(|(idx, rev)| { 25 - let is_selected = Some(idx) == selected_index; 26 - let is_last = idx == revision_count - 1; 27 - let on_click = cx.listener(move |tatami, _event, _window, cx| { 28 - tatami.select_revision(idx, cx); 29 - }); 30 - 31 - let file_handlers: Vec<_> = rev 32 - .files 33 - .iter() 34 - .map(|f| { 35 - let change_id = rev.change_id.clone(); 36 - let file_path = f.path.clone(); 37 - cx.listener(move |tatami, _event, _window, cx| { 38 - tatami.select_file(change_id.clone(), file_path.clone(), cx); 39 - }) 40 - }) 41 - .collect(); 42 - 43 - ( 44 - rev.clone(), 45 - is_selected, 46 - is_last, 47 - on_click, 48 - selected_file_cloned.clone(), 49 - diff_view.clone(), 50 - file_handlers, 51 - ) 52 - }) 53 - .collect(); 54 - 55 - div() 56 - .id("log-view") 57 - .flex() 58 - .flex_col() 59 - .flex_1() 60 - .overflow_y_scroll() 61 - .text_size(TextSize::SM) 62 - .children(entries.into_iter().map( 63 - |(rev, is_selected, is_last, on_click, selected_file, file_diff, file_handlers)| { 64 - render_revision_entry( 65 - rev, 66 - is_selected, 67 - is_last, 68 - on_click, 69 - selected_file, 70 - file_diff, 71 - file_handlers, 72 - ) 73 - }, 74 - )) 75 - } 76 - 77 - fn render_revision_entry<F, G>( 78 - rev: Revision, 79 - is_selected: bool, 80 - is_last: bool, 81 - on_click: F, 82 - selected_file: Option<(String, String)>, 83 - diff_view: Option<Entity<DiffView>>, 84 - file_handlers: Vec<G>, 85 - ) -> impl IntoElement 86 - where 87 - F: Fn(&gpui::ClickEvent, &mut gpui::Window, &mut gpui::App) + 'static, 88 - G: Fn(&gpui::ClickEvent, &mut gpui::Window, &mut gpui::App) + 'static, 89 - { 90 - let id_color = if rev.is_working_copy { 91 - rgb(Colors::WORKING_COPY) 92 - } else if rev.is_immutable { 93 - rgb(Colors::IMMUTABLE) 94 - } else { 95 - rgb(Colors::MUTABLE) 96 - }; 97 - 98 - let graph_symbol = if rev.is_working_copy { 99 - "@" 100 - } else if rev.is_immutable { 101 - "◆" 102 - } else { 103 - "○" 104 - }; 105 - 106 - let row_id: SharedString = format!("rev-{}", rev.change_id).into(); 107 - 108 - div() 109 - .flex() 110 - .flex_col() 111 - .child( 112 - div() 113 - .id(row_id) 114 - .w_full() 115 - .h(px(24.0)) 116 - .flex() 117 - .items_center() 118 - .cursor_pointer() 119 - .hover(|s| s.bg(rgb(Colors::BG_HOVER))) 120 - .on_click(on_click) 121 - .child(render_graph_column(graph_symbol, id_color.into(), is_last)) 122 - .child( 123 - div() 124 - .flex_1() 125 - .flex() 126 - .items_center() 127 - .gap_2() 128 - .min_w_0() 129 - .pr_2() 130 - .child( 131 - div() 132 - .flex_shrink_0() 133 - .text_color(id_color) 134 - .child(rev.change_id.clone()), 135 - ) 136 - .child( 137 - div() 138 - .flex_1() 139 - .min_w_0() 140 - .text_color(rgb(Colors::TEXT)) 141 - .overflow_hidden() 142 - .whitespace_nowrap() 143 - .text_ellipsis() 144 - .child(if rev.description.is_empty() { 145 - "(no description)".to_string() 146 - } else { 147 - rev.description.clone() 148 - }), 149 - ) 150 - .child(render_bookmarks(&rev.bookmarks)) 151 - .child( 152 - div() 153 - .flex_shrink_0() 154 - .text_color(rgb(Colors::TEXT_SUBTLE)) 155 - .child(rev.author.clone()), 156 - ) 157 - .child( 158 - div() 159 - .flex_shrink_0() 160 - .text_color(rgb(Colors::TEXT_SUBTLE)) 161 - .child(rev.timestamp.clone()), 162 - ), 163 - ), 164 - ) 165 - .when(is_selected, |el| { 166 - el.child(render_expanded_detail( 167 - &rev, 168 - is_last, 169 - &selected_file, 170 - diff_view, 171 - file_handlers, 172 - )) 173 - }) 174 - } 175 - 176 - fn render_graph_column(symbol: &'static str, color: Hsla, is_last: bool) -> impl IntoElement { 177 - div() 178 - .flex_shrink_0() 179 - .w(px(24.0)) 180 - .h(px(24.0)) 181 - .flex() 182 - .flex_col() 183 - .items_center() 184 - .child( 185 - div() 186 - .h(px(4.0)) 187 - .w(px(1.0)) 188 - .bg(rgb(Colors::BORDER_MUTED)), 189 - ) 190 - .child( 191 - div() 192 - .h(px(16.0)) 193 - .flex() 194 - .items_center() 195 - .justify_center() 196 - .text_color(color) 197 - .child(symbol), 198 - ) 199 - .child( 200 - div() 201 - .h(px(4.0)) 202 - .w(px(1.0)) 203 - .when(!is_last, |el| el.bg(rgb(Colors::BORDER_MUTED))), 204 - ) 205 - } 206 - 207 - fn render_expanded_detail<G>( 208 - rev: &Revision, 209 - is_last: bool, 210 - selected_file: &Option<(String, String)>, 211 - diff_view: Option<Entity<DiffView>>, 212 - file_handlers: Vec<G>, 213 - ) -> impl IntoElement 214 - where 215 - G: Fn(&gpui::ClickEvent, &mut gpui::Window, &mut gpui::App) + 'static, 216 - { 217 - let files_content = if rev.files.is_empty() { 218 - div() 219 - .text_size(TextSize::XS) 220 - .text_color(rgb(Colors::TEXT_MUTED)) 221 - .child("(no file changes)") 222 - } else { 223 - let change_id = rev.change_id.clone(); 224 - 225 - let file_entries: Vec<_> = rev 226 - .files 227 - .iter() 228 - .enumerate() 229 - .zip(file_handlers.into_iter()) 230 - .map(|((_idx, f), on_file_click)| { 231 - let (prefix, color) = match f.status { 232 - FileStatus::Added => ("A", Colors::ADDED), 233 - FileStatus::Modified => ("M", Colors::MODIFIED), 234 - FileStatus::Deleted => ("D", Colors::DELETED), 235 - }; 236 - 237 - let file_path = f.path.clone(); 238 - let is_file_selected = selected_file 239 - .as_ref() 240 - .map(|(cid, path)| cid == &change_id && path == &file_path) 241 - .unwrap_or(false); 242 - 243 - (f.path.clone(), prefix, color, is_file_selected, on_file_click) 244 - }) 245 - .collect(); 246 - 247 - div() 248 - .flex() 249 - .flex_col() 250 - .gap_1() 251 - .text_size(TextSize::XS) 252 - .children(file_entries.into_iter().map( 253 - |(file_path, prefix, color, is_file_selected, on_file_click)| { 254 - let file_id: SharedString = 255 - format!("file-{}-{}", change_id, file_path.replace('/', "-")).into(); 256 - 257 - let show_diff = is_file_selected && diff_view.is_some(); 258 - 259 - div() 260 - .flex() 261 - .flex_col() 262 - .gap_1() 263 - .child( 264 - div() 265 - .id(file_id) 266 - .flex() 267 - .gap_2() 268 - .cursor_pointer() 269 - .hover(|s| s.bg(rgb(Colors::BG_HOVER))) 270 - .on_click(on_file_click) 271 - .child( 272 - div() 273 - .w(px(12.0)) 274 - .text_color(rgb(color)) 275 - .child(prefix), 276 - ) 277 - .child( 278 - div() 279 - .text_color(rgb(Colors::TEXT)) 280 - .child(file_path), 281 - ), 282 - ) 283 - .when(show_diff, |el| { 284 - el.child( 285 - div() 286 - .ml(px(18.0)) 287 - .mt_1() 288 - .child(diff_view.clone().unwrap()), 289 - ) 290 - }) 291 - }, 292 - )) 293 - }; 294 - 295 - div() 296 - .flex() 297 - .child( 298 - div() 299 - .flex_shrink_0() 300 - .w(px(24.0)) 301 - .flex() 302 - .justify_center() 303 - .child( 304 - div() 305 - .w(px(1.0)) 306 - .h_full() 307 - .when(!is_last, |el| el.bg(rgb(Colors::BORDER_MUTED))), 308 - ), 309 - ) 310 - .child( 311 - div() 312 - .flex_1() 313 - .my_1() 314 - .mr_2() 315 - .p_3() 316 - .bg(rgb(Colors::BG_SURFACE)) 317 - .rounded_md() 318 - .border_1() 319 - .border_color(rgb(Colors::BORDER_MUTED)) 320 - .flex() 321 - .flex_col() 322 - .gap_2() 323 - .child( 324 - div() 325 - .flex() 326 - .gap_2() 327 - .items_baseline() 328 - .child( 329 - div() 330 - .text_color(rgb(Colors::WORKING_COPY)) 331 - .child(rev.change_id.clone()), 332 - ) 333 - .child( 334 - div() 335 - .text_color(rgb(Colors::TEXT_SUBTLE)) 336 - .text_size(TextSize::XS) 337 - .child(rev.commit_id.clone()), 338 - ), 339 - ) 340 - .child( 341 - div() 342 - .text_color(rgb(Colors::TEXT)) 343 - .child(if rev.description.is_empty() { 344 - "(no description)".to_string() 345 - } else { 346 - rev.description.clone() 347 - }), 348 - ) 349 - .child( 350 - div() 351 - .text_size(TextSize::XS) 352 - .text_color(rgb(Colors::TEXT_SUBTLE)) 353 - .child(format!("{} · {}", rev.author, rev.timestamp)), 354 - ) 355 - .child( 356 - div() 357 - .mt_2() 358 - .pt_2() 359 - .border_t_1() 360 - .border_color(rgb(Colors::BORDER_MUTED)) 361 - .child(files_content), 362 - ), 363 - ) 364 - } 365 - 366 - fn render_bookmarks(bookmarks: &[String]) -> impl IntoElement { 367 - div() 368 - .flex_shrink_0() 369 - .w(px(80.0)) 370 - .flex() 371 - .gap_1() 372 - .overflow_hidden() 373 - .children( 374 - bookmarks 375 - .iter() 376 - .take(2) 377 - .map(|b| { 378 - div() 379 - .flex_shrink_0() 380 - .px(px(6.0)) 381 - .py(px(1.0)) 382 - .rounded_sm() 383 - .bg(rgb(Colors::BG_ELEVATED)) 384 - .text_color(rgb(Colors::ACCENT)) 385 - .text_size(TextSize::XS) 386 - .whitespace_nowrap() 387 - .child(b.clone()) 388 - }) 389 - .collect::<Vec<_>>(), 390 - ) 391 - }
-4
apps/old-gui/src/ui/mod.rs
··· 1 - pub mod diff_view; 2 - pub mod log_view; 3 - pub mod syntax; 4 - pub mod theme;
-129
apps/old-gui/src/ui/status_view.rs
··· 1 - use gpui::{ 2 - ClipboardItem, CursorStyle, InteractiveElement, IntoElement, ParentElement, SharedString, 3 - StatefulInteractiveElement, Styled, div, px, rgb, 4 - }; 5 - 6 - use super::theme::{Colors, TextSize}; 7 - use crate::repo::status::{ChangedFile, FileStatus, WorkingCopyStatus}; 8 - 9 - pub fn render_status_view(status: &WorkingCopyStatus) -> impl IntoElement { 10 - div() 11 - .flex_shrink_0() 12 - .h(px(200.0)) 13 - .w_full() 14 - .flex() 15 - .flex_col() 16 - .border_t_1() 17 - .border_color(rgb(Colors::BORDER_MUTED)) 18 - .bg(rgb(Colors::BG_SURFACE)) 19 - .text_size(TextSize::SM) 20 - .child(render_header(status)) 21 - .child(render_file_list(&status.files)) 22 - } 23 - 24 - fn render_header(status: &WorkingCopyStatus) -> impl IntoElement { 25 - let change_id = status.change_id.clone(); 26 - let change_id_for_click = change_id.clone(); 27 - 28 - div() 29 - .flex_shrink_0() 30 - .px_3() 31 - .py_2() 32 - .flex() 33 - .gap_4() 34 - .items_center() 35 - .border_b_1() 36 - .border_color(rgb(Colors::BORDER_MUTED)) 37 - .child( 38 - div() 39 - .flex_shrink_0() 40 - .flex() 41 - .gap_2() 42 - .items_center() 43 - .child( 44 - div() 45 - .id("status-change-id") 46 - .text_color(rgb(Colors::WORKING_COPY)) 47 - .cursor(CursorStyle::PointingHand) 48 - .on_click(move |_event, _window, cx| { 49 - cx.write_to_clipboard(ClipboardItem::new_string( 50 - change_id_for_click.clone(), 51 - )); 52 - }) 53 - .child(format!("@ {}", change_id)), 54 - ) 55 - .child( 56 - div() 57 - .text_color(rgb(Colors::TEXT_SUBTLE)) 58 - .text_size(TextSize::XS) 59 - .child(status.commit_id.chars().take(8).collect::<String>()), 60 - ), 61 - ) 62 - .child( 63 - div() 64 - .flex_1() 65 - .min_w_0() 66 - .text_color(rgb(Colors::TEXT)) 67 - .overflow() 68 - .whitespace_nowrap() 69 - .text_ellipsis() 70 - .child(if status.description.is_empty() { 71 - "(no description)".to_string() 72 - } else { 73 - status.description.clone() 74 - }), 75 - ) 76 - } 77 - 78 - fn render_file_list(files: &[ChangedFile]) -> impl IntoElement { 79 - div() 80 - .flex_1() 81 - .overflow_y_auto() 82 - .px_3() 83 - .py_2() 84 - .flex() 85 - .flex_col() 86 - .gap_1() 87 - .children(files.iter().map(render_file_row).collect::<Vec<_>>()) 88 - } 89 - 90 - fn render_file_row(file: &ChangedFile) -> impl IntoElement { 91 - let (status_char, status_color) = match file.status { 92 - FileStatus::Added => ("A", rgb(Colors::ADDED)), 93 - FileStatus::Modified => ("M", rgb(Colors::MODIFIED)), 94 - FileStatus::Deleted => ("D", rgb(Colors::DELETED)), 95 - }; 96 - 97 - let path: SharedString = file.path.clone().into(); 98 - let path_for_click = path.clone(); 99 - let path_for_child = path.clone(); 100 - 101 - div() 102 - .id(path) 103 - .flex_shrink_0() 104 - .flex() 105 - .gap_2() 106 - .h(px(20.0)) 107 - .items_center() 108 - .cursor(CursorStyle::PointingHand) 109 - .on_click(move |_event, _window, cx| { 110 - cx.write_to_clipboard(ClipboardItem::new_string(path_for_click.to_string())); 111 - }) 112 - .child( 113 - div() 114 - .flex_shrink_0() 115 - .w(px(14.0)) 116 - .text_color(status_color) 117 - .child(status_char), 118 - ) 119 - .child( 120 - div() 121 - .flex_1() 122 - .min_w_0() 123 - .text_color(rgb(Colors::TEXT)) 124 - .overflow() 125 - .whitespace_nowrap() 126 - .text_ellipsis() 127 - .child(path_for_child), 128 - ) 129 - }
-230
apps/old-gui/src/ui/syntax.rs
··· 1 - use std::collections::HashMap; 2 - use std::path::Path; 3 - 4 - use tree_sitter_highlight::{HighlightConfiguration, HighlightEvent, Highlighter}; 5 - 6 - use super::theme::Colors; 7 - 8 - const HIGHLIGHT_NAMES: &[&str] = &[ 9 - "attribute", 10 - "comment", 11 - "constant", 12 - "constant.builtin", 13 - "constructor", 14 - "function", 15 - "function.builtin", 16 - "keyword", 17 - "number", 18 - "operator", 19 - "property", 20 - "punctuation", 21 - "punctuation.bracket", 22 - "punctuation.delimiter", 23 - "string", 24 - "type", 25 - "type.builtin", 26 - "variable", 27 - "variable.builtin", 28 - "variable.parameter", 29 - ]; 30 - 31 - #[derive(Clone, Debug)] 32 - pub struct StyledSpan { 33 - pub text: String, 34 - pub color: u32, 35 - } 36 - 37 - pub struct SyntaxHighlighter { 38 - highlighter: Highlighter, 39 - configs: HashMap<String, HighlightConfiguration>, 40 - } 41 - 42 - impl SyntaxHighlighter { 43 - pub fn new() -> Self { 44 - let mut highlighter = Self { 45 - highlighter: Highlighter::new(), 46 - configs: HashMap::new(), 47 - }; 48 - highlighter.load_languages(); 49 - highlighter 50 - } 51 - 52 - fn load_languages(&mut self) { 53 - if let Some(config) = Self::make_rust_config() { 54 - self.configs.insert("rust".to_string(), config); 55 - } 56 - if let Some(config) = Self::make_typescript_config() { 57 - self.configs.insert("typescript".to_string(), config); 58 - } 59 - if let Some(config) = Self::make_typescript_config() { 60 - self.configs.insert("tsx".to_string(), config); 61 - } 62 - if let Some(config) = Self::make_javascript_config() { 63 - self.configs.insert("javascript".to_string(), config); 64 - } 65 - if let Some(config) = Self::make_javascript_config() { 66 - self.configs.insert("jsx".to_string(), config); 67 - } 68 - if let Some(config) = Self::make_python_config() { 69 - self.configs.insert("python".to_string(), config); 70 - } 71 - if let Some(config) = Self::make_json_config() { 72 - self.configs.insert("json".to_string(), config); 73 - } 74 - } 75 - 76 - fn make_rust_config() -> Option<HighlightConfiguration> { 77 - let mut config = HighlightConfiguration::new( 78 - tree_sitter_rust::LANGUAGE.into(), 79 - "rust", 80 - tree_sitter_rust::HIGHLIGHTS_QUERY, 81 - tree_sitter_rust::INJECTIONS_QUERY, 82 - "", 83 - ) 84 - .ok()?; 85 - config.configure(HIGHLIGHT_NAMES); 86 - Some(config) 87 - } 88 - 89 - fn make_typescript_config() -> Option<HighlightConfiguration> { 90 - let mut config = HighlightConfiguration::new( 91 - tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(), 92 - "typescript", 93 - tree_sitter_typescript::HIGHLIGHTS_QUERY, 94 - "", 95 - tree_sitter_typescript::LOCALS_QUERY, 96 - ) 97 - .ok()?; 98 - config.configure(HIGHLIGHT_NAMES); 99 - Some(config) 100 - } 101 - 102 - fn make_javascript_config() -> Option<HighlightConfiguration> { 103 - let mut config = HighlightConfiguration::new( 104 - tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(), 105 - "javascript", 106 - tree_sitter_typescript::HIGHLIGHTS_QUERY, 107 - "", 108 - tree_sitter_typescript::LOCALS_QUERY, 109 - ) 110 - .ok()?; 111 - config.configure(HIGHLIGHT_NAMES); 112 - Some(config) 113 - } 114 - 115 - fn make_python_config() -> Option<HighlightConfiguration> { 116 - let mut config = HighlightConfiguration::new( 117 - tree_sitter_python::LANGUAGE.into(), 118 - "python", 119 - tree_sitter_python::HIGHLIGHTS_QUERY, 120 - "", 121 - "", 122 - ) 123 - .ok()?; 124 - config.configure(HIGHLIGHT_NAMES); 125 - Some(config) 126 - } 127 - 128 - fn make_json_config() -> Option<HighlightConfiguration> { 129 - let mut config = HighlightConfiguration::new( 130 - tree_sitter_json::LANGUAGE.into(), 131 - "json", 132 - tree_sitter_json::HIGHLIGHTS_QUERY, 133 - "", 134 - "", 135 - ) 136 - .ok()?; 137 - config.configure(HIGHLIGHT_NAMES); 138 - Some(config) 139 - } 140 - 141 - pub fn detect_language(file_path: &str) -> Option<String> { 142 - let ext = Path::new(file_path).extension()?.to_str()?; 143 - match ext { 144 - "rs" => Some("rust".to_string()), 145 - "ts" => Some("typescript".to_string()), 146 - "tsx" => Some("tsx".to_string()), 147 - "js" => Some("javascript".to_string()), 148 - "jsx" => Some("jsx".to_string()), 149 - "py" => Some("python".to_string()), 150 - "json" => Some("json".to_string()), 151 - _ => None, 152 - } 153 - } 154 - 155 - pub fn highlight_line(&mut self, code: &str, language: &str) -> Vec<StyledSpan> { 156 - let Some(config) = self.configs.get(language) else { 157 - return vec![StyledSpan { 158 - text: code.to_string(), 159 - color: Colors::TEXT, 160 - }]; 161 - }; 162 - 163 - let Ok(highlights) = self.highlighter.highlight(config, code.as_bytes(), None, |_| None) 164 - else { 165 - return vec![StyledSpan { 166 - text: code.to_string(), 167 - color: Colors::TEXT, 168 - }]; 169 - }; 170 - 171 - let mut spans = Vec::new(); 172 - let mut current_color = Colors::TEXT; 173 - let mut color_stack: Vec<u32> = Vec::new(); 174 - 175 - for event in highlights.flatten() { 176 - match event { 177 - HighlightEvent::Source { start, end } => { 178 - if start < end && end <= code.len() { 179 - let text = &code[start..end]; 180 - if !text.is_empty() { 181 - spans.push(StyledSpan { 182 - text: text.to_string(), 183 - color: current_color, 184 - }); 185 - } 186 - } 187 - } 188 - HighlightEvent::HighlightStart(highlight) => { 189 - color_stack.push(current_color); 190 - current_color = highlight_to_color(highlight.0); 191 - } 192 - HighlightEvent::HighlightEnd => { 193 - current_color = color_stack.pop().unwrap_or(Colors::TEXT); 194 - } 195 - } 196 - } 197 - 198 - if spans.is_empty() { 199 - vec![StyledSpan { 200 - text: code.to_string(), 201 - color: Colors::TEXT, 202 - }] 203 - } else { 204 - spans 205 - } 206 - } 207 - } 208 - 209 - fn highlight_to_color(highlight_index: usize) -> u32 { 210 - match HIGHLIGHT_NAMES.get(highlight_index) { 211 - Some(&"attribute") => Colors::SYNTAX_ATTRIBUTE, 212 - Some(&"comment") => Colors::SYNTAX_COMMENT, 213 - Some(&"constant") | Some(&"constant.builtin") => Colors::SYNTAX_CONSTANT, 214 - Some(&"constructor") => Colors::SYNTAX_TYPE, 215 - Some(&"function") | Some(&"function.builtin") => Colors::SYNTAX_FUNCTION, 216 - Some(&"keyword") => Colors::SYNTAX_KEYWORD, 217 - Some(&"number") => Colors::SYNTAX_NUMBER, 218 - Some(&"operator") => Colors::SYNTAX_OPERATOR, 219 - Some(&"property") => Colors::SYNTAX_PROPERTY, 220 - Some(&"punctuation") | Some(&"punctuation.bracket") | Some(&"punctuation.delimiter") => { 221 - Colors::SYNTAX_PUNCTUATION 222 - } 223 - Some(&"string") => Colors::SYNTAX_STRING, 224 - Some(&"type") | Some(&"type.builtin") => Colors::SYNTAX_TYPE, 225 - Some(&"variable") | Some(&"variable.builtin") | Some(&"variable.parameter") => { 226 - Colors::SYNTAX_VARIABLE 227 - } 228 - _ => Colors::TEXT, 229 - } 230 - }
-61
apps/old-gui/src/ui/theme.rs
··· 1 - use gpui::{px, Pixels, SharedString}; 2 - 3 - const FONT_MONO: &str = "Berkeley Mono"; 4 - 5 - pub fn font_family() -> SharedString { 6 - SharedString::from(FONT_MONO) 7 - } 8 - 9 - pub struct TextSize; 10 - 11 - impl TextSize { 12 - pub const XS: Pixels = px(10.0); 13 - pub const SM: Pixels = px(12.0); 14 - pub const BASE: Pixels = px(13.0); 15 - } 16 - 17 - pub struct Colors; 18 - 19 - impl Colors { 20 - // Backgrounds 21 - pub const BG_BASE: u32 = 0x0d1117; 22 - pub const BG_SURFACE: u32 = 0x161b22; 23 - pub const BG_ELEVATED: u32 = 0x21262d; 24 - pub const BG_HOVER: u32 = 0x30363d; 25 - pub const BG_SELECTED: u32 = 0x1f6feb; 26 - 27 - // Borders 28 - pub const BORDER_MUTED: u32 = 0x21262d; 29 - 30 - // Text 31 - pub const TEXT: u32 = 0xe6edf3; 32 - pub const TEXT_MUTED: u32 = 0x8b949e; 33 - pub const TEXT_SUBTLE: u32 = 0x6e7681; 34 - 35 - // Semantic 36 - pub const ACCENT: u32 = 0x58a6ff; 37 - 38 - // Git status 39 - pub const ADDED: u32 = 0x3fb950; 40 - pub const MODIFIED: u32 = 0xd29922; 41 - pub const DELETED: u32 = 0xf85149; 42 - 43 - // Revision colors 44 - pub const WORKING_COPY: u32 = 0x58a6ff; 45 - pub const MUTABLE: u32 = 0xe6edf3; 46 - pub const IMMUTABLE: u32 = 0x6e7681; 47 - 48 - // Syntax highlighting (GitHub Dark theme inspired) 49 - pub const SYNTAX_KEYWORD: u32 = 0xff7b72; 50 - pub const SYNTAX_STRING: u32 = 0xa5d6ff; 51 - pub const SYNTAX_COMMENT: u32 = 0x8b949e; 52 - pub const SYNTAX_FUNCTION: u32 = 0xd2a8ff; 53 - pub const SYNTAX_TYPE: u32 = 0x79c0ff; 54 - pub const SYNTAX_CONSTANT: u32 = 0x79c0ff; 55 - pub const SYNTAX_NUMBER: u32 = 0x79c0ff; 56 - pub const SYNTAX_VARIABLE: u32 = 0xffa657; 57 - pub const SYNTAX_PROPERTY: u32 = 0x7ee787; 58 - pub const SYNTAX_OPERATOR: u32 = 0xff7b72; 59 - pub const SYNTAX_PUNCTUATION: u32 = 0x8b949e; 60 - pub const SYNTAX_ATTRIBUTE: u32 = 0x7ee787; 61 - }
-36
apps/old-gui/src/watcher.rs
··· 1 - use futures::channel::mpsc; 2 - use notify::{RecommendedWatcher, RecursiveMode}; 3 - use notify_debouncer_mini::{new_debouncer, DebounceEventResult, Debouncer}; 4 - use std::path::PathBuf; 5 - use std::time::Duration; 6 - 7 - pub struct RepoWatcher { 8 - _debouncer: Debouncer<RecommendedWatcher>, 9 - } 10 - 11 - pub fn watch_repo(workspace_root: PathBuf) -> (RepoWatcher, mpsc::UnboundedReceiver<()>) { 12 - let (tx, rx) = mpsc::unbounded(); 13 - let jj_repo_path = workspace_root.join(".jj").join("repo"); 14 - 15 - let mut debouncer = new_debouncer( 16 - Duration::from_millis(500), 17 - move |result: DebounceEventResult| { 18 - if let Ok(_events) = result { 19 - let _ = tx.unbounded_send(()); 20 - } 21 - }, 22 - ) 23 - .expect("Failed to create filesystem watcher"); 24 - 25 - debouncer 26 - .watcher() 27 - .watch(&jj_repo_path, RecursiveMode::Recursive) 28 - .expect("Failed to watch .jj/repo directory"); 29 - 30 - ( 31 - RepoWatcher { 32 - _debouncer: debouncer, 33 - }, 34 - rx, 35 - ) 36 - }
assets/screenshot.png

This is a binary file and will not be displayed.