mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-05 13:29:44 +02:00
- Auth: email OTP login mirroring packages/core/auth/store.ts behavior (401 clears token, non-401 preserves; token written only on verify success); expo-secure-store with key "multica_token" matching desktop - Workspace context: /[workspace]/ URL slug as source of truth (deep- link friendly), ApiClient auto-injects X-Workspace-Slug, SecureStore persists last-selected slug for cold-start restore - Bottom tabs (Ionicons): Inbox / My Issues / Settings - Inbox: actor avatar, unread brand-dot, status icon, time-ago + body subtitle. getInboxDisplayTitle mirrored from packages/views/inbox/ components/inbox-display.ts - My Issues: priority bars (matching IssuePriority bar counts from packages/core/issues/config/priority.ts), status dot, identifier, title, assignee avatar - Settings: account info + workspace switcher; switching replaces nav to /[newSlug]/inbox so back stack doesn't trail to old workspace - Multi-env: .env.staging / .env.production / .env.development.local with EXPO_PUBLIC_API_URL; APP_ENV in app.config.ts swaps bundleIdentifier so dev/staging/prod coexist on a device - Build: dev:mobile + dev:mobile:staging scripts; main turbo build/typecheck/lint/test filter excludes @multica/mobile Tech-stack (locked in apps/mobile/CLAUDE.md): - Expo SDK 55, RN 0.83.6, React 19.2.0 (pinned, NOT catalog) - NativeWind 4 + Tailwind 3.4 (intentional mismatch w/ web's Tailwind 4; visual tokens transcribed by hand from packages/ui/styles/tokens.css) - TanStack Query 5 with AppState focus listener; Zustand 5 Not in this commit (intentional): issue detail page, mark-read mutation, pull-to-refresh polish — next iteration. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
41 lines
1.2 KiB
JSON
41 lines
1.2 KiB
JSON
{
|
|
"name": "multica",
|
|
"version": "0.2.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev:web": "turbo dev --filter=@multica/web",
|
|
"dev:docs": "turbo dev --filter=@multica/docs",
|
|
"dev:desktop": "turbo dev --filter=@multica/desktop",
|
|
"dev:desktop:staging": "turbo dev:staging --filter=@multica/desktop",
|
|
"dev:mobile": "pnpm -C apps/mobile dev",
|
|
"dev:mobile:staging": "pnpm -C apps/mobile dev:staging",
|
|
"build": "turbo build --filter=!@multica/mobile",
|
|
"typecheck": "turbo typecheck --filter=!@multica/mobile",
|
|
"test": "turbo test --filter=!@multica/mobile",
|
|
"lint": "turbo lint --filter=!@multica/mobile",
|
|
"clean": "turbo clean && rm -rf node_modules",
|
|
"ui:add": "cd packages/ui && npx shadcn@latest add",
|
|
"generate:reserved-slugs": "node scripts/generate-reserved-slugs.mjs"
|
|
},
|
|
"packageManager": "pnpm@10.28.2",
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"esbuild",
|
|
"electron"
|
|
],
|
|
"overrides": {
|
|
"@types/react": "catalog:",
|
|
"@types/react-dom": "catalog:"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.58.2",
|
|
"@types/node": "catalog:",
|
|
"@types/pg": "^8.20.0",
|
|
"pg": "^8.20.0",
|
|
"turbo": "^2.5.4",
|
|
"typescript": "catalog:"
|
|
}
|
|
}
|