hnclient
v0.2.0
Published
Keyboard-first Hacker News terminal client built with OpenTUI
Downloads
209
Maintainers
Readme
hnclient
A keyboard-first Hacker News terminal client built with TypeScript + OpenTUI.
Highlights
- Fully keyboard-driven workflow (no mouse required)
- Vim-style movement (
j/k,gg,G) - Breathable card-style story layout with color accents
- Read-state dimming (opened stories become gray)
- Centered Hacker News header + footer shortcut bar
- Modal search input boxes using OpenTUI input component
/local search in current feed?global Algolia search
Enteropens selected story directly in your system browserShift+Kopens selected story onnews.ycombinator.com/item?id=...copens threaded comments in terminal- Terminal is cleared on exit (
q/Ctrl+C)
Runtime Requirement
OpenTUI depends on Bun runtime APIs, so you need Bun installed:
- Install: https://bun.sh
The global hn command is a launcher script that runs the compiled app with Bun.
Install (Local)
npm install
npm run build
npm linkRun:
hn --feed topUsage
hn --feed new
hn --search "postgres"
hn --no-cacheKeybindings
j/kor arrows: move selectiongg/G: jump to top / bottomEnter: open selected story in browserShift+K: open selected story on HN item pagec: open comments viewh/l: collapse or expand comment node/: local search modal (current feed)?: global search modal (Algolia)n/N: next / previous local match1..6: switch feeds (top,new,best,ask,show,job)r: refresh feedqorEsc: back/quitCtrl+C: quit and clear terminal
Config and Cache
- Config:
~/.config/hnclient/config.json - Cache:
~/.cache/hnclient/cache.json
Build and Test
npm run typecheck
npm run lint
npm test
npm run buildPublish to npm
- Ensure you are logged in:
npm loginPick a unique package name in
package.json(currenthnclientmay already be taken).Bump version:
npm version patch- Build and verify:
npm run typecheck
npm run test
npm run build- Publish:
npm publish --access publicIf you publish under an npm scope (for example @yourname/hnclient), update name in package.json and publish with:
npm publish --access public