Skip to content

docs: @objectstack/client SDK gap analysis for upstream development#8

Merged
hotlong merged 3 commits into
mainfrom
copilot/list-api-and-feature-needs
Feb 8, 2026
Merged

docs: @objectstack/client SDK gap analysis for upstream development#8
hotlong merged 3 commits into
mainfrom
copilot/list-api-and-feature-needs

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 8, 2026

  • Analyze current SDK API coverage from SDK-GAP-ANALYSIS.md
  • Map available APIs to roadmap phases to identify what's actionable now
  • Rewrite ROADMAP.md with dual-track development plan (A: no blockers, B: waiting SDK)
  • Code review and finalize

Changes

docs/SDK-GAP-ANALYSIS.md (unchanged)

Full audit of @objectstack/client@1.1.0 API surface vs mobile app needs.

docs/ROADMAP.md (restructured)

Rewrote the development roadmap based on SDK gap analysis:

Key changes:

  1. Updated Phase 0–3 status to reflect all completed work
  2. Added SDK API Availability Matrix — maps each SDK namespace to its mobile usage status
  3. Split Phase 4–6 into dual-track development:
    • Track A (no blockers): 4A → 5A → 6 — features buildable with existing SDK APIs
    • Track B (SDK-blocked): 4B + 5B — features waiting on upstream SDK development
  4. Visual timeline showing parallel development tracks
  5. Updated release plan with realistic milestones:
    • v0.4-alpha: Phase 4A (rendering, files, charts, advanced views) — start immediately
    • v0.5-alpha: Phase 5A (i18n framework, perf, tests, CI/CD) — start immediately
    • v0.6-beta: Phase 4B (permissions, workflows, real-time, notifications) — after SDK gaps 1-5
    • v0.7-beta: Phase 5B (AI, server i18n, SDK hooks upgrade) — after SDK gaps 6-11
    • v1.0-GA: Phase 6 (monitoring, analytics, final optimization)

Timeline estimate:

  • Mobile independent work (4A → 5A → 6): ~6–9 weeks, can start immediately
  • SDK-dependent work (4B + 5B): ~6–8 weeks, after upstream delivery
  • Total to v1.0 GA: ~12–17 weeks

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

…velopment

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Copilot AI changed the title [WIP] List incomplete APIs and features for development docs: @objectstack/client SDK gap analysis for upstream development Feb 8, 2026
Copilot AI requested a review from hotlong February 8, 2026 07:21
@hotlong hotlong marked this pull request as ready for review February 8, 2026 07:43
Copilot AI review requested due to automatic review settings February 8, 2026 07:43
@hotlong
Copy link
Copy Markdown
Contributor

hotlong commented Feb 8, 2026

@copilot 基于目前已实现的API功能,重新调整本项目计划安排

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a comprehensive SDK gap analysis report to guide upstream development of @objectstack/client / @objectstack/client-react so the mobile app can proceed through Phases 4–6.

Changes:

  • Introduces docs/SDK-GAP-ANALYSIS.md with a phase/priority-based inventory of missing SDK namespaces and React hooks.
  • Proposes TypeScript signatures for critical missing APIs (views, permissions, workflows, realtime) and additional Phase 4–6 features.
  • Documents current coverage for @objectstack/client@1.1.0 and @objectstack/client-react@1.1.0.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/SDK-GAP-ANALYSIS.md
Comment on lines +378 to +379
on(event: 'message' | 'presence' | 'error' | 'reconnect', handler: Function): void;
off(event: string, handler: Function): void;
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the proposed client.realtime API, on(..., handler: Function) / off(event: string, handler: Function) is overly untyped and conflicts with common TS linting (Function is typically banned). Consider defining an event->handler signature map (e.g., overloads or a generic on<E extends RealtimeEventName>(event: E, handler: RealtimeHandlerMap[E])) and keep off’s event type aligned with on.

Copilot uses AI. Check for mistakes.
Comment thread docs/SDK-GAP-ANALYSIS.md
Comment on lines +393 to +397
function useSubscription(channel: string, options?: {
object?: string;
recordId?: string;
events?: string[];
onEvent?: (event: RealtimeEvent) => void;
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useSubscription’s events?: string[] is inconsistent with the earlier client.realtime.subscribe(... events?: ('create' | 'update' | 'delete')[]) suggestion. To keep the spec precise, use the same event union type in the hook (or define a shared RealtimeChangeEvent type) instead of string[].

Copilot uses AI. Check for mistakes.
Comment thread docs/SDK-GAP-ANALYSIS.md
enabled?: boolean;
}): {
users: PresenceState[];
setStatus: (status: string) => void;
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usePresence returns setStatus: (status: string) => void, but the allowed statuses in this section are modeled as a union ('viewing' | 'editing', and client.realtime.setPresence also includes 'idle'). Using string weakens the spec and makes it easy to pass unsupported values; align setStatus’s parameter type with the intended status union (and decide whether 'idle' should be supported here too).

Suggested change
setStatus: (status: string) => void;
setStatus: (status: 'viewing' | 'editing') => void;

Copilot uses AI. Check for mistakes.
Comment thread docs/SDK-GAP-ANALYSIS.md
Comment on lines +649 to +655
function useFileUpload(options?: {
scope?: string;
onProgress?: (progress: number) => void;
onSuccess?: (result: FileUploadResponse) => void;
onError?: (error: Error) => void;
}): {
upload: (file: File | Blob | { uri: string; type: string; name: string }) => Promise<FileUploadResponse>;
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The proposed useFileUpload signature includes the DOM File type (upload: (file: File | Blob | { uri: ... })). In React Native / Expo TS configs, File may not exist unless dom libs are enabled, which can make the upstream hook types awkward for mobile consumers. Consider defining an SDK-owned Uploadable type and avoid referencing File directly (or make it conditional via an exported type alias).

Suggested change
function useFileUpload(options?: {
scope?: string;
onProgress?: (progress: number) => void;
onSuccess?: (result: FileUploadResponse) => void;
onError?: (error: Error) => void;
}): {
upload: (file: File | Blob | { uri: string; type: string; name: string }) => Promise<FileUploadResponse>;
export type Uploadable = Blob | { uri: string; type: string; name: string };
function useFileUpload(options?: {
scope?: string;
onProgress?: (progress: number) => void;
onSuccess?: (result: FileUploadResponse) => void;
onError?: (error: Error) => void;
}): {
upload: (file: Uploadable) => Promise<FileUploadResponse>;

Copilot uses AI. Check for mistakes.
…ailability

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Feb 8, 2026

@copilot 基于目前已实现的API功能,重新调整本项目计划安排

已在 97952e1 中重构了 docs/ROADMAP.md。核心变更:

双轨并行策略:按 SDK API 可用性将 Phase 4–6 拆分为 A/B 两条轨道:

  • Track A(无阻塞,可立即开始)

    • 4A:渲染引擎补全 + 文件媒体(client.storage.*)+ 图表分析(client.analytics.*)+ Kanban/Calendar/Map 视图 + 安全增强
    • 5A:i18n 客户端框架 + 性能优化 + 测试 + CI/CD
    • 6:监控 + 上线准备
  • Track B(等待上游 SDK)

    • 4B:权限(Gap 2)+ 工作流(Gap 3)+ 实时 WebSocket(Gap 4)+ 推送通知(Gap 5)
    • 5B:AI/NLQ(Gap 6)+ 服务端 i18n(Gap 9)+ SDK hooks 升级

时间预估

  • Mobile 独立开发:~6–9 周,可立即开始
  • SDK 依赖部分:~6–8 周,上游就绪后启动
  • 总计到 v1.0 GA:~12–17 周

@hotlong hotlong merged commit 9c72c9c into main Feb 8, 2026
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.

3 participants