title: Vanilla JS: Implement Search

description: Add search bar to vanilla JS prototype and hook up to search API.

type: feature

status: closed


title: v2 frontend move the star to the RIGHT of the title

description: Look at the old implementation and make it look more like that! Big start, same size as the article title.

type: bug


title: go vet fails on github ci

description:
Looks like the newly enabled github ci runs go vet and got a bunch of errors including:

go vet ./...
  shell: /usr/bin/bash -e {0}
Error: config/config.go:6:2: missing go.sum entry for module providing package gopkg.in/yaml.v2 (imported by adammathes.com/neko/config); to add:
    go get adammathes.com/neko/config
Error: models/db.go:10:2: missing go.sum entry for module providing package github.com/mattn/go-sqlite3 (imported by adammathes.com/neko/models); to add:
    go get adammathes.com/neko/models
Error: models/feed/feed.go:10:2: missing go.sum entry for module providing package github.com/PuerkitoBio/goquery (imported by adammathes.com/neko/models/feed); to add:
    go get adammathes.com/neko/models/feed
Error: models/item/item.go:12:2: missing go.sum entry for module providing package github.com/advancedlogic/GoOse (imported by adammathes.com/neko/models/item); to add:
    go get adammathes.com/neko/models/item
Error: models/item/item.go:13:2: missing go.sum entry for module providing package github.com/microcosm-cc/bluemonday (imported by adammathes.com/neko/models/item); to add:
    go get adammathes.com/neko/models/item
Error: models/item/item.go:14:2: missing go.sum entry for module providing package github.com/russross/blackfriday (imported by adammathes.com/neko/models/item); to add:
    go get adammathes.com/neko/models/item
Error: crawler/crawler.go:7:2: missing go.sum entry for module providing package github.com/mmcdole/gofeed (imported by adammathes.com/neko/crawler); to add:
    go get adammathes.com/neko/crawler
Error: tui/tui.go:9:2: missing go.sum entry for module providing package github.com/charmbracelet/bubbles/list (imported by adammathes.com/neko/tui); to add:
    go get adammathes.com/neko/tui
Error: tui/tui.go:10:2: missing go.sum entry for module providing package github.com/charmbracelet/bubbles/viewport (imported by adammathes.com/neko/tui); to add:
    go get adammathes.com/neko/tui
Error: tui/tui.go:11:2: missing go.sum entry for module providing package github.com/charmbracelet/bubbletea (imported by adammathes.com/neko/tui); to add:
    go get adammathes.com/neko/tui
Error: tui/style.go:3:8: missing go.sum entry for module providing package github.com/charmbracelet/lipgloss (imported by adammathes.com/neko/tui); to add:
    go get adammathes.com/neko/tui
Error: web/web.go:19:2: missing go.sum entry for module providing package github.com/GeertJohan/go.rice (imported by adammathes.com/neko/web); to add:
    go get adammathes.com/neko/web
Error: web/rice-box.go:7:2: missing go.sum entry for module providing package github.com/GeertJohan/go.rice/embedded (imported by adammathes.com/neko/web); to add:
    go get adammathes.com/neko/web
Error: web/web.go:20:2: missing go.sum entry for module providing package golang.org/x/crypto/bcrypt (imported by adammathes.com/neko/web); to add:
    go get adammathes.com/neko/web
Error: main.go:16:2: missing go.sum entry for module providing package github.com/ogier/pflag (imported by adammathes.com/neko); to add:
    go get adammathes.com/neko
Error: Process completed with exit code 1.


title: Implement Feed Items View

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


title: v2 ui - collapsible feed list

description: In the left side navigation list of feeds, the feeds should be hidden by default. The word "feeds" should be a toggle to show/hide the list, with a triangle that indicates state.


title: Create api/reader package and middleware

type: task


title: FEEDS in sidebar needs to be more clearly a collapsible thing

description: FEEDS in the sidebar needs a caret (> that turns to V) or something similar to make it clear it's a toggle collapsible list thing


title: Feed list collapsed by default

description: The list of feeds on the left side should be collapsed by default, with a little control to extend it.


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.

type: cleanup


title: Vanilla JS: Implement Test Infrastructure

description: Setup testing infrastructure for vanilla JS prototype to ensure 80% coverage. Refactor app.js for testability and add unit tests.


title: [ui] when a left menu item is "active" make it bold

description: The "default" is UNREAD - this should be in the "bold" state when you're seeing that. When you filter out to "ALL" that should instead be bold. Same with the individual feeds if one is selected. And Starred.

type: epic


title: Improve scraper heuristics

description: The scraper currently uses a simple fallback between CleanedText and TopNode. It could be improved to better handle different article layouts.


title: Fix Playwright E2E Tests

description: The e2e tests in tests/e2e.spec.ts are failing when run with vitest. They should be run with playwright test runner, or configured correctly. Currently excluded from vitest.


title: [feature] light/dark/black toggle

description: Add in a simple [light | dark | black] theme toggler like in the legacy version.


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.


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


title: Fix and Re-enable Playwright E2E Tests

description: E2E tests were crashing the VM and timing out. Disabled them in package.json. Need to investigate resource usage and re-enable.


title: v2 ui bug - panel open by default

description: Panel is closed by default, it should be open by default on desktop.


title: serve "legacy" version UI at /v1/ instead of /

description: Let's "softly" start to deprecated the legacy version by moving it to /v1/ -- ideally this won't require any changes but there may be some relative/absolute URLs to adjust in the static files there or in rouoting


title: Implement Tag View

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


title: Fix TypeScript Lint Errors in Tests

description: There are lint errors in test files regarding jest-dom matchers (toBeInTheDocument, etc). Ensure proper types are included.


title: fix github ci

description: seems to be broken, are the right things still in there given all the refactorings