title: Implement Frontend Logout

description: Add logout button/link in dashboard and call /api/logout.

type: task

status: closed


title: Implement Frontend Settings

description: Create settings page for managing feeds/categories.


title: refactor backend to have a clean API

description:
create a nice clean API for the backend GO code that is more independent of the frontend

ensure that it is working with good tests


title: Increase Test Coverage to >80%

description: Project-wide test coverage is currently ~63%. Key gaps are in the new  and  packages, as well as some core model logic. Increase coverage to at least 80% to ensure stability.

status: open


title: Mobile Layout Verification for New Frontend

description: Verify and adjust the new fixed-width layout for mobile devices to ensure responsiveness.


title: Implement Feed Items View

description: Create a component to display items for a selected feed. Fetch items from /api/stream?feed_id=...


title: Implement Frontend Logout

description: Add logout button to dashboard header. Call /api/logout (need to create this potentially?). Redirect to /login


title: Infinite scroll

description: a key feature of the original version that when you scroll to the bottom, it catches that and loads more (based on the current filters, etc)


title: Refactor HTTP-dependent functions for testability

description: Several functions use http.Get or external libraries directly (GetFullContent uses goose, ResolveFeedURL uses http.Get + goquery, imageProxyHandler uses http.Client). Refactor these to accept interfaces for HTTP fetching so they can be unit tested with mocks. This is the primary blocker for reaching 90% coverage.

type: cleanup


title: Fix TUI Content View Navigation and Interaction

description: The TUI content view (reading a single item) is currently non-functional or severely limited. Users cannot easily navigate back, scroll, or interact with the content. This task involves improving the 'viewContent' state in the TUI.

type: bug


title: page size and performance

description: Do some analysis of page size (css/html/javascript) on the legacy version vs. new version and give me a report. We want it to be small and fast! If the new version is much worse file some tickets to investigate further.


title: Implement Frontend Login

description: Create login page and auth logic in the new React frontend. Port functionality from legacy login.html.


title: drop "mark read" button

description: there's no mark read/unread buttons, it's just by scrolling!


title: terminal UI

description: once there is good test coverage and a clean backend API, work on a nice efficient TUI with https://github.com/charmbracelet/bubbletea


title: Make feed crawling async in API

description: Currently, POST /api/feed triggers an immediate crawl which blocks the response (or at least keeps the goroutine alive). Refactor the crawling architecture to be truly async with a job queue or status updates, improving API responsiveness and reliability.


title: Implement Item Interactions

description: Add ability to toggle read/unread and star/unstar status for items. Use PUT /item/:id


title: UI: Improve accessibility for star icon

description: The new star button should have proper aria-labels and potentially better focus states for screen readers.


title: UI Styling: Dark Mode Support


title: Remaining test coverage gaps

description: Cross-package test coverage is at 81.2%. The remaining untested functions are: GetFullContent (goose HTTP extraction), indexHandler/serveBoxedFile (rice.MustFindBox), Serve (starts HTTP server), main, util.init. To reach 90%, consider: (1) refactoring GetFullContent to accept an interface for HTTP fetching, (2) refactoring Serve to extract route setup into a testable function, (3) mocking rice.MustFindBox, (4) using feeds from https://trenchant.org/feeds.txt as static test fixtures for integration tests.


title: 600px width by default, closer to left panel

description: On desktop the feed items are too narrow (~500px) compared to legacy version which is ~600px.


title: docker support

description: add support so people can self-host this in docker and (maybe) test it yourself. maybe keep it in a docker directory with separate docs etc.

type: epic


title: UI Styling: Global Typography & Layout (Fixed Width)


title: Implement Tag View

description: Create frontend view for browsing items by tag/category. Use /tag/:id endpoint.


title: UI: Add skeleton loaders for feed item loading

description: The currently 'Loading more...' text is basic. We should add skeleton loaders for a smoother infinite scroll experience.


title: Ensure 80% Frontend Test Coverage

description: Configure coverage reporting in vitest and ensure the frontend codebase maintains at least 80% test coverage.


title: get rid of the "selected" highlight thing

description: the legacy version doesn't do that and i find it distracting, j/k just move things up/down


title: UI Styling: Controls & Header


title: Migrate frontend to /api/ endpoints

description: The backend now provides a clean REST API at /api/. Update the frontend UI to use these new endpoints instead of the legacy backward-compatibility routes (/stream/, /feed/, etc.). This will allow for cleaner separation and better utilization of proper REST patterns.


title: add search to new ui


title: Implement Export/Import UI

description: Add UI in settings to download OPML export and upload OPML import. Use /export/ and /import/ (need to check if import exists).

type: feature


title: new web frontend

description:
The current frontend uses an old version of backbone and jquery. Let's "deprecate" it -- keep it arouond so we can test against it and use it, but let's be able to also serve and use a nice shiny new frontend written in either simiple, highly efficient vanilla javascript, or put together something in react or similar. Needs to feel fast and low latency!

It's very important that this new frontend has all the functionality of the existing one AND looks similar (use same style, etc, but adjust a little if needed.)

ALSO make it highly testable and have high test coverage as you go. I don't want it to use the Chrome browser plugin thing, just test it on your own using things from the command line you can do.


title: E2E Testing

description: Set up E2E testing with Playwright or Cypress to verify full flows: Login -> View Feeds -> View Items -> Logout


title: UI Styling: Feed Items (Spacing, Dateline)


title: https://computer.rip/rss.xml fails to importa

description: running neko -a https://computer.rip/rss.xml gave an error. debug it and add test case to catch.


title: update README.md

description:
Ensure the build, configuration, etc are up too date.
Note the git change when we started to vibe-code this in the history (with dates etc.)


title: test coverage

description:
assume the code works properly (it mostly does)
get to 90% test coverage on the go code


title: add "star" back in

description: rather than the word "star" it should just have a star that changes colors right next to the title


title: UI Styling: Sidebar (Fixed, Gray Background)


title: Implement Frontend Feed List

description: Create feed list view in new frontend. Fetch feeds from API.