Skip to content

feat: add real-time collaborative cloud projects - #13

Merged
jonesXYZ merged 4 commits into
feelgoodrp-com:masterfrom
DasEric:master
Aug 26, 2026
Merged

feat: add real-time collaborative cloud projects#13
jonesXYZ merged 4 commits into
feelgoodrp-com:masterfrom
DasEric:master

Conversation

@DasEric

@DasEric DasEric commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

What & why

This PR upgrades Atelier's team cloud from manual revision-based synchronization to durable, near-real-time collaboration.

Previously, team members had to upload and download complete revisions manually. This made parallel editing difficult and could leave clients working with outdated project states.

Cloud-linked projects now use a server-authoritative live workspace:

  • Local edits are converted into stable-ID, field-level operations.
  • Accepted changes are broadcast automatically to connected team members.
  • Additions, edits, deletions, ordering, settings, groups, drawables, tattoos, textures, and optimized assets are synchronized.
  • Local changes remain responsive through optimistic updates.
  • Unsent operations are stored in a durable local queue and retried after connection failures or application restarts.
  • Missed WebSocket events and version gaps are recovered from an authoritative workspace snapshot.
  • Binary assets are uploaded before the corresponding operation is published.
  • Existing assets are reused by SHA-256; only missing or changed files are transferred.
  • Cloud projects load from the live workspace even when no immutable revision exists yet.
  • The manual refresh/download action now refreshes the live workspace instead of requiring headRevision > 0.
  • Initial linking, uploading, cloning, and downloading display progress with phase, filename, item count, and percentage.
  • workspaceVersion was added to the project schema and migration path.
  • Immutable revisions remain available as explicit build and publishing checkpoints.
  • An unsigned manual GitHub Actions test-build workflow was added.

The corresponding atelier-api workspace changes must be deployed before this client version is distributed.

How it was tested

Automated checks:

  • bun run build
  • bun run selftest:live
  • bun run selftest:project
  • git diff --check

Results:

  • Production TypeScript/Vite build passed.
  • All 8 live collaboration client checks passed.
  • All 66 project schema, migration, mapping, and store checks passed.
  • No diff integrity errors were found.

The real test workspace was also checked against the local API:

  • 810 drawables
  • 3,110 unique referenced assets
  • 3,110 asset records present
  • 0 missing asset records

Manual flows covered:

  • Link an existing local project to a new cloud pack.
  • Observe upload/check/initialization progress.
  • Open the cloud project from another client.
  • Download and materialize the authoritative workspace.
  • Reuse already downloaded local assets.
  • Apply live edits and deletions between connected clients.
  • Refresh a live project without requiring a legacy revision.

Checklist

  • bun run build passes
  • bun run selftest:project passes
  • Focused change that matches the surrounding style
  • README / docs updated if behavior changed

@jonesXYZ
jonesXYZ merged commit e3aa257 into feelgoodrp-com:master Aug 26, 2026
1 check passed
jonesXYZ added a commit that referenced this pull request Aug 26, 2026
DasEric's realtime team workspace (#13, and #2 on atelier-api) shipped in
package.json as 1.11.0 but was never dated or released and did not credit the
author. This dates the changelog entry, adds the credit there, in the README
and in the in-app credits panel (EN + DE), and links the PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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