Commit Graph

89 Commits

Author SHA1 Message Date
Julien Calixte
fc4ed188d7 feat(repo): add Octokit request timeouts and retry UI
Before, every GitHub call awaited indefinitely with no AbortSignal,
so a "lie-fi" connection (technically online, effectively dead) left
FluxNote stuck on the skeleton loader and the freshness badge spinning
forever. Inject an 8s AbortSignal.timeout via octokit.hook.before
(20s override on the recursive tree fetch), classify failures in the
userRepo store as auth vs network, and surface a "Couldn't reach
GitHub" retry button when no cached content is available.
2026-05-16 23:28:11 +02:00
Julien Calixte
33285d723a refactor(markdown): extract post-render effects into composable
Four components duplicated the watch -> nextTick -> listenToClick -> runTikz
shape. Collapse to useMarkdownPostRender, which also accepts optional flags
for Mermaid, Shikiji and image hydration so StackedNote no longer needs its
own inline conditional chain.
2026-05-15 15:48:12 +02:00
Julien Calixte
bf19e982fe feat(markdown): render TikZ fenced blocks to SVG
Adds a markdown-it extractor for ```tikz blocks that emits a sanitized
placeholder, plus a runTikz() that lazy-loads the obsidian-tikzjax 0.5.2
bundle from jsdelivr on first encounter, sanitizes the produced SVG with
DOMPurify, and caches it in PouchDB keyed by sha256(source) so repeat
views are instant and offline-capable.
2026-05-15 15:38:48 +02:00
Julien Calixte
30f200df30 fix(flux-note): stop showing sign-in prompt while readme is loading
Cache miss wrote null into store.readme before getMainReadme finished,
collapsing isLoading and surfacing the not-accessible UI mid-fetch.
Also branch that UI on auth state so signed-in users aren't told to
sign in when access fails.
2026-05-06 09:54:25 +02:00
Julien Calixte
2f05b93f51 fix(stacked-note): size mobile notes with svh to stabilize scroll target
Dynamic viewport units rescale every note when the mobile address bar
grows or shrinks, shifting the scroll target by the address-bar height
mid-flight. Small viewport units stay constant across address-bar
transitions so the smooth scroll lands where it was aimed.
2026-05-04 18:45:45 +02:00
Julien Calixte
3339e28d41 style(notes): distinguish scrollable column from canvas
Tint the surrounding viewport and add a soft right-edge shadow on
the leftmost note so users can see where scrolling actually applies.
2026-05-02 09:51:24 +02:00
Julien Calixte
68022971cd refactor(notes): restore fixed mobile heights for scroll math
Re-pin .note and .stacked-note to 100dvh on mobile and bring back the
container height in useResizeContainer so (index + 1) * height has a
reachable scroll target. Switch the polled scroll helper to that same
formula instead of offsetTop.
2026-04-29 11:32:23 +02:00
Julien Calixte
f529832eee refactor(notes): scope stacked-note sticky to desktop
Move position: sticky from the global .note rule into the desktop
@media block of the scoped stacked-note components, so mobile no longer
inherits sticky positioning (and no top is set there).
2026-04-29 11:32:13 +02:00
Julien Calixte
3e9418285f refactor(notes): let mobile notes size to content 2026-04-29 11:09:31 +02:00
Julien Calixte
78de5e280f feat: show GitHub sign-in when repo is not accessible
Adds a message + sign-in button in FluxNote when the readme resolves
to null (private/unauthorized repo), and on the SpaceCowboy 404 page.
2026-04-27 10:12:09 +02:00
Julien Calixte
28ca9a17a9 fix(FluxNote): stop skeleton showing when repo is inaccessible
The skeleton was conditioned on `isLoading || !hasContent`, so it
persisted forever when readme resolved to null (e.g. private repo
visited while logged out). Skeleton now only shows while loading.
2026-04-27 10:07:08 +02:00
Julien Calixte
e03ff49764 fix(mobile): restore overflow-y and unstick readme on vertical scroll
- Restore explicit overflow-y:auto on #main-app for mobile (removed in
  63f5d64) — implicit coercion from overflow-x:auto is not reliable in
  all Safari/WebKit versions.
- Override position:sticky on .readme to position:relative on mobile.
  The desktop sticky (left:0) is correct for horizontal scroll, but on
  mobile vertical scroll it pinned the 100dvh-tall readme across the
  entire viewport, hiding all stacked notes behind it.
2026-04-24 23:42:22 +02:00
Julien Calixte
ded770aff1 fix(mobile): restore body scroll and prevent spurious section scroll
Three layered fixes for mobile note scrolling:

1. app.css / App.vue: on mobile, override overflow:hidden on html/body
   and overflow:visible on #main-app so content from useResizeContainer
   (which sets the note-container height to (n+1)*100vh) propagates to
   the document and document.body.scrollTop works again.

2. FluxNote.vue: give each .note an explicit height:100dvh on mobile so
   the percentage-based height:100% does not resolve against the
   inflated container height set by useResizeContainer.

3. StackedNote / StackedPublicNote: replace overflow-y:hidden with
   overflow-y:clip on the section. Unlike hidden, clip does not create a
   scroll container, so touch events fall through to the page scroll and
   the section never feels "draggable" when content fits within the note.
2026-04-23 17:58:33 +02:00
Julien Calixte
d12d7b660b Revert "fix(layout): make stacked notes stick horizontally when scrolling"
This reverts commit 86c9feaf55.
2026-04-22 23:59:36 +02:00
Julien Calixte
86c9feaf55 fix(layout): make stacked notes stick horizontally when scrolling
Add left offset to each stacked note so position: sticky activates
during horizontal scroll, pinning notes progressively to the right
of the readme column at calc((index + 1) * var(--note-width)).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 23:56:43 +02:00
Julien Calixte
449a16f791 fix(layout): prevent document-level scroll-y when stacked notes overflow
Contain horizontal overflow within #main-app instead of leaking to the
document, which caused a horizontal scrollbar to consume viewport height
and trigger an unwanted vertical scrollbar. Also fix note pane height
to use 100% instead of 100vh, and switch useResizeContainer to minWidth
so the flex container can grow when the window is wider than the notes.
Add a window resize listener to keep the value accurate on resize.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 23:52:03 +02:00
Julien Calixte
10c3e1ca60 feat: replace back button with HomeButton and fix view transition
- Use HomeButton component in HeaderNote for logo, hover, and view-transition-name
- Eagerly import HeaderNote in FluxNote so the logo exists in the DOM when the transition snapshot is taken
- Wait for afterEach + nextTick in the view transition hook to handle lazy-loaded routes
- Add cursor: pointer to font change button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 20:19:59 +01:00
Julien Calixte
5f48aa5690 chore: lint and fmt 2026-03-28 09:38:55 +01:00
Julien Calixte
77c1f41b6d refactor: extract useResizeContainer hook from useNoteView 2026-02-14 23:40:43 +01:00
Julien Calixte
5ab074ab5f fix: head 2026-02-14 19:48:41 +01:00
Julien Calixte
683187b4d1 feat: render some real content 2026-02-11 03:12:52 +01:00
Julien Calixte
3e417ca271 fix: Google Font
feat: add a todo view
2026-01-19 00:37:55 +01:00
Julien Calixte
6894d84834 design: more confortable skeleton 2026-01-04 22:09:22 +01:00
Julien Calixte
11d4814f2f feat: add a countdown animation for offline note progress 2025-11-29 13:53:01 +01:00
Julien Calixte
10dcd8717a feat: add skeleton on no content that looks like loading 2025-11-29 13:53:01 +01:00
Julien Calixte
d4eb45d6e1 feat: add a error message when note is not found with the absolute path for better debugging. 2025-09-27 21:19:17 +02:00
Julien Calixte
2873f9eef3 feat: remove link to header 2025-07-10 00:16:25 +02:00
Julien Calixte
178d80a872 feat: scroll to main on breadcrumb link 2025-07-09 23:24:52 +02:00
Julien Calixte
71b548a0a0 feat: remove title as link 2025-07-09 23:16:03 +02:00
Julien Calixte
6f3c7d16ff fix: font family is the same for notyf 2025-06-08 17:26:19 +02:00
Julien Calixte
c8e75097f5 feat: full reload on repo link 2025-06-08 12:15:37 +02:00
Julien Calixte
1dda4cf77a design: change paddings 2025-04-08 21:29:26 +02:00
Julien Calixte
c8c669c0c2 feat: reduce padding for mobile 2025-04-08 09:27:55 +02:00
Julien Calixte
6c62f6afa0 Feat/upgrade daisy UI (#12)
* prune: remove daisyui config

* upgrade daisyui and implement new themes

* Update .env checksum
2025-03-01 21:27:35 +01:00
Julien Calixte
6a84c92f4f design: better design for title 2024-12-29 00:43:04 +01:00
Julien Calixte
9571752f26 Feat/migrate to daisy (#10)
* feat: init daisyui!

* feat: change theme and colors

* change dark theme and add colors
2024-12-21 20:05:37 +01:00
Julien Calixte
c8e066e6f6 feat: remove justify alignment 2024-12-21 11:56:33 +01:00
Julien Calixte
a1c5cb666a refacto: prepare for a relevant useNote hook 2024-11-02 18:58:51 +01:00
Julien Calixte
0841bbfe50 better cache all note button 2024-10-20 00:09:41 +02:00
Julien Calixte
941f867031 cache all notes 2024-09-01 22:27:51 +02:00
Julien Calixte
bb18496dc2 Sep 1, 2024, 12:00 AM 2024-08-31 22:00:00 +00:00
Julien Calixte
d1cbe8d033 move icons to public folder 2023-11-04 14:08:28 +01:00
Julien Calixte
cd89173622 fix alt 2023-09-01 18:19:47 +02:00
Julien Calixte
43b99eed52 refacto to use ref route query 2023-08-15 01:08:08 +02:00
Julien Calixte
780eaeb7f7 reset stacked note on click 2023-08-14 18:57:17 +02:00
Julien Calixte
6412b1252c refacto with no nosence 2023-08-14 18:42:35 +02:00
Julien Calixte
42aea6bb7f ️ (flux note) no more asynchronous stacked note 2023-08-14 18:23:41 +02:00
Julien Calixte
2cab8c8e3f autoimport with eslint now 2023-08-14 18:04:27 +02:00
Julien Calixte
c0182c7f57 ♻️ (app) 2023-08-14 14:08:10 +02:00
Julien Calixte
111794a40b display if readme is from cache or network 2023-08-13 21:22:33 +02:00