Commit Graph
34 Commits
Author SHA1 Message Date
Zef Hemel 0627e7cb49 Fixes #1931 and #1923 (hopefully)
The service worker's proxy fallback only matched the wrapped "Offline"
error from HttpSpacePrimitives, but raw fetch() throws browser-native
errors like
"Failed to fetch" (Chrome), "NetworkError..." (Firefox), or "Load
failed"
(Safari). This caused a hard 503 instead of falling through to serve
local
data. Additionally, the `fullSyncConfirmed` flag reset on every service
worker
restart, forcing unnecessary proxying even when synced data existed in
IndexedDB.

In this commit:
- Use `isNetworkError()` in proxy_router.ts to catch all browser network
  errors
  and fall through to local serving instead of returning 503
* Recover `fullSyncConfirmed` from persisted sync snapshot on SW
  restart, so
  previously synced spaces serve locally immediately
* Adds e2e tests trying to emulate this behavior and prevent regressions
2026-04-14 08:01:43 +02:00
Zef Hemel cda71b4608 Fixes #1888 (hopefully): disables timeout on writeFile requests
These can be large and take longer than 30s.
2026-03-28 14:54:50 +01:00
Zef Hemel 764ac375c9 Fix (webkit) encode URLs with dot in path name to circumvent Safari
overriding headers (fixes opening e.g. PDF files)
2026-03-27 16:38:50 +01:00
Zef Hemel 6623daa0a2 More sync engine tests + fixes 2026-03-20 16:10:33 +01:00
Zef Hemel b204c07359 More sync edge case fixes 2026-03-20 14:31:12 +01:00
Zef Hemel ba7266d171 Fix: sync edge case: matching timestamps, but different content lengths 2026-03-20 12:58:29 +01:00
Zef Hemel 822997fd5e Client available upgrade notification
If the server is updated, but the client doesn't match the server
version, a notification will appear instructing the user to reload.
2026-03-10 12:05:33 +01:00
Zef Hemel c2d42849a9 A few more format and type fixes 2026-03-10 09:42:48 +01:00
Zef Hemel 799e27a9b4 Enable biome based formatter and reformat 2026-03-10 09:38:59 +01:00
Zef Hemel bbcd9ac6aa Introduce new noFloatingPromises lint rule and fix violiations 2026-03-08 15:49:45 +01:00
Zef Hemel dbf275d75b Introduce biome as linter with lint fixes 2026-03-06 08:05:13 +01:00
Zef Hemel 380b5d90ca More Deno cleanup 2026-02-27 16:25:34 +01:00
Zef Hemel 803c5c478d Merge remote-tracking branch 'origin/main' into to-node 2026-02-27 15:05:49 +01:00
Zef Hemel 336e87672f Simplifies #1724
Now considers any HTTP status >= 500 < 600 as offline
2026-02-26 11:39:43 +01:00
Zef Hemel 02bd8ed362 Migration Deno -> Node.js
* First pass
* Now using vitest for tests
2026-02-14 22:08:35 +01:00
Zef Hemel 502b636aef Fixes #1815: Changes how index status is tracked
- New check for full indexing completion
- Renamed `hasInitialIndexCompleted` to `hasFullIndexCompleted` for clarity.
- Removed file:initial event (no longer required and not documented for public consumption)

Hopefully doesn't introduce new regressions. Needs testing time "in the field".
2026-02-05 11:20:11 +01:00
Zef Hemel 6fff01ed3a (Hopefully) further improves sync snapshot handling
Service workers are a bit of a wild west: they can be killed at any time for any reason. This meant that a service worker (and with that a sync cycle) could be killed mid-sync, where files are already synced, but the _snapshot_ has not yet been persisted to the database. These changes persist the snapshot after ever single file sync operation (before: fully sync cycle), removing or at least lowering the chance of this happening. This can be a bit slower, but it's probably worth it.
2026-02-03 09:54:33 +01:00
Zef Hemel fb50a6e188 file:change events are now awaited, for better synchronous operation 2026-02-02 16:41:44 +01:00
Zef Hemel 479d8051ff Make file writes synchronous
When writing a file to the service worker, it will no _immediately_
trigger a single file sync and only return when it completes.
2026-01-29 15:14:53 +01:00
Zef Hemel aa9132d918 Further bug fixes and optimizations 2026-01-07 16:26:43 +01:00
Zef Hemel 658f6e4e18 Undoes the 2 stage index
This caused too many edge cases. Will work on optimizing the one-pass
index instead (not part of this commit).
2026-01-05 15:34:45 +01:00
Zef Hemel 992d83f015 Fixes #1720
Stop intercepting exceptions during single file sync so they become
visible in the UI
2025-12-10 10:05:07 +01:00
Zef Hemel b0f6b9a33d Add permission check before write/delete operations This avoids
accidentally writing to a read-only file and only finding out about it
after a sync.

Also removes redundant space primitive implementations that weren't used
2025-11-19 14:57:10 +01:00
Ohad LutzkyandGitHub 72a7c6e071 More robust "offline" handling when using proxies (#1675)
Identify more HTTP statuses as indicating "offline", specifically ones
delivered by proxies such as cloudflare.
2025-11-09 12:10:30 +01:00
Zef Hemel 732c6a5589 Loading of plugs is no longer restricted to _plug
Builtin plugs are generated under Library/Std/Plugs path now.
2025-11-07 10:43:25 +01:00
Zef Hemel b333d4ac36 Remove redundant disk_space_primitives 2025-10-01 17:14:46 +02:00
Zef Hemel 6ca64f1e3f Bring back the page:saved event 2025-10-01 08:36:16 +02:00
Zef Hemel dd1990cc8f More dead code elimination 2025-09-29 11:32:12 +02:00
Zef Hemel bb602dd9e8 Moved some more code around
Mostly just shuffling files to different folders, but also: renamed
PagePicker to AnythingPicker
2025-09-29 11:03:06 +02:00
Zef Hemel b4cec7ae81 Stop triggering file:deleted event on getFileMeta checks
Not sure why that happened...
2025-09-29 10:29:41 +02:00
Zef Hemel 0e37d0aa05 More robust ping 2025-09-26 13:21:06 +02:00
Zef Hemel 18d198d486 Don't set lastModified for created in datastore_space_primitives.ts 2025-09-25 12:18:07 +02:00
Zef Hemel ee3896ee75 Further code restructuring and fix detection of space path change 2025-09-24 12:57:56 +02:00
Zef Hemel f4336bf09f Code restructuring: eliminated the top-level lib/ directory 2025-09-23 17:00:34 +02:00