Commit Graph

155 Commits

Author SHA1 Message Date
Julien Calixte
aad07184fd fix(freshness): surface silent failures when pulling latest
queryFileContent threw on octokit errors (stale SHA 404, expired token,
network blip) and the rejection bubbled up unhandled through pullLatest
and onBadgeClick, leaving the badge stuck on "Outdated" with no log or
toast. Wrap the octokit call, log on failure, clear the cached SHA so
the next click re-resolves it, and show an error toast.

Also fix a dead `if (!user || !repo) { null }` that did nothing.
2026-05-06 22:02:50 +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
5a9c0a3704 lint 2026-05-04 23:54:26 +02:00
Julien Calixte
adb1bd5945 fix: fix height on mobile 2026-04-29 10:34:46 +02:00
Julien Calixte
df3e217d01 fix(userRepo): unwrap reactive proxies before postMessage to worker
Vue reactive Proxies cannot be serialized by the Structured Clone
Algorithm used by postMessage/Comlink. Use toRaw() on this.files and
this.userSettings before passing them to data.update() to avoid the
DataCloneError.
2026-04-27 10:22:20 +02:00
Julien Calixte
9f75e7971d fix(layout): cache pageWidth in localStorage to avoid render glitch
The page width from .remanso.json was only applied after an async
PouchDB + network fetch, so notes briefly rendered at the default
500px before snapping to the configured value. Persist pageWidth
alongside the existing font cache (key renamed to remanso:layout:*),
so it is read synchronously during setUserRepo and applied before
the first render. Also always reset --note-width with a default
fallback to prevent stale values leaking across repo navigation.
2026-04-26 13:44:10 +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
ee8bbd4a37 feat(config): add pageWidth setting to .remanso.json
Allows repo owners to configure note column width via `"pageWidth": "700px"` in .remanso.json. Applies the value to the --note-width CSS variable and invalidates the cached width so resize/overlay hooks pick it up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 23:34:26 +02:00
Julien Calixte
e369541dc0 refactor: scope PouchDB writes to repo config, not user font prefs
chosen* fields are per-browser preferences — localStorage is the correct
and sufficient store for them. Removing data.update from font setters and
stripping chosen* from the GitHub fetch PouchDB write prevents stale PouchDB
data from conflicting with localStorage on reload.
2026-04-06 23:26:50 +02:00
Julien Calixte
73a6014750 fix: persist font selections across navigation and page reloads
- Use v-model with writable computeds instead of :value+@change so selects
  re-sync when the options list changes asynchronously
- Always include currently chosen fonts in sortedFontFamilies so a selected
  font not present in .remanso.json fontFamilies still shows in the select
- Initialize userSettings instead of returning early in font setters so
  changes made before async GitHub fetch completes are not silently dropped
- Back font choices with localStorage so they survive hard reloads even when
  PouchDB/IndexedDB fails silently in the web worker
2026-04-06 18:51:27 +02:00
Julien Calixte
f3e74aed34 fix: resolve all TypeScript type errors
- Install missing comlink (was in lockfile but not node_modules)
- Add @ts-rest/core and @ts-rest/vue-query (imported but not declared as deps)
- Add declare module '*.vue' shim to shims-vue.d.ts
- Replace arktype validators in ts-rest contract with contract.type<T>() since @ts-rest expects Zod schemas
2026-04-06 15:05:57 +02:00
Julien Calixte
006cd63388 feat: paginate repo list with infinite scroll
Load 30 repos at a time instead of 100 at once, showing data sooner.
Adds v-infinite-scroll to RepoList.vue to fetch subsequent pages on scroll.
2026-04-05 11:56:36 +02:00
Julien Calixte
99c349f6df fix: preserve font settings when repo has no .remanso.json
When no config file exists, userSettings was set to null which destroyed
cached user preferences and silently blocked all setFont* actions.
2026-04-04 14:39:34 +02:00
Julien Calixte
b003a3e008 perf: move PouchDB/IndexedDB operations to a Web Worker
All database reads and writes now run off the main thread via a
dedicated worker, eliminating IndexedDB overhead from the frame budget.

- Create data.worker.ts exposing the Data class via Comlink
- Refactor data.ts to export a Comlink-wrapped proxy and a standalone
  generateId() pure function (workers can't expose sync methods cleanly)
- Update all 10 call sites to import generateId directly instead of
  calling data.generateId()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 11:27:45 +02:00
Julien Calixte
1b5e23e3d4 fix: keep font settings visible during repo navigation
- resetFiles() no longer clears userSettings so FontChange stays visible
  while navigating between repos (old fonts show until new ones load)
- Add _requestId counter to setUserRepo() to discard stale async callbacks
  from previous navigations, preventing state corruption on quick nav
- Load savedRepo and userSettings caches in parallel with Promise.all,
  reducing yield points so cache hits apply before first render

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 11:21:56 +02:00
Julien Calixte
20e9538983 feat: mv profile to footer 2026-03-28 20:24:08 +01:00
Julien Calixte
5f48aa5690 chore: lint and fmt 2026-03-28 09:38:55 +01:00
Julien Calixte
dfdd646eb1 deps: migrate to api.remanso.space for everything now 2026-03-21 10:49:39 +01:00
Julien Calixte
0381ca00cc fix: handle full DID in fromShortDid to prevent double did: prefix 2026-03-17 02:12:20 +01:00
Julien Calixte
163e3ee756 feat: shorten DID in public note URLs by stripping did:plc: prefix
URLs are now /pub/<base32id>/rkey instead of /pub/did:plc:<base32id>/rkey.
Non-plc DIDs keep their method prefix (e.g. web:example.com).
2026-03-17 01:33:51 +01:00
Julien Calixte
40c461e150 chore: move api to remanso.space 2026-03-17 00:53:58 +01:00
Julien Calixte
af49b233ef lint 2026-03-10 16:33:24 +01:00
Julien Calixte
c721338dc0 fix: atproto oauth dev redirect, tab isolation, and concurrent load guard
- Use buildLoopbackClientId(window.location) for dev to include port in redirect URI
- Bind Vite dev server to 127.0.0.1 explicitly
- Remove scope override in signInRedirect (use metadata default)
- Clear OAuth callback params from URL after session restore
- Replace follows badge with DaisyUI tabs (All / Following)
- Use separate PublicNoteList instances per tab to isolate v-infinite-scroll state
- Add isLoading guard in onLoadMore to prevent concurrent fetches
2026-03-10 14:18:41 +01:00
Julien Calixte
a234d590bd fix: redirect from netlify 2026-03-10 12:45:04 +01:00
Julien Calixte
8843d67a80 feat: create atproto oauth login 2026-03-10 12:27:35 +01:00
Julien Calixte
7ca922e0a6 feat: language in header 2026-03-01 19:00:29 +01:00
Julien Calixte
1dffab12df fix: no : in class names 2026-02-21 19:37:36 +01:00
Julien Calixte
b14f5f1dc1 Merge branch 'main' of github.com:remanso-space/remanso 2026-02-19 20:42:21 +01:00
Julien Calixte
bb06274c41 fix: apply default font immediately on mount before settings load 2026-02-19 17:41:44 +01:00
Julien Calixte
103b23884f refacto: use microcosm endpoint and change types 2026-02-17 09:30:27 +01:00
Julien Calixte
5c70232fba deps: upgrade 2026-02-15 08:00:11 +01:00
Julien Calixte
d1b0d51ec9 feat: add stacked public notes 2026-02-15 00:23:57 +01:00
Julien Calixte
0ce44404a4 feat: change default font family 2026-02-14 22:23:53 +01:00
Julien Calixte
f92f5f4adf fix: author typing 2026-02-14 19:46:14 +01:00
Julien Calixte
8b921f1adb refacto: look after remanso now 2026-02-14 14:40:11 +01:00
Julien Calixte
44f5663f50 feat: add font customization 2026-02-14 02:00:54 +01:00
Julien Calixte
33eeb9ae02 feat: retrieve images 2026-02-14 00:17:16 +01:00
Julien Calixte
25f3ed1181 fix: no more blurry countdown 2026-02-12 23:05:31 +01:00
Julien Calixte
683187b4d1 feat: render some real content 2026-02-11 03:12:52 +01:00
Julien Calixte
95b4eb7c44 feat: notes and first item view 2026-02-10 22:21:59 +01:00
Julien Calixte
c638914f56 feat: aka without the at:// 2026-02-10 21:31:36 +01:00
Julien Calixte
fa2526bdc6 Mhttps://pdsls.dev/at://did:plc:4m3kouplb7s7xozjd3whinvl/space.litenote.note/3meeya3nm5l2
merge branch 'main' of github.com:lite-note/lite-note
2026-02-10 20:48:45 +01:00
Julien Calixte
63903d48eb feat: init public notes 2026-02-10 20:05:21 +01:00
Julien Calixte
674bf84fe0 feat: init public notes 2026-02-10 19:17:30 +01:00
Julien Calixte
33fd0a0a74 refacto: migrate to composition API everywhere 2026-01-22 23:00:45 +01:00
Julien Calixte
08e9c41c4d deps: use coollabs instead of google fonts 2026-01-22 22:52:29 +01:00
Julien Calixte
9f06c97028 fix: smaller size for todo title 2026-01-19 10:55:36 +01:00
Julien Calixte
3e417ca271 fix: Google Font
feat: add a todo view
2026-01-19 00:37:55 +01:00
Julien Calixte
11d4814f2f feat: add a countdown animation for offline note progress 2025-11-29 13:53:01 +01:00
Julien Calixte
80f4f39006 fix: progress bar for offline notes 2025-11-29 13:13:30 +01:00