aboutsummaryrefslogtreecommitdiffstats
path: root/web
Commit message (Collapse)AuthorAgeFilesLines
* Commit ticket updates and remaining backend lint fixesAdam Mathes10 days1-1/+2
|
* Create 'make check' unified workflow and fix various lint issuesAdam Mathes10 days1-26/+14
|
* chore: update build artifacts and finalize test improvementsAdam Mathes11 days2-8/+8
|
* chore: align local Makefile with GitHub CI jobsAdam Mathes11 days2-7/+7
|
* chore: fix lint and type errors to resolve CI failuresAdam Mathes11 days4-3/+3
|
* ci: enhance workflow with E2E tests and Docker checkAdam Mathes11 days3-14/+2
|
* assets updateAdam Mathes11 days2-0/+12
|
* UI: Improve consistency of settings, logout, and theme sections in sidebar ↵Adam Mathes11 days4-3/+3
| | | | (NK-v9e7r3)
* UI: Add collapsible caret icons for Tags and Feeds in sidebar (NK-gjymiw)Adam Mathes11 days5-14/+14
|
* Cleanup root directory by moving scripts to scripts/ and fix CSRF cookie ↵Adam Mathes11 days1-2/+2
| | | | policy for dev env
* task: delete vanilla js prototype\n\n- Removed vanilla/ directory and ↵Adam Mathes11 days4-486/+0
| | | | web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
* fix: auto-load more items when pressing 'j' on last item\n\nPreviously, if ↵Adam Mathes11 days2-5/+5
| | | | you were focused on the last loaded item and that item was\nvery long (extending past the viewport), pressing 'j' would do nothing\nbecause there were no more items loaded yet.\n\nNow, when the user presses 'j' and lands on the last item, we automatically\ntrigger loading more items (if available), ensuring that the next 'j' press\nwill work as expected.\n\nAdded test to verify this behavior works correctly.
* feat: fix authentication to handle no-password scenario\n\n- Updated ↵Adam Mathes11 days2-0/+190
| | | | Authenticated() to return true when no password is configured\n- Updated apiLoginHandler to succeed when no password is set\n- Added comprehensive backend tests for both password/no-password cases\n- Added E2E tests for authentication flows (password tests are skipped by default)\n- All tests pass for both authentication scenarios\n\nFixes issue where app would require login even when no password was configured.\nNow properly supports passwordless mode for local development.
* feat: add secure_cookies configuration option\n\n- Added SecureCookies bool ↵Adam Mathes11 days2-4/+5
| | | | field to config.Settings\n- Added --secure-cookies command line flag\n- Updated CSRFMiddleware to use config setting instead of hardcoded value\n- Default is false for local development, set to true for production HTTPS\n- Updated config.example and README.md with documentation\n- Updated tests to pass config to CSRFMiddleware\n\nThis allows users to easily switch between insecure cookies (for local dev)\nand secure cookies (for production HTTPS) via config file or command line.
* fix: CSRF cookie configuration for local network access\n\n- Changed ↵Adam Mathes11 days6-15/+16
| | | | SameSite from Lax to None to allow cookie access across localhost/IP variations\n- Added Secure=false for local development (should be true in production with HTTPS)\n- Added credentials:'include' to all fetch requests to ensure cookies are sent\n- Updated tests to expect credentials parameter in fetch calls\n\nThis fixes the 403 Forbidden error when accessing from LAN IPs like 192.168.x.x
* fix: relax CSP to allow unsafe-eval for legacy UIAdam Mathes11 days1-1/+1
|
* feature: add scrape full text button to feed items (fixing NK-8hu7z1)Adam Mathes11 days5-14/+14
|
* feature: implement full OPML and Text import/export (fixing NK-r6nhj0)Adam Mathes11 days5-14/+14
|
* routing: make new UI default at / and move legacy UI to /v1/ (fixing ↵Adam Mathes11 days2-1/+82
| | | | NK-mgmn5m, NK-p89hyt)
* security: add HTTP security headers (fixing NK-7xuajb)Adam Mathes11 days2-1/+42
|
* security: mitigate SSRF in image proxy and feed fetcher (fixing NK-0ca7nq)Adam Mathes11 days1-3/+2
|
* security: implement CSRF protection and improve session cookie security ↵Adam Mathes11 days2-5/+87
| | | | (fixing NK-gfh33y)
* UI: Centering content area in v2Adam Mathes11 days4-3/+3
|
* Refactor: project structure, implement dependency injection, and align v2 UI ↵Adam Mathes11 days6-24/+32
| | | | with v1
* Fix web tests by removing nil-box checks no longer applicable with go:embedAdam Mathes12 days1-89/+47
|
* Audit and reduce Go dependencies: replace go.rice with embed, pflag with flagAdam Mathes12 days23-260/+1762
|
* Optimize asset packaging: move UI assets to root dist/ and decouple rice ↵Adam Mathes12 days1-4/+4
| | | | embedding
* feat: add vanilla JS frontend prototype (NK-2xsgef)Adam Mathes12 days1-0/+11
|
* chore: cleanup ignored filesAdam Mathes12 days1-100/+0
|
* refactor(backend): improve testability and add tests (NK-6q9nyg)Adam Mathes12 days4-119/+517
|
* fix(v2): remove distracting selection styles and fix build (NK-8rhpp3)Adam Mathes12 days2-39/+77
|
* Implement robust Gzip middleware and update page size analysisAdam Mathes12 days2-9/+136
|
* Analyze page size and fix frontend testsAdam Mathes12 days1-0/+212
|
* UI Refinements: remove redundant header and fix global monospace font stackAdam Mathes12 days1-220/+0
|
* Fix frontend asset base path and add regression test for serving frontendAdam Mathes12 days1-0/+24
|
* Implement Frontend Logout with testsAdam Mathes12 days2-0/+34
|
* Implement frontend login logic with >90% coverageAdam Mathes13 days2-0/+94
|
* Scaffold new frontend and close NK-t0nmbjAdam Mathes13 days3-42/+180
|
* wip: tui updates (buggy)Adam Mathes13 days2-2/+80
|
* Refactor backend to a clean REST APIAdam Mathes13 days3-649/+95
| | | | | | | | | | - Created new 'api' package with testable router and RESTful handlers - Handlers in 'api' use proper HTTP methods and status codes - Standardized JSON responses and error handling - Refactored 'web' package to delegate logic to 'api' - Maintained backward compatibility for legacy frontend routes - Simplified 'web/web_test.go' and added comprehensive 'api/api_test.go' - All tests passing with improved modularity
* Add comprehensive test suite — 81% cross-package coverageAdam Mathes13 days1-0/+647
| | | | | | | | | | | | | | | | | | | | | | Bug fixes: - config: remove unused log import - item: fix Printf format %d->%t for boolean ReadState - util: update stale config.Read -> config.Init, remove config.Config.DBServer Test files added: - config/config_test.go: Init, readConfig, addDefaults (100%) - vlog/vlog_test.go: Printf, Println verbose/silent (100%) - models/db_test.go: InitDB tests - models/feed/feed_test.go: CRUD, filter, Categories, NewFeed, ResolveFeedURL (87%) - models/item/item_test.go: CRUD, Filter with category/search/starred, rewriteImages (71%) - exporter/exporter_test.go: all export formats (91%) - importer/importer_test.go: InsertIItem, ImportJSON (90%) - crawler/crawler_test.go: GetFeedContent, CrawlFeed, CrawlWorker, Crawl (89%) - web/web_test.go: auth, login/logout, stream, item, feed, category, export, crawl, imageProxy handlers (77%) Remaining 0% functions require HTTP/rice.MustFindBox/main entry and can't be unit tested without refactoring (see tickets NK-gqkh96, NK-6q9nyg).
* clean up old files, update git ignoreAdam Mathes2025-05-251-20/+36
|
* update dependenciesAdam Mathes2021-09-281-22/+22
|
* stop clobbering the f keyAdam Mathes2018-10-041-6/+6
|
* light/dark/black themesAdam Mathes2018-09-291-8/+8
|
* click targets on unread/all/star to li element instead of a for bigger tap ↵Adam Mathes2018-09-191-5/+5
| | | | targets
* wip adding /crawl/ manual crawl updateAdam Mathes2018-07-041-0/+13
|
* enable feed export from web interfaceAdam Mathes2018-07-042-4/+13
|
* wip, simplificationsAdam Mathes2018-07-042-5/+5
|
* log fatal web serving errorsAdam Mathes2018-06-171-1/+1
|