mirror of
https://github.com/storytold/deckcraft.git
synced 2026-10-24 10:37:03 -06:00
Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
49278565ea
commit
ae9d525bce
+13
-13
@@ -1,22 +1,22 @@
|
||||
# Hosting SlideCraft for the web
|
||||
# Hosting DeckCraft for the web
|
||||
|
||||
`slidecraft-web-<version>.zip` (from the GitHub release, or `packaging/web/package.sh`) holds a
|
||||
static site in `slidecraft-web-<version>/`:
|
||||
`deckcraft-web-<version>.zip` (from the GitHub release, or `packaging/web/package.sh`) holds a
|
||||
static site in `deckcraft-web-<version>/`:
|
||||
|
||||
| File | What it is |
|
||||
|---|---|
|
||||
| `index.html` | The page. It loads everything through relative URLs. |
|
||||
| `slidecraft-web-<hash>.js` | wasm-bindgen glue (generated, ES module) |
|
||||
| `slidecraft-web-<hash>_bg.wasm` | The app, size is printed by `packaging/web/package.sh` |
|
||||
| `deckcraft-web-<hash>.js` | wasm-bindgen glue (generated, ES module) |
|
||||
| `deckcraft-web-<hash>_bg.wasm` | The app, size is printed by `packaging/web/package.sh` |
|
||||
| `_headers`, `.htaccess` | Sample header rules for Netlify/Cloudflare Pages and Apache |
|
||||
|
||||
There is no server-side code. Upload the folder's contents anywhere that serves static files.
|
||||
|
||||
## Any path works
|
||||
|
||||
All URLs in `index.html` are relative (`public_url = "./"` in `apps/slidecraft-web/Trunk.toml`),
|
||||
All URLs in `index.html` are relative (`public_url = "./"` in `apps/deckcraft-web/Trunk.toml`),
|
||||
so the site works at a domain root (`https://example.com/`), under a prefix
|
||||
(`https://example.com/tools/slidecraft/`) and from a CDN bucket. The asset names carry a content
|
||||
(`https://example.com/tools/deckcraft/`) and from a CDN bucket. The asset names carry a content
|
||||
hash, so they can be cached forever. Only `index.html` needs revalidation.
|
||||
|
||||
## Required server settings
|
||||
@@ -31,7 +31,7 @@ hash, so they can be cached forever. Only `index.html` needs revalidation.
|
||||
`.js` files, and `no-cache` on `index.html`.
|
||||
- **HTTPS:** WebGPU (and the clipboard) only work in a secure context, which means `https://`
|
||||
or `http://localhost`. Over plain HTTP elsewhere, the app falls back to WebGL2.
|
||||
- **No special isolation headers:** SlideCraft doesn't use `SharedArrayBuffer`, so it doesn't
|
||||
- **No special isolation headers:** DeckCraft doesn't use `SharedArrayBuffer`, so it doesn't
|
||||
need `Cross-Origin-Opener-Policy` or `Cross-Origin-Embedder-Policy`. If your site already sends
|
||||
COEP `require-corp`, also send `Cross-Origin-Resource-Policy: same-origin` (or `cross-origin`
|
||||
when the files live on a CDN) on the app's files.
|
||||
@@ -39,7 +39,7 @@ hash, so they can be cached forever. Only `index.html` needs revalidation.
|
||||
nginx example:
|
||||
|
||||
```nginx
|
||||
location /slidecraft/ {
|
||||
location /deckcraft/ {
|
||||
types { application/wasm wasm; text/javascript js; text/html html; }
|
||||
gzip on;
|
||||
gzip_types application/wasm text/javascript text/html;
|
||||
@@ -54,8 +54,8 @@ Local test: `python3 -m http.server 8765` inside the folder, then open http://lo
|
||||
|
||||
```html
|
||||
<iframe
|
||||
src="https://example.com/slidecraft/"
|
||||
title="SlideCraft presentations"
|
||||
src="https://example.com/deckcraft/"
|
||||
title="DeckCraft presentations"
|
||||
style="width: 100%; height: 720px; border: 0;"
|
||||
allow="fullscreen; clipboard-read; clipboard-write"
|
||||
allowfullscreen>
|
||||
@@ -73,7 +73,7 @@ Local test: `python3 -m http.server 8765` inside the folder, then open http://lo
|
||||
|
||||
## Renderer selection and fallback flags
|
||||
|
||||
SlideCraft renders with wgpu. It uses **WebGPU** when the browser has it and falls back to
|
||||
DeckCraft renders with wgpu. It uses **WebGPU** when the browser has it and falls back to
|
||||
**WebGL2** on its own. URL query flags override this, and they work on the iframe `src` too:
|
||||
|
||||
| Flag | Effect |
|
||||
@@ -83,6 +83,6 @@ SlideCraft renders with wgpu. It uses **WebGPU** when the browser has it and fal
|
||||
| `?blank` | Start with an empty presentation instead of the sample deck |
|
||||
| `?show` | Start the slide show immediately (kiosk/embedded decks) |
|
||||
|
||||
For example: `<iframe src="https://example.com/slidecraft/?webgl" ...>`.
|
||||
For example: `<iframe src="https://example.com/deckcraft/?webgl" ...>`.
|
||||
|
||||
A browser with neither WebGPU nor WebGL2 gets a message in place of the app.
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build the browser version and zip it: $DIST/slidecraft-web-<version>.zip
|
||||
# Build the browser version and zip it: $DIST/deckcraft-web-<version>.zip
|
||||
#
|
||||
# Usage: packaging/web/package.sh [--skip-build]
|
||||
#
|
||||
# Needs: trunk (brew install trunk / cargo install trunk --locked) and the wasm32-unknown-unknown
|
||||
# target. The zip holds a self-contained static site in slidecraft-web-<version>/ that works
|
||||
# target. The zip holds a self-contained static site in deckcraft-web-<version>/ that works
|
||||
# from any URL path and inside an <iframe>. Hosting notes: packaging/web/README.md.
|
||||
set -euo pipefail
|
||||
# shellcheck source=../common.sh
|
||||
@@ -13,7 +13,7 @@ HERE="$ROOT/packaging/web"
|
||||
|
||||
if [ "${1:-}" != "--skip-build" ]; then
|
||||
command -v trunk >/dev/null || { echo "error: trunk not found (cargo install trunk --locked)" >&2; exit 1; }
|
||||
(cd "$ROOT/apps/slidecraft-web" && trunk build --release)
|
||||
(cd "$ROOT/apps/deckcraft-web" && trunk build --release)
|
||||
fi
|
||||
|
||||
SITE="$ROOT/dist/web"
|
||||
@@ -24,7 +24,7 @@ if grep -Eq '(src|href)="/[^/]' "$SITE/index.html"; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NAME="slidecraft-web-$VERSION"
|
||||
NAME="deckcraft-web-$VERSION"
|
||||
WORK="$CARGO_TARGET_DIR/web-package"
|
||||
rm -rf "$WORK"
|
||||
mkdir -p "$WORK/$NAME"
|
||||
|
||||
Reference in New Issue
Block a user