Commit Graph

151 Commits

Author SHA1 Message Date
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
Julien Calixte
f98ac48fe4 fix: multiple \n when editing 2025-11-11 18:01:48 +01:00
Julien Calixte
b93dfbd824 perf: run on nextTick only if necessary 2025-07-12 17:39:00 +02:00
Julien Calixte
df250750e5 feat: add chosen font size 2025-07-06 15:49:58 +02:00
Julien Calixte
b2250b2b95 feat: add fontFamilies array 2025-07-06 11:23:15 +02:00