Skip to content

Commit b258cbf

Browse files
authored
Merge pull request #54 from objectstack-ai/copilot/upgrade-to-latest-version-yet-again
2 parents f2b679c + 3549013 commit b258cbf

File tree

6 files changed

+124
-85
lines changed

6 files changed

+124
-85
lines changed

ROADMAP.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# ObjectStack Mobile — Roadmap
22

3-
> **Date**: 2026-02-26
4-
> **SDK**: `@objectstack/client@3.0.10`, `@objectstack/client-react@3.0.10`, `@objectstack/spec@3.0.10`
3+
> **Date**: 2026-03-01
4+
> **SDK**: `@objectstack/client@3.1.1`, `@objectstack/client-react@3.1.1`, `@objectstack/spec@3.1.1`
55
> **Tests**: ✅ 1149/1149 passing (148 suites, ~85% coverage)
66
77
---
88

99
## 1. Project Status
1010

11-
The ObjectStack Mobile client has completed all core development phases (0–6), spec alignment phases (9–10), advanced feature phases (11–13), UX/platform phases (14–20), spec gap phases (21–22), post-GA features (v1.4–v1.6), and spec v3.0.10 UI Protocol alignment (v1.7, Phases 23–25). The SDK is upgraded to v3.0.10 (spec v3.0.10: 14 modules, 1683 JSON schemas, 8,380+ `.describe()` annotations).
11+
The ObjectStack Mobile client has completed all core development phases (0–6), spec alignment phases (9–10), advanced feature phases (11–13), UX/platform phases (14–20), spec gap phases (21–22), post-GA features (v1.4–v1.6), and spec v3.1.1 UI Protocol alignment (v1.7, Phases 23–25). The SDK is upgraded to v3.1.1 (spec v3.1.1: 14 modules, 1683 JSON schemas, 8,380+ `.describe()` annotations).
1212

1313
### What's Implemented
1414

@@ -29,7 +29,7 @@ The ObjectStack Mobile client has completed all core development phases (0–6),
2929
| Runtime | Expo SDK 54, TypeScript 5.9 strict |
3030
| Navigation | Expo Router (file-based) |
3131
| Styling | NativeWind v4 (Tailwind CSS) |
32-
| Client SDK | `@objectstack/client@3.0.10` + `@objectstack/client-react@3.0.10` |
32+
| Client SDK | `@objectstack/client@3.1.1` + `@objectstack/client-react@3.1.1` |
3333
| State | Zustand + TanStack Query v5 |
3434
| Offline | expo-sqlite + sync queue |
3535
| Auth | better-auth v1.4.18 + `@better-auth/expo` |
@@ -148,11 +148,11 @@ The ObjectStack Mobile client has completed all core development phases (0–6),
148148

149149
---
150150

151-
## 3. Spec v3.0.10 Compliance Matrix
151+
## 3. Spec v3.1.1 Compliance Matrix
152152

153-
> `@objectstack/spec` is the protocol "constitution". v3.0.10 has 14 modules, 1683 JSON schemas, 8,380+ `.describe()` annotations.
153+
> `@objectstack/spec` is the protocol "constitution". v3.1.1 has 14 modules, 1683 JSON schemas, 8,380+ `.describe()` annotations.
154154
> Modules: `ai`, `api`, `automation`, `cloud`, `data`, `identity`, `integration`, `kernel`, `qa`, `security`, `shared`, `studio`, `system`, `ui`.
155-
> v3.0.0 restructured from 15 → 12 modules. v3.0.10 expanded to 14 modules (added `studio`, `qa`, `cloud`, `kernel`).
155+
> v3.0.0 restructured from 15 → 12 modules. v3.1.1 expanded to 14 modules (added `studio`, `qa`, `cloud`, `kernel`).
156156
157157
### ✅ Fully Implemented
158158

@@ -221,9 +221,9 @@ The ObjectStack Mobile client has completed all core development phases (0–6),
221221
| `spec/ui` — Embed/Sharing Protocol | `useEmbedConfig`, `useViewSharing` |
222222
| `spec/ui` — Offline/Sync Protocol | `useOfflineConfig`, `useSyncConfig` |
223223

224-
### ✅ Spec v3.0.10 — UI Protocol Schemas (Implemented in v1.7)
224+
### ✅ Spec v3.1.1 — UI Protocol Schemas (Implemented in v1.7)
225225

226-
The following UI protocol schemas from spec v3.0.10 have been implemented:
226+
The following UI protocol schemas from spec v3.1.1 have been implemented:
227227

228228
| Category | Spec Schemas | Mobile Status |
229229
|----------|-------------|---------------|
@@ -266,7 +266,7 @@ The following UI protocol schemas from spec v3.0.10 have been implemented:
266266
## 5. Phase 11: AI & Intelligence ✅
267267

268268
> **Duration**: 3–4 weeks
269-
> v3.0.10 expanded AI module to 186 schemas / 188 exports.
269+
> v3.1.1 expanded AI module to 186 schemas / 188 exports.
270270
271271
### 11.1 Conversation Session Persistence ✅
272272

@@ -301,7 +301,7 @@ The following UI protocol schemas from spec v3.0.10 have been implemented:
301301

302302
## 6. Phase 12: Security Module ✅
303303

304-
> 🆕 v3.0.10 `security` module (26 exports, 19 schemas) replaces `auth`/`permission`/`hub`.
304+
> 🆕 v3.1.1 `security` module (26 exports, 19 schemas) replaces `auth`/`permission`/`hub`.
305305
> **Duration**: 2–3 weeks
306306
307307
### 12.1 RLS Awareness ✅
@@ -620,14 +620,14 @@ The following UI protocol schemas from spec v3.0.10 have been implemented:
620620

621621
---
622622

623-
## 7m. v1.7: Spec v3.0.10 UI Protocol Alignment ✅
623+
## 7m. v1.7: Spec v3.1.1 UI Protocol Alignment ✅
624624

625625
> **Duration**: 4–6 weeks | **Priority**: 🟡 Important for spec compliance
626-
> **Goal**: Implement new UI protocol schemas from `@objectstack/spec@3.0.10` for full SDUI compliance
626+
> **Goal**: Implement new UI protocol schemas from `@objectstack/spec@3.1.1` for full SDUI compliance
627627
628628
### Phase 23: SDUI Record Page Protocol ✅
629629

630-
> Align record detail/form views with spec v3.0.10 `RecordDetailsProps`, `RecordHighlightsProps`, etc.
630+
> Align record detail/form views with spec v3.1.1 `RecordDetailsProps`, `RecordHighlightsProps`, etc.
631631
632632
| # | Feature | Description | Status |
633633
|---|---------|-------------|--------|
@@ -808,7 +808,7 @@ The following UI protocol schemas from spec v3.0.10 have been implemented:
808808
| **v1.4** | 21–22 | Notification Center + Spec gaps (AI DevOps/CodeGen/Predictive, ETL/Connectors) | ✅ Complete |
809809
| **v1.5** || Messaging & Channels (Slack/Teams pattern, DMs, threads) | ✅ Complete |
810810
| **v1.6** || Advanced Offline (selective sync, three-way merge, offline analytics) | ✅ Complete |
811-
| **v1.7** | 23–25 | Spec v3.0.10 UI Protocol (SDUI record pages, DnD protocol, gesture/animation protocol, focus/keyboard) | ✅ Complete |
811+
| **v1.7** | 23–25 | Spec v3.1.1 UI Protocol (SDUI record pages, DnD protocol, gesture/animation protocol, focus/keyboard) | ✅ Complete |
812812

813813
---
814814

@@ -850,7 +850,7 @@ The following UI protocol schemas from spec v3.0.10 have been implemented:
850850
| **Focus/Keyboard/Offline/Notification Protocol (25)** | **No** | **1–2 weeks** | **✅ Done** |
851851

852852
**Phase 11–22 + v1.4–v1.6**: ✅ Complete
853-
**Phase 23–25 (v1.7 — Spec v3.0.10 UI Protocol)**: ✅ Complete
853+
**Phase 23–25 (v1.7 — Spec v3.1.1 UI Protocol)**: ✅ Complete
854854

855855
---
856856

@@ -890,13 +890,13 @@ The following UI protocol schemas from spec v3.0.10 have been implemented:
890890

891891
1. ✅ Phase 20 complete (design tokens, widget kit, voice, deep links, watch)
892892

893-
### v1.7 (Spec v3.0.10 UI Protocol)
893+
### v1.7 (Spec v3.1.1 UI Protocol)
894894

895895
1. ✅ Phase 23 complete (SDUI record pages, highlights, chatter, related lists, interface pages)
896896
2. ✅ Phase 24 complete (spec-driven DnD, gesture, animation, transition protocols)
897897
3. ✅ Phase 25 complete (focus management, keyboard navigation, offline/sync/notification UI protocols)
898898
4. ✅ All renderers consume spec UI schemas instead of hardcoded configs
899-
5. ✅ Full compliance with `@objectstack/spec@3.0.10` UI module (168 exports)
899+
5. ✅ Full compliance with `@objectstack/spec@3.1.1` UI module (168 exports)
900900

901901
---
902902

__tests__/snapshots/action-components.test.tsx

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ describe("executeAction", () => {
117117
name: "run-api",
118118
label: "Run",
119119
type: "api",
120-
execute: "run-endpoint",
120+
target: "run-endpoint",
121121
};
122122
const result = await executeAction(action, {
123123
client: mockClient,
@@ -131,6 +131,25 @@ describe("executeAction", () => {
131131
);
132132
});
133133

134+
it("falls back to deprecated execute field for api action", async () => {
135+
const action: ActionMeta = {
136+
name: "run-api",
137+
label: "Run",
138+
type: "api",
139+
execute: "legacy-endpoint",
140+
};
141+
const result = await executeAction(action, {
142+
client: mockClient,
143+
objectName: "tasks",
144+
recordId: "r1",
145+
});
146+
expect(result.success).toBe(true);
147+
expect(mockClient.automation.trigger).toHaveBeenCalledWith(
148+
"legacy-endpoint",
149+
expect.objectContaining({ object: "tasks", recordId: "r1" }),
150+
);
151+
});
152+
134153
it("returns failure for api action without endpoint", async () => {
135154
const action: ActionMeta = {
136155
name: "bad-api",
@@ -143,13 +162,32 @@ describe("executeAction", () => {
143162
});
144163

145164
it("executes flow action", async () => {
165+
const action: ActionMeta = {
166+
name: "my-flow",
167+
label: "Flow",
168+
type: "flow",
169+
target: "my-flow-target",
170+
};
171+
const result = await executeAction(action, { client: mockClient });
172+
expect(result.success).toBe(true);
173+
expect(mockClient.automation.trigger).toHaveBeenCalledWith(
174+
"my-flow-target",
175+
expect.objectContaining({}),
176+
);
177+
});
178+
179+
it("falls back to name for flow action without target", async () => {
146180
const action: ActionMeta = {
147181
name: "my-flow",
148182
label: "Flow",
149183
type: "flow",
150184
};
151185
const result = await executeAction(action, { client: mockClient });
152186
expect(result.success).toBe(true);
187+
expect(mockClient.automation.trigger).toHaveBeenCalledWith(
188+
"my-flow",
189+
expect.objectContaining({}),
190+
);
153191
});
154192

155193
it("returns failure for unsupported action type", async () => {

components/actions/ActionExecutor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export async function executeAction(
6161
}
6262

6363
case "api": {
64-
const endpoint = action.execute ?? action.target;
64+
const endpoint = action.target ?? action.execute;
6565
if (!endpoint) {
6666
result = { success: false, message: "No API endpoint specified" };
6767
break;
@@ -80,7 +80,7 @@ export async function executeAction(
8080
}
8181

8282
case "flow": {
83-
const flowName = action.execute ?? action.name;
83+
const flowName = action.target ?? action.execute ?? action.name;
8484
const data = await client.automation.trigger(flowName, {
8585
object: objectName,
8686
recordId,

components/renderers/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ export interface ActionMeta {
166166
type?: "url" | "script" | "api" | "modal" | "flow";
167167
icon?: string;
168168
target?: string;
169+
/** @deprecated Use `target` instead. Auto-migrated to `target` since spec v3.1. */
169170
execute?: string;
170171
locations?: (
171172
| "list_toolbar"

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
},
2727
"dependencies": {
2828
"@better-auth/expo": "^1.4.18",
29-
"@objectstack/client": "^3.0.10",
30-
"@objectstack/client-react": "^3.0.10",
29+
"@objectstack/client": "^3.1.1",
30+
"@objectstack/client-react": "^3.1.1",
3131
"@sentry/react-native": "^7.12.0",
3232
"@shopify/flash-list": "^2.2.2",
3333
"@tanstack/react-query": "^5.90.20",
@@ -78,11 +78,11 @@
7878
"@babel/core": "^7.29.0",
7979
"@changesets/changelog-github": "^0.5.2",
8080
"@changesets/cli": "^2.29.8",
81-
"@objectstack/core": "^3.0.10",
82-
"@objectstack/driver-memory": "^3.0.10",
83-
"@objectstack/objectql": "^3.0.10",
84-
"@objectstack/plugin-auth": "^3.0.10",
85-
"@objectstack/plugin-hono-server": "^3.0.10",
81+
"@objectstack/core": "^3.1.1",
82+
"@objectstack/driver-memory": "^3.1.1",
83+
"@objectstack/objectql": "^3.1.1",
84+
"@objectstack/plugin-auth": "^3.1.1",
85+
"@objectstack/plugin-hono-server": "^3.1.1",
8686
"@testing-library/jest-native": "^5.4.3",
8787
"@testing-library/react-native": "^12.9.0",
8888
"@types/jest": "^29.5.14",

0 commit comments

Comments
 (0)