You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(comments): add threaded comments view, help bar, and version 0.3.0
- Threaded comments view with 'c' key: fetch and display HN comments
inline with indentation, j/k navigation, line-based scrolling
- Open comments in browser with 'o', reply with 'r', refresh with 'R'
- Comment counts shown on each story in the list
- Context-aware help bar at the bottom of every screen
- Bump version to 0.3.0, update README, CHANGELOG, and CLAUDE.md
- Remove stray escape sequence file
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+20-1Lines changed: 20 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,25 @@
1
1
# Changelog
2
2
All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.
3
3
4
+
- - -
5
+
## 0.3.0 - 2026-04-10
6
+
#### Features
7
+
- Threaded comments view with `c` key — fetches and displays HN comments inline with indentation
8
+
- Comment counts displayed for each story in the list
9
+
- Open individual comments in browser with `o` / `Enter` from comments view
10
+
- Reply to comments with `r` — opens HN reply page in browser
11
+
- Refresh comments with `R` from comments view
12
+
- Context-aware help bar at the bottom of every screen showing relevant keyboard shortcuts
13
+
#### Refactoring
14
+
- Split main.rs into types.rs, hn_api.rs, and ui.rs modules matching documented architecture
-**`ui.rs`** — All rendering: `draw_ui`, `draw_menu`, `draw_summary`, `draw_command_palette`, `centered_rect`. Depends on `types` and `app`.
27
+
-**`types.rs`** — Data types: `Story`, `Comment`, `FlatComment`, `Section`, `Mode`, `ClaudeRequest`, `Message`. No dependencies on other local modules.
-**`ui.rs`** — All rendering: `draw_ui`, `draw_comments`, `draw_help_bar`, `draw_menu`, `draw_summary`, `draw_command_palette`, `centered_rect`, `strip_html`. Depends on `types` and `app`.
30
30
-**`loading_screen.rs`** — `MatrixRain` struct for the Matrix-style loading animation.
31
31
-**`main.rs`** — `App` struct (all application state), `Command`/`CommandPalette`, terminal setup/teardown, and the main event loop. `App` is exposed via `pub mod app` so `ui.rs` can reference it.
32
32
33
-
The app uses a single-threaded tokio runtime. Story fetching spawns tokio tasks per section that run concurrently. The `App` struct holds all state: stories, UI mode, cached stories per section, command palette state, and search state.
33
+
The app uses a single-threaded tokio runtime. Story fetching spawns tokio tasks per section that run concurrently. The `App` struct holds all state: stories, UI mode, cached stories per section, command palette state, comments state, and search state.
34
34
35
35
## Key Details
36
36
37
37
- HN API: Firebase REST API at `hacker-news.firebaseio.com/v0/`. Fetches up to 100 stories per section.
38
38
- Claude API: Requires `CLAUDE_API_KEY` env var. Currently hardcoded to `claude-3-opus-20240229` model.
39
39
- Versioning: Uses cocogitto (`cog.toml`) with conventional commits. Changelog at `CHANGELOG.md`.
40
40
- CI: GitHub Actions runs `cargo build` and `cargo test` on push/PR to main.
41
-
- Cargo.toml lists edition 2021; version is `0.1.0` (behind the `0.2.0` tag from cog).
41
+
- Cargo.toml lists edition 2021; version is `0.3.0`.
- 🔍 **Activate search mode** (type 'search' and press Enter)
57
-
- 🌐 **Open in browser**, 💬 **Open comments**, 🤖 **Summarize**
58
-
- ❌ **Quit** the app
59
-
- ⬆️⬇️ Navigate with Up/Down arrows, `Esc` to close
60
-
61
-
## Search 🔍
62
-
63
-
- Press `/` to start searching, or open the command palette and type 'search'
64
-
- Type to filter stories by title in real-time
65
-
- Use Up/Down arrows to navigate filtered results
66
-
- Press Enter to open the selected story, or Esc to cancel
67
-
- Works across all sections (Top, Ask, Show, Jobs)
37
+
-**Browse** top Hacker News stories in your terminal across Top, Ask, Show, and Jobs sections
38
+
-**Vim-style navigation** (j/k, h/l, arrows) throughout the app
39
+
-**Threaded comments view** — press `c` to read comments inline with indentation mirroring HN's thread structure, scroll through them with j/k, and reply directly
40
+
-**Comment counts** displayed for each story in the list
41
+
-**Claude AI integration** for story summarization via the options menu
42
+
-**Command Palette** (`Ctrl+K`) for quick access to all commands with fuzzy search
43
+
-**Instant search/filter** — press `/` to filter stories by title as you type
44
+
-**Open in browser** — open stories, comments, or reply pages directly in your default browser
45
+
-**Section switching** — navigate between Top, Ask, Show, and Jobs with `h/l` or hotkeys
46
+
-**Context-aware help bar** — keyboard shortcuts displayed at the bottom of every screen, updating per context
47
+
-**Matrix-style loading screen** while fetching data
48
+
-**Classic green-on-black** terminal aesthetic
68
49
69
50
## Keyboard Controls
70
51
71
-
-`j` or `↓`: Move down
72
-
-`k` or `↑`: Move up
73
-
-`Enter`: Open selected story in default browser
74
-
-`C`: Open comments for selected story
75
-
-`o`: Open options menu
76
-
-`q`: Quit application
77
-
-`Esc`: Close menus/summaries
78
-
-`T`: Switch to Top stories
79
-
-`A`: Switch to Ask HN
80
-
-`S`: Switch to Show HN
81
-
-`J`: Switch to Jobs
82
-
-`h`/`l`: Navigate between sections
83
-
-`r`: Refresh current section
84
-
-`R`: Refresh all sections
85
-
-`Ctrl+K`: Open command palette (search and execute commands)
86
-
-`/`: Start search (type to filter stories)
52
+
### Stories (Normal Mode)
53
+
54
+
| Key | Action |
55
+
|-----|--------|
56
+
|`j` / `↓`| Move down |
57
+
|`k` / `↑`| Move up |
58
+
|`Enter`| Open story in browser |
59
+
|`c`| View comments inline |
60
+
|`C`| Open comments in browser |
61
+
|`o`| Open options menu |
62
+
|`h` / `l`| Previous / next section |
63
+
|`T` / `A` / `S` / `J`| Jump to Top / Ask / Show / Jobs |
64
+
|`r`| Refresh current section |
65
+
|`R`| Refresh all sections |
66
+
|`/`| Search / filter stories |
67
+
|`Ctrl+K`| Open command palette |
68
+
|`q` / `Ctrl+C`| Quit |
69
+
70
+
### Comments View
71
+
72
+
| Key | Action |
73
+
|-----|--------|
74
+
|`j` / `↓`| Move down |
75
+
|`k` / `↑`| Move up |
76
+
|`o` / `Enter`| Open selected comment in browser |
77
+
|`r`| Reply to selected comment (opens HN reply page) |
78
+
|`R`| Refresh comments |
79
+
|`Esc` / `q`| Back to stories |
80
+
81
+
### Search Mode
82
+
83
+
| Key | Action |
84
+
|-----|--------|
85
+
|`↑` / `↓`| Navigate filtered results |
86
+
|`Enter`| Open selected story |
87
+
|`Esc`| Cancel search |
88
+
89
+
### Command Palette
90
+
91
+
Press `Ctrl+K` to open the command palette, which provides:
92
+
- Searchable list of all available commands
93
+
- Real-time filtering as you type
94
+
- Navigate with Up/Down arrows, execute with Enter, close with Esc
0 commit comments