Skip to content
unwired-devPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

466 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unwired Mail

Private email client and Convex backend.

The repository contains the SwiftUI and Mac Catalyst prototype and an Expo mock Inbox for iPhone and iPad, plus a native React Native Mac mock Inbox. The approved replacement targets a power-user Apple launch with Gmail, IMAP/SMTP and Microsoft mail. Android and Windows remain later slices. Google and Apple Product Sign-In replace Apple-only login.

Start with the documentation index for requirements, setup and validation. The review agent reads the architecture index under the implementation and review workflow. Follow Expo setup for mobile coding conventions and commands. Full platform qualification remains required before release; the reviewer tracks its evidence through the architecture index.

Current checkout

  • apps/mobile: Expo Apple and Google onboarding and selected mock Inbox in the root workspace.
  • apps/macos: AppKit React Native macOS Apple and Google onboarding and mock Inbox windows.
  • packages/mail-core: framework-independent mock mailbox and theme tokens.
  • apps/unwired-mail: SwiftUI client for iPhone, iPad, and Mac Catalyst.
  • packages/contracts: shared API contracts and fixtures.
  • packages/convex: Convex backend.
  • packages/mail-test-harness: current local mail test tooling.

One root workspace and lockfile use a shared catalog and named mobile and macos catalogs under Expo workspace setup.

Local development

Use mise, Node 24, and the exact pnpm version in package.json, currently 11.5.2. The mise-managed Ruby is required for Mac Podfile verification and tooling tests. Expo builds need the Xcode toolchain and simulator runtime documented in Expo setup.

mise trust .mise.toml
mise install
mise exec -- pnpm install

For the replacement app, follow Expo installation and launch. For Mac, follow native Mac setup.

For Graft code navigation, install the CLI once and initialize the local graph from the repository root:

npm install --global @nanonets/graft
graft init --agents agents --no-global --no-mcp

This adds Graft instructions to AGENTS.md and builds the ignored graft/ cache. .worktreeinclude includes the cache when creating worktrees. Run graft build to regenerate it when needed.

.mcp.json registers Figma's remote MCP server for Claude Code. Approve the project server when Claude Code prompts, then run /mcp, select figma, and authenticate with your Figma account.

Turborepo runs the app and backend tasks from the repository root:

Command Runs
mise exec -- pnpm ios Builds and launches the iOS development client with Metro
mise exec -- pnpm dev:ios Metro for an installed iOS development client
mise exec -- pnpm macos Metro while it builds and opens the Debug Mac app
mise exec -- pnpm dev:macos Metro for an existing Debug Mac app
mise exec -- pnpm native:build:macos The Release Mac app; pass Debug or Testing instead
mise exec -- pnpm dev:convex Convex development against the root .env.local
mise exec -- pnpm build Both production JavaScript bundles
mise exec -- pnpm verify:bundle Both bundles, then their bundle and autolinking checks
mise exec -- pnpm native:generate Both generated native projects
mise exec -- pnpm test:native:ios <app> The iOS native runner for a built .app
mise exec -- pnpm test:native:macos <app> The Mac native runner for a built .app

Arguments after the script name reach the package command, for example mise exec -- pnpm ios --device. The iOS and Mac Metro servers both use port 8081, so run one at a time. Development servers use Turborepo's terminal UI and need an interactive terminal; non-interactive shells run the package scripts directly.

If .env.local does not exist, copy .env.example to it before starting Convex.

Follow the Swift prototype setup for app environment settings, signing, provider configuration, and current behavior. Keep credentials and developer-specific deployment values out of source control.

Validation

mise exec -- pnpm lint
mise exec -- pnpm lint:boundaries
mise exec -- pnpm format
mise exec -- pnpm turbo run check-types
mise exec -- pnpm test
mise exec -- pnpm test:tooling
mise exec -- node scripts/check-changesets.mjs
mise exec -- node --test scripts/check-changesets.test.mjs scripts/release.test.mjs scripts/auto-merge.test.mjs
mise exec -- pnpm exec fallow audit --gate new-only --changed-since origin/main --format json --quiet

pnpm lint and pnpm format run Oxlint and Oxfmt once from the root over the whole repository; the app configurations apply to their own files. pnpm lint:fix and pnpm format:fix apply fixes. Turborepo caches them as the root lint and format tasks; add --filter=// when filtering turbo run to packages. Run pnpm format:fix after pnpm changeset to format generated frontmatter before CI.

Use the testing policy to select meaningful checks and the native validation guide for resource ownership during native checks. The mail test environment documents the existing harness; the replacement's isolated Mock Mail Sessions keep deterministic mocked journeys distinct from real integration evidence.

CI covers both replacement hosts, shared core/contracts, and the retained Convex backend. Legacy Swift build, performance, Core Mail Loop and provider-qualification jobs are disabled by maintainer decision; their test sources and local commands remain available.

Working on the project

Record runtime or exported API changes with mise exec -- pnpm changeset. Prepare package versions with mise exec -- pnpm version-packages. Package publishing is not wired because the current workspace packages are private.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages