| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
Closed: NK-t8qnrh, NK-mcl01m, NK-pbqvke, NK-z1czaq, NK-ekxfvv,
NK-tktg7s, NK-ax2vlc, NK-26sdqp
Created: NK-u9dlcx (frontend linting), NK-2ylt2b (dark mode tests),
NK-q7a6kb (safehttp proxy bypass test), NK-0fjzr6 (stream benchmark)
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
|
|
| |
- NK-t8qnrh: test that item-description renders links in feed items
- NK-mcl01m: test sidebar section order (filters → search → feeds → tags),
and presence of "+ new" link
- NK-z1czaq: test that sidebar and main-content are siblings (overlay layout)
- Import renderLayout and createFeedItem into regression test suite
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
|
|
| |
- Fresh benchmark data on amd64 Intel Xeon (previous was arm64)
- Highlight new full_content benchmarks: 39% memory, 40% speed improvement
from excluding full_content in list views (validates NK-k9otuy fix)
- Update frontend perf results (all pass, DOM insertion ~324ms)
- Note safehttp proxy fix in changes since last run
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
|
|
|
| |
- Re-enable push/PR triggers on master branch
- Frontend job: use ./frontend-vanilla (was ./frontend, which no longer exists)
- ui-check: check web/dist/v3/ (was web/dist/v2/)
- Backend dummy assets: create web/dist/v3 (was web/dist/v2)
- Remove frontend lint step (no lint script in frontend-vanilla)
- Remove E2E job (disabled in Makefile, no playwright setup in v3)
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
|
| |
Add BenchmarkFilter_15Items_WithFullContent, BenchmarkFilter_15Items_IncludeFullContent,
and BenchmarkFilter_LargeDataset_WithFullContent. Items are seeded with realistic
~2KB full_content. Results show excluding full_content reduces B/op by ~40%
(363KB vs 595KB for 15 items).
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
| |
Make sidebar position: fixed on desktop, same as mobile. Content area
fills full viewport width and items remain centered regardless of sidebar
state. Easy-to-revert CONTENT CENTERING PARAMETER comment added.
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
|
|
| |
- Sidebar uses grey background with dark text in dark mode
- Sidebar toggle has no background in dark mode
- Sidebar search input uses light bg with dark text in dark mode
- item-description links use correct color (--link-color = #5ac8fa in dark)
and no underline (fixed in prior commit)
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
|
| |
New order: filters (Unread/All/Starred) → search → "+ new" → Feeds → Tags
Previously: search → filters → Tags → Feeds
Also adjust sidebar-search margin now that it's inside the scroll area.
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| |
|
|
|
|
|
|
|
|
| |
- Add text-decoration: none to .item-description a links in v3 CSS
to match v1 style (no underlines on feed item content links)
- Fix safehttp to disable proxy on safe client; without this, HTTP
proxy env vars bypass the DialContext SSRF check for IPs like
10.0.0.1, causing TestSafeClient to fail
https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
legacy theme
|
| |
|
|
| |
Vanilla JS (V3)
|
| | |
|
| |
|
|
| |
viewport, while keeping V1 unchanged
|
| | |
|
| | |
|
| | |
|
| | |
|
| |\
| |
| | |
Remove circle styling from NEKO sidebar toggle button
|
| |/
|
|
|
|
|
| |
Strip border-radius, box-shadow, background, and backdrop-filter from
the sidebar toggle in both v2 and v3 frontends so the logo appears flat.
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
|
| |\
| |
| | |
More crank pulls from claude
|
| | |
| |
| |
| | |
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- CSRF: test excluded paths (/api/login, /api/logout), PUT/DELETE methods
- Item model: test Filter includeContent flag, ItemById returns content,
multiple feed_ids filtering
- API: test read_filter=all param, feed_ids comma-separated filter,
full_content exclusion from stream
- Routing: add v3 frontend route test
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
|
| | |
| |
| |
| |
| |
| |
| |
| | |
The sidebar default-closed JS logic used 1024px but CSS media queries
used 768px, causing inconsistent behavior on tablets. Updated all
sidebar-related breakpoints to 1024px/1025px to match.
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The /stream endpoint now skips selecting full_content and header_image
from the database, reducing memory allocation and response payload size
for list views. Full content remains available via /item/:id endpoint.
Adds omitempty to JSON tags so empty fields are omitted from responses,
and a test verifying full_content is excluded from stream responses.
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
|
| |\ \
| |/
|/| |
Fix mobile scroll not marking items as read in v3 UI
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two issues prevented IntersectionObserver from firing on mobile:
1. threshold: 1.0 required items to be 100% visible, but on mobile
viewports items with descriptions are often taller than the screen
2. root: null used the viewport, but scrolling happens inside
.main-content (overflow-y: auto) while body has overflow: hidden
Switched to "scrolled past" pattern: items are marked read when they
scroll above the viewport (like the working legacy UI). Set root to
the actual scroll container element.
https://claude.ai/code/session_01NSUnBzNrgQVUNg9PnugF7N
|
| | |
|
| |
|
|
|
|
|
|
|
| |
When on the settings page and clicking a feed that was previously
active, navigate to that feed instead of toggling back to home.
The toggle behavior now only applies when already viewing that feed.
Added tests for navigating from settings to feeds and tags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
| |
Ran Go benchmarks (3x count) across api, crawler, item model, and web
middleware packages. Also ran frontend-vanilla perf tests. Documented
findings including stream allocation overhead, image proxy cost, and
middleware latency. Added potential improvement recommendations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
| |
Login form now includes a CSRF token from the cookie as a hidden form
field. The CSRF middleware accepts tokens from either the X-CSRF-Token
header (for JS clients) or the csrf_token form field (for HTML forms).
Removed /login from the CSRF exclusion list so login POSTs are now
validated.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
| |
Sidebar open/close state is now saved to a cookie (neko_sidebar) so it
persists across page reloads. On first visit without a cookie, the
sidebar defaults to closed on tablet and mobile (<=1024px viewport)
and open on desktop. Removes the auto-open-on-resize behavior that
was overriding user preference.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |\
| |
| | |
Change mark-as-read threshold from 50% to 100% visibility
|
| |/
|
|
|
|
|
|
|
|
|
|
|
| |
Change IntersectionObserver threshold from 0.5 to 1.0 so items are only
marked as read when fully scrolled into view, reducing accidental
mark-as-read during fast scrolling.
Also fix unused Category import in perf test and add thicket config.json
to repository so future agents can use thicket CLI commands.
Closes NK-s2g59a
https://claude.ai/code/session_019Z4VJxzY7tcAuNkPAkvry9
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
branding
- Fix V3 keyboard navigation delay (resolved NK-wjats7)
- Update V3 document title to 'neko' (resolved NK-4p3s91)
- Fix V3 neko logo/button position to be top-left fixed (resolved NK-89za3s)
- Improve FeedItems (React) stability with ref-based index tracking and robust tests
- Sync V3 styling and selection feedback with V2 patterns
- Rebuild production assets
|
| |
|
|
|
|
|
| |
- Remove duplicate neko logo from v3 sidebar
- Keep sidebar toggle button fixed at top-left even when sidebar is open
- Add top padding to v3 sidebar to prevent overlap with the fixed toggle button
- Update v3 tests to match UI changes
|
| |\
| |
| | |
Add performance benchmarks, stress tests, and frontend perf tests
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Go benchmarks cover item CRUD/filter/sanitization, API endpoints (stream,
item update, feed list), middleware stack (gzip, security headers, CSRF),
and crawler pipeline (feed parsing, mocked crawl). Stress tests verify
concurrent reads/writes and large dataset handling. Frontend perf tests
measure template generation, DOM insertion, and store event throughput.
New Makefile targets: bench, bench-short, stress, test-perf.
https://claude.ai/code/session_01ChDVWFDrQoFjMYHpaLGr9s
|
| |\|
| |
| | |
Add performance and stress test plan
|
| |/
|
|
|
|
|
|
|
| |
Comprehensive plan covering Go backend benchmarks (item/filter/API/middleware/crawler),
stress tests (concurrent reads/writes, large datasets), and frontend perf tests
(render throughput, store event cascades). Saved to both PLAN.md and DOCS/ for
reference by other agents.
https://claude.ai/code/session_01ChDVWFDrQoFjMYHpaLGr9s
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
- Update Makefile to correctly build and copy frontend-vanilla (v3) assets
- Fix frontend-vanilla/vite.config.ts to build to its own dist directory
- Normalize CSRF check path and exclude /api/logout to fix v3 session clearing
- Include latest built assets for v3
|
| |
|
|
|
|
|
|
|
| |
- Close NK-cuz8gh: v3 feed management
- Add 'Manage Feeds' section to settings view in v3 UI
- Implement deleteFeed and updateFeed helper functions
- Add event listeners for deleting feeds and updating tags
- Add tests for new functionality
- Created NK-cdwj52 for bulk edit feature
|
| |
|
|
|
|
| |
- Close NK-edahin: cut 'FILTERS' text
- Remove the h3 Filters header in frontend-vanilla/src/main.ts
- Verified that tests still pass
|
| |
|
|
|
|
|
|
| |
- Close NK-s8nytj: Settings page close behavior
- Update frontend-vanilla/src/main.ts to toggle settings/filter navigation
- Add tests in frontend-vanilla/src/main.test.ts for navigation logic
- Created NK-gxvegm for feed/tag settings behavior
- Created NK-f64ocp for routing logic refactor
|