aboutsummaryrefslogtreecommitdiffstats
path: root/.thicket
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-15 21:55:32 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-15 21:55:32 -0800
commit174987660473d4cdc1ad6857e5513a69f265f614 (patch)
tree3ec88045fa7e2f6d26d40f0650c2699758532c2e /.thicket
parent657faf3acd7755d6b84a87e0e363729d95930258 (diff)
downloadneko-174987660473d4cdc1ad6857e5513a69f265f614.tar.gz
neko-174987660473d4cdc1ad6857e5513a69f265f614.tar.bz2
neko-174987660473d4cdc1ad6857e5513a69f265f614.zip
Vanilla JS (v3): Removed confusing secondary cat logo, fixed mobile overflow, cleaned up styles
Diffstat (limited to '.thicket')
-rw-r--r--.thicket/tickets.jsonl12
1 files changed, 6 insertions, 6 deletions
diff --git a/.thicket/tickets.jsonl b/.thicket/tickets.jsonl
index ef4b7c4..ca72f4e 100644
--- a/.thicket/tickets.jsonl
+++ b/.thicket/tickets.jsonl
@@ -48,9 +48,9 @@
{"id":"NK-bsdwqz","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","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T01:54:02.285738454Z","updated":"2026-02-13T04:42:09.824268427Z"}
{"id":"NK-ca9t70","title":"Vanilla JS: Add Feed UI","description":"Add UI to add a new feed by URL in vanilla JS prototype.","type":"feature","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T04:47:41.764330544Z","updated":"2026-02-14T04:47:41.764330544Z"}
{"id":"NK-chns2b","title":"reach parity between vanilla js and react v2 ui","description":"Continue implementing the vanilla js one with minimal overhad/depdnencies to be fast and lean. Make sure there are tests and rely on the v2 ui and legacy version as references.","type":"epic","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T04:45:06.813453353Z","updated":"2026-02-14T04:45:06.813453353Z"}
-{"id":"NK-ck4co9","title":"Refactor E2E tests to use page objects","description":"The E2E tests are getting complex. Refactor them to use the Page Object Model pattern for better maintainability.","type":"task","status":"open","priority":4,"labels":null,"assignee":"","created":"2026-02-15T02:21:34.96843041Z","updated":"2026-02-15T19:14:31.660189629Z"}
+{"id":"NK-ck4co9","title":"Refactor E2E tests to use page objects","description":"The E2E tests are getting complex. Refactor them to use the Page Object Model pattern for better maintainability.","type":"task","status":"closed","priority":4,"labels":null,"assignee":"","created":"2026-02-15T02:21:34.96843041Z","updated":"2026-02-15T19:14:31.660189629Z"}
{"id":"NK-cv567g","title":"Vanilla JS (v3): Remove inline JS and fix CSP errors","description":"","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-16T02:42:53.916053881Z","updated":"2026-02-16T03:36:10.178537038Z"}
-{"id":"NK-d2be57","title":"Persist sidebar state across reloads","description":"Currently sidebar state resets on reload. It should persist in localStorage like the theme.","type":"feature","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-15T22:23:06.847360465Z","updated":"2026-02-15T22:23:06.847360465Z"}
+{"id":"NK-d2be57","title":"Persist sidebar state across reloads","description":"Currently sidebar state resets on reload. It should persist in localStorage like the theme.","type":"feature","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-15T22:23:06.847360465Z","updated":"2026-02-15T22:23:06.847360465Z"}
{"id":"NK-d4c8jv","title":"Vanilla JS Parity: Read/Star/Filter","description":"Implement read/unread toggle, star/unstar, and special filters (All, Unread, Starred) in vanilla JS prototype.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T04:46:32.113504545Z","updated":"2026-02-14T04:47:46.412290355Z"}
{"id":"NK-dbcl6t","title":"Create Python Compliance Suite","description":"","type":"task","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-15T00:21:53.997204693Z","updated":"2026-02-15T00:44:41.52830766Z"}
{"id":"NK-doss0v","title":"v2 ui: change title fonts to Helvetica Neue","description":"to match style in legacy change font to match Helventic Neue where applicable","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T06:27:57.270935467Z","updated":"2026-02-14T06:31:42.798620609Z"}
@@ -65,7 +65,7 @@
{"id":"NK-fnbaaf","title":"stress test with a REALLY big database","description":"I have been using a version of neko for over a decade and my prod database is 1.4GB sqlite file. it's in big_neko.db\n\nrun some tests with that big database and see if anything messes up! DO NOT CHECK IN THAT BIG DATABASE EVER.\n\nif there are bugs or performance issues with such a big db, file some tickets for us to evaluate and we can create some synthetic data or issues later on.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-15T02:58:54.859954523Z","updated":"2026-02-15T02:58:54.859954523Z"}
{"id":"NK-fpzx66","title":"v2 ui - title styling","description":"The title of the article stays blue and bold regardless of read state.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:22:55.339956853Z","updated":"2026-02-14T03:28:01.555909701Z"}
{"id":"NK-fzjyay","title":"github CI fails","description":"Both the backend and frontend failed the CI jobs failed the lint checks.\n\nare we running those properly locally before submitting\n\nalso the frontent consistency check failed","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-15T02:41:02.747760248Z","updated":"2026-02-15T05:11:46.097784637Z"}
-{"id":"NK-g4n0sq","title":"write tests based on closed CLs","description":"Look at the recent CLs and closed tickets over the past 48 hours and identify areas where we need regression tests or other tests and write tickets for them as additional testing","type":"epic","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-15T21:46:39.050460849Z","updated":"2026-02-15T21:46:39.050460849Z"}
+{"id":"NK-g4n0sq","title":"write tests based on closed CLs","description":"Look at the recent CLs and closed tickets over the past 48 hours and identify areas where we need regression tests or other tests and write tickets for them as additional testing","type":"epic","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-15T21:46:39.050460849Z","updated":"2026-02-15T21:46:39.050460849Z"}
{"id":"NK-g7ya0n","title":"Style Settings page to match Glass sidebar","description":"The settings page currently uses the old retro aesthetic. It should be updated to match the new minimalist 'glass' sidebar style for visual consistency. This should include updating form elements, backgrounds, and typography.","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T23:53:46.590222566Z","updated":"2026-02-15T00:51:14.771780934Z"}
{"id":"NK-g818qn","title":"Improve mobile responsiveness of React UI","description":"The React UI should be fully responsive and work well on small screens. Now that the vanilla JS prototype is removed, we should ensure the main interface is a great experience for mobile users.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T22:46:32.850472479Z","updated":"2026-02-14T22:49:01.411224187Z"}
{"id":"NK-gdf99z","title":"TUI is terrible and needs fixing","description":"The TUI doesn't really work and doesn't make sense. Think very hard and look at the v2 HTML UI implementation and make something cool like that. Probably needs tests too.","type":"epic","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T03:51:59.882212859Z","updated":"2026-02-14T04:31:28.290051717Z"}
@@ -75,7 +75,7 @@
{"id":"NK-gnxc6e","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.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:58:15.661695308Z","updated":"2026-02-14T01:29:12.82081713Z"}
{"id":"NK-gqkh96","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","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T03:54:30.298141982Z","updated":"2026-02-14T02:44:05.399097286Z"}
{"id":"NK-hidz4w","title":"Add Local Git Hooks","description":"Create a script/make target to install a pre-push hook that runs 'make check'. This enforces quality gates locally, keeping the CI clean.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-15T16:23:36.906173277Z","updated":"2026-02-15T17:25:28.129358055Z"}
-{"id":"NK-hj6f9p","title":"Investigate E2E Tag View flakiness","description":"The E2E test for /v2/tag/Tech was temporarily disabled because it was timing out/failing. Investigate if it's a race condition or a routing issue.","type":"bug","status":"open","priority":4,"labels":null,"assignee":"","created":"2026-02-15T01:04:54.404114014Z","updated":"2026-02-15T19:14:17.974207248Z"}
+{"id":"NK-hj6f9p","title":"Investigate E2E Tag View flakiness","description":"The E2E test for /v2/tag/Tech was temporarily disabled because it was timing out/failing. Investigate if it's a race condition or a routing issue.","type":"bug","status":"closed","priority":4,"labels":null,"assignee":"","created":"2026-02-15T01:04:54.404114014Z","updated":"2026-02-15T19:14:17.974207248Z"}
{"id":"NK-hspao2","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.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T05:13:11.587767054Z","updated":"2026-02-14T05:13:11.587767054Z"}
{"id":"NK-htk1zc","title":"Vanilla JS (v3): Settings, Search, and Keyboard Shortcuts","description":"","type":"feature","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-16T02:02:01.850554958Z","updated":"2026-02-16T02:05:38.831401937Z"}
{"id":"NK-hy162w","title":"URLs in UI are api/feed output, not loadable HTML","description":"After clicking in the sidebar, you get to a URL like http://localhost:9001/feed/38?filter=all but if you hit \"reload\" in the browser that retuns a blob of JSON to the browser! Oops. Maybe just don't change the user visible URL at all. If we do change the URLs, maybe just use #/feed/38/filter=all or something similar that is just client side for the JS.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-15T22:00:10.335296177Z","updated":"2026-02-15T22:22:41.252479327Z"}
@@ -86,13 +86,13 @@
{"id":"NK-jqpn98","title":"adding feed in v2 ui shows error","description":"added https://trenchant.org/rss.xml as a feed in the UI but it gave some weird message inline like unexpected character, but it did eventually add it. what happened there","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T01:22:17.546117265Z","updated":"2026-02-14T01:25:07.317174513Z"}
{"id":"NK-jyw7lb","title":"add neko cat back to hide left navivation","description":"Change the \"neko reader\" to the cat emoji like in the legacy and have it toggle visibility of the left nav","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T01:01:08.430978911Z","updated":"2026-02-14T01:21:11.002320114Z"}
{"id":"NK-k04tet","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.","type":"bug","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T21:50:14.152486771Z","updated":"2026-02-14T02:43:56.02734439Z"}
-{"id":"NK-k1p9ij","title":"Evaluate E2E test harness","description":"Evaluate the current E2E test harness (Cleaning up test environment...\nCleanup complete.\nBuilding backend...\nCreating data directory...\nStarting mock feed server on port 9090...\nMock Server PID: 166494\nMock server is up.\nStarting backend on port 4994...\nBackend PID: 166520\nWaiting for backend to start...\nWaiting...\nBackend is up!\nRunning E2E tests...\n\n\u003e frontend@0.0.0 test:e2e\n\u003e playwright test\n\n\nRunning 13 tests using 1 worker\n\n\u001b[1A\u001b[2K[1/13] [chromium] › tests/auth.spec.ts:12:5 › Authentication - No Password Required › should allow direct access to dashboard without login\n\u001b[1A\u001b[2K[2/13] [chromium] › tests/auth.spec.ts:25:5 › Authentication - No Password Required › should allow login with empty password\n\u001b[1A\u001b[2K[3/13] [chromium] › tests/auth.spec.ts:38:5 › Authentication - No Password Required › should report authenticated status via API when no password\n\u001b[1A\u001b[2K[4/13] [chromium] › tests/auth.spec.ts:53:10 › Authentication - Password Required › should redirect to login when accessing protected routes\n\u001b[1A\u001b[2K[5/13] [chromium] › tests/auth.spec.ts:64:10 › Authentication - Password Required › should reject incorrect password\n\u001b[1A\u001b[2K[6/13] [chromium] › tests/auth.spec.ts:79:10 › Authentication - Password Required › should accept correct password and redirect to dashboard\n\u001b[1A\u001b[2K[7/13] [chromium] › tests/auth.spec.ts:93:10 › Authentication - Password Required › should persist authentication across page reloads\n\u001b[1A\u001b[2K[8/13] [chromium] › tests/auth.spec.ts:109:10 › Authentication - Password Required › should logout and redirect to login page\n\u001b[1A\u001b[2K[9/13] [chromium] › tests/auth.spec.ts:128:10 › Authentication - Password Required › should report unauthenticated status via API\n\u001b[1A\u001b[2K[10/13] [chromium] › tests/auth.spec.ts:142:5 › Authentication - Complete Flow › should handle complete user flow without password\n\u001b[1A\u001b[2K[11/13] [chromium] › tests/crawl.spec.ts:4:5 › Crawl Integration › should add a feed and see items after crawl\n\u001b[1A\u001b[2K[12/13] [chromium] › tests/e2e.spec.ts:4:3 › Neko Reader E2E › should allow login, viewing feeds, and logout\n\u001b[1A\u001b[2K[chromium] › tests/e2e.spec.ts:4:3 › Neko Reader E2E › should allow login, viewing feeds, and logout\nStep 5: Navigate to Home\n\n\u001b[1A\u001b[2KStep 6: Logout\n\n\u001b[1A\u001b[2K[13/13] [chromium] › tests/font.spec.ts:4:5 › Font Theme Settings › should change font family when theme starts\n\u001b[1A\u001b[2K 6 skipped\n 7 passed (5.2s)\n\nTo open last HTML report run:\n\u001b[36m\u001b[39m\n\u001b[36m npx playwright show-report\u001b[39m\n\u001b[36m\u001b[39m\nTests passed!\nCleaning up...\nCleaning up test environment...\nCleanup complete.) which is brittle and resource intensive. Consider alternative approaches or refactoring.","type":"task","status":"open","priority":4,"labels":null,"assignee":"","created":"2026-02-15T16:23:52.252436663Z","updated":"2026-02-15T19:14:31.772890559Z"}
+{"id":"NK-k1p9ij","title":"Evaluate E2E test harness","description":"Evaluate the current E2E test harness (Cleaning up test environment...\nCleanup complete.\nBuilding backend...\nCreating data directory...\nStarting mock feed server on port 9090...\nMock Server PID: 166494\nMock server is up.\nStarting backend on port 4994...\nBackend PID: 166520\nWaiting for backend to start...\nWaiting...\nBackend is up!\nRunning E2E tests...\n\n\u003e frontend@0.0.0 test:e2e\n\u003e playwright test\n\n\nRunning 13 tests using 1 worker\n\n\u001b[1A\u001b[2K[1/13] [chromium] › tests/auth.spec.ts:12:5 › Authentication - No Password Required › should allow direct access to dashboard without login\n\u001b[1A\u001b[2K[2/13] [chromium] › tests/auth.spec.ts:25:5 › Authentication - No Password Required › should allow login with empty password\n\u001b[1A\u001b[2K[3/13] [chromium] › tests/auth.spec.ts:38:5 › Authentication - No Password Required › should report authenticated status via API when no password\n\u001b[1A\u001b[2K[4/13] [chromium] › tests/auth.spec.ts:53:10 › Authentication - Password Required › should redirect to login when accessing protected routes\n\u001b[1A\u001b[2K[5/13] [chromium] › tests/auth.spec.ts:64:10 › Authentication - Password Required › should reject incorrect password\n\u001b[1A\u001b[2K[6/13] [chromium] › tests/auth.spec.ts:79:10 › Authentication - Password Required › should accept correct password and redirect to dashboard\n\u001b[1A\u001b[2K[7/13] [chromium] › tests/auth.spec.ts:93:10 › Authentication - Password Required › should persist authentication across page reloads\n\u001b[1A\u001b[2K[8/13] [chromium] › tests/auth.spec.ts:109:10 › Authentication - Password Required › should logout and redirect to login page\n\u001b[1A\u001b[2K[9/13] [chromium] › tests/auth.spec.ts:128:10 › Authentication - Password Required › should report unauthenticated status via API\n\u001b[1A\u001b[2K[10/13] [chromium] › tests/auth.spec.ts:142:5 › Authentication - Complete Flow › should handle complete user flow without password\n\u001b[1A\u001b[2K[11/13] [chromium] › tests/crawl.spec.ts:4:5 › Crawl Integration › should add a feed and see items after crawl\n\u001b[1A\u001b[2K[12/13] [chromium] › tests/e2e.spec.ts:4:3 › Neko Reader E2E › should allow login, viewing feeds, and logout\n\u001b[1A\u001b[2K[chromium] › tests/e2e.spec.ts:4:3 › Neko Reader E2E › should allow login, viewing feeds, and logout\nStep 5: Navigate to Home\n\n\u001b[1A\u001b[2KStep 6: Logout\n\n\u001b[1A\u001b[2K[13/13] [chromium] › tests/font.spec.ts:4:5 › Font Theme Settings › should change font family when theme starts\n\u001b[1A\u001b[2K 6 skipped\n 7 passed (5.2s)\n\nTo open last HTML report run:\n\u001b[36m\u001b[39m\n\u001b[36m npx playwright show-report\u001b[39m\n\u001b[36m\u001b[39m\nTests passed!\nCleaning up...\nCleaning up test environment...\nCleanup complete.) which is brittle and resource intensive. Consider alternative approaches or refactoring.","type":"task","status":"closed","priority":4,"labels":null,"assignee":"","created":"2026-02-15T16:23:52.252436663Z","updated":"2026-02-15T19:14:31.772890559Z"}
{"id":"NK-k4y597","title":"[feature] light/dark/black toggle","description":"Add in a simple [light | dark | black] theme toggler like in the legacy version.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:45:55.312953906Z","updated":"2026-02-14T01:29:20.073659889Z"}
{"id":"NK-kqt9oc","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","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T20:19:10.70328135Z","updated":"2026-02-14T01:03:35.363466842Z"}
{"id":"NK-kra45a","title":"enhance github ci/cq","description":"Make sure we have the right CI/CQ things in the github workflow. Can it test our docker compose for us too maybe","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-15T00:08:25.732991582Z","updated":"2026-02-15T01:04:54.350079542Z"}
{"id":"NK-lo7l8g","title":"Vanilla JS (v3): Achieve 80% test coverage","description":"","type":"task","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-16T02:43:17.405569291Z","updated":"2026-02-16T03:36:14.221291336Z"}
{"id":"NK-lrew5z","title":"UI Styling: Global Typography \u0026 Layout (Fixed Width)","description":"","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T18:04:57.254341682Z","updated":"2026-02-13T18:11:31.436752093Z"}
-{"id":"NK-lrihov","title":"Re-enable and fix errcheck lints","description":"Re-enable 'errcheck' in .golangci.yml and fix the remaining ~140 issues, mostly related to unchecked Writes and DB operations.","type":"cleanup","status":"open","priority":4,"labels":null,"assignee":"","created":"2026-02-15T16:41:08.395284346Z","updated":"2026-02-15T16:41:08.395284346Z"}
+{"id":"NK-lrihov","title":"Re-enable and fix errcheck lints","description":"Re-enable 'errcheck' in .golangci.yml and fix the remaining ~140 issues, mostly related to unchecked Writes and DB operations.","type":"cleanup","status":"closed","priority":4,"labels":null,"assignee":"","created":"2026-02-15T16:41:08.395284346Z","updated":"2026-02-15T16:41:08.395284346Z"}
{"id":"NK-m8bya7","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.","type":"bug","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T03:08:18.501189975Z","updated":"2026-02-14T04:00:03.995357386Z"}
{"id":"NK-mbuw7q","title":"v2 ui bug - panel open by default","description":"Panel is closed by default, it should be open by default on desktop.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T02:46:56.870671639Z","updated":"2026-02-14T03:08:17.322841854Z"}
{"id":"NK-mgmn5m","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","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T16:41:04.710679944Z","updated":"2026-02-14T17:38:25.35292336Z"}