* fix(frontend): improve keyboard-safe feed actions and icon labels
* fix(frontend): label form controls and harden input UX metadata
* fix(frontend): use link semantics and stabilize image layout
* fix(frontend): localize accessibility labels for assistive text
* chore: update deps
* fix(frontend): avoid nested button in feed list item
* fix(frontend): separate feed row selection from settings action
* fix(frontend): align route and state handling with React best practices
Add a compatibility route for /oidc/callback so OIDC logins still complete when deployments omit the /api prefix in redirect_uri. Clarify the canonical callback URL in docs and env examples to prevent future misconfiguration.
Apply login limiter checks to the Fever endpoint so repeated invalid api_key attempts are throttled, and reject non-positive feed ids for mark=feed to avoid silent no-op success responses.
Refs: https://github.com/0x2E/fusion/issues/136
Align Fever endpoints and payload semantics with common clients by fixing mark/read flows, adding before-based read markers, and completing feeds/items/favicons responses for stable sync behavior.
Refs: https://github.com/0x2E/fusion/issues/136
Extract a shared content header and use it across article/feed pages. Pin top bars to a fixed, non-shrinking height so header borders stay aligned with the sidebar logo rail.
Move pull metadata to feed_fetch_state and unify scheduler decisions around next_check_at with a global FUSION_PULL_MAX_BACKOFF cap. This keeps feed core data stable while making retry/cache-aware pulling behavior explicit across API, docs, and frontend types.
Preserve list context after read/star toggles so accidental actions remain recoverable in-session instead of disappearing immediately under filtered views.
Restrict rendered/opened article links and media URLs to safe external protocols, and apply baseline security headers on frontend responses.\n\nRefs #208
Introduce shared locale messages with lazy loading across key frontend screens and persist user language preferences. Add i18n dictionary validation in scripts/CI and document the feature and check command in README.
* init refactor plan
* remove old files
* api design
* implement store layer
* implement api
* Add comments for store package
* init frontend
* implement pull service
* use slog
* two column layout
* new design
* fix env var
* fix
* stabilize store tests and query ordering
* remove settings.local.json and update .gitignore to exclude .claude
* improve layout and styling in sidebar and settings dialog
* add group management modal
* add feed management
* add OPML import and export
* use favicon
* fix article list
* fix
* fix ui
* search debounce
* fix ui
* store states in url
* fix: resolve nested button hydration error in ArticleItem
* edit feed
* filter items by group
* fix ui
* fade unread count
* add confirmation dialog for feed deletion and bold key names in confirmations
* fix search
* add optional OIDC authentication support
Allow self-hosted users to integrate with SSO providers (Authelia, Keycloak, etc.)
via OIDC. Enabled by setting FUSION_OIDC_ISSUER and related env vars. Uses PKCE S256
for security. When disabled, behavior is unchanged — login page shows password only.
* add article content processing with link, image, and tracking pixel handling
* replace goreleaser with shell script for cross-platform builds
Remove .goreleaser.yaml and add a `release` command to scripts.sh that
builds 6 platform combos (linux/darwin/windows × amd64/arm64), creates
zip archives with LICENSE/README, and generates sha256 checksums.
Update release workflow to use scripts.sh + gh CLI instead of
goreleaser-action. All build paths updated for backend/ subdirectory.
* implement feed discovery with feedfinder and feed selection
Replace placeholder feed validation with real RSS/Atom discovery so users can pick the correct feed URL before subscribing.
* standardize icon button sizes and improve responsive layout
* auto-fill empty site_url and keep OPML htmlUrl metadata
* add feed management page
* fix about panel
* responsive optimization
* fix search dialog result display and article drawer blank issue
- Add unique value props to CommandItems to prevent cmdk deduplication
- Use getFeedById from store instead of searching within search results
- Fetch article from API when not found in store (e.g. opened from search)
* improve AGENTS.md
* use tanstack-query
* harden auth config and optimize feed pulling
* optimize frontend route loading and lint compliance
Split heavy pages into lazy-loaded route modules to reduce initial bundle size and keep startup responsive. Also fix lint blockers in search/login flows and align ESLint rules with shadcn ui exports.
* harden feed networking and improve store query performance
* expand backend tests and unify test helpers
* fix unstable fallback GUID generation for feed items
* update docs
* simplify command responses with 204 and 202 statuses
* enforce foreign keys in initial sqlite schema
* use upstream static icons for frontend branding
* refactor ci
* add gray fallback for missing feed favicons
* highlight AI-free value in README
* enhance frontend PWA install and update flow
Expose browser install prompts in settings and add service worker update handoff so users can install Fusion and apply new versions without manual cache clearing.
* add robust legacy sqlite migration path
Automatically detect pre-migration schemas and rebuild them into the current schema so upgrades preserve user data safely and idempotently.
* embed frontend build artifacts into backend binary
* fix login flow for empty-password setups
* fix gin server mode to release
* fix
* add visibility logs for database migrations
* fix starred button background in dark mode
* align gin HTTP logging with slog output
* optimize user guidance
* refactor reader routes to path-based state
* update screenshots
* add share action for items.
- adds a new button to share the link of an item using native navigator.share
- only shows the button when share API is supported
- adds a shortcut (s)
- add localizations for en+de, others missing
* remove keyboard shortcut for share action #171
* add remaining translations for share action #171
---------
Co-authored-by: Martin Grubinger <martin.grubinger@geizhals.at>
* update deps
* make the sniff package independent
* rename sniffer to feedfinder for a more neutral meaning
* allow setting Proxy when creating a feed
* ci: support pushing to GitHub Container Registry
In addition to Dockerhub, images will also be published to GHCR.
Fixes: #135
* update build push action
* lower-case repository due to ghcr reqs