Skip to content

[Feature]: Add Terminal UI for improved user experience #5

@kangju2000

Description

@kangju2000

Problem Description

I'm always frustrated when using the CLI commands for git-todo as it requires typing multiple commands and doesn't provide a persistent view of my intentions. The current CLI-only approach makes it difficult to keep track of my intended commits while working.

Proposed Solution

Implement a Terminal UI (TUI) interface that:

  1. Displays the current intention commits persistently in the terminal
  2. Allows navigation and selection using only arrow keys, space, and enter
  3. Eliminates the need to type full commands for common operations
  4. Provides visual feedback about the current intentions and tasks

This would make the tool more user-friendly while maintaining its terminal-based nature. The TUI would serve as a constant reminder of the intended work, helping users stay focused on their planned tasks.

Alternatives Considered

  • IDE Extension: I'm also considering developing a VSCode extension since I use VSCode-based editors. This would be a parallel effort to the TUI implementation.
  • Status bar integration: Not as interactive as a full TUI

Additional Context

Similar TUI implementations can be found in tools like:

  • lazygit (Go)
  • gitui (Rust)
  • ncdu (C)

While I'm primarily familiar with JavaScript/TypeScript, I'm open to contributions implemented in other languages like Go or Rust, which are excellent for building efficient TUI applications. If someone would like to contribute a TUI implementation in these languages, that would be greatly appreciated.

Some potential libraries to consider:

  • Go: Bubble Tea, Termui, gocui
  • Rust: tui-rs, cursive
  • JS/TS: ink, blessed, terminal-kit

The most important aspect is creating an intuitive interface that helps users stay focused on their intended commits while providing a smooth, keyboard-driven experience.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions