Skip to content

Comments

Add cloud sync & backup with Google Drive#315

Closed
zurillion wants to merge 8 commits intoRoundtableHold:mainfrom
zurillion:claude/review-changes-mlsgga5of9bfkyl2-R7tG0
Closed

Add cloud sync & backup with Google Drive#315
zurillion wants to merge 8 commits intoRoundtableHold:mainfrom
zurillion:claude/review-changes-mlsgga5of9bfkyl2-R7tG0

Conversation

@zurillion
Copy link
Contributor

@zurillion zurillion commented Feb 19, 2026

Summary

  • New sync.js: SyncManager (debounced 5s + periodic 2min + beforeunload),
    GoogleDriveProvider via appDataFolder, field-level merge with per-item
    timestamps, local version history (10 snapshots), navbar sync indicator
  • common.js: initialise checklistTimestamps in every profile
  • options.html: Cloud Sync & Backup section, provider picker modal
    (Google Drive live; iCloud and GitHub Gist greyed-out, coming soon),
    deactivate confirm modal, version history panel
  • main.css: sync-spin animation + navbar indicator styles
  • generate.py: sync.js added to make_footer() for all regenerated pages

Test plan

  • Options page shows Cloud Sync section with Activate button
  • Click Activate → choose Google Drive → complete sign-in
  • Status changes to Synced; navbar icon appears
  • Tick a checklist item → Pending, then Synced after 5s
  • Open in a second browser — progress matches after load
  • View History shows snapshots; Restore works
  • Deactivate removes the indicator and stops syncing

claude and others added 8 commits February 18, 2026 21:48
Adds a workflow that runs on every PR and push to main.
It installs dependencies, re-runs generate.py, and fails
with a clear message if the committed HTML in docs/ differs
from what the generator would produce — preventing drift
between the YAML source files and the checked-in HTML.

https://claude.ai/code/session_01N58bvEvfg7jhcnDJaCpnD5
Instead of failing the PR when HTML is out of sync with YAML,
the workflow now runs generate.py and pushes the result back
to the PR branch automatically. This makes the workflow safe
for agent-authored PRs (Codex, Claude) that may only edit
YAML without regenerating the HTML.

https://claude.ai/code/session_01N58bvEvfg7jhcnDJaCpnD5
The file was misnamed .gitatttributes (3 t's) so git was never
reading it. Renamed to .gitattributes and added linguist-generated
attribute for docs/checklists/*.html so GitHub collapses those
diffs by default in pull requests.

https://claude.ai/code/session_01N58bvEvfg7jhcnDJaCpnD5
…bfkyl2-R7tG0

Claude/review changes mlsgga5of9bfkyl2 r7t g0
Tag the 13 Shadow of the Erdtree cookbook categories with dlc: true at
section level (Forager Brood, Igon's, Finger-Weaver's, Greater
Potentate's, Ancient Dragon Knight's, Mad Craftsman's, St. Trina
Disciple's, Fire Knight's, Loyal Knight's, Battlefield Priest's, Grave
Keeper's, Antiquity Scholar's, Tibia's).

Add 'cookbooks' to the DLC-aware page set in generate.py so the
Show/Base Game/DLC selector is rendered and data-dlc attributes are
emitted for every item on the page.

Result: 45 DLC items, 59 base game items, all sections are homogeneous
so the filter never produces an empty category.

https://claude.ai/code/session_01N58bvEvfg7jhcnDJaCpnD5
- New docs/js/sync.js: CloudProvider interface, SyncManager (debounced 5s
  + periodic 2min + beforeunload), GoogleDriveProvider (appDataFolder,
  token-based GIS auth), field-level merge with per-item timestamps,
  local version history (last 10 snapshots), navbar sync indicator injected
  dynamically on every page.

- docs/js/common.js: initialise checklistTimestamps dict in every profile
  so field-level merge has timestamps from day one.

- docs/options.html: new "Cloud Sync & Backup" section with inactive /
  active states, provider picker modal (Google Drive active; iCloud and
  GitHub Gist greyed-out "coming soon"), deactivate confirm modal, version
  history panel, sync.js script tag.

- docs/css/main.css: sync-spin keyframe animation + sync-nav-indicator
  styles for the navbar cloud icon.

- generate.py: sync.js added to make_footer() so all regenerated checklist
  pages load the sync module automatically.

To enable Google Drive sync, replace GOOGLE_CLIENT_ID in sync.js with a
real OAuth 2.0 Client ID from Google Cloud Console (see setup instructions
at the top of that file).

https://claude.ai/code/session_01N58bvEvfg7jhcnDJaCpnD5
@zurillion zurillion closed this Feb 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants