You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Flow Reader
2
2
3
-
Flow Reader is a local-first reading workspace for moving through long text with speed, focus, and control. It combines RSVP, Bionic Flow, document imports, themes, bookmarks, notes, and session summaries in a polished browser app.
3
+
Flow Reader helps you read long articles, PDFs, notes, and saved text in the browser. It gives you RSVP, Bionic Flow, imports, themes, bookmarks, notes, and session recaps without sending your library anywhere.
4
4
5
5
Everything is stored locally in your browser (no accounts, no sync).
Copy file name to clipboardExpand all lines: docs/CODEMAP.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
1
# Flow Reader Codemap
2
2
3
-
This is the high-signal map for future agents. Read this before changing behavior.
3
+
Use this as the quick map before changing app behavior.
4
4
5
5
## Entry Points
6
6
7
-
-`index.html`owns document metadata, font/CDN scripts, Tailwind runtime config, and the PDF.js worker bootstrap.
7
+
-`index.html`sets document metadata, font/CDN scripts, Tailwind runtime config, and the PDF.js worker bootstrap.
8
8
-`src/index.tsx` mounts React, installs the PWA service worker, imports global styles, and wraps the app in `ErrorBoundary`.
9
-
-`src/App.tsx` is the main shell and state coordinator. It owns the active book, library list, reader mode, chrome visibility, session summaries, keyboard shortcuts, sprint timers, and most cross-component callbacks.
10
-
-`src/styles.css`owns global CSS variables, scrollbar styling, idle backdrop animation classes, and motion reduction behavior.
9
+
-`src/App.tsx` is the main shell and state coordinator. It handles the active book, library list, reader mode, chrome visibility, session summaries, keyboard shortcuts, sprint timers, and most cross-component callbacks.
10
+
-`src/styles.css`contains global CSS variables, scrollbar styling, idle backdrop animation classes, and motion reduction behavior.
11
11
12
12
## Source Layout
13
13
@@ -29,7 +29,7 @@ This is the high-signal map for future agents. Read this before changing behavio
29
29
30
30
### Reading Modes
31
31
32
-
-`src/hooks/useRSVP.ts` parses text into words and owns RSVP playback timing.
32
+
-`src/hooks/useRSVP.ts` parses text into words and handles RSVP playback timing.
33
33
-`src/components/RSVPReader.tsx` renders the focused single-word view.
34
34
-`src/components/RSVPEnhancedReader.tsx` renders the context-enhanced RSVP view.
35
35
-`src/components/BionicFlowReader.tsx` renders scrollable bionic reading and maps scroll position back to progress.
@@ -45,25 +45,25 @@ This is the high-signal map for future agents. Read this before changing behavio
45
45
46
46
### Notes, Bookmarks, And Sessions
47
47
48
-
-`src/components/BookmarksPanel.tsx`owns the bookmarks/notes panel UI.
48
+
-`src/components/BookmarksPanel.tsx`handles the bookmarks/notes panel UI.
-`src/App.tsx` decides when a session is meaningful, persists summaries, and exposes the manual session recap action.
51
51
52
52
### Themes And Brand
53
53
54
-
-`src/services/themes.ts`owns preset/custom theme definitions and CSS variable application.
55
-
-`src/components/ThemeSelector.tsx`owns the theme editor UI.
54
+
-`src/services/themes.ts`contains preset/custom theme definitions and CSS variable application.
55
+
-`src/components/ThemeSelector.tsx`handles the theme editor UI.
56
56
-`src/components/IdleBackdrop.tsx` pairs with `src/styles.css` for the landing background.
57
57
-`src/components/BrandMark.tsx`, `public/pwa-icon.svg`, and `public/pwa-maskable.svg` should stay visually aligned.
58
58
59
-
## Current Pressure Points
59
+
## Places To Be Careful
60
60
61
-
-`src/App.tsx` is large and mixes app state, reading session lifecycle, global listeners, and layout chrome behavior. Safe future extractions: session lifecycle, reader chrome visibility, active-book mutations, and bionic hotspot behavior.
62
-
-`src/components/TextInput.tsx` is large and mixes editor UI, import orchestration, URL preview, PDF password flow, and fullscreen editing. Safe future extractions: URL import hook, file import hook, password prompt, import progress UI, fullscreen editor.
63
-
-Keep`pdfService.ts`, `urlImportService.ts`, `bookState.ts`, and `sessionSummary.ts` as examples for future service boundaries.
61
+
-`src/App.tsx` is large and mixes app state, reading session lifecycle, global listeners, and layout chrome behavior. Good extraction targets: session lifecycle, reader chrome visibility, active-book mutations, and bionic hotspot behavior.
62
+
-`src/components/TextInput.tsx` is large and mixes editor UI, import orchestration, URL preview, PDF password flow, and fullscreen editing. Good extraction targets: URL import hook, file import hook, password prompt, import progress UI, fullscreen editor.
63
+
-Use`pdfService.ts`, `urlImportService.ts`, `bookState.ts`, and `sessionSummary.ts` as the service-boundary pattern for new import, persistence, or summary logic.
64
64
65
65
## Verification Pointers
66
66
67
67
- Run `npm run check` for TypeScript plus Vitest.
68
-
- Use `QA.md` for browser smoke flows after UI, import, persistence, or reader-mode changes.
68
+
- Use `QA.md` for browser checks after UI, import, persistence, or reader-mode changes.
69
69
- Avoid relying only on static checks when touching layout or reader state machines.
Copy file name to clipboardExpand all lines: docs/IMPORT_PIPELINE.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
1
# Import Pipeline
2
2
3
-
Flow Reader supports paste, TXT, PDF, DOCX, and URL imports. The import surface is intentionally local-first: imported text becomes a `Book`, and source provenance is stored on `Book.settings.sourceMeta`.
3
+
Flow Reader supports paste, TXT, PDF, DOCX, and URL imports. Imported text becomes a `Book`, and source details are stored on `Book.settings.sourceMeta`.
4
4
5
5
## Entry Surface
6
6
7
-
`src/components/TextInput.tsx`owns the import UI:
7
+
`src/components/TextInput.tsx`handles the import UI:
8
8
9
9
- paste/manual text entry
10
10
- TXT file reading
@@ -13,7 +13,7 @@ Flow Reader supports paste, TXT, PDF, DOCX, and URL imports. The import surface
13
13
- URL import profile selection, cleanup preview, and blocked-page fallback
14
14
- fullscreen editor
15
15
16
-
This file is a good candidate for future hook/component extraction, but behavior should stay covered by the QA flows before and after any split.
16
+
If this file gets split into hooks or smaller components, run the related QA flows before and after the change.
17
17
18
18
## PDF
19
19
@@ -47,9 +47,9 @@ The fixture-backed test is `src/services/urlImportService.test.ts`, using `src/s
47
47
48
48
For the ESP32 forum fixture, the cleaner should:
49
49
50
-
- keep core post content such as`I am trying to use multiple usb serial devices with ESP32-S3 host.`
51
-
- keep readable context such as`I followed this reference, and also checked the example.`
52
-
- remove forum chrome such as`ESP32 Forum`, `Board index`, `Quick links`, `FAQ`, `Login`, and `Register`
50
+
- keep the main post content, including`I am trying to use multiple usb serial devices with ESP32-S3 host.`
51
+
- keep useful context, including`I followed this reference, and also checked the example.`
52
+
- remove forum chrome like`ESP32 Forum`, `Board index`, `Quick links`, `FAQ`, `Login`, and `Register`
53
53
- remove reference definitions like `[1]: https://...`
0 commit comments