Εγκατάσταση και πρώτη εκκίνηση

Το hntui διανέμεται ως αυτόνομο δυαδικό αρχείο που δεν έχει εξαρτήσεις. Η προτεινόμενη μέθοδος είναι η εκτέλεση του install.sh:

curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh

Το binary τοποθετείται στο ~/.local/bin/hntui. Εναλλακτικά, μπορείτε να το κατεβάσετε απευθείας από τη σελίδα Releases ή να το εγκαταστήσετε με Bun:

bun add -g @ahmd-sh/hntui

Μετά την εγκατάσταση, η εντολή hntui ξεκινά την εφαρμογή. Η έξοδος γίνεται με q ή Ctrl‑C.

Κύρια χαρακτηριστικά και πληκτρολογίες

Η διεπαφή είναι οργανωμένη σε καρτέλες που αντιπροσωπεύουν τις šέστες φeed του Hacker News. Η βασική πλοήγηση ακολουθεί τις συνήθεις vim‑προσαρμογές:

  • j / ↓ και k / ↑ για κίνηση curseurs.
  • gg και G για salto στην πρώτη ή τελευταία εγγραφή.
  • Ctrl‑D / Ctrl‑U και PgDown / PgUp για κύλιση μισής σελίδας.
  • c ή Enter για άνοιγμα του επιλεγμένου άρθρου και εμφάνιση των σχολίων.
  • h / ← και l / → για μετάβαση μεταξύ καρτελών.
  • 1‑6 για άμεσο salto σε συγκεκριμένη κατηγορία.
  • s για αποθήκευση/αποαποθήκευση του επιλεγμένου άρθρου (εμφανίζεται αστέρι).
  • S για άμεσο salto στην λίστα αποθηκευμένων.
  • o για άνοιγμα του URL στον προεπιλεγμένο περιηγητή.
  • r για ανανέωση του τρέχον φeed.
  • t για εναλλαγή μεταξύ του σκούρου και του φωτεινού θέματος.

Στην οθόνη λεπτομερειών (σχόλια) τα ίδια πλήκτρα ελέγχουν το curseurs των σχολίων, ενώ το Space συμπτύγει/εκτείνει το τρέχον δέντρο απαντήσεων. Το ποντίκι υποστηρίζει prácticamente όλες τις ενέργειες: κλικ σε καρτέλα για αλλαγή feed, διπλό κλικ σε σώμα σχολίου για popup συνδέσμων, δεξί κλικ σε άρθρο για context menu (Save, Open URL, Open Comments).

Αρχιτεκτονική και εξάρτηματα

Το hntui χτίζεται πάνω στην βιβλιοθήκη OpenTUI, η οποία παρέχει το βασικό framework για δημιουργία TUIs με υποστήριξη truecolor, UTF‑8 και ποντικιού. Ο κώδικας γραμμένοι σε TypeScript και μεταγλωττίζεται με το Bun, το οποίο επιτρέπει την παραγωγή αυτόνομων δυαδικών αρχείων μέσω της εντολής bun build --compile. Αυτό σημαίνει ότι το τελικό binary δεν απαιτεί Node.js ή Bun στο σύστημα‑στόχο· είναι αυτόνομο.

Τα δεδομένα vengono estratti από το δημόσιο Firebase API του Hacker News. Η εφαρμογή κάνει HTTP GET requests προς τα endpoints /topstories.json, /newstories.json κ.λπ., και στη συνέχεια λήπτει τα στοιχεία κάθε ID με /item/<id>.json. Η διαχείριση του state είναι τοπική (in‑memory) με caching των τελευταίων φeed για να αποφευχθούν περιττές αιτήσεις κατά την ταχεία πλοήγηση.

Θέματα, αποθήκευση και μελλοντική εξέλιξη

Το hntui προσφέρει δύο ενσωματωμένα θέματα: ένα σκούρο με πορτοκαλιά accents και ένα φωτεινό που μιμείται την εμφάνιση του news.ycombinator.com (λευκό φόντο, πορτοκαλιά κίναρα, beige highlight σε γραμμές, κλασικό γκρι byline). Η εναλλαγή γίνεται με το πλήκτρο t.

Οι αποθηκευμένες αναρτήσεις συγχωνεύονται σε ένα αρχείο JSON (~/.config/hntui/saved.json) που είναι ανθρώπιμη‑αναγνώσιμη και αντιστοιχεί σε μια λίστα IDs. Η μονόπατη λειτουργία s αλλάζει την κατάσταση étoile και ενημερώνει το αρχείο.real‑time.

Οι προγραμματιστές μπορούν να συνεισφέρουν κλonadoν το repository, να τρέξουν bun install και bun dev για hot reload während της development. Η διαδικασία κυκλοφορίας είναι αυτοματοποιημένη μέσω δύο GitHub Actions:

  • Ένα workflow που cross‑compile τα binaries για macOS (ARM64) και Linux (x64/ARM64), τα δοκιμάζει στο live API και τα προσθέτει σε μια.release.
  • Ένα άλλο workflow που δημοσιεύει το πακέτο @ahmd-sh/hntui στο npm με OIDC‑based trusted publishing και SLSA provenance.

Αυτό το μοντέλο εξασφαλίζει ότι οι χρήστες λαμβάνουν πάντα ενημερωμένα, αποδοτικά binaries χωρίς να χρειάζεται να διαχειρίζονται εξαρτήσεις.