deepspace 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +22 -8
- package/dist/cli.js +10306 -5256
- package/dist/cli.js.map +1 -1
- package/dist/feature-installer.js +638 -0
- package/dist/feature-installer.js.map +1 -0
- package/dist/index.d.ts +107 -117
- package/dist/index.js +610 -779
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +403 -167
- package/dist/server.js +498 -367
- package/dist/server.js.map +1 -1
- package/dist/testing.d.ts +115 -0
- package/dist/testing.js +3 -3
- package/dist/testing.js.map +1 -1
- package/dist/worker.d.ts +397 -160
- package/dist/worker.js +506 -367
- package/dist/worker.js.map +1 -1
- package/features/ai-chat/feature.json +2 -0
- package/features/ai-chat/src/AiChatPage.tsx +2 -3
- package/features/ai-chat/src/ChatPanel.messages.tsx +344 -0
- package/features/ai-chat/src/ChatPanel.stream.ts +397 -0
- package/features/ai-chat/src/ChatPanel.tsx +158 -862
- package/features/ai-chat/src/__tests__/ChatPanel.stream.test.ts +163 -0
- package/features/canvas/src/CanvasListPage.tsx +1 -1
- package/features/docs/feature.json +4 -8
- package/features/docs/src/DocsEditorPage.tsx +33 -326
- package/features/docs/src/DocsListPage.tsx +33 -29
- package/features/docs/src/InviteDialog.tsx +11 -40
- package/features/docs/src/__tests__/docs-presence-access.test.ts +71 -0
- package/features/docs/src/docs-library-types.ts +28 -3
- package/features/docs/src/docs-ui.css +1 -4
- package/features/docs/src/use-docs-presence-access.ts +330 -0
- package/features/file-attachments/feature.json +2 -2
- package/features/file-attachments/src/AttachmentPreview.tsx +428 -0
- package/features/file-attachments/src/AttachmentsPage.tsx +100 -462
- package/features/file-attachments/src/useFilePreview.ts +54 -68
- package/features/file-manager/src/FileManagerPage.tsx +1 -1
- package/features/integration-test/src/integration.spec.ts +1 -1
- package/features/items/feature.json +1 -5
- package/features/items/src/ItemsPage.tsx +207 -135
- package/features/landing/feature.json +3 -0
- package/features/landing/src/LandingPage.tsx +4 -18
- package/features/leaderboard/feature.json +1 -5
- package/features/leaderboard/src/LeaderboardPage.tsx +333 -198
- package/features/messaging/feature.json +0 -4
- package/features/messaging/src/ChatMultiPage.tsx +1 -3
- package/features/messaging/src/ChatPage.tsx +1 -3
- package/features/messaging/src/components/chat/MessageActionSheet.tsx +40 -16
- package/features/search-bar/feature.json +8 -3
- package/features/search-bar/src/SearchOverlay.tsx +108 -252
- package/features/search-bar/src/__tests__/search-model.test.ts +40 -0
- package/features/search-bar/src/search-model.ts +223 -0
- package/features/tasks/src/TasksPage.tsx +3 -3
- package/features/topbar/src/Topbar.tsx +0 -17
- package/package.json +1 -2
- package/features/docs/src/docs-favorites.ts +0 -18
- package/features/docs/src/use-yjs-room-with-awareness.ts +0 -289
- package/features/file-attachments/src/attachments-constants.ts +0 -9
- package/features/items/src/items-constants.ts +0 -10
- package/features/leaderboard/src/leaderboard-constants.ts +0 -21
- package/features/messaging/src/components/chat/ReactionPicker.tsx +0 -2
- package/scripts/add-feature.cjs +0 -807
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,39 @@
|
|
|
1
1
|
# deepspace
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Git-native version control for DeepSpace apps.
|
|
8
|
+
|
|
9
|
+
Every app now has a cloud git repo the CLI (and plain git) can talk to over the real Git smart-HTTP protocol, with auth injected automatically:
|
|
10
|
+
- **Sync** — `deepspace clone <app>` materializes the repo; `deepspace push` / `deepspace pull` sync branches; a host-scoped credential helper (`deepspace git-credential`) makes bare `git push space` / `git fetch space` work from any terminal after first use. This removes the GitHub dependency for collaborator code sync.
|
|
11
|
+
- **Versioned deploys** — `deepspace deploy` is commit-first: it auto-pushes the branch, refuses to ship a checkout that is stale or strictly behind the cloud trunk (`--ignore-stale` to override), and refuses a dirty worktree (`dirty_worktree`, exit 2) so every sourced release points at a commit the cloud repo holds. Commit the changes — to a workspace branch when it's WIP — or pass `--no-push` to deploy without version-control sync (the release then records no lineage). `deepspace releases` lists the append-only release ledger and `deepspace rollback` re-ships any prior release whose bundle is still retained.
|
|
12
|
+
- **Workspaces** — the one unit of in-progress work. `deepspace workspace new/attach/sync/list/status/land/drop` gives each parallel agent a durable, named line of work (a hidden ref + task metadata) that survives any sandbox, is resumable from any machine (`attach`), and lands through an ordinary merge. Workspace refs are fast-forward-only, overlap warnings are computed from live peer tips, and land/drop clean up the local worktree by default (`--keep-worktree` opts out). WIP belongs in commits on the workspace branch; it becomes durable when synced and remains reachable through the land merge.
|
|
13
|
+
- **Validate** — `workspace land --validate` runs the project's `validate` script against the merged tree and aborts the land (exit 2) if it fails.
|
|
14
|
+
- **Activity** — `deepspace activity` is a stateless, cursored coordination feed (pushes, workspace lifecycle, releases) so an agent can answer "did trunk move / did a workspace land / did someone deploy" without cloning anything. Callers retain and resubmit cursors: one-shot reads default to cursor `0`, while follow mode defaults to the current tail. `activity --follow --json` emits NDJSON `ready`, `activity`, and retrying `transport` frames.
|
|
15
|
+
- **Bounded storage** — each app has one fixed Git-plus-rollback budget by owner tier: test 0, free 128 MiB, starter 512 MiB, premium 2 GiB, and admin 10 GiB. Accounting covers active Git packs plus distinct retained release bundles. Pushes over the irreducible Git floor are refused; bundle admission evicts the oldest rollback payloads, and a durable purge queue retries R2 cleanup. If a concurrent post-deploy admission can no longer retain the new bundle, the live release is recorded with `bundleRetained: false` instead of re-deploying or discarding older rollback history.
|
|
16
|
+
- **Screenshot boundary** — screenshot capture stays deliberately small and deprioritized. It enforces the configured DeepSpace host boundary on the submitted main-frame URL and every main-frame redirect; subresource policy remains the browser/network boundary's responsibility.
|
|
17
|
+
|
|
18
|
+
The CLI surface is agent-first and static: session verbs live under `auth`, app lifecycle under `app`, local development under `dev start|kill`, tests under `test run|screenshot|accounts`, and direct integration calls under `integrations invoke`. There are no compatibility aliases or tombstones for the unshipped tree. `status` reports present-tense facts only. A command that knows one executable follow-up owns exactly one `action: { cwd, argv }`; human output renders the same value as `Next:`. Terminal commands and input-dependent decisions emit no filler action.
|
|
19
|
+
|
|
20
|
+
Everything is designed for non-interactive use: commands support `--json`, mutations are idempotency-keyed, and failures carry a stable machine-readable `code` (for example `conflict`, `not_found`, `behind_trunk`, `stale_base`, and `no_releases`). A safe stop that still requires the command's executable local action exits 2 with `actionRequired: true`; failures without one deterministic action exit 1.
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Install Framer Motion only when adding the landing-page feature instead of including it in every new app.
|
|
25
|
+
- createDeepSpaceAuth: add optional `onUserCreated` observer hook, wired to better-auth's `databaseHooks.user.create.after`. Fires once per new user with the originating endpoint context (request headers/cookies when the signup came over HTTP, null for server-side creations); exceptions are caught and logged so a failing observer can never break signup.
|
|
26
|
+
- Windows support fixes. `deepspace create` now runs the scaffolder correctly (it exec's `npx.cmd` via cross-spawn instead of exiting 1 with no output) and reports a spawn failure instead of swallowing it. Scaffolded dependency installs are reliable and observable on Windows: the install runs in the foreground rather than a detached worker that the terminal's job object could kill mid-install, and the log-tail hint is PowerShell-aware (`Get-Content -Wait`) off Windows and `tail -f` elsewhere. CLI error paths (workspace/deploy/pull/push/clone and any escaped error) now stop the active progress spinner before exiting, so an expected error exits cleanly instead of aborting with a libuv assertion. Cross-platform path and process spawning throughout.
|
|
27
|
+
|
|
3
28
|
## 0.7.0
|
|
4
29
|
|
|
5
30
|
### Minor Changes
|
|
6
31
|
|
|
32
|
+
- Remove the legacy single-scope `RecordProvider` API (`roomId`, `schemas`, and
|
|
33
|
+
`wsUrl`). `RecordProvider` now owns only shared auth and scope registration;
|
|
34
|
+
every RecordRoom connection is declared with `RecordScope`. This removes a
|
|
35
|
+
second, drifting WebSocket lifecycle and the silently ignored `schemas` prop.
|
|
36
|
+
|
|
7
37
|
- Client-side error reporting (opt-in) for `deepspace logs`. Browser JS errors never invoke the Worker, so they never reached Workers Logs. New `installClientErrorReporter()` (client) hooks `window` 'error'/'unhandledrejection' and forwards each to the app's own Worker via `registerClientErrorRoute(app)` (`POST /_deepspace/client-errors`), which logs them so they appear in `deepspace logs` and the dashboard tagged `CLIENT`. Also exports `reportClientError()` for React error boundaries. Off by default (no starter wiring); anonymous ingestion is size-capped, deduped, and throttled, and — because the route runs in the tenant's own Worker — a browser can only ever write to its own app's log stream.
|
|
8
38
|
|
|
9
39
|
Also exports the `deepspace logs` wire DTO as a single source of truth (`AppLogEvent`, `AppLogsResponse`, `LogLevel`, `LOG_LEVELS`, `APP_LOG_EVENT_KEYS`) from both `deepspace` and `deepspace/worker`, so the CLI, dashboard, and platform reader share one definition instead of hand-mirrored copies. The client-error module's public surface is limited to the user-facing entry points — `installClientErrorReporter` / `reportClientError` (from `deepspace`) and `registerClientErrorRoute` / `handleClientErrorReport` / `CLIENT_LOG_MARKER` (from `deepspace/worker`), plus the `ClientErrorReport` type; the wire-protocol internals are no longer exported. (Those internals were only ever exported by this same, still-unreleased feature, so no released consumer is affected — this stays a `minor`.)
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
The DeepSpace SDK — build real-time collaborative apps on Cloudflare Workers.
|
|
8
8
|
Bundles auth, real-time data subscriptions, RBAC, messaging, file storage,
|
|
9
|
-
collaborative editing (Yjs), and zero-config deployment behind
|
|
9
|
+
collaborative editing (Yjs), and zero-config deployment behind four imports.
|
|
10
10
|
|
|
11
11
|
The fastest way to start is to scaffold a full app rather than wire the SDK up
|
|
12
12
|
by hand:
|
|
@@ -27,24 +27,30 @@ npm install deepspace
|
|
|
27
27
|
|
|
28
28
|
## Entry points
|
|
29
29
|
|
|
30
|
-
The package has
|
|
30
|
+
The package has four supported import paths:
|
|
31
31
|
|
|
32
32
|
- **`deepspace`** — the React client SDK (hooks, providers, auth, storage,
|
|
33
33
|
messaging, theme). Runs in the browser.
|
|
34
34
|
- **`deepspace/worker`** — the Cloudflare Worker runtime (`RecordRoom`, schemas,
|
|
35
35
|
JWT verification, HMAC auth). Runs in your app's Worker.
|
|
36
|
+
- **`deepspace/server`** — app-server helpers for actions, billing, and room
|
|
37
|
+
handlers.
|
|
38
|
+
- **`deepspace/testing`** — Playwright fixtures for multi-user tests.
|
|
36
39
|
|
|
37
40
|
## Minimal usage
|
|
38
41
|
|
|
39
42
|
Client — wrap your app and subscribe to a collection:
|
|
40
43
|
|
|
41
44
|
```tsx
|
|
42
|
-
import { RecordProvider, useQuery } from 'deepspace'
|
|
45
|
+
import { RecordProvider, RecordScope, useQuery } from 'deepspace'
|
|
46
|
+
import { schemas } from './schemas'
|
|
43
47
|
|
|
44
48
|
function App() {
|
|
45
49
|
return (
|
|
46
|
-
<RecordProvider
|
|
47
|
-
<
|
|
50
|
+
<RecordProvider allowAnonymous>
|
|
51
|
+
<RecordScope roomId="app:my-app" schemas={schemas}>
|
|
52
|
+
<Tasks />
|
|
53
|
+
</RecordScope>
|
|
48
54
|
</RecordProvider>
|
|
49
55
|
)
|
|
50
56
|
}
|
|
@@ -78,11 +84,19 @@ export class MyRoom extends RecordRoom {}
|
|
|
78
84
|
The package ships a `deepspace` binary for local dev and deployment:
|
|
79
85
|
|
|
80
86
|
```bash
|
|
81
|
-
npx deepspace login
|
|
82
|
-
npx deepspace dev
|
|
87
|
+
npx deepspace auth login # authenticate
|
|
88
|
+
npx deepspace dev start # run locally
|
|
83
89
|
npx deepspace deploy # deploy to *.app.space
|
|
84
90
|
```
|
|
85
91
|
|
|
92
|
+
Committed app source can also use DeepSpace's Git-native cloud remote.
|
|
93
|
+
`deepspace push` publishes the current branch and `deepspace clone <app>`
|
|
94
|
+
checks it out; both configure a `space` remote and credential helper, so normal
|
|
95
|
+
`git fetch space` and `git push space` work afterward. Commands support
|
|
96
|
+
`--json` for agents. See the
|
|
97
|
+
[repository guide](https://github.com/deepdotspace/deepspace/blob/main/docs/platform/repo-store-git.md)
|
|
98
|
+
for workspaces, releases, and rollback.
|
|
99
|
+
|
|
86
100
|
## Debugging
|
|
87
101
|
|
|
88
102
|
Client SDK connection/auth/Yjs logs are silent by default. Enable them with
|
|
@@ -91,4 +105,4 @@ env binding on your Worker to emit per-connection `[DO Perf]` timing logs.
|
|
|
91
105
|
|
|
92
106
|
## License
|
|
93
107
|
|
|
94
|
-
|
|
108
|
+
Apache-2.0
|