Skip to content

Initial Release Checklist / Project Roadmap #1

@PaulJuliusMartinez

Description

@PaulJuliusMartinez

Friends and Family Release

Basic Functionality:

  • Finish basic set of movement commands
    • zt, zz, zb (1910b36)
    • number arguments to hjkl/scrolling, maybe others (eb7e116, 2d11dee)
      • Add count support to focus prev/next sibling (J and K) (6fb6218)
    • Support PageUp and PageDown (Move up/down by height of screen) (acf8ee3)
    • H to focus parent without collapsing current node (ed21d57)
  • Don't let long lines overflow horizontally (0ff12d4, a1dd70e, 849ef97)
    • Fix issue with displaying empty strings (3ee50d0)
    • Update LinePrinter to handle Containers (7be3404)
  • Better formatting of collapsed cells in Line and Data modes (b5f29b3)
    • Quote non-JS identifier keys and all keys in Line mode (168d14f)
    • Write lots of tests (2396477)
  • Display full controls in help menu (Just pipe to less for now; -r to use colored output) (fbfd842, 5b898e7, 458271e)
  • Command line arguments, --help documentation (ee1eb8c, 41a1018)
  • Basic error handling of JSON parsing errors
  • Show input source in status bar (3ade459)
    • Make it not overflow (84600c9)
      • Make this code not horrendous (5d15b5a)
  • Pretty print JSON to stdout if output is not a TTY (04bc1ac)

Polish

  • Properly restore terminal on close (6570011)
  • Move cursor to middle of screen when jumping "far" from place on screen (b9e07c6)
  • Play visual bell at appropriate points
  • Immediately respond to escape key (60f0f06)
  • Handle escape key in Rustyline (If possible to do simply)
  • Handle mouse wheel events (0ee52c8)
  • Handle mouse click events (2a11873, f2fea1e)
    • Don't execute click event when clicking on the status bar
    • Try to figure out a way to still allow highlighting (Only do stuff on Release?)

Release

  • Figure out how to actually generate release builds (bf44965)

Development / Debug

  • Add bind command / command-line-args for experimenting with new commands
  • "Record" mode (print all input to stderr)

Public Release

~ndjson

  • Different JSON parser (216210b)
  • Support multiple JSON objects separated by newlines (a4ecfbe)
    • Actually enforce that they are separated by newlines
  • Fix ndjson issues/bugs
    • Show focus indicator next to top level primitives in data mode (f5d8d65)
    • G causes panic when last top level thing is collapsed (20d5252)

Search

  • Update FlatJson to store ranges for keys and values, and for Rows (0502235, a226811, 5d10274)
  • Next/previous Object key with * and # (8505634)
  • Plain text search with / and ? (b9068f6)
    • Support /<CR> and ?<CR> as longcuts for next/previous match (1c2bff8)
  • Support count arguments to n and N (i.e., 3n jumps ahead three occurrences) (6795e7b)
  • Support count arguments to /, ?, * and # (814ac06)
  • Support smart case searching (case insensitive if all lowercase, case sensitive if any capital letters) (3641740)
  • Escape/unescape braces and square brackets for better search experience (2fce67a)
  • Search highlighting (baf1fb3, c53dfa6)
    • Highlight matching text in literal values (37172ae)
    • Highlight matching text in object keys (05d3c26)
    • Highlight matching text in collapsed previews (f1015a8)
    • Highlight container delimiters ([/] and {/}) when part of matching text (6fe0c11, c3e7a39)
    • Highlight currently focused match in different color (c094dfb)
  • Handle too many search results
  • Show messages when no results are found (9a81088)
    • Show message when regex compilation fails (aa1d8ed)

Focus

  • f to "focus" on a node

Logo

  • Jules the Jellyfish

Codebase/Project Quality & Presentation

Performance

  • Only paint lines that need repainting
  • Pack OptionIndex into single usize
  • Parameterize by u16/u32/u64 and upgrade as needed

Unclear prioritization

  • Hiding keys
  • No color mode
  • Explore additional commands
  • y to copy value to clipboard
    • Different things to paste: yy, value; yPpretty-printed value; yp, path (input.foo[0].bar[33]); yq, jq style path, .foo[].bar[] ?

Bugs

  • Respond immediately to WINCH events
  • Prevent flashes while scrolling (iTerm only?)
  • Path to key is truncated prematurely on long_values.json; doesn't include last character of key

V2

  • Windows support (Need help; I don't know what this means)
  • More robust syntax support for :focus
  • Stream input

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions