[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5640":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},5640,"jnv","ynqa\u002Fjnv","ynqa","Interactive JSON filter using jq","",null,"Rust",6040,73,17,21,0,4,32,66.81,"MIT License",false,"main",[24,25,26,27,28,29,30,31,32],"autocomplete","cli","command-line","interactive","jq","json","kubernetes","prompt","rust","2026-06-12 04:00:26","\u003Cp align=\"center\">\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets\u002Fjnv-dark.svg\">\n  \u003Cimg alt=\"Text describing the image\" src=\"assets\u002Fjnv-light.svg\" width=\"50%\" height=\"50%\">\n\u003C\u002Fp>\n\n[![ci](https:\u002F\u002Fgithub.com\u002Fynqa\u002Fjnv\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg?branch=main)](https:\u002F\u002Fgithub.com\u002Fynqa\u002Fjnv\u002Factions\u002Fworkflows\u002Fci.yml)\n\n*jnv* is designed for navigating JSON,\noffering an interactive JSON viewer and `jq` filter editor.\n\n![jnv.gif](https:\u002F\u002Fgithub.com\u002Fynqa\u002Fynqa\u002Fblob\u002Fmaster\u002Fdemo\u002Fjnv.gif)\n\nInspired by [jid](https:\u002F\u002Fgithub.com\u002Fsimeji\u002Fjid)\nand [jiq](https:\u002F\u002Fgithub.com\u002Ffiatjaf\u002Fjiq).\n\n## Features\n\n- Interactive JSON viewer and `jq` filter editor\n  - Syntax highlighting for JSON\n  - Use [jaq](https:\u002F\u002Fgithub.com\u002F01mf02\u002Fjaq) to apply `jq` filter\n    - This eliminates the need for users to prepare `jq` on their own\n- Configurable features via TOML configuration\n  - Toggle hint message display\n  - Adjust UI reactivity (debounce times and animation speed)\n  - Editor appearance and behavior\n  - JSON viewer styling\n  - Adjust completion feature display and behavior\n  - Keybinds\n- Capable of accommodating various format\n  - Input: File, stdin\n  - Data: A JSON or multiple JSON structures\n    that can be deserialized with \n    [StreamDeserializer](https:\u002F\u002Fdocs.rs\u002Fserde_json\u002Flatest\u002Fserde_json\u002Fstruct.StreamDeserializer.html),\n    such as [JSON Lines](https:\u002F\u002Fjsonlines.org\u002F)\n- Auto-completion for the filter\n  - Only supports:\n    - [Identity](https:\u002F\u002Fjqlang.github.io\u002Fjq\u002Fmanual\u002F#identity)\n    - [Object Identifier-Index](https:\u002F\u002Fjqlang.github.io\u002Fjq\u002Fmanual\u002F#object-identifier-index)\n    - [Array Index](https:\u002F\u002Fjqlang.github.io\u002Fjq\u002Fmanual\u002F#array-index)\n- Hint message to evaluate the filter\n\n## Installation\n\n[![Packaging status](https:\u002F\u002Frepology.org\u002Fbadge\u002Fvertical-allrepos\u002Fjnv.svg)](https:\u002F\u002Frepology.org\u002Fproject\u002Fjnv\u002Fversions)\n\n### Homebrew\n\nSee [here](https:\u002F\u002Fformulae.brew.sh\u002Fformula\u002Fjnv) for more info.\n\n```bash\nbrew install jnv\n```\n\nOr install via Homebrew Tap:\n\n```bash\nbrew install ynqa\u002Ftap\u002Fjnv\n```\n\n### MacPorts\n\nSee [here](https:\u002F\u002Fports.macports.org\u002Fport\u002Fjnv\u002F) for more info.\n\n```bash\nsudo port install jnv\n```\n\n### Nix \u002F NixOS\n\nSee [package entry on search.nixos.org](https:\u002F\u002Fsearch.nixos.org\u002Fpackages?channel=unstable&query=jnv) for more info.\n\n```bash\nnix-shell -p jnv\n```\n\n### conda-forge\n\nSee [here](https:\u002F\u002Fprefix.dev\u002Fchannels\u002Fconda-forge\u002Fpackages\u002Fjnv) for more info.\n\n```bash\npixi global install jnv\n# or\ncat data.json | pixi exec jnv\n# or\nconda install jnv\n```\n\n### Docker\n\nBuild\n(In the near future, the image will be available on something of registries)\n\n```bash\ndocker build -t jnv .\n```\n\nAnd Run\n(The following commad is just an example. Please modify the path to the file you want to mount)\n\n```bash\ndocker run -it --rm -v $(pwd)\u002Fdebug.json:\u002Fjnv\u002Fdebug.json jnv \u002Fjnv\u002Fdebug.json\n```\n\n### Cargo\n\n```bash\ncargo install jnv\n```\n\n## Examples\n\n```bash\ncat data.json | jnv\n\n# or\njnv data.json\n\n# or write current result to stdout on exit (UNIX only)\ncat data.json | jnv --write-to-stdout | some-command\n# and also output to file\ncat data.json | jnv -- --write-to-stdout > result.json\n```\n\n## Keymap\n\n| Key | Action |\n| :- | :- |\n| \u003Ckbd>Ctrl + C\u003C\u002Fkbd> | Exit |\n| \u003Ckbd>Ctrl + Q\u003C\u002Fkbd> | Copy jq filter to clipboard |\n| \u003Ckbd>Ctrl + O\u003C\u002Fkbd> | Copy JSON to clipboard |\n| \u003Ckbd>Shift + ↑\u003C\u002Fkbd>, \u003Ckbd>Shift + ↓\u003C\u002Fkbd> | Switch to another mode |\n\n### Editor mode (default)\n\n| Key | Action |\n| :- | :- |\n| \u003Ckbd>Tab\u003C\u002Fkbd> | Enter suggestion |\n| \u003Ckbd>←\u003C\u002Fkbd> | Move cursor left |\n| \u003Ckbd>→\u003C\u002Fkbd> | Move cursor right |\n| \u003Ckbd>Ctrl + A\u003C\u002Fkbd> | Move cursor to line start |\n| \u003Ckbd>Ctrl + E\u003C\u002Fkbd> | Move cursor to line end |\n| \u003Ckbd>Backspace\u003C\u002Fkbd> | Delete character before cursor |\n| \u003Ckbd>Ctrl + U\u003C\u002Fkbd> | Clear entire line |\n| \u003Ckbd>Alt + B\u003C\u002Fkbd>   | Move the cursor to the previous nearest character within set(`.`,`\\|`,`(`,`)`,`[`,`]`) |\n| \u003Ckbd>Alt + F\u003C\u002Fkbd>   | Move the cursor to the next nearest character within set(`.`,`\\|`,`(`,`)`,`[`,`]`) |\n| \u003Ckbd>Ctrl + W\u003C\u002Fkbd>  | Erase to the previous nearest character within set(`.`,`\\|`,`(`,`)`,`[`,`]`) |\n| \u003Ckbd>Alt + D\u003C\u002Fkbd>   | Erase to the next nearest character within set(`.`,`\\|`,`(`,`)`,`[`,`]`) |\n\n#### Suggestion in Editor (after \u003Ckbd>Tab\u003C\u002Fkbd>)\n\n| Key | Action |\n| :- | :- |\n| \u003Ckbd>Tab\u003C\u002Fkbd>, \u003Ckbd>↓\u003C\u002Fkbd> | Select next suggestion |\n| \u003Ckbd>↑\u003C\u002Fkbd> | Select previous suggestion |\n| Others | Return to editor |\n\n### JSON viewer mode\n\n| Key | Action |\n| :- | :- |\n| \u003Ckbd>↑\u003C\u002Fkbd>, \u003Ckbd>Ctrl + K\u003C\u002Fkbd> | Move up |\n| \u003Ckbd>↓\u003C\u002Fkbd>, \u003Ckbd>Ctrl + J\u003C\u002Fkbd> | Move down |\n| \u003Ckbd>Ctrl + H\u003C\u002Fkbd> | Move to last entry |\n| \u003Ckbd>Ctrl + L\u003C\u002Fkbd> | Move to first entry |\n| \u003Ckbd>Enter\u003C\u002Fkbd> | Toggle fold |\n| \u003Ckbd>Ctrl + P\u003C\u002Fkbd> | Expand all |\n| \u003Ckbd>Ctrl + N\u003C\u002Fkbd> | Collapse all |\n\n## Usage\n\n```bash\nJSON navigator and interactive filter leveraging jq\n\nUsage: jnv [OPTIONS] [INPUT]\n\nExamples:\n- Read from a file:\n        jnv data.json\n\n- Read from standard input:\n        cat data.json | jnv\n\nArguments:\n  [INPUT]  Optional path to a JSON file. If not provided or if \"-\" is specified, reads from standard input\n\nOptions:\n  -c, --config \u003CCONFIG_FILE>             Path to the configuration file.\n      --default-filter \u003CDEFAULT_FILTER>  Default jq filter to apply to the input data\n      --write-to-stdout                  Write the current JSON result to stdout when exiting\n  -h, --help                             Print help (see more with '--help')\n  -V, --version                          Print version\n```\n\n## Configuration\n\njnv uses a TOML format configuration file to customize various features. \nThe configuration file is loaded in the following order of priority:\n\n1. Path specified on the command line (`-c` or `--config` option)\n2. Default configuration file path\n\n### Default Configuration File Location\n\nFollowing the `dirs` crate,\nthe default configuration file location for each platform is as follows:\n\n- **Linux**: `~\u002F.config\u002Fjnv\u002Fconfig.toml`\n- **macOS**: `~\u002FLibrary\u002FApplication Support\u002Fjnv\u002Fconfig.toml`\n- **Windows**: `C:\\Users\\{Username}\\AppData\\Roaming\\jnv\\config.toml`\n\nIf the configuration file does not exist,\nit will be automatically created on first run.\n\n### Configuration\n\n> [!IMPORTANT]\n> The syntax in TOML configurations\n> like [default.toml](.\u002Fdefault.toml) was revamped in v0.7.0,\n> and the configuration shown below reflects the new format.\n> A migration tool is not provided for this change.\n> Please manually replace\u002Fupdate your local\n> `config.toml` to match the new syntax.\n\n> [!WARNING]\n> Depending on the type of terminal and environment,\n> characters and styles may not be displayed properly.\n> Specific key bindings and decorative characters may not\n> display or function correctly in certain terminal emulators.\n\n\u003Cdetails>\n\u003Csummary>The following settings are available in config.toml\u003C\u002Fsummary>\n\n```toml\n# Whether to hide hint messages\nno_hint = false\n\n# Editor settings\n# Uses promkit_widgets::text_editor::Config directly\n[editor.on_focus]\n\n# Editor mode\n# \"Insert\": Insert characters at the cursor position\n# \"Overwrite\": Replace characters at the cursor position with new ones\nedit_mode = \"Insert\"\n\n# Characters considered as word boundaries\n# These are used to define word movement and deletion behavior in the editor\nword_break_chars = [\".\", \"|\", \"(\", \")\", \"[\", \"]\"]\n\n# Style notation (termcfg)\n# Format: \"fg=\u003Ccolor>,bg=\u003Ccolor>,ul=\u003Ccolor>,attr=\u003Ctoken|token...>\"\n# Examples:\n# - \"fg=blue\"\n# - \"fg=#00FF00,bg=black,attr=bold|underlined\"\n# - \"attr=dim\"\n#\n# Color tokens:\n# - reset, black, red, green, yellow, blue, magenta, cyan, white\n# - darkgrey, darkred, darkgreen, darkyellow, darkblue, darkmagenta, darkcyan, grey\n# - #RRGGBB\n#\n# Attribute tokens (examples):\n# - bold, italic, underlined, dim, reverse, crossedout, nounderline, nobold\n#\n# Notes:\n# - ANSI 256-color index tokens (0..255, e.g. \"200\") are currently out of notation scope.\n# - See termcfg notation reference for full token list.\n#\n# References:\n# - https:\u002F\u002Fgithub.com\u002Fynqa\u002Ftermcfg\u002Fblob\u002Fmain\u002FNotations.md\n# - https:\u002F\u002Fgithub.com\u002Fynqa\u002Ftermcfg\n\n# Prefix shown before the cursor\nprefix = \"❯❯ \"\n# Style for the prefix\nprefix_style = \"fg=blue\"\n# Style for the character under the cursor\nactive_char_style = \"bg=magenta\"\n# Style for all other characters\ninactive_char_style = \"\"\n\n# Theme settings when the editor is unfocused\n[editor.on_defocus]\n# Prefix shown when focus is lost\nprefix = \"▼ \"\n# Style for the prefix when unfocused\nprefix_style = \"fg=blue,attr=dim\"\n# Style for the character under the cursor when unfocused\nactive_char_style = \"attr=dim\"\n# Style for all other characters when unfocused\ninactive_char_style = \"attr=dim\"\n\n# JSON display settings\n[json]\n# Maximum number of JSON objects to read from streams (e.g., JSON Lines format)\n# Limits how many objects are processed to reduce memory usage when handling large data streams\n# No limit if unset\n# max_streams =\n\n# JSON display settings\n# Uses promkit_widgets::jsonstream::Config directly\n[json.stream]\n# Number of spaces to use for indentation\nindent = 2\n# Style for curly brackets {}\ncurly_brackets_style = \"attr=bold\"\n# Style for square brackets []\nsquare_brackets_style = \"attr=bold\"\n# Style for JSON keys\nkey_style = \"fg=cyan\"\n# Style for string values\nstring_value_style = \"fg=green\"\n# Style for number values\nnumber_value_style = \"\"\n# Style for boolean values\nboolean_value_style = \"\"\n# Style for null values\nnull_value_style = \"fg=grey\"\n# Attribute for the selected row and unselected rows\nactive_item_attribute = \"bold\"\n# Attribute for unselected rows\ninactive_item_attribute = \"dim\"\n# Behavior when JSON content exceeds the available width\n# \"Wrap\": Wrap content to the next line\n# \"Truncate\": Truncate content with an ellipsis (...)\noverflow_mode = \"Wrap\"\n\n# Completion feature settings\n[completion]\n# Settings for background loading of completion candidates\n#\n# Number of candidates loaded per chunk for search results\n# A larger value displays results faster but uses more memory\nsearch_result_chunk_size = 100\n\n# Number of items loaded per batch during background loading\n# A larger value finishes loading sooner but uses more memory temporarily\nsearch_load_chunk_size = 50000\n\n# Completion UI settings\n# Uses promkit_widgets::listbox::Config directly\n[completion.listbox]\n# Number of lines to display for completion candidates\nlines = 3\n# Cursor character shown before the selected candidate\ncursor = \"❯ \"\n# Style for the selected candidate\nactive_item_style = \"fg=grey,bg=yellow\"\n# Style for unselected candidates\ninactive_item_style = \"fg=grey\"\n\n# Keybinding settings\n[keybinds]\n# Key to exit the application\nexit = [\"Ctrl+C\"]\n# Key to copy the query to the clipboard\ncopy_query = [\"Ctrl+Q\"]\n# Key to copy the result to the clipboard\ncopy_result = [\"Ctrl+O\"]\n# Keys to switch focus between editor and JSON viewer\nswitch_mode = [\"Shift+Down\", \"Shift+Up\"]\n\n# Keybindings for editor operations\n[keybinds.on_editor]\n# Move cursor left\nbackward = [\"Left\"]\n\n# Move cursor right\nforward = [\"Right\"]\n\n# Move cursor to beginning of line\nmove_to_head = [\"Ctrl+A\"]\n# Move cursor to end of line\nmove_to_tail = [\"Ctrl+E\"]\n# Move cursor to previous word boundary\nmove_to_previous_nearest = [\"Alt+B\"]\n# Move cursor to next word boundary\nmove_to_next_nearest = [\"Alt+F\"]\n# Delete character at the cursor\nerase = [\"Backspace\"]\n\n# Delete all input\nerase_all = [\"Ctrl+U\"]\n\n# Delete from cursor to previous word boundary\nerase_to_previous_nearest = [\"Ctrl+W\"]\n# Delete from cursor to next word boundary\nerase_to_next_nearest = [\"Alt+D\"]\n# Trigger completion\ncompletion = [\"Tab\"]\n# Move up in the completion list\non_completion.up = [\"Up\"]\n# Move down in the completion list\non_completion.down = [\"Down\", \"Tab\"]\n\n# Keybindings for JSON viewer operations\n[keybinds.on_json_viewer]\n# Move up in JSON viewer\nup = [\"Up\", \"Ctrl+K\", \"ScrollUp\"]\n# Move down in JSON viewer\ndown = [\"Down\", \"Ctrl+J\", \"ScrollDown\"]\n# Move to the top of JSON viewer\nmove_to_head = [\"Ctrl+L\"]\n# Move to the bottom of JSON viewer\nmove_to_tail = [\"Ctrl+H\"]\n# Toggle expand\u002Fcollapse of JSON nodes\ntoggle = [\"Enter\"]\n# Expand all JSON nodes\nexpand = [\"Ctrl+P\"]\n# Collapse all JSON nodes\ncollapse = [\"Ctrl+N\"]\n\n# Application reactivity settings\n[reactivity_control]\n# Delay before processing query input\n# Prevents excessive updates while user is typing\nquery_debounce_duration = \"600ms\"\n\n# Delay before redrawing after window resize\n# Prevents frequent redraws during continuous resizing\nresize_debounce_duration = \"200ms\"\n\n# Interval for spinner animation updates\n# Controls the speed of the loading spinner\nspin_duration = \"300ms\"\n```\n\n\u003C\u002Fdetails>\n\n## Stargazers over time\n\n[![Stargazers over time](https:\u002F\u002Fstarchart.cc\u002Fynqa\u002Fjnv.svg?variant=adaptive)](https:\u002F\u002Fstarchart.cc\u002Fynqa\u002Fjnv)\n","jnv 是一个用于浏览和编辑 JSON 数据的交互式工具。它集成了 `jq` 过滤器编辑器，支持语法高亮显示，并使用 `jaq` 来应用 `jq` 过滤器，从而无需用户单独安装 `jq`。项目采用 Rust 语言编写，具有高度可配置性，包括提示信息、UI 响应速度、编辑器外观等均可通过 TOML 配置文件调整。此外，jnv 支持多种输入格式（如文件、标准输入）以及多种 JSON 结构（如 JSON Lines），并为过滤器提供自动补全功能。此工具非常适合需要频繁处理复杂 JSON 数据结构的开发者，尤其是在 Kubernetes 环境下工作时更为实用。",2,"2026-06-11 03:04:27","top_language"]