Commit Graph
113 Commits
Author SHA1 Message Date
LogiFlow 23563219d2 Merge pull request #6 from R0m1k3/feat/feed-selector-title
Le titre devient le sélecteur de flux
2026-10-09 08:44:14 +02:00
Antigravity AgentandClaude Opus 5.5 3e740541e5 feat(web): make the page title the feed selector
The row of feed chips is gone. The title in the top bar ("Tous les
articles ▾") now says what is shown and opens the feed list: all articles,
favorites, each feed with its unread count, add a feed, manage feeds.
Desktop shows an anchored menu, phones a bottom sheet; arrow keys, Escape
and focus return are supported.

The dashboard keeps a single quiet toolbar (unread count, Non lus/Tous,
refresh, mark all read). Theme, OPML export, keyboard shortcuts and logout
live in the ⋯ menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 08:43:23 +02:00
LogiFlow 96fe965e9e Merge pull request #5 from R0m1k3/feat/no-sidebar
Suppression de la barre latérale
2026-10-09 08:30:27 +02:00
Antigravity AgentandClaude Opus 5.5 8bc74b4f52 feat(web): replace the sidebar with a full-width top bar
- One top bar for every screen size: feeds as chips with unread counts,
  Focus mode, theme, add feed, and a menu for managing feeds, OPML export
  and logout. The article grid now uses the full page width.
- New "Mes flux" dialog to rename or delete feeds (was hidden behind
  hover actions in the sidebar); feeds that fail to update are flagged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 08:29:38 +02:00
LogiFlow 8277c28f68 Merge pull request #4 from R0m1k3/fix/reader-card-ux
Lecteur en carte, suppression de la recherche, correctif du cache PWA
2026-10-09 08:27:19 +02:00
Antigravity AgentandClaude Opus 5.5 ed83525d26 fix(web): open articles as a card, drop search, unstick stale app shell
- Service worker activates new versions immediately (skipWaiting +
  clientsClaim). In prompt mode a waiting worker kept serving the previous
  build to tabs that never send SKIP_WAITING, so the old UI hit the new API
  and showed "Aucun contenu disponible" on every article. Pages already
  controlled get a reload toast; lazy chunks missing after a deploy reload
  once.
- Reader opens as a large card above the dimmed grid: close with ✕, Escape
  or a click beside it; previous/next arrows on the sides (desktop) and a
  bottom bar with the next title (all sizes).
- Remove search, the focus banner and decorative headers; plain sentence-
  case labels instead of tracked capitals; quieter dashboard header.
- Fix horizontal overflow of cards and reader navigation on phones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 08:26:25 +02:00
LogiFlow b24a9806d5 Merge pull request #3 from R0m1k3/optimize/perf-security-ux
Sécurité, performance et confort de lecture
2026-10-09 07:35:18 +02:00
Antigravity AgentandClaude Opus 5.5 9eaed0aea4 chore(deploy): non-root image, reproducible builds, private database
- Dockerfile: Go 1.26, npm ci, go mod verify, non-root user, alpine 3.22.
- Compose: Postgres no longer published on the host, password and new
  security settings read from .env, GOMEMLIMIT.
- README: document new environment variables and reading shortcuts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:34:09 +02:00
Antigravity AgentandClaude Opus 5.5 360f3cf012 feat(web): unified reader with reading settings, faster lists, a11y
- New Reader (desktop + mobile): loads full content on open, prefetches
  the next article, reading progress and time, "Aa" settings (light /
  sepia / dark / auto theme, serif / sans / Atkinson Hyperlegible font,
  size, line height, measure), Space-to-next, keyboard shortcuts, focus
  management, inert background, URL-driven (?a=) so Back closes it.
- Dashboard: cursor pagination, unread/all filter, CSS grid (no masonry),
  no re-sorting under the reader, optimistic cache patches instead of
  refetch storms, "new articles" banner, error/offline states, j/k/o/m/s/v
  shortcuts and help dialog.
- Cards: keyboard-openable, lazy <img>, memoized, touch-only swipe.
- Focus mode: framer drag (drop @use-gesture), Read button, undo restores
  unread state, arrow keys.
- WebSocket: single connection, backoff, cache patching, no console logs.
- Contrast fixes (on-nature tokens), 44px targets, lang="fr", reduced
  motion, self-hosted fonts, theme applied before first paint.
- Code splitting + vendor chunk, prompt-based PWA updates, smaller
  precache, offline cache for opened articles and images, caches cleared
  on logout; upgrade react-router (CVE), drop unused deps and assets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:34:09 +02:00
Antigravity AgentandClaude Opus 5.5 03e57e4308 fix(backend): harden security and speed up feeds and article API
Security:
- WebSocket events are routed to their owner only (no cross-user leak);
  hub close is idempotent (fixes double-close panic), adds ping/pong and
  write deadlines.
- Session tokens stored as SHA-256 (migration 008 keeps sessions valid);
  single-query auth middleware puts the user in the request context.
- Client IP only trusts X-Forwarded-For from TRUSTED_PROXIES; rate limiter
  map is bounded; per-user limit on AI summaries.
- Argon2id at OWASP minimum with a concurrency cap; constant-time login
  for unknown emails; atomic first-admin bootstrap; REGISTRATION_ENABLED.
- CSP/HSTS/COOP headers, same-origin guard on mutations, body size limits,
  wider SSRF denylist, bounded feed/page/AI response reads, generic errors.
- Upgrade chi, pgx, x/net, x/text, x/crypto (known CVEs); commit go.sum.

Performance:
- List endpoints return a plain-text excerpt and reading time instead of
  full HTML; content is sanitized once at ingest (legacy rows backfilled).
- Keyset pagination on (sort_at, id) with matching partial indexes;
  redundant indexes dropped (migration 007).
- Fetcher: bounded worker pool, conditional GET (ETag/Last-Modified),
  exponential backoff, dedupe before insert, column-safe truncation,
  retention-aware ingest, per-user refresh coalescing.
- Read/favorite/read-all are single ownership-scoped statements.
- gzip compression, immutable caching for hashed assets, path-safe SPA
  handler, server timeouts; expired sessions purged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:34:08 +02:00
LogiFlow d037e2be34 Merge pull request #2 from R0m1k3/redesign/webui
fix(ui): restaure le bandeau diagonal Nouveau sur les cartes non lues
2026-06-11 17:02:02 +02:00
MichaelandClaude Opus 4.8 b4e5f22a5e fix(ui): restaure le bandeau diagonal Nouveau sur les cartes non lues
Le petit point vert peu visible est remplacé par le bandeau d'angle
d'origine (vert nature, texte blanc), découpé dans le coin de la couverture.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 17:00:54 +02:00
LogiFlow 8e768bd9cf Merge pull request #1 from R0m1k3/redesign/webui
Redesign/webui
2026-06-11 13:22:20 +02:00
MichaelandClaude Opus 4.8 3402e53954 sécurité : correctifs XSS, SSRF, CSWSH, rate-limit et durcissement
- XSS stocké (critique) : sanitisation bluemonday sur tous les endpoints
  d'articles (List, ListByFeed, Favorites, Search, Get), pas seulement Get
- SSRF (élevé) : nouveau utils/safehttp.go (ValidateExternalURL + client durci
  via Dialer.Control, bloque IP privées/loopback/link-local/metadata,
  anti-DNS-rebinding et limite de redirections) appliqué à l'extracteur et au parser
- WebSocket CSWSH (élevé) : politique same-origin + override WS_ALLOWED_ORIGINS
- rate-limiting (moyen) : token-bucket en mémoire sur /auth/*
- token de session retiré du corps JSON (json:"-"), livré uniquement par le
  cookie HttpOnly
- cookie Secure correct derrière un reverse-proxy (X-Forwarded-Proto +
  override COOKIE_SECURE)
- admin : interdiction de supprimer son propre compte
- en-têtes de sécurité (nosniff, X-Frame-Options, Referrer-Policy,
  Permissions-Policy)

Note : backend non compilé localement (pas de toolchain Go) ; à valider via Docker.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 13:21:43 +02:00
MichaelandClaude Opus 4.8 10fdfdeccb refonte complète du WebUI (Éditorial Botanique)
Refonte de toutes les vues en conservant l'identité magazine/vert nature,
avec un système de design cohérent et accessible.

- index.css : tokens sémantiques, échelle radius/ombres, classes réutilisables
  (btn-*, chip, surface-card, magazine-content), :focus-visible,
  prefers-reduced-motion, grain papier affiné
- nouveaux composants AuthShell (auth split-screen) et MobileTopBar
  (navigation mobile, auparavant absente)
- framer-motion sur toutes les vues ; AddFeedModal expose l'import OPML ;
  Sidebar ajoute déconnexion + identité utilisateur
- corrections : text-gold cassé -> nature, arithmétique Date -> getTime(),
  suppression de App.css mort, ProtectedRoute en Tailwind,
  snapshot du deck Focus conforme aux règles React

Frontend : npm run lint + build OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 13:21:23 +02:00
Michael 2a8b5664c5 chore: update vite to version 7.3.1 and add overrides for dependencies 2026-04-03 09:42:38 +02:00
Antigravity Agent 3a7f7787df feat: implement DashboardPage with infinite scrolling, search, and article management features 2026-03-31 19:48:13 +02:00
Michael 908d907629 feat(ux): implement masonry dashboard layout and immersive focus mode 2026-02-18 11:48:17 +01:00
Michael 02c3c333cf fix(share): resolve typescript errors in ReaderView and ShareButton 2026-02-13 09:02:31 +01:00
Michael 8279df02d3 feat(share): integrate share button in reader views and fix types 2026-02-13 09:02:16 +01:00
Michael d56db26378 feat(share): add native share button with fallback menu 2026-02-13 09:01:44 +01:00
Michael d282d80add refactor(focus): isolate card drag state to fix rebound forever 2026-02-13 08:48:38 +01:00
Michael 85b1435908 docs: use placeholders for missing screenshots 2026-02-13 08:45:05 +01:00
Michael b04dc992d9 fix(focus): prevent card rebound on swipe release by freezing exit position 2026-02-13 08:41:56 +01:00
Michael 9d41a74b36 feat(ux): fix focus swipe animation, button visibility and mobile scroll 2026-02-13 08:35:13 +01:00
Michael 22e002f47f feat(focus): fix drag vs open and unify button design 2026-02-13 08:17:53 +01:00
Michael dfa56173b9 Fix double swipe/validation in Focus Mode & Improve Button Layout 2026-02-12 13:18:58 +01:00
Michael c350ca4893 Fix Focus Mode Undo Button visibility and layout 2026-02-12 13:16:10 +01:00
Michael 803b51193a Standardize Focus Mode Article View & Fix UI 2026-02-12 13:10:51 +01:00
Michael 87538901d2 chore: trigger deployment rebuild 2026-02-12 13:01:13 +01:00
Michael 5f149c8e64 feat(ui): compact dashboard widget and improve focus exit button 2026-02-12 12:52:42 +01:00
Michael a79731b563 feat(focus): add undo button to go back to previous card 2026-02-12 12:51:35 +01:00
Michael d11068b3df fix(focus): solve double swipe skip by stabilizing deck state 2026-02-12 12:49:53 +01:00
Michael 679722cc13 fix(ci): add @tailwindcss/oxide-linux-x64-musl to optionalDependencies 2026-02-12 12:36:06 +01:00
Michael 9495400b50 fix(ci): add lightningcss-linux-x64-musl to optionalDependencies 2026-02-12 12:34:21 +01:00
Michael 28cd42f207 fix(build): migrate to @tailwindcss/vite and remove conflicting postcss config 2026-02-12 12:32:41 +01:00
Michael 43f011e3a6 fix(ci): add rollup-linux-x64-musl optional dep for docker build 2026-02-12 12:00:08 +01:00
Michael 04a76795a4 Merge branch 'main' of https://github.com/R0m1k3/FlowReader
# Conflicts:
#	web/package-lock.json
2026-02-12 11:57:42 +01:00
Michael a512173f05 feat: implement Focus Mode (Speed Read) with swipeable card deck 2026-02-12 11:56:16 +01:00
Michael 171c7dcd20 style: update mobile close button to green background with black icon 2026-02-09 14:11:06 +01:00
Michael 1e5593c299 fix: relocate mobile close button to top-right to prevent overlap 2026-02-09 13:38:20 +01:00
Michael 4200926d7b feat: finalize UI/UX for AI Summary (rename to Résumé), fix generation button, and mark cleanup task done 2026-02-09 13:03:23 +01:00
Michael c4cc7eaf87 feat: auto-cleanup articles > 30d and relocate AI summary to reader view 2026-02-09 11:49:54 +01:00
Michael b3cbaf741d feat: implement full content extraction for improved AI summaries 2026-02-09 10:56:50 +01:00
Michael eb2c938a2a style: restore premium paper look and deep shadows on article cards 2026-02-09 10:24:53 +01:00
Michael 21bd917ab7 style: restore deep black shadow on article cards 2026-02-09 10:21:15 +01:00
Michael 187b6c8b86 fix: refactor migration system to be incremental and fix error 500 on articles 2026-02-09 10:15:31 +01:00
Michael 5b219cf0e7 feat(ia): implement Smart Digest and fix UI alignment 2026-02-09 10:06:13 +01:00
Michael 7e802df2a7 feat: implement Deep Forest dark mode, swipe gestures, PWA support, and PostgreSQL Full-Text Search 2026-02-09 09:18:40 +01:00
Michael 3e468d8885 style(web): improve ArticleCard UX and add Back to Top button 2026-02-06 15:28:24 +01:00