- Fix ST1005 linting errors by lowercasing error message strings
- Fix QF1008 linting errors by removing embedded field selectors in containers.go
- Update Alpine version from 3.22 to 3.21 in Makefile to fix Docker image resolution
- Update corresponding test expectations for error message changes
* feat: Add SSO forward header
* fix: Use domain layer
* test: Some test
* chore: Print new values when debugging
* chore: Rename enabled envvar
* fix: Wrongly parsing remote ip
* fix: Always validate token. NPE on validateSession
* fix: Dont overwrite token when sso
* fix: Best effort to get ip. Parse as ip:port and then as ip
* fix: Forgot to update handler version
* fix: Forgot to commit changes
* test: GetAccountByUsername
* chore: Rename some variables
* chore: return error from ssoAccount
* refactor: Extract sso proxy auth to own middleware
* fix: Dont panic if not sso account on legacy validate session
* ci: gofmt
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* fix pocket parsing error
Signed-off-by: bakito <github@bakito.ch>
* add tests forpocket csv
Signed-off-by: bakito <github@bakito.ch>
* Use file name from test case
* fix lint ant test issues
Signed-off-by: bakito <github@bakito.ch>
---------
Signed-off-by: bakito <github@bakito.ch>
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* refactor: tags api into v1 api
* feat: tags api huge refactor
* fix: pg & sqlite tests
* tests: added more tests
* fix: bug on mysql bookmark and tag creation
* test: re-enabled test
* tests: slices test
* tests: model bookmarks
* test: use filepath.Join for path construction in bookmark tests
* list account and create account
* deleteaccount (wip)
* remove old accounts code
* fix from merge
* remove serve method from makefile
* ListAccounts, password hash on domain
* make lint
* more permissive assertion
* rename test
* update account
* Authorization
* updated api calls
* apis, pointers, auth
* swagger
* stylecheck
* domain validation
* tests
* swagger
* error handling
* fix system account changes
* Cleanup database interface
* test cleanup
* fixed nil references
* feat: Add logout endpoint to auth routes
* feat: Add logoutHandler for stateless JWT token logout
* fixed some bug catched in tests
* auth/account patch
* prettier
* remove test logs
* fixed incorrect number of parameters
* fixed swagger docs
* enable swagger in dev environment
* errors.Wrap -> fmt.Errorf
* test: Add comprehensive test cases for accounts API handlers
* fix: Resolve test failures in accounts_test.go
* test: Add tests for duplicate username handling in account creation and update
* feat: Add username uniqueness checks for account creation and update
refactor: Improve username existence checks in SQLite account methods
* linted
* test: Add comprehensive tests for auth domain token and credential validation
* test: Add comprehensive test cases for auth domain token creation and validation
* test: Add comprehensive error handling test cases for accounts domain
* refactor: Remove `SaveAccountSettings` method from database implementations
* test: Add test cases for password update functionality
* test(e2e): auth login
* lint
* send regular context to domain
* fixed e2e auth tests
* test: Add auth_test.go for end-to-end authentication testing
* feat: Add comprehensive authentication tests using Playwright and testcontainers
* fix: Handle multiple return values in Playwright test methods
* error message
* e2e playwrigth tests
* ci: setup playwrigth
* refactor: Update Playwright tests to use locator-based API
* refactor: Remove unnecessary alias for playwright-go expect import
* refactor: Replace deprecated expect package with WaitFor() method in Playwright tests
* fix: Resolve linting issues in e2e Playwright tests
* remove npm ci from e2e ci
* make playwright available in path
* typo
* re enabled ci
* base e2e accounts test
* more account e2e
* feat: Add HTML test reporter with screenshots and detailed results
* feat: Embed screenshots as base64 in HTML test report
* refactor: Remove GitHub step summary functionality from test helper
* refactor: Make reporter global to share test results across test helpers
* refactor: Add HandleSuccess method to TestHelper for consistent test result reporting
* feat: Add descriptive messages to all test assertions in TestHelper
* test: Add descriptive messages to assertions in accounts_test.go
* test: Add descriptive error messages to assertions in accounts_test.go
* feat: Add descriptive messages to assertions in accounts_test.go
* refactor: Update assertion functions to receive *testing.T as first argument
* refactor: Update accounts_test.go assertions to pass *testing.T argument
* refactor: Update accounts_test.go assertions to use *testing.T argument
* refactor: Update `accounts_test.go` to use `*testing.T` argument in `Require()` calls
* refactor: Update `th.Require()` calls with `t *testing.T` argument in accounts_test.go
* assert helper
* refactor: Refactor `False` test helper to use `Assert` function consistently
* refactor: Refactor `Equal` test helper to use `Assert` function
* refactor: Simplify Error test helper to use Assert function
* refactor: Refactor `NoError` to use `Assert` function for consistent error handling
* typo
* refactor: Differentiate between test cases and assertions in reporter
* refactor: Simplify AddResult method signature and use error message for assertion
* refactor: Simplify test report with focused failure details and screenshots
* refactor: Ensure assertions are always called in PlaywrightRequire helper methods
* refactor: Update test error messages to be action-oriented
* refactor: Update error messages to be more action-oriented in accounts_test.go
* refactor: Update error messages to be action-oriented in accounts_test.go
* refactor: Improve error messages in auth_test.go for better test readability
* refactor: Improve screenshot handling and test result reporting in Playwright test helper
* fix: Improve test reporting with detailed error messages and logging
* refactor: Remove unused runningInCI field from TestHelper struct
* fix: Improve message formatting in Assert method for better reporting
* assertions
* test: Add `Require()` calls to 007 test for improved error handling
* refactor: Update test reporter to include error details and improve HTML rendering
* fix: Properly escape and render base64 screenshot in HTML report
* fix: Correct base64 screenshot rendering in test reporter
* fixed tests + html report
* feat: Add artifact upload for e2e test report
* make lint
* chore: use correct version in user agent
* ci: run e2e after other checks
* chore: remove pre-commit
* feat: Add manifest file
* fix: Embed webmanifest file
* fix: use standalone mode, not fullscreen
* feat: Open add dialog by default if share query params are present
* fix: Use relative url in manifest to allow subfolder
* fix: Remove missing icon
* fix: Repĺace current history entry if sharing
* chore: Make query params consistent
* feat: Add more pwa icons
* fix: js prettier
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
Co-authored-by: Felipe M. <me@fmartingr.com>
* refactor: Improve SQLite performance with connection pooling and retry logic
* feat: Add withTx and withTxRetry methods to SQLiteDatabase for handling database locks
* refactor: add Init command to all databases
* refactor: Improve transaction handling with retry and error management
* refactor: Remove panic/recover pattern in transaction handling
* refactor: Replace `errors.WithStack` with `fmt.Errorf` in transaction methods
* docs: Add docstrings to `withTx` and `withTxRetry` methods in SQLite database implementation
* feat: use new withTxRetry in SaveBookmarks
* feat: sqlite inmmediate transactions by default
* refactor: Split SQLiteDatabase into separate writer and reader dbbase instances
* refactor: Update Init method to configure both reader and writer database connections
* feat: use writer/reader sqlite databases
* refactor: Replace all read calls to use the `reader` database instance
* refactor: Replace errors.WithStack with fmt.Errorf and add nil checks
refactor: Replace errors.WithStack with fmt.Errorf and add proper error handling
fix: Handle potential database connection errors with improved error wrapping
refactor: Replace errors.WithStack with fmt.Errorf and improve error handling
refactor: Replace error handling with fmt.Errorf and proper nil checks
refactor: Replace errors.WithStack with fmt.Errorf and add nil error checks
refactor: Replace errors.WithStack with fmt.Errorf and add nil checks in sqlite.go
refactor: Replace errors.WithStack with fmt.Errorf and add nil checks
refactor: Replace errors.WithStack with fmt.Errorf and improve error handling
refactor: Replace remaining errors.WithStack with fmt.Errorf in sqlite.go
* refactor: Use withTxRetry for SetDatabaseSchemaVersion method
* fix: Simplify error handling in GetBookmark and GetAccount methods
* refactor: Remove duplicated non-nil error checks in sqlite.go
fix: duplicated non-nil checks
* tests: use testutil instead of a manual in memory sqlite db
* fix: openbsd sqlite connection
* feat: Add nginx service to test shiori webroot configuration
chore: Update nginx configuration to resolve 502 gateway error
fix: Update SHIORI_WEBROOT to SHIORI_HTTP_ROOT_PATH in docker-compose
feat: Add debug log level flag to shiori service
refactor: Update docker-compose with simplified command and log configuration
fix: Change nginx port mapping from 80 to 8081
feat: Add volume for Go module cache in docker-compose
style: Add type attribute to script tags in index.html
feat: Update import statements to use RootPath variable in index.html
* docs: Update contribution guide with server and docker instructions
* docs: Add Docker and nginx documentation for local development
* test: IsValid()
* fix: Validate session on login component mount to prevent unnecessary login form
* fix: Replace non-existent `api/v1/auth/check` with `api/v1/auth/me`
* feat: Prevent login form flickering by conditionally rendering only when needed
* feat: Show login component after user logout
* fix: make styles
* feat: Add login component JavaScript file
* feat: Create login component and refactor login view
* refactor: Convert login to single-page application with dynamic component rendering
* feat: Enhance session validation and login form display logic
* fix: Resolve Vue app mounting and method duplication issues
* fix: Prevent null reference error when focusing username input
* fix: Initialize `isLoggedIn` to true to show login form during async check
* refactor: Improve session validation and login flow logic
* fix: Adjust login component visibility and initial login state
* feat: Add login form template to login component
* feat: Update login template to match original login.html design
* fix: Resolve login view rendering and state management issues
* refactor: Remove login route from frontend routes
* refactor: Remove login-footer from login component template
* fix: Modify logout to show login form without redirecting
* refactor: Remove /login route test for SPA architecture
* refactor: delete login.html file
* style: Remove extra blank line in frontend_test.go
* chore: run make style changes
* tests: added tests to account domain
* refactor: ensure expiration comes from same value
* refactor: jwtclaims to model package
* refactor: add testutil.GetValidAccount
* force to not use cache in ui for thumbnail fix#857
* use modifiedAt instead of current time
* now can define custom Header for SendFile
* remvoe use of cacheBuster
* send 304 to the user if file not change
* back to queryparameter
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* sqlite migrate script
* create time just when bookmark added and modified update if change happen
* show added and modified time in footer instead of header
* add bun.lockb that missing
* add migrate for postgres
* add pg support of created time
* change modifed to modifed_at and create to created_at in sqlite
* change modifed to modifed_at and create to created_at in postgre
* add created_at to mariadb
* fix migration file names
* better variable name and more clear code for add modified time if created and modified is not in same day
* add unittest
* add unittest to sure filters work as expected
* index for created_at and modified_at
* build new styles.css
* update swagger documents
* make styles
* change Created and Modified to CreatedAt and ModifiedAt
* fix missing Modified
* fix typo
* missing Modified
* fix typo
* make swagger
* run tests parallel
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* remove t.Parallel()
* remove dayjs dependency and combine two function
* better unittest name
* fix typo
* diffrnt footer style for login and content page
* use class instead of id
* back parallel
* change duplicate url
* remvoe run Parallel
* make styles
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* use thumbnail as ebook cover
* add TODO for improve that later
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* frontend
* fixed Database.DBx return value
* api endpoint
* updated swagger
* fix openbsd variable dereference
* tests
* only load information if user is owner
* memory improvement for other routes
* login page follow browser darkmode settings
* theme change based on selection in settings between follw system , light, dark
* content page follow settings and fix syntax error
* drop down menu color follow current theme
* version number follow theme in login page
* use footer instead of id for version
* replace space with tab
* move theme settings to the top of the list and fix typo
* remove duplicate code and use a function instead
* fix logic of change theme if you select follow system to not need reload anymore
* fix code style with make styles
* fix bug that eventlistener not remove when activate light or dark theme
* less js and add theme with patch by @fmartingr
* remove NightMode config and now everythings control with Theme
* error instead of log if invalid theme selected
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* remove unneeded part and update swagger documents
---------
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* click on home will clear searchbox
* clearHome when mounted
* clearHomePage just when you are in homepage
* check clearHomePage signal out of clearHomePage method
* fix style
* remove dependencies that use syscall.Syscall*
OpenBSD will be removing direct access to `syscall(2)` soon.
Shiori will stop working because of this, as some of its dependencies
rely heavily on the use of `syscall.Syscall*`, which ends up using
`syscall(2)`. This commit removes those dependencies by reverting back
to use github.com/mattn/go-sqlite3 instead of modernc.org/sqlite to deal
with the sqlite database backend.
* add ~emersion/go-sqlite3-fts5
* enable cgo to check ci
* fts5 build flag
* split sqlite logic using build flags
* disable cgo again
* added ci test for bsd systems
* remove openbsd ci
* Revert "remove openbsd ci"
This reverts commit f394148385.
* fix makefile go_test_flags
---------
Co-authored-by: Felipe M <me@fmartingr.com>
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
* feat: new migration system
* use newFuncMigration
* database version -> database schema version
* column name
* use path instead of filepath for goembed
* simplified migrations, added backwards compatible migrations
* add endpoint to serve readable content
* add id and modified time in response
* revert id and modified time
* remove public check status
* chnage 401 to 403
* add basic unittest for readable content
* check response in unittest
* update strcut name and move that above handler
* fix: finish connection once we send auth response
* removed interface for now
* handle authentication in each route group
* tags api tests
* typo
* testutil improvements
* bookmarks api auth
* cache update requires owner