Scans all CRDT log rows for this user. Rows whose operation payload matches an earlier
row (same normalized JSON) are removed; the lowest data_version for each payload is kept. This cannot be undone. Removing tail rows can lower server
latest_version
after the next client sync.
Version
Type
Inserted
Operation
796
idea.update
%{"archived" => false, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:44:56Z"}
%{"archived" => false, "blocks" => nil, "category" => "Site", "id" => "81f45569-1628-48f4-97a2-2d461e37b8fc", "idea_type_id" => "610d89a5-24cb-5043-a01f-02076dd4399e", "inserted_at" => "2026-08-27T08:41:15Z", "name" => "Gallery", "pitch" => "Share photos and videos along with captions and other metadata", "type" => "idea.update", "updated_at" => "2026-09-08T23:44:28Z"}
793
asset.update
%{"agents_excerpt" => nil, "agents_source_file" => nil, "git_default_branch" => "master", "git_remote_url" => "git@144.76.119.114:/home/git/photo_gallery_edit.git", "id" => "73734ae7-eaf8-4718-9024-e5aca5a68c0a", "idea_id" => "81f45569-1628-48f4-97a2-2d461e37b8fc", "inserted_at" => "2026-08-31T23:26:42Z", "label" => "Original version", "last_commit_at" => "2026-09-08 02:59:10 +0200", "last_commit_author" => "anonymous <anonymous@anonymo.us>", "last_commit_message" => "Fix for processing video UX\n", "last_commit_sha" => "798ca8ad78f599942a74a7af34487ccbfb41f658", "last_scanned_at" => "2026-09-08T23:44:28Z", "local_path" => "C:\\Users\\anonymous\\projects\\photo_gallery_edit", "readme_excerpt" => "# Photo Gallery Edit (PGE)\n\nA small single-user tool for curating photo galleries and **publishing** them as\nself-contained static HTML pages at a shareable URL, optionally password-protected.\n\n- Upload images (auto EXIF-orient + thumbnails), give each a title and description,\n reorder by drag-and-drop.\n- Publish → paginated static pages where each image is embedded as a `data:` URI\n (the page renders with zero extra requests); full-size originals load in the\n background for the click-to-enlarge lightbox.\n- Per-gallery viewer passwords: any number, added/removed independently. A correct\n password grants 48 hours of access; removing a password ends the sessions that\n used it.\n- Multi-user: each account owns its own galleries. Admins get a console\n (`/admin`) to invite users by email, see per-user stats, set a user's password,\n toggle admin, and deactivate accounts, plus a log of every password-reset\n request and a **Backup** tab to download / restore the SQLite database.\n\n**Stack:** FastAPI + SQLite (backend, `backend/`) · React + Vite + TypeScript\n(editor SPA, `frontend/`). One process serves the API (`/api`), the editor (`/`),\nand published galleries (`/g/<slug>`). The pre-rewrite codebase is kept under\n`legacy/` (git tag `v0-legacy`).\n\n## Run it (Docker)\n\n```sh\ncp .env.example .env\n# Fill in SECRET_KEY and ADMIN_EMAIL, then generate ADMIN_PASSWORD_HASH:\n( cd backend && uv run python -m app.cli hash-password ) # paste the hash into .env\ndocker compose -f docker/compose.yaml up --build\n```\n\nOpen http://localhost:9200 and log in with the credentials from `.env`\n(set `BASE_URL=http://localhost:9200` in `.env` so generated links match).\nData lives in the `pge_data` Docker volume.\n\n`ADMIN_EMAIL` / `ADMIN_PASSWORD_HASH` seed the **first** user (an admin) on the\ninitial database migration. After that the `users` table is authoritative and\nthose variables are ignored — manage accounts from the admin console or the CLI.\n\n## User management\n\n- **Invite a user:** ad", "repo_name" => "photo_gallery_edit", "source_device_app_id" => "desktop:38ded643-95fb-489f-969c-7871359f7c40", "type" => "asset.update", "updated_at" => "2026-09-08T23:44:28Z"}
792
idea.update
%{"archived" => false, "category" => "Site", "id" => "81f45569-1628-48f4-97a2-2d461e37b8fc", "idea_type_id" => "610d89a5-24cb-5043-a01f-02076dd4399e", "inserted_at" => "2026-08-27T08:41:15Z", "name" => "Gallery", "pitch" => "Share photos and videos along with captions and other metadata", "type" => "idea.update", "updated_at" => "2026-09-08T23:43:55Z"}