From 1bed4bbd9a0606f9d3edfbf0ccfd1499793f8712 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Mon, 16 Feb 2026 08:59:56 -0800 Subject: Fix v3 theme contrast and sync with v2 colors, add v3 logo, and fix v2 test stability - Sync v3 dark/light theme colors with v2 defaults - Fix v3 settings input/select contrast in dark mode - Add logo emoji to v3 sidebar - Fix duplicate key warnings and side-effect issues in FeedItems.tsx (v2) - Rebuild production assets --- .thicket/tickets.jsonl | 2 +- frontend-vanilla/src/main.test.ts | 9 +++ frontend-vanilla/src/main.ts | 19 +++-- frontend-vanilla/src/style.css | 52 ++++++++++-- frontend/src/components/FeedItems.tsx | 54 ++++++------- performance_analysis.md | 99 ----------------------- vanilla_frontend_proposal.md | 144 ---------------------------------- web/dist/v2/assets/index-Cx5xz1G6.js | 11 +++ web/dist/v2/assets/index-aSc_HGFN.js | 11 --- web/dist/v2/index.html | 2 +- web/dist/v3/assets/index-BZ4E0pnc.css | 1 + web/dist/v3/assets/index-DmGSlScV.js | 144 ++++++++++++++++++++++++++++++++++ web/dist/v3/assets/index-DtCsR798.css | 1 - web/dist/v3/assets/index-T5yK9TsL.js | 143 --------------------------------- web/dist/v3/index.html | 4 +- 15 files changed, 254 insertions(+), 442 deletions(-) delete mode 100644 performance_analysis.md delete mode 100644 vanilla_frontend_proposal.md create mode 100644 web/dist/v2/assets/index-Cx5xz1G6.js delete mode 100644 web/dist/v2/assets/index-aSc_HGFN.js create mode 100644 web/dist/v3/assets/index-BZ4E0pnc.css create mode 100644 web/dist/v3/assets/index-DmGSlScV.js delete mode 100644 web/dist/v3/assets/index-DtCsR798.css delete mode 100644 web/dist/v3/assets/index-T5yK9TsL.js diff --git a/.thicket/tickets.jsonl b/.thicket/tickets.jsonl index ca30fc0..0b1116e 100644 --- a/.thicket/tickets.jsonl +++ b/.thicket/tickets.jsonl @@ -38,7 +38,7 @@ {"id":"NK-8u3uo3","title":"Add configurable username support","description":"Currently login accepts a username field but ignores it. We should allow configuring a username (defaulting to 'neko') and validate it during login.","type":"task","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-15T05:16:55.257993616Z","updated":"2026-02-15T05:16:55.257993616Z"} {"id":"NK-9hx0y7","title":"Implement Frontend Login","description":"Create login page and auth logic in the new React frontend. Port functionality from legacy login.html.","type":"","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T05:44:01.546395342Z","updated":"2026-02-13T05:50:33.877452063Z"} {"id":"NK-9pgjph","title":"v2 ui - font size 18px","description":"Compare your font sizes with the legacy version -- I think they're a little too small (16 vs 18 baseline)","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T03:21:48.453217898Z","updated":"2026-02-14T03:24:25.316927886Z"} -{"id":"NK-9vquj9","title":"v3 login","description":"Login still doesn't work right -- i'm assuming the CSRF stuff is still wrong","type":"bug","status":"open","priority":0,"labels":null,"assignee":"","created":"2026-02-16T16:24:06.315635122Z","updated":"2026-02-16T16:24:06.315635122Z"} +{"id":"NK-9vquj9","title":"v3 login","description":"Login still doesn't work right -- i'm assuming the CSRF stuff is still wrong","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-16T16:24:06.315635122Z","updated":"2026-02-16T16:50:26.432014927Z"} {"id":"NK-a217qm","title":"font styles","description":"Switch the default font stack and size to match the legacy UI","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:59:37.686539676Z","updated":"2026-02-14T01:25:03.119825567Z"} {"id":"NK-a7c6lb","title":"coverage status","description":"check coverage status -- are we still close to 80%\nit's ok to ignore the old static legacy javascript or vanilla js prototype\nif it's low file a ticket to get coverage back up","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T17:32:19.995215347Z","updated":"2026-02-14T18:03:41.748377361Z"} {"id":"NK-a9hs2m","title":"Update golangci-lint version and config to v2","description":"The local environment uses golangci-lint v2.9.0 which is incompatible with the current v1 config. Running migration updated the .golangci.yml to version 2. We should update the GitHub CI workflow to use a compatible version and ensure local/CI parity.","type":"cleanup","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-15T16:11:21.682298135Z","updated":"2026-02-15T19:08:26.641314931Z"} diff --git a/frontend-vanilla/src/main.test.ts b/frontend-vanilla/src/main.test.ts index c9d0e0c..3798f1b 100644 --- a/frontend-vanilla/src/main.test.ts +++ b/frontend-vanilla/src/main.test.ts @@ -65,10 +65,19 @@ describe('main application logic', () => { it('renderLayout should create sidebar and main content', () => { renderLayout(); expect(document.getElementById('sidebar')).not.toBeNull(); + expect(document.querySelector('.logo')).not.toBeNull(); expect(document.getElementById('content-area')).not.toBeNull(); expect(document.getElementById('sidebar-toggle-btn')).not.toBeNull(); }); + it('should navigate to home when clicking logo', () => { + renderLayout(); + const logo = document.querySelector('.logo') as HTMLElement; + const navigateSpy = vi.spyOn(router, 'navigate'); + logo.click(); + expect(navigateSpy).toHaveBeenCalledWith('/', expect.any(Object)); + }); + it('renderFeeds should populate feed list', () => { renderLayout(); store.setFeeds([{ _id: 1, title: 'Test Feed', url: 'test', web_url: 'test', category: 'tag' }]); diff --git a/frontend-vanilla/src/main.ts b/frontend-vanilla/src/main.ts index c0adb92..f4493b8 100644 --- a/frontend-vanilla/src/main.ts +++ b/frontend-vanilla/src/main.ts @@ -30,6 +30,7 @@ export function renderLayout() {