Commit Graph
285 Commits
Author SHA1 Message Date
nvrlandClaude Opus 4.8 471f57b8e1 add cache inspect/vacuum and a diagnose self-check
A corrupt database or an oversized cache previously left the user with no
answer but "delete the state directory and re-sync", which for a large
account means re-downloading everything to fix a problem that may have been
a few stale rows.

pdfs diagnose reports on paths, keyring, daemon, and mountpoint, and exits
non-zero if any check fails so it works in a health check. Every check is
written to run with no daemon, because that is the situation it gets run in:
a stopped daemon is reported as a finding rather than aborting the report.
Writability is tested by writing, since permission bits say nothing about a
full disk or a read-only remount.

pdfs cache inspect reports database size, reclaimable space, per-table row
counts, and cache usage; --deep adds SQLite's integrity check, opt-in because
it reads every page. The report distinguishes "checked and clean" from "not
checked" rather than letting an empty problem list imply a clean bill of
health it never gave.

pdfs cache vacuum checkpoints the WAL and compacts the database.

Deliberately no orphaned-cache-row pruning: ContentCache::reconcile already
rebuilds the index from what is on disk at every open, so a second pass here
would duplicate it against a worse view of the truth. The WAL is likewise
left to journal_size_limit, which already caps it -- a periodic checkpoint
would paper over a problem that no longer exists.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFzNQyb4TWrCRWcnegqWxY
2026-07-20 19:54:42 +02:00
nvrlandClaude Opus 4.8 3ade754ea2 add .pdfsignore selective sync for mirror folders
Mirror folders walked and uploaded every path under their root, so syncing a
project directory pushed node_modules/, target/, and .git/ to Drive -- quota
spent on files nobody wants there, and enough API traffic to invite rate
limiting.

Rules come from a .pdfsignore (or .protonignore) at the folder root, unioned
with an ignore_patterns list in config.json that defaults to the usual build,
VCS, and editor-leftover globs. Both are re-read at the start of every pass,
so edits apply without restarting the daemon.

The filter deliberately sits on the classification union in
classification_order(), not on walk_local alone. do_reconcile classifies
local | remote | baseline, so a file synced before a rule started matching it
is absent from local but present in the other two -- the "local deleted,
remote untouched" arm, which calls trash_nodes. Filtering only the walk would
have meant that adding a line to .pdfsignore silently trashed files on Drive
on the next pass. Ignored baseline rows are left in place so un-ignoring
re-adopts the existing remote file instead of re-uploading it.

guard_local_wipe takes a filtered baseline for the same reason: an ignored
path is absent from the walk by rule rather than by loss, and counting those
as missing would trip the guard on every pass once a rule covered the tree,
wedging that folder's sync permanently.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFzNQyb4TWrCRWcnegqWxY
2026-07-20 19:40:40 +02:00
nvrl 661ae3cf7a fixed incorrect versioning for rpm build v0.6.2 2026-07-20 17:06:36 +02:00
nvrl f803bf3cd7 fixed github ci 2026-07-20 15:06:17 +02:00
nvrl 084740ad95 version bump to 0.6.2 2026-07-20 14:54:13 +02:00
nvrl 65eed0cc72 Merge pull request #12 from narrrl/release/0.6.2
release/0.6.2
2026-07-20 14:53:06 +02:00
nvrl 1e0e284d5f per-chunk wakeup, B13 + B14 2026-07-20 14:52:31 +02:00
nvrl f0fbd0775c fixed long getattr load times with ls -l 2026-07-20 13:37:59 +02:00
nvrl d25a573e8f fixed mount-kind correlation 2026-07-20 00:09:00 +02:00
nvrl eafe1307b8 Merge pull request #11 from narrrl/fix/return-prompt
Fix/return prompt
2026-07-19 23:53:04 +02:00
nvrl 056ae0463f Merge pull request #10 from narrrl/fix/capture #
added webgtk recaptcha
2026-07-19 23:52:39 +02:00
nvrl b2b0fe7b99 fixed return key not opening file 2026-07-19 23:39:24 +02:00
nvrl d13042b550 Merge branch 'main' into fix/capture 2026-07-19 23:25:10 +02:00
nvrl cb67d97b0f added webgtk recaptcha 2026-07-19 23:24:18 +02:00
nvrl 0323fdc44d Merge pull request #7 from kacperpaczos/fedora-packaging
Add Fedora packaging
2026-07-19 22:26:46 +02:00
nvrl 2b2a49c679 Merge branch 'main' into fedora-packaging 2026-07-19 22:26:28 +02:00
nvrl ed129f7c71 Merge pull request #9 from narrrl/feature/fedora-packeging
Feature/fedora packeging
v0.6.1
2026-07-19 20:50:44 +02:00
nvrl b39d09fb9d version bump to 0.6.1 2026-07-19 20:49:50 +02:00
nvrl c8f57ed5c9 added fedora packeging 2026-07-19 20:49:02 +02:00
Kacper PaczosandCursor b90b7e4b9c Add Fedora packaging and fix crates.io SDK build.
Remove the local proton-sdk path patch so the workspace builds from published crates, and document Fedora 44 build/runtime plus a local RPM spec.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 19:46:56 +02:00
nvrl cd437dff9c removed local sdk ref v0.6.0 2026-07-19 19:42:18 +02:00
nvrl 681db981f5 Merge pull request #6 from narrrl/release/0.6.0
Release/0.6.0
2026-07-19 19:33:45 +02:00
nvrl 45bd48fa5f version bump 2026-07-19 19:32:30 +02:00
nvrl 4a2643163b added recovery instructions 2026-07-19 19:30:40 +02:00
nvrl 829f0ee643 updated architecture 2026-07-19 19:30:25 +02:00
nvrl 532628456e fix(fuse): keep inode stable across rename
relocate() called forget(), dropping the node's by_uid mapping, so
the re-enumeration assigned a fresh inode. The kernel had already
carried the renamed dentry onto the old one and holds it for the
entry TTL, so lookup/getattr/opendir resolved to an inode entries
no longer held and returned ENOENT — while readdir walked children
and reported the new inode. A renamed directory listed in its
parent but could not be entered until the TTL expired.

Rewrite the node in place and invalidate both parents' listings
instead. Also stops the moved node's DB row being deleted and
recreated on every move, which the B1 data-loss fix worked around
2026-07-19 19:30:05 +02:00
nvrl f9250211b8 fixed missing trash logging 2026-07-19 17:45:47 +02:00
nvrl e8f11f7c42 added docs 2026-07-19 17:42:59 +02:00
nvrl 717521195c fixed long file names 2026-07-19 15:57:36 +02:00
nvrl 190ea3e9cb fixed some conflict bugs + ui fix 2026-07-19 15:36:04 +02:00
nvrl 1d5fdfb6b9 some performance optimizations 2026-07-19 12:48:48 +02:00
nvrl a90cf83ff5 fixed some bugs 2026-07-18 19:24:11 +02:00
nvrl 7766628098 refactor, fixed monolithic 2026-07-18 18:33:14 +02:00
nvrl 232b3b5348 db.rs refactor 2026-07-18 14:20:37 +02:00
nvrl d58dc46708 added parking_lot mutex 2026-07-18 12:24:28 +02:00
nvrl 38aca3cd48 video streaming 2026-07-18 12:08:34 +02:00
nvrl c555315998 improved ui + prompt 2026-07-17 23:34:46 +02:00
nvrl 81e7133003 perf improvements 2026-07-17 22:30:08 +02:00
nvrl a293593f4a updated sdk dependencie 2026-07-17 16:00:52 +02:00
nvrl 1f8f1936a7 fixed stale revision bug 2026-07-17 15:31:21 +02:00
nvrl 4720b2a5fb concurrent reads 2026-07-17 13:49:16 +02:00
nvrl 50c96cbbf4 implemented real offline structure, with online drain 2026-07-17 12:39:03 +02:00
nvrl dcc62ba420 file pipeping 2026-07-17 11:13:23 +02:00
nvrl fb39594453 Merge pull request #1 from narrrl/feature/sharing-endpoints
Feature/sharing + devices
2026-07-17 11:12:13 +02:00
nvrl 68e07ed426 implemented offline scaffold 2026-07-17 10:23:24 +02:00
nvrl bb9804498c added new folder icon, fixed db size (max log size), progress bars 2026-07-16 18:13:48 +02:00
nvrl a38d0371ec implemented shared files, folder uploads, caching 2026-07-16 01:18:03 +02:00
nvrl cc744d56c7 added photos thumbnail caching + bigger photos 2026-07-15 01:00:43 +02:00
nvrl ae0d374ec0 updated readme screenshots 2026-07-14 19:36:11 +02:00
nvrl c52d829a43 added trash v0.4.0 2026-07-14 14:55:54 +02:00