pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/editors/reovim



Module Name:    pkgsrc
Committed By:   pin
Date:           Thu Jan 15 18:23:44 UTC 2026

Modified Files:
        pkgsrc/editors/reovim: Makefile cargo-depends.mk distinfo
        pkgsrc/editors/reovim/patches: patch-Cargo.toml

Log Message:
editors/reovim: update to 0.8.1

## [0.8.1] - Unreleased

### Changed

- **Screen module reorganization** - Better separation of concerns
  - Created `render/` submodule: chrome (status/tab/cmd line), line, pipeline, separator
  - Created `layout/` submodule: split tree, tab management
  - Created `WindowStore` as single source of truth for windows
  - Simplified `Window` struct from 14 fields to 8 fields:
    - `bounds: WindowRect` (combines x, y, width, height)
    - `viewport: Viewport` (combines scroll, cursor, desired_col)
    - `config: WindowConfig` (groups line_number, scrollbar, sign_column, border)
    - `id: WindowId` (type-safe wrapper instead of raw usize)

### Added

- **Enhanced Markdown Decorations** (Epic #89) - Complete markdown rendering overhaul
  - **Phase 1: Heading Decorations** (#90)
    - Heading indentation by level (H1=0, H2=1 space, H3=2 spaces, etc.)
    - Inline code span background styling with backtick concealment
    - Link background styling for distinct link appearance
    - Strikethrough styling with `~~` marker concealment
  - **Phase 2: Horizontal Rules and Blockquotes** (#91)
    - Horizontal rules: `---`/`***`/`___` → full-width `────────` line
    - Blockquotes: `>` → `│ ` vertical bar with background color
  - **Phase 3: Table Border Decorations** (#92)
    - Visual unicode borders (─│┌┐└┘├┤┬┴┼) around markdown tables
    - Cells expand to uniform width with proper padding
    - New `MarkdownTableBorderStage` render stage
    - `virtual_lines` system in RenderData for rendering lines above/below content

- **% motion for matching bracket navigation** (Issue #123) - Jump between matching brackets
  - Supports `()`, `[]`, `{}` bracket pairs
  - Vim-compatible behavior: cursor on bracket jumps to match, otherwise searches forward on line
  - Inclusive motion for operator support (`d%`, `y%`, `c%`)
  - Added `Motion::MatchingBracket` variant to core motion system
  - Added `CursorMatchingBracketCommand` with `%` keybinding

- **Backtick auto-pair completion** (Issue #124) - Auto-close backticks when typing
  - Typing `` ` `` now auto-completes to ``` `` ``` with cursor between
  - Useful for markdown inline code, JavaScript template literals, shell command substitution
  - Added to pair plugin rainbow bracket highlighting

- **Explorer backspace and dot navigation** (Issue #128) - Navigate directories with Backspace and dot
  - `<Backspace>` in explorer navigates up to parent directory (changes root)
  - `.` sets current selection as new root directory
  - Matches nvim-tree behavior (navigate up with backspace, set root with dot)
  - Backspace still works for text deletion in input mode (create/rename/filter)

- **Sticky context headers** (Issue #88) - Overlay at viewport top showing enclosing scopes
  - Displays 1-3 parent scope headers as user scrolls through files
  - Works with both markdown headings and code scopes (functions, classes, impl blocks)
  - Uses same ContextProvider infrastructure as statusline breadcrumbs (#130, #131, #132)
  - Buffer content passed via EditorContext (same pattern as #133) for markdown support
  - Settings: `sticky_headers_enabled`, `sticky_headers_max_count`, `sticky_headers_show_separator`
  - z-order 125 overlay window using PluginWindow trait
  - Auto-queries context at top visible line

- **TreesitterContextProvider** - AST-based scope detection for breadcrumb navigation (#132)
  - Detects code hierarchy (functions, classes, impl blocks, methods) by analyzing treesitter parse tree
  - Multi-language support: Rust, Python, JavaScript, C, C++, Go, Java
  - Provides context at cursor position: e.g., `> mod.rs > impl Screen > fn render_windows`
  - Phase 3 of context provider system, enables statusline breadcrumb integration

- **Core ContextProvider trait and registry** (Issue #130) - Foundation for plugin-based context/scope detection
  - `ContextProvider` trait with `get_context()`, `name()`, `supports_buffer()` methods
  - `ContextItem` struct for representing individual context levels (text, line range, kind, level)
  - `ContextHierarchy` struct with helper methods (`to_breadcrumb()`, `current_scope()`, `at_level()`)
  - Multi-provider registry in `PluginStateRegistry` with priority-based resolution
  - Enables future implementations: markdown headings, treesitter AST nodes, LSP symbols

- **Markdown Context Provider** (Issue #131) - Detect heading hierarchy in markdown files
  - `MarkdownContextProvider` implementation with tree-sitter parsing
  - Supports H1-H6 ATX-style headings (`#`, `##`, `###`, etc.)
  - Smart caching with content hash for performance (>95% cache hit rate)
  - Stack-based hierarchy algorithm for nested headings
  - Returns breadcrumb format: `> CLAUDE.md > Architecture > Workspace Structure`
  - Extended `ContextProvider` trait API to pass `content: &str` parameter
  - 7 comprehensive unit tests covering edge cases

- **Context breadcrumb in statusline** (Issue #133) - Shows current scope hierarchy in statusline
  - Displays breadcrumb like: ` > CLAUDE.md > Section > Subsection > `
  - Works with markdown headings via `MarkdownContextProvider`
  - Works with code scopes via `TreesitterContextProvider` (Rust, Python, JS, C, etc.)
  - Smart truncation for long names and deep nesting
  - Settings: `context_breadcrumb_enabled`, `context_separator`, `context_max_items`
  - Extended `StatuslineRenderContext` to include active buffer content, ID, and cursor position
  - Completes Epic #129 (Context Provider Trait System)

- **Scope navigation commands** (Issue #133) - Jump between scope headers with keyboard shortcuts
  - `gu` - Jump to parent scope (go up)
  - `[s` - Jump to previous scope header (placeholder - TODO)
  - `]s` - Jump to next scope header (placeholder - TODO)
  - Works across all languages with context providers
  - Commands registered in treesitter plugin with keybindings

- **File explorer visual enhancements** (Issue #127) - nvim-tree style coloring and tree structure
  - **Dedicated FileExplorerStyles** in theme system with distinct colors for each file category:
    - Directories: blue (bold)
    - Source files: orange (for .rs, .py, .js, etc.)
    - Config files: gray/dimmed (for .toml, .yaml, .json)
    - Documentation: cyan (for README, .md)
    - Data files: magenta (for .csv, .sql, .db)
    - Media files: pink (for images, audio, video)
    - Special files: yellow (for LICENSE, .gitignore)
    - Lock files: dimmed yellow (for Cargo.lock, package-lock.json)
    - Executable files: green (for shell scripts, binaries)
    - Hidden files: dimmed gray
  - Box-drawing characters (│, ├, └) for visual tree hierarchy
  - Three tree styles: None (indent only), Simple (ASCII ">"), BoxDrawing (Unicode)
  - Hidden items count display at bottom: "(N hidden)" when hidden files are not shown
  - Explorer settings section with options:
    - `explorer.enable_colors` - Toggle file type coloring (default: true)
    - `explorer.tree_style` - Choose tree drawing style (default: "box_drawing")
    - `explorer.show_hidden` - Toggle hidden files visibility (default: false)
    - `explorer.show_sizes` - Toggle file size display (default: false)

### Enhanced

- **Bidirectional multi-char search** (Issue #125) - `s` key now searches both directions simultaneously
  - Added `Direction::Both` variant to support bidirectional search
  - Labels prioritize by distance (Manhattan distance from cursor)
  - Closest matches get simpler labels (s, f, n, j, k...)
  - Works with operators: `dsab` deletes to closest match in either direction

- **Viewport-limited jump labels** (Issue #126) - Range-finder labels now only appear within visible viewport
  - Added `active_window_height` field to EditorContext
  - Jump labels filtered by viewport boundaries in render
  - Dramatically reduces visual clutter in large files (100+ matches → ~50 visible labels)
  - Labels update automatically when scrolling

### Fixed

- **Cursor no longer moves into padding areas in decorated tables** (#89)
  - Added `col_mapping` to `DecorationKind::Conceal` for buffer→visual column translation
  - Position-based mapping algorithm that skips padding areas
  - Cursor stays on content characters, jumps directly to trailing space/pipe

- **Visual mode now disables decorations on selected lines** (#89)
  - Replaced single-line `is_insert_mode` with `skip_decoration_lines: HashSet<usize>`
  - In visual mode, all selected lines show raw markdown (like insert mode)
  - Works with visual (`v`), visual line (`V`), and visual block (`Ctrl-V`) modes

- **Multiple Conceal decorations per line now render correctly** (Issue #143)
  - Changed from single-index iterator to multi-decoration lookup
  - Now finds ALL decorations covering each character position
  - Conceal decorations can now apply background styles when both are present
  - Enables proper rendering of markdown table pipes and other multi-conceal scenarios

### Changed

- **reo-cli**: Changed default output format for `keys` command from `plain_text` to `raw_ansi` for better visual feedback (Issue #134)
- **reo-cli**: Added `--format` flag to `keys` command to allow choosing output format (raw_ansi, plain_text, cell_grid)

## [0.8.0] - 2026-01-09

### Fixed

- **tokio::spawn panics in EventBus handlers** (Issue #120) - Fix plugins using `tokio::spawn()` after PR #85 moved EventBus to std::thread
  - Capture `tokio::runtime::Handle::current()` at `subscribe()` start (runs in tokio context)
  - Use `handle.spawn()` instead of `tokio::spawn()` in EventBus handlers
  - Affected: completion (BufferModified), LSP (GotoDefinition, GotoReferences, ShowHover)

### Performance

- **Priority channels for user input events** (Issue #95, #86) - Dual-channel architecture for responsive user experience
  - Separates high-priority user input from low-priority background events
  - `hi_tx/hi_rx` (64 capacity): user input, mode changes, text insertion
  - `lo_tx/lo_rx` (255 capacity): render signals, plugins, background tasks
  - Biased `select!` ensures high-priority events processed first
  - `MAX_LO_DRAIN=16` provides fairness for background events
  - Auto-pair latency reduced from ~100ms to ~92us (1000x improvement, closes #86)

### Added

- **GitHub Actions CI pipeline** (Issue #121) - Automated code quality checks on PRs and pushes to develop
  - Format check with `cargo fmt --all --check`
  - Clippy with zero-warning enforcement (`-D warnings`)
  - Build verification for entire workspace
  - Unit tests and doc tests
  - Rust cache for faster subsequent builds

- **Dynamic content in DisplayRegistry** (Issue #57) - Allow plugins to show contextual status line info
  - `DisplayContext` struct for render context with `PluginStateRegistry` access
  - `DynamicDisplayFn` type alias for dynamic display callbacks
  - `DisplayInfo::with_dynamic()` method for fluent configuration
  - `DisplayInfoBuilder::dynamic()` builder method
  - `DisplayRegistry::display_string()` now takes `PluginStateRegistry` and invokes dynamic callbacks
  - Enables dynamic status like "Explorer (3 files)" or "Telescope (42 results)"

- **Window resize operations** (Issue #54) - Implement direction-specific window resizing
  - `SplitNode::adjust_ratio_in_direction()` - Find innermost split matching direction and adjust ratio
  - `Screen::resize_window(direction, delta)` - Public API for resizing active window
  - `WindowAction::Resize` handler now functional (5% ratio change per unit delta)
  - Vertical direction adjusts width, Horizontal direction adjusts height

- **Mouse click and scroll support** (Issue #59) - Basic mouse interaction for cursor positioning and scrolling
  - Left click: Move cursor to clicked position and focus window if different
  - Scroll wheel: Move viewport up/down by 3 lines, cursor adjusts to stay visible
  - Coordinate translation: Screen position to buffer position with gutter and scrollbar awareness
  - Server mode support: Mouse events forwarded in dual-output mode

- **Theme customization/override system** (Issue #55) - Allow users to override individual colors/styles in TOML config
  - `ThemeOverrides` struct for storing style path -> override mappings
  - `StyleOverride` struct with fg, bg, underline_color, and attribute options
  - `parse_color()` function supporting hex, rgb(), ansi:N, and named color formats
  - `Theme::from_name_with_overrides()` and `Theme::apply_overrides()` methods
  - `editor.theme_overrides` field in profile config schema
  - Example config:
    ```toml
    [editor.theme_overrides]
    "statusline.background" = { bg = "#1a1b26" }
    "gutter.line_number" = { fg = "#565f89" }
    "statusline.mode.normal" = { fg = "#1a1b26", bg = "#7aa2f7", bold = true }
    ```

- **Consolidated mode display logic into DisplayRegistry** (Issue #53) - Centralize all mode display logic in one place
  - New `display/icons.rs` module for icon constants
  - `DisplayRegistry::mode_icon()` - Get icon for current mode state
  - `DisplayRegistry::mode_style()` - Get style for current mode from theme
  - `DisplayRegistry::mode_name()` - Get display name ("Normal", "Insert", etc.)
  - `DisplayRegistry::short_mode_name()` - Get short name ("NORMAL", "INSERT", etc.)
  - `DisplayRegistry::hierarchical_display()` - Build "Kind | Mode | SubMode" string
  - Removed duplicate logic from `Screen` (was `get_mode_style()`, `get_mode_name()`)
  - Removed `ModeState::hierarchical_display()` - use `DisplayRegistry` instead
  - `ModeSnapshot::from_mode()` added for RPC serialization with display registry

- **Metadata-driven interactor input behavior** (Issue #46) - Refactored `accepts_char_input()` to use registry instead of hardcoded checks
  - `InteractorConfig` struct for configuring input behavior per interactor
  - `InteractorRegistry` for storing and querying interactor configurations
  - `accepts_char_input_with(registry)` method on `ModeState` for registry-based lookup
  - `PluginContext::register_interactor()` for plugins to register their input behavior
  - Window mode registered via `InteractorConfig::using_keymap()` instead of hardcoded exclusion
  - Default behavior: unregistered interactors accept character input (safe default)

- **HandlerContext mode change helpers** (Issue #44) - Reduce mode change boilerplate
  - `enter_interactor_mode(component_id)` - Enter interactor sub-mode for text input
  - `exit_to_normal()` - Return to normal editor mode
  - `set_mode(mode)` - Set arbitrary mode state for edge cases
  - Updated Range-Finder plugin: 5 mode changes simplified
  - Updated Microscope plugin: 1 mode change simplified

- **Subscription helper macros** (Issue #41) - Reduce plugin boilerplate with three new macros
  - `subscribe_state!` - Simple state mutation + render pattern (4 variants)
  - `subscribe_state_mode!` - State mutation + mode change + render (2 variants)
  - `subscribe_state_conditional!` - Conditional render based on return value (4 variants)
  - Migrated Explorer plugin: 23 subscription blocks (~180 lines saved)
  - Migrated Range-Finder plugin: 5 subscription blocks (~30 lines saved)
  - Total: ~210 lines of boilerplate removed across 28 subscription blocks

- **`subscribe_targeted()` API for EventBus** (Issue #45) - New method to automatically filter events by component ID
  - `TargetedEvent` trait for events with a `target: ComponentId` field
  - Implemented for `PluginTextInput`, `PluginBackspace`, and `RequestFocusChange`
  - Eliminates boilerplate target-checking code in plugin event handlers
  - Migrated 7 subscriptions across 4 plugins (Explorer, Microscope, Range-finder, Which-key)

### Changed

- **Remove dead status line code** (Issue #50) - Delete unused `StatusLineComponent` and consolidate duplicates
  - Deleted `lib/core/src/component/status_line.rs` (303 lines) - `StatusLineComponent` was never instantiated
  - Deleted `lib/core/src/screen/status_line.rs` (256 lines) - `StatusLineRenderer` trait was never called
  - Removed `impl StatusLineRenderer for Screen` (31 lines) - Only consumer of deleted functions
  - Active rendering uses `Screen::render_status_line_to_buffer()` which remains unchanged
  - Fixes OperatorPending style bug (was in dead code path using wrong style)

- **Remove unused cursor and animation theme features** (Issue #49) - Dead code cleanup
  - Removed `CursorStyles` struct (line, column, glow, pulse fields never accessed)
  - Removed `EffectConfig` struct (never instantiated)
  - Removed `AnimationConfig` struct (actual animation system uses hardcoded frame rate)
  - Removed `HighlightGroup::CursorEffect` enum variant (never applied)
  - Updated docs/animation-system.md to remove future config section

- **RAII-based cursor synchronization** (Issue #48) - Centralize cursor sync between windows and buffers
  - Added `Screen::save_cursor_to_active_window()` for pre-split cursor save
  - Added `Screen::switch_active_window()` for full cursor handoff during navigation
  - Refactored `handle_window_split()` to use centralized API (15 lines → 1 call)
  - Refactored `handle_window_navigate()` to use centralized API (50 lines → direction lookup + 1 call)
  - Eliminates manual cursor sync scattered across handlers, reducing error risk

- **Split large subscribe() methods** (Issue #52) - Improve plugin maintainability by splitting monolithic subscribe() methods
  - Explorer plugin: Split 426-line method into 9 focused sub-methods (raw_input, navigation, tree_operations, clipboard, file_operations, input_handling, visual_mode, focus_visibility, popup)
  - Range-Finder plugin: Split 191-line method into 5 focused sub-methods (jump_mode_handlers, jump_input_handler, fold_handlers, cleanup)
  - Removed `#[allow(clippy::too_many_lines)]` pragmas from both plugins

- **Decomposed window render_to_buffer() method** (Issue #51) - Extract focused helper methods for better testability
  - `compute_line_number_width()` - Calculate line number column width
  - `render_fold_marker_to_buffer()` - Render collapsed fold indicators
  - `render_empty_lines_to_buffer()` - Fill viewport with tilde markers
  - Main method reduced from ~106 to ~82 lines with clearer separation of concerns

- **Declarative mode metadata** (Issue #42) - Replace hardcoded `mode_for_command()` with `resulting_mode()` trait method
  - Added `resulting_mode()` method to `CommandTrait` with default `None` return
  - Implemented for 32 mode-changing commands (mode, window, operator, command-line)
  - Replaced 60-line string matching function with 6-line trait-based lookup
  - Provides compile-time safety: no more missing match arms causing flaky tests
  - Fixed bug: `enter_visual_line_mode` was missing from old implementation

- **Unified active buffer tracking** (Issue #47) - Removed redundant `active_buffer_id` field from Runtime
  - Screen is now the single source of truth for active buffer ID
  - `Runtime::active_buffer_id()` method derives value from `Screen::active_buffer_id()`
  - Eliminates dual tracking and manual synchronization between Runtime and Screen
  - Simplifies buffer switching, file opening, and window navigation code

- **Window move commands use SwapDirection** (Issue #54) - 8 move commands now use `SwapDirection` instead of `MoveDirection`
  - `WindowMoveLeft/Down/Up/Right` commands and their window-mode variants now perform actual swaps
  - Consistent behavior between move and swap operations

### Removed

- **`WindowAction::MoveDirection`** (Issue #54) - Removed redundant enum variant
  - Was identical in purpose to existing `SwapDirection` but never implemented
  - 8 commands updated to use `SwapDirection` directly

### Fixed

- **Light theme syntax highlighting** (Issue #43) - Light theme now uses proper One Light colors
  - Added `light_palette` module with Atom One Light colors (red, blue, purple, green, cyan, orange, yellow)
  - Created `TreesitterTheme::light()` with comprehensive capture mappings
  - Fixed `from_theme_name()` to correctly return light theme instead of dark
  - 3 new tests for light theme functionality

- **RegisterOption events not processed** (Issue #39) - Options registered via `bus.emit(RegisterOption)` are now properly added to the option registry
  - `:set` commands now work for all core options (signcolumn, number, tabwidth, etc.)
  - Fix: Create OptionRegistry before plugins subscribe and add event handler

## [0.7.10] - 2026-01-06

### Fixed

- **reo-cli REPL help text** (Issue #36) - Help text now auto-generated from clap definitions
  - Fixed incorrect `screen` command description (said "dimensions" but returned content)
  - Removed non-existent `screen-content` command from help
  - Added `screen-size` command for getting dimensions
  - Added `capture` as visible alias for `screen` command
  - Help text now always matches implementation (single source of truth)
  - Added 10 unit tests for command parsing and help generation

### Added

- **Sign column and virtual text configuration** (Issue #29) - Phase 3 of diagnostics system (#21)
  - Sign column modes: `auto`, `yes`, `no`, `number`
    - `auto`: Show sign column only when signs are present (width 2)
    - `yes`: Always show sign column (default, width 2)
    - `no`: Never show sign column
    - `number`: Display signs as background color on line numbers
  - Virtual text options: `:set virtual_text`, `virtual_text_prefix`, `virtual_text_max_length`, `virtual_text_show`
    - `virtual_text` (bool): Enable/disable virtual text display
    - `virtual_text_prefix` (string): Custom prefix (empty = use severity icons)
    - `virtual_text_max_length` (number): Maximum length before truncation (default: 80)
    - `virtual_text_show` (string): "first", "highest", or "all" mode
  - Settings menu integration for all new options under "Diagnostics" section
  - 14 new tests for sign column modes and virtual text configuration

- **Virtual text system for inline diagnostics** (Issue #28) - Display diagnostic messages after line content
  - `VirtualTextEntry` type with text, style, and priority fields
  - `VirtualTextStyles` in theme for severity-based styling (error, warn, info, hint)
  - Rendering with automatic truncation and ellipsis when exceeding viewport
  - LSP integration: severity icons (● error, ◐ warning, ⓘ info, · hint) + message
  - Priority-based resolution (ERROR 404 > WARNING 403 > INFO 402 > HINT 401)
  - 44 new tests covering all virtual text functionality

- **Multi-instance server support** (Issue #19) - Multiple reovim servers can now run concurrently
  - Port fallback: When default port (12521) is in use, server automatically tries 12522, 12523, etc.
  - Port files: Each server writes `~/.local/share/reovim/servers/<pid>.port` for discovery
  - `reo-cli list` command: Lists all running reovim server instances with PID and port
  - Auto-discovery: `reo-cli` auto-connects to single server, prompts when multiple servers running
  - Clean shutdown: Port files automatically removed when server exits

- **Ex-command registry system** - Plugins can now register custom ex-commands dynamically
  - `ExCommandRegistry` for thread-safe command registration and dispatch
  - `RegisterExCommand` event for plugin-based command registration
  - Support for three command patterns: zero-arg, single-arg, and subcommand
  - All handlers include descriptions for help/completion systems
- **Profile trait system** - Framework for extensible configuration profiles
  - `Configurable` trait for components that participate in profile save/load
  - `ProfileRegistry` for coordinating serialization across all registered components
  - `RegisterConfigurable` event for plugin components to register for profile management
  - Profile events: `ProfileLoadEvent`, `ProfileSaveEvent`, `ProfileListEvent`
- **ProfilesPlugin** - New plugin for profile command handling
  - `:profile list` - Open profile picker
  - `:profile load <name>` - Load a profile by name
  - `:profile save <name>` - Save current settings as a profile
- **Health check system** - Diagnostic system for verifying core and plugin status
  - `:health` and `:checkhealth` commands to open health check modal
  - Modal UI (z-order 700) with category grouping and navigation (j/k, r, q/Esc)
  - Expandable details view - press Space/Enter to toggle full details for selected check
  - `RegisterHealthCheck` event for plugins to register custom health checks
  - Built-in checks for runtime, plugin system, event bus, terminal, and keybindings
  - Plugin-decoupled architecture - zero core modifications using v0.7.9+ ex-command registry
- **Plugin-specific status line styling** - Plugins can now provide custom colors for status line
  - Each plugin defines its own `Style` with custom fg/bg colors
  - Visual identity: Explorer (orange), Microscope (blue), Settings (gray), Leap (green), Health (teal), Jump (gold)
  - Status line shows `[INTERACTOR][MODE]` as separate colored sections
  - `Color` type exported from `reovim_core::highlight` for plugin use
- **LSP debugging tools** (Issue #26) - Tools for debugging LSP communication
  - LSP health check: Shows server status, document count, diagnostic stats, and timestamps in `:health` modal
  - `:LspLog` command to open the latest LSP log file directly in the editor
  - Dedicated LSP log: `--lsp-log` flag for capturing JSON-RPC messages to separate file
    - `--lsp-log=default` creates timestamped `lsp-<timestamp>.log` in data directory
    - `--lsp-log=/path/to/file.log` for custom path
    - `--lsp-log=default:LEVEL` or `--lsp-log=/path:LEVEL` for configurable verbosity
    - Supported levels: error, warn, info, debug, trace (default: trace)
    - Logs show `->` for outgoing and `<-` for incoming messages
- **Request-driven cursor movement with operator support** - Plugin-to-runtime communication for cursor positioning
  - `RequestCursorMove` event allows plugins to request cursor movement
  - `Motion::JumpTo { line, column }` variant for absolute positioning
  - `InnerEvent::MoveCursor` for runtime event loop handling
  - Automatic operator integration: `d`/`y`/`c` + jump creates `OperatorMotionAction`
  - Runtime detects `OperatorPending` mode and applies operators to jump targets
  - Enables jump navigation, LSP goto-definition, and other plugin-driven navigation with full vim operator semantics

### Fixed

- **LSP diagnostics not received after opening files** (Issue #26)
  - rust-analyzer uses LSP 3.17 "pull diagnostics" instead of push notifications
  - Now request diagnostics immediately after `textDocument/didOpen`
  - Handle `workspace/diagnostic/refresh` requests from server

### Changed

- **DisplayInfo API (BREAKING)** - Simplified and made styling mandatory
  - `DisplayInfo::new()` now requires `style: Style` parameter
  - Removed `EditModeKey`, `SubModeKey` enums (mode-specific displays removed)
  - Removed `DisplayInfoBuilder::when_mode()` and `when_sub_mode()` methods
  - `DisplayRegistry` simplified to single HashMap lookup
  - `register_builtins()` now requires `theme` parameter
  - Plugins must update to provide styles when registering display info

- **Ex-command architecture refactored** - Full decoupling of core from plugin-specific commands (Issue #13)
  - Removed `Settings`, `ProfileLoad`, `ProfileSave`, `ProfileList` variants from `ExCommand` enum
  - Added generic `Plugin { command: String }` variant for all plugin-registered commands
  - Settings menu now registers `:settings` command via `RegisterExCommand` event
  - Profile commands now handled by dedicated ProfilesPlugin
  - Core handlers dispatch to registry instead of hardcoded match arms
- **Paste animation** - Visual pulse animation feedback for paste operations
  - Cyan pulsing glow (600ms, 2 cycles) when pasting with `p` or `P`
  - Distinct from yank's gold fade animation
  - Works with both characterwise and linewise paste
  - Helps locate pasted content in large files
- **Performance logging reduced** - [RTT] performance logs lowered from debug to trace level
  - Render timing, event loop, pipeline execution now require TRACE log level
  - Reduces noise in DEBUG logs while still available for performance analysis
  - Affects 10+ log statements across runtime, screen, and render modules

### Fixed

- **Yank animation for linewise motions** - `yj` and `yk` now correctly highlight entire lines
  - Previously only highlighted partial lines (current line for `yj`, upper line for `yk`)
  - Now properly animates all yanked lines from start to end
  - Affects all linewise motions: `j`, `k`, `gg`, `G`
- **Markdown decorations update immediately on insert/change** - Fixed stale cache bug in saturator
  - Saturator now calls `decorator.refresh()` before `decoration_range()` to update cached parse tree
  - Mirrors the pattern from syntax highlighting (`update_highlights()`)
  - Heading icons, bullets, checkboxes, and emphasis concealment now update in real-time
- **Decorations disabled on cursor line in insert mode** - Show raw markdown syntax while typing
  - When in insert mode, decorations are filtered out on the current line
  - Allows seeing raw markers (`# Heading`, `**bold**`, etc.) while editing
  - Decorations reappear when returning to normal mode

### Changed

- **Code cleanup in markdown plugin** - Removed dead code and streamlined query loading
  - Deleted `markdown/mod.rs` (685 lines of dead code, obsolete LanguageRenderer implementation)
  - Converted embedded query constants to `.scm` files via `include_str!()` (57 lines → 2 lines)
  - Queries now editable in `.scm` files with syntax highlighting support
  - Total reduction: ~740 lines

- **Range-Finder plugin** - Merged Leap and Fold plugins into unified navigation system
  - Combined jump navigation and code folding into single `reovim-plugin-range-finder` plugin
  - New architecture: `src/jump/` (navigation subsystem) + `src/fold/` (visibility subsystem)
  - Multi-char search: `s` + 2 chars + label to jump (leap-style navigation)
  - Enhanced f/t motions: `f`/`F`/`t`/`T` now use label selection for multiple matches
  - Smart auto-jump: 1 match → instant, 2-676 matches → show labels, >676 → cancel
  - Code folding: `za`/`zo`/`zc`/`zR`/`zM` (unchanged functionality)
  - Home row priority labels: `sfnjklhodweimbuyvrgtaqpcxz`
  - Single-char labels for <=26 matches, two-char labels for >26 matches (up to 676)
  - Two-char label input: first character validates, second completes the jump
  - Label overlay rendering with z-order 200 (above editor, below popups)
  - **BREAKING**: `f`/`F`/`t`/`T` keys now trigger leap-style label selection (replaces default vim single-char find/till)
  - Removed separate `reovim-plugin-leap` and `reovim-plugin-fold` plugins
  - Total plugin size: ~2,000 lines (vs 2,295 lines for separate plugins)
  - `[text](url)` → `text` (brackets and URL hidden)

- **Table rendering** - Header and delimiter row styling
  - Header row background highlighting
  - Delimiter row dimmed styling via `pipe_table*` node captures

- **Style system enhancements** - Added new text attributes
  - Added `BLINK` and `DIM` attribute constants
  - Added `blink()` and `dim()` builder methods to `Style`

- **Conceal style merging** - Fixed replacement character styling
  - Conceal replacement chars now use conceal's style merged with syntax highlights
  - Heading icons display with proper bold + color styling

- **Insert mode raw display** - Show raw markdown when editing
  - Decorations disabled in insert mode for accurate cursor positioning
  - Raw `#`, `*`, `**`, `[]()` markers visible during editing
  - Returns to concealed view on mode exit

- `lib/core/src/component/mod.rs` - Component module exports
- `lib/core/src/component/display.rs` - DisplayComponent trait + RenderContext
- `lib/core/src/component/status_line.rs` - StatusLineComponent
- `lib/core/src/component/tab_line.rs` - TabLineComponent

### Testing

- 318 unit tests passing
- All integration tests passing


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 pkgsrc/editors/reovim/Makefile
cvs rdiff -u -r1.2 -r1.3 pkgsrc/editors/reovim/cargo-depends.mk \
    pkgsrc/editors/reovim/distinfo
cvs rdiff -u -r1.1 -r1.2 pkgsrc/editors/reovim/patches/patch-Cargo.toml

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/editors/reovim/Makefile
diff -u pkgsrc/editors/reovim/Makefile:1.3 pkgsrc/editors/reovim/Makefile:1.4
--- pkgsrc/editors/reovim/Makefile:1.3  Mon Jan  5 18:45:08 2026
+++ pkgsrc/editors/reovim/Makefile      Thu Jan 15 18:23:44 2026
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.3 2026/01/05 18:45:08 pin Exp $
+# $NetBSD: Makefile,v 1.4 2026/01/15 18:23:44 pin Exp $
 
-DISTNAME=      reovim-0.7.9
+DISTNAME=      reovim-0.8.1
 CATEGORIES=    editors
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=ds1sqe/}
 GITHUB_TAG=    v${PKGVERSION_NOREV}
@@ -8,7 +8,7 @@ GITHUB_TAG=     v${PKGVERSION_NOREV}
 MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
 HOMEPAGE=      https://github.com/ds1sqe/reovim/
 COMMENT=       Rust-powered neovim-like text editor
-LICENSE=       mit
+LICENSE=       mit #gnu-agpl-v3
 
 .include "cargo-depends.mk"
 

Index: pkgsrc/editors/reovim/cargo-depends.mk
diff -u pkgsrc/editors/reovim/cargo-depends.mk:1.2 pkgsrc/editors/reovim/cargo-depends.mk:1.3
--- pkgsrc/editors/reovim/cargo-depends.mk:1.2  Mon Jan  5 18:45:08 2026
+++ pkgsrc/editors/reovim/cargo-depends.mk      Thu Jan 15 18:23:44 2026
@@ -1,4 +1,4 @@
-# $NetBSD: cargo-depends.mk,v 1.2 2026/01/05 18:45:08 pin Exp $
+# $NetBSD: cargo-depends.mk,v 1.3 2026/01/15 18:23:44 pin Exp $
 
 CARGO_CRATE_DEPENDS+=  adler2-2.0.1
 CARGO_CRATE_DEPENDS+=  aho-corasick-1.1.4
@@ -49,6 +49,8 @@ CARGO_CRATE_DEPENDS+= crunchy-0.2.4
 CARGO_CRATE_DEPENDS+=  deranged-0.5.5
 CARGO_CRATE_DEPENDS+=  derive_more-2.1.0
 CARGO_CRATE_DEPENDS+=  derive_more-impl-2.1.0
+CARGO_CRATE_DEPENDS+=  dirs-6.0.0
+CARGO_CRATE_DEPENDS+=  dirs-sys-0.5.0
 CARGO_CRATE_DEPENDS+=  dispatch2-0.3.0
 CARGO_CRATE_DEPENDS+=  displaydoc-0.2.5
 CARGO_CRATE_DEPENDS+=  document-features-0.2.12
@@ -78,6 +80,7 @@ CARGO_CRATE_DEPENDS+= futures-task-0.3.3
 CARGO_CRATE_DEPENDS+=  futures-timer-3.0.3
 CARGO_CRATE_DEPENDS+=  futures-util-0.3.31
 CARGO_CRATE_DEPENDS+=  gethostname-1.1.0
+CARGO_CRATE_DEPENDS+=  getrandom-0.2.16
 CARGO_CRATE_DEPENDS+=  getrandom-0.3.4
 CARGO_CRATE_DEPENDS+=  globset-0.4.18
 CARGO_CRATE_DEPENDS+=  half-2.7.1
@@ -104,6 +107,7 @@ CARGO_CRATE_DEPENDS+=       itoa-1.0.15
 CARGO_CRATE_DEPENDS+=  js-sys-0.3.83
 CARGO_CRATE_DEPENDS+=  lazy_static-1.5.0
 CARGO_CRATE_DEPENDS+=  libc-0.2.178
+CARGO_CRATE_DEPENDS+=  libredox-0.1.12
 CARGO_CRATE_DEPENDS+=  linux-raw-sys-0.11.0
 CARGO_CRATE_DEPENDS+=  litemap-0.8.1
 CARGO_CRATE_DEPENDS+=  litrs-1.0.0
@@ -132,6 +136,7 @@ CARGO_CRATE_DEPENDS+=       objc2-io-surface-0
 CARGO_CRATE_DEPENDS+=  once_cell-1.21.3
 CARGO_CRATE_DEPENDS+=  once_cell_polyfill-1.70.2
 CARGO_CRATE_DEPENDS+=  oorandom-11.1.5
+CARGO_CRATE_DEPENDS+=  option-ext-0.2.0
 CARGO_CRATE_DEPENDS+=  page_size-0.6.0
 CARGO_CRATE_DEPENDS+=  parking_lot-0.12.5
 CARGO_CRATE_DEPENDS+=  parking_lot_core-0.9.12
@@ -153,6 +158,7 @@ CARGO_CRATE_DEPENDS+=       radix_trie-0.2.1
 CARGO_CRATE_DEPENDS+=  rayon-1.11.0
 CARGO_CRATE_DEPENDS+=  rayon-core-1.13.0
 CARGO_CRATE_DEPENDS+=  redox_syscall-0.5.18
+CARGO_CRATE_DEPENDS+=  redox_users-0.5.2
 CARGO_CRATE_DEPENDS+=  regex-1.12.2
 CARGO_CRATE_DEPENDS+=  regex-automata-0.4.13
 CARGO_CRATE_DEPENDS+=  regex-syntax-0.8.8
Index: pkgsrc/editors/reovim/distinfo
diff -u pkgsrc/editors/reovim/distinfo:1.2 pkgsrc/editors/reovim/distinfo:1.3
--- pkgsrc/editors/reovim/distinfo:1.2  Mon Jan  5 18:45:08 2026
+++ pkgsrc/editors/reovim/distinfo      Thu Jan 15 18:23:44 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.2 2026/01/05 18:45:08 pin Exp $
+$NetBSD: distinfo,v 1.3 2026/01/15 18:23:44 pin Exp $
 
 BLAKE2s (adler2-2.0.1.crate) = 4d391e0fcde91c7435ee9a5503fee4a5346f549f1b45e482ce3e1e151d90f8f5
 SHA512 (adler2-2.0.1.crate) = 555b2b7ba6f8116acccd0bcd16ed34cc78162c81023cff31a8566ffcd456c03832089fca2d5b668ceaac4fe8f922d31aa9c487f226a36cace294ff4a219bd91d
@@ -147,6 +147,12 @@ Size (derive_more-2.1.0.crate) = 88303 b
 BLAKE2s (derive_more-impl-2.1.0.crate) = 27436ad6e20970c9db8a4086e44a0f71bd13fbd0581d83fadc50a2007a2b1ba2
 SHA512 (derive_more-impl-2.1.0.crate) = 53877544638f89062d1254d5a29a92f1f021f518a142e3ae25c28fec17ce644b3b6905529f411b5d04078655af9c6405bda7e3ad08d4ecfe220f10e7c6388c7e
 Size (derive_more-impl-2.1.0.crate) = 99090 bytes
+BLAKE2s (dirs-6.0.0.crate) = 4f63ff424740a4552b3b41091f43e845e0d720a6091ece6c9a5aefe24c297ca1
+SHA512 (dirs-6.0.0.crate) = f29f0f932aa627bada67db5bd9d2661b5fb3b18d07030f5d88da28de7049eb872a2f35756cf29c094aacbc2429a3a333b54fb94d70e470288d3ca091cf6d4aa8
+Size (dirs-6.0.0.crate) = 14190 bytes
+BLAKE2s (dirs-sys-0.5.0.crate) = 1a5da6fa801a3e637f337f7c4a46854899b08a5fa8ea2b5864edaa713b7cbf58
+SHA512 (dirs-sys-0.5.0.crate) = c2ca362ad04e92c929e2cea4db359de689e512b7c76246c408f40d10f1d47c5dbbd49238e67edc0a251bd642ee292cae88992e5755035c632baec36cd77c10b2
+Size (dirs-sys-0.5.0.crate) = 10157 bytes
 BLAKE2s (dispatch2-0.3.0.crate) = 8b95875a9391610bfed7ab6d08f270da884257368e073252b5f211c08c17455e
 SHA512 (dispatch2-0.3.0.crate) = 2f0a168885fabe8fb7443994bb666c94ce95d9b1f14eee6e19b185b27d4cb33c5e76f85244cb9e5735566d02b7c61675e42911d6d99b079590dbd124aed56f59
 Size (dispatch2-0.3.0.crate) = 54606 bytes
@@ -234,6 +240,9 @@ Size (futures-util-0.3.31.crate) = 16212
 BLAKE2s (gethostname-1.1.0.crate) = 5425362777f6d25805b9b3cd4026c17de34f3f5309ac84be9ddc469a0bbfe149
 SHA512 (gethostname-1.1.0.crate) = 6b877cb492777bd6646422586ca49fd691e37cc58b79891b976aac1079bc757367ceba81bd2a67ad1606294458851f6b37f25b1827eb29c57f4f687dc3852ba0
 Size (gethostname-1.1.0.crate) = 9865 bytes
+BLAKE2s (getrandom-0.2.16.crate) = 8d556c3e6d1449492d42f144e99954f4ff0af1bd7af134f5429e2c1b34f2aeab
+SHA512 (getrandom-0.2.16.crate) = 6391d5322f8ce2ea7d14062d378ae2ffad66622afd58b9f1732e5314b27d3a554c8a008f6d0d133640f11d769ac51ea4acd24e40259e14e2ffce93d5c3c1eb1e
+Size (getrandom-0.2.16.crate) = 40163 bytes
 BLAKE2s (getrandom-0.3.4.crate) = 33c5dff491914e401ae5406376d96ab45a8111fbc4be7a05142572fbddd27443
 SHA512 (getrandom-0.3.4.crate) = 43c44ec3ba0668f388519b2cefbee63f959f0e078730b3f7563742522e5f4b120472024b95fc94aeb90900a15d327c3573271bb26b2de4785e589a8bc1bc9da8
 Size (getrandom-0.3.4.crate) = 50932 bytes
@@ -312,6 +321,9 @@ Size (lazy_static-1.5.0.crate) = 14025 b
 BLAKE2s (libc-0.2.178.crate) = e2b638596c308e3ff3aabf12ec9098d818e6e8d6e6fa7d51c3c0f7c1161c0e74
 SHA512 (libc-0.2.178.crate) = 968b954e2edde88d14135decd9eaadc31ca1aad80529a6696591c06c4414d615c97ce0873f77bfebe08b862faa5f3cb79a6648ab90734d462bef06e06ea43dde
 Size (libc-0.2.178.crate) = 783720 bytes
+BLAKE2s (libredox-0.1.12.crate) = b3fce0661e8e312a234c9733f53b963b2efc1c021f631ebdd276e2835531cf2a
+SHA512 (libredox-0.1.12.crate) = 8206d0cd3faacccb681551d20d9cae977a9fbbb4801aa53daa124633925bae73d1967f6c75ac9718527cd567dc39239a8e97e12e0747bfb3d53b9bb33bcdbc4f
+Size (libredox-0.1.12.crate) = 7469 bytes
 BLAKE2s (linux-raw-sys-0.11.0.crate) = 3d3d4fd40dceac1d554150a2e642934b441452c4acd3f05dee235eecb7cf4ea1
 SHA512 (linux-raw-sys-0.11.0.crate) = b16261142f3cbd1caa4e0a17ba06dea49f0d4514f583ca511d9c7ba6ef231f18322f37303b7ffacc73ae7f22b81dfd740584ef7bfaf67a9eaf43859d2de1f941
 Size (linux-raw-sys-0.11.0.crate) = 2659624 bytes
@@ -396,6 +408,9 @@ Size (once_cell_polyfill-1.70.2.crate) =
 BLAKE2s (oorandom-11.1.5.crate) = 07ed06daf37529f4a158aca356899f3e1ba11a1fbf65ca482f5fdaea4c4ecabc
 SHA512 (oorandom-11.1.5.crate) = 63daae0b6e352cc52fdb7793aed1ef501ad996507d8e36cf8235068a3feb9f627549961af1a355227b561948c30f6dea17e225dc3f27caebd51116fc4e3a3ba6
 Size (oorandom-11.1.5.crate) = 23750 bytes
+BLAKE2s (option-ext-0.2.0.crate) = a179d39823f42e954c5fe82b67b6689a7078b0e88bc659f06354f02ee868b465
+SHA512 (option-ext-0.2.0.crate) = f8539f97b01af97e0b80fc96556002251befa60f8ddd19613311e62f9dc9834d71c22f5d8e7c53c4925046e38cdcf834c3c28042a4da862d6f6a21ddff8d8e56
+Size (option-ext-0.2.0.crate) = 7345 bytes
 BLAKE2s (page_size-0.6.0.crate) = 7a9c3e7f4a8f7ffb3a6c328be22d680ebf42f3b74fd77fbfcf51796d9a3e0af5
 SHA512 (page_size-0.6.0.crate) = 204faf102760e9f3edc480302a7d7e6b995b7a40850372ebb332cab82b9c8301e761351c7abce93bde9473ad9e944bb07e6c4447d4ee1891f5ae2c261b74b8e5
 Size (page_size-0.6.0.crate) = 8479 bytes
@@ -459,6 +474,9 @@ Size (rayon-core-1.13.0.crate) = 73151 b
 BLAKE2s (redox_syscall-0.5.18.crate) = 15142008cfcffdfe12059e4c1415d354d0a1f60e4fd392dcf9ac888821a0988b
 SHA512 (redox_syscall-0.5.18.crate) = 69f1cfb215666f1243616366711dbd8cadd6bb411121f48f6e4ffd7b25479efa6f900dd072d7cc6e6fb8130d95cdb42f4c0cb4ba9e05b09b1fa676ca32932101
 Size (redox_syscall-0.5.18.crate) = 30747 bytes
+BLAKE2s (redox_users-0.5.2.crate) = d0011f3421041f92c786d6b2d28450ffbe6bc270ca2b5853e1206fdfc5ccaa81
+SHA512 (redox_users-0.5.2.crate) = 0468d42c9a5aa9b8811d00b4126115bd7e92f96af4ee136cf5387939474e351fa2c01251473691aeb34f5e4c8e8804938adf1bc83b5edffb6d06869b4b816b7b
+Size (redox_users-0.5.2.crate) = 17280 bytes
 BLAKE2s (regex-1.12.2.crate) = d70ec81f3ec28337ffb8280b82a7ac93cf6c962c86ddb8d5ba3f684f8c0e006f
 SHA512 (regex-1.12.2.crate) = c459657944679350369462c3c7686dcdf412597f75bc13c450a131bfceebfe2cd1e1d7f95f0f55b4aa16bfc1acb5c777f344fcfd6a5927aa76b8a2d7aa954d3c
 Size (regex-1.12.2.crate) = 163843 bytes
@@ -468,9 +486,9 @@ Size (regex-automata-0.4.13.crate) = 625
 BLAKE2s (regex-syntax-0.8.8.crate) = 7228be565c9cb04935590901c900be935484a84b11304833bb726ad1fc59121c
 SHA512 (regex-syntax-0.8.8.crate) = 337ca84af81f2c5cd7d213e3ad96a1facba2917f135c4c1ef03571160d24e4ae47186ad07e421a7a4ff0baadbe95d34365e69400f3c36ef39ebeb3e7c14224e4
 Size (regex-syntax-0.8.8.crate) = 359141 bytes
-BLAKE2s (reovim-0.7.9.tar.gz) = ad802e89a8e3dd2a3027413b5245ff17745bca8a84830c1d8c4f96a4113bac9a
-SHA512 (reovim-0.7.9.tar.gz) = ef659f6116447c490b09d4e981478e868644e6b0f673fac5b59e69caed739ad3fc78cba3d5ea0e7c9a9e6df5be87d554406eed8ddc56171a03da23c91d0053cc
-Size (reovim-0.7.9.tar.gz) = 719398 bytes
+BLAKE2s (reovim-0.8.1.tar.gz) = 4806e66e9cdf2ea7023e601b66e252b8ccf8532063c8b0bd12cc4981edecec89
+SHA512 (reovim-0.8.1.tar.gz) = 93bd3b0f40fc97692662e11f63ffa96f59da6fb8f1978639be79d263e70a477bd48d65e5e3afcce3f91d5ae7a02a58080643e91328daad041ea50ad839b171ef
+Size (reovim-0.8.1.tar.gz) = 1004705 bytes
 BLAKE2s (rustc_version-0.4.1.crate) = f0d198d0457135ca7572b41cd2440f1b0ca075013f53b384d07c00db8c5d2e84
 SHA512 (rustc_version-0.4.1.crate) = 7aa8a487ca7411b6d23cae62f7568fa3474a7b1fd1589621071be3428a550ed3b7c4ad68277a8f86849e5900397d7d0e9d678f5d423742a045dc7c660fa6c598
 Size (rustc_version-0.4.1.crate) = 12245 bytes
@@ -870,4 +888,4 @@ Size (zune-core-0.4.12.crate) = 17355 by
 BLAKE2s (zune-jpeg-0.4.21.crate) = f3bbaa5d70d1efc8c02a3b5d446e3eeab9896bd3d1e3ba619b1bdb8579929eb6
 SHA512 (zune-jpeg-0.4.21.crate) = 838ed690fc2d026f40feaaef9c88d85f9a80b186e95f23e5be01c632816942660a89cb0524f2346902fa92235d5de2228485daa67019fcf06ef60ae147b4073c
 Size (zune-jpeg-0.4.21.crate) = 68268 bytes
-SHA1 (patch-Cargo.toml) = b9b55de1b29e22139573c3bef7185011d9531c72
+SHA1 (patch-Cargo.toml) = d4e432fb08a5e14b38ed510c7994c10bc0199a68

Index: pkgsrc/editors/reovim/patches/patch-Cargo.toml
diff -u pkgsrc/editors/reovim/patches/patch-Cargo.toml:1.1 pkgsrc/editors/reovim/patches/patch-Cargo.toml:1.2
--- pkgsrc/editors/reovim/patches/patch-Cargo.toml:1.1  Mon Jan  5 18:45:08 2026
+++ pkgsrc/editors/reovim/patches/patch-Cargo.toml      Thu Jan 15 18:23:44 2026
@@ -1,15 +1,15 @@
-$NetBSD: patch-Cargo.toml,v 1.1 2026/01/05 18:45:08 pin Exp $
+$NetBSD: patch-Cargo.toml,v 1.2 2026/01/15 18:23:44 pin Exp $
 
 Relax MSRV.
 
---- Cargo.toml.orig    2026-01-05 06:33:03.436515055 +0000
+--- Cargo.toml.orig    2026-01-15 08:16:16.078473330 +0000
 +++ Cargo.toml
-@@ -4,7 +4,7 @@ resolver = "2"
+@@ -29,7 +29,7 @@ resolver = "2"
  resolver = "2"
  
  [workspace.package]
 -rust-version = "1.92"
-+rust-version = "1.90"
- version = "0.7.9"
++rust-version = "1.91"
+ version = "0.8.1"
  edition = "2024"
  authors = ["ds1sqe(dukim) <ds1sqe%mensakorea.org@localhost>"]



Home | Main Index | Thread Index | Old Index