Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/editor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ jobs:
targets: wasm32-unknown-unknown
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- uses: actions/checkout@v4
with:
repository: pace-kit/pace_server
ref: 66203da9bfeda679dac0669fe4eae7ced9d9e59e
path: integration-server
- uses: dtolnay/rust-toolchain@stable
- run: cargo +stable build --locked --manifest-path integration-server/Cargo.toml
- run: cargo fmt --all -- --check
- run: cargo test --workspace --locked
- run: cargo clippy --workspace --all-targets --locked -- -D warnings
Expand All @@ -32,6 +39,8 @@ jobs:
- run: npm ci
- run: npx playwright install --with-deps chromium
- run: npm run test:e2e
env:
PACE_SERVER_BIN: integration-server/target/debug/pace_server
- uses: actions/upload-artifact@v4
if: always()
with:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/target
/integration-server
/dist
/node_modules
/test-results
Expand Down
16 changes: 14 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[workspace]
resolver = "2"
members = ["app", "web_view"]
members = ["app", "web_view", "project_format"]
# The initial supported platform is browser/WASM. Legacy desktop scaffolding is
# retained outside the workspace until its platform adapter is implemented.
exclude = ["base_resolver", "desktop_resolver", "desktop_view", "web_resolver"]
exclude = ["base_resolver", "desktop_resolver", "desktop_view", "web_resolver", "integration-server"]
40 changes: 28 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,33 @@ cargo check -p web_view --target wasm32-unknown-unknown
cargo fmt --all -- --check
```

## Core dependency — blocked
## Project sharing

The inspected `pace_core` commit is
[`6ccfd6ea60534f3c3312882458e1c83308a76b81`](https://github.com/pace-kit/pace_core/tree/6ccfd6ea60534f3c3312882458e1c83308a76b81).
It contains empty build/debug modules and Bevy templates, but no versioned scene
format, loader, executable runtime, or three-room fixture. No other branches or
PRs were available during implementation. `runtime.lock.json` records this
fact; its null runtime revision is **not** a runnable runtime pin.
Open **Project sharing** to connect to `pace_server`, upload a private snapshot,
grant reader/writer access, and download another user's project. Uploads require
the revision you downloaded; stale writes keep your edits and show a conflict.
Downloads are staged for review before replacing the open project. Tokens stay
in memory and are cleared on reload. Local save/recovery works without a server.
See [setup and the two-client walkthrough](docs/project-sharing.md).

This is **project sharing, not real-time co-editing**. There is no automatic
upload, merge, polling or live presence.

## Core and draft formats

`pace_core` at
[`1aa2b36270b68ea6fc04c268c3d5661ec09790aa`](https://github.com/pace-kit/pace_core/tree/1aa2b36270b68ea6fc04c268c3d5661ec09790aa)
now defines core scene v1 and a runnable native adventure runtime. The server
validates core scenes with that pinned loader, independently of editor drafts.
The editor does not yet convert drafts to core scenes or run the core in a browser;
`runtime.lock.json`'s null runtime revision is **not** a runnable web runtime pin.

Projects currently use **`pace-editor-draft`, version 1**, an explicitly
editor-owned contract, not a claimed implementation of the missing core format.
Core save/import, runtime preview, and game export cannot be completed until
that dependency exists. Draft files are deliberately named `.pace-draft.json`.
No upstream compatibility is implied.
editor-owned contract, with embedded images and editable incomplete references.
The model and loader are shared with the server through the `pace_editor_format`
crate. Sharing does not change that schema or convert it into a core scene.
Draft files remain `.pace-draft.json`; core conversion, preview and game export
require a separate integration that can account for their different features.

## Project files

Expand Down Expand Up @@ -73,6 +86,8 @@ Invalid drafts cannot be rehearsed.
npm ci
npx playwright install --with-deps chromium
trunk build
# Build the compatible server (see docs/project-sharing.md), then:
export PACE_SERVER_BIN=/absolute/path/to/pace_server/target/debug/pace_server
npm run test:e2e
```

Expand All @@ -94,4 +109,5 @@ reproduces the walkthrough, including save/reopen equality for the whole project
links, dialogue branches and item gates. Restart clears its session. It never
modifies the source project and is **not** the PACE core runtime. **Core preview**
and **Export game** remain disabled. This implementation does not yet meet the
core-format serialization or pinned-runtime preview/export requirements.
core-format conversion or pinned-runtime preview/export requirements. Snapshot
sharing is available for the editor format independently of runtime integration.
6 changes: 4 additions & 2 deletions app/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ edition = "2021"
dioxus = { version = "=0.5.6", default-features = false, features = ["macro", "html", "signals", "hooks"] }
serde = { version = "1", features = ["derive", "rc"] }
serde_json = "1"
base64 = "0.22"
imagesize = "0.13"
pace_editor_format = { path = "../project_format" }
url = "2"

[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "0.2"
web-sys = { version = "0.3", features = ["Window", "Storage", "Document", "Element", "DomRect", "HtmlElement", "HtmlAnchorElement", "Blob", "BlobPropertyBag", "Url"] }
js-sys = "0.3"
wasm-bindgen-futures = "0.4"
serde-wasm-bindgen = "0.5"

[features]
web = []
1 change: 1 addition & 0 deletions app/src/editor.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions app/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ mod browser;
pub mod editor;
pub mod model;
mod rooms;
pub mod sharing;
mod ui;
pub use ui::App;

Expand Down
Loading
Loading