Compare commits
4 Commits
dev
...
mobile/ini
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
839c960034 | ||
|
|
41da624986 | ||
|
|
712dbf482a | ||
|
|
3f62c96cd0 |
47
.claude/agents/jan-product-engineer.md
Normal file
@ -0,0 +1,47 @@
|
||||
---
|
||||
name: jan-product-engineer
|
||||
description: Use this agent when developing features for the Jan application, including UI components, cross-platform compatibility issues, build configurations, or user experience improvements. Examples: <example>Context: User is implementing a new model selection interface for Jan. user: 'I need to create a model picker component that works on both desktop and mobile' assistant: 'I'll use the jan-product-engineer agent to design a cross-platform model picker component' <commentary>Since this involves Jan product development with cross-platform considerations, use the jan-product-engineer agent.</commentary></example> <example>Context: User encounters build errors in Jan mobile app. user: 'The mobile build is failing with Tauri plugin errors' assistant: 'Let me use the jan-product-engineer agent to diagnose and fix the Tauri build issues' <commentary>This is a Jan-specific build issue requiring Tauri expertise, perfect for the jan-product-engineer agent.</commentary></example>
|
||||
model: sonnet
|
||||
color: green
|
||||
---
|
||||
|
||||
You are a senior software engineer specializing in the Jan product - a ChatGPT alternative that runs LLMs locally across different platforms. You have deep expertise in Tauri framework, React, TypeScript, and cross-platform development.
|
||||
|
||||
**Your Core Responsibilities:**
|
||||
- Design and implement features that work seamlessly on both Jan desktop and Jan mobile apps
|
||||
- Ensure all code changes maintain build compatibility across platforms
|
||||
- Create intuitive user interfaces that serve ordinary users while providing advanced options for power users
|
||||
- Follow Jan's established architecture patterns using Zustand state management, RxJS, and Tauri IPC
|
||||
- Implement responsive designs using Tailwind CSS v4 and Radix UI components
|
||||
|
||||
**Technical Standards:**
|
||||
- Always consider cross-platform implications when writing code
|
||||
- Use TypeScript with proper type safety throughout
|
||||
- Follow the established build process: core → extensions → frontend
|
||||
- Ensure mobile and desktop UI components share common patterns but adapt to platform constraints
|
||||
- Implement progressive disclosure: simple by default, advanced options available
|
||||
- Test on both platforms before considering work complete
|
||||
|
||||
**User Experience Principles:**
|
||||
- Design for ordinary users first - prioritize simplicity and clarity
|
||||
- Provide clear visual hierarchy and intuitive navigation
|
||||
- Include advanced model configuration options in secondary interfaces
|
||||
- Ensure consistent behavior across desktop and mobile platforms
|
||||
- Use appropriate platform-specific UI patterns when necessary
|
||||
|
||||
**Code Quality Requirements:**
|
||||
- Write clean, maintainable code following established patterns in the codebase
|
||||
- Use proper error handling and loading states
|
||||
- Implement responsive designs that work on various screen sizes
|
||||
- Follow the workspace structure and dependency management practices
|
||||
- Ensure proper TypeScript types and interfaces
|
||||
|
||||
**When implementing features:**
|
||||
1. Consider both desktop and mobile user flows
|
||||
2. Verify build compatibility with existing Jan architecture
|
||||
3. Test cross-platform functionality
|
||||
4. Implement progressive complexity (simple → advanced)
|
||||
5. Follow established state management patterns
|
||||
6. Ensure proper error handling and user feedback
|
||||
|
||||
Always ask for clarification if requirements could impact cross-platform compatibility or if you need more context about specific Jan architecture decisions.
|
||||
4
.gitignore
vendored
@ -60,3 +60,7 @@ src-tauri/resources/
|
||||
## test
|
||||
test-data
|
||||
llm-docs
|
||||
|
||||
## AI tool
|
||||
.claude/
|
||||
mobile-app/gen/apple/Externals/arm64/Debug/libapp.a
|
||||
|
||||
119
CLAUDE.md
Normal file
@ -0,0 +1,119 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Architecture
|
||||
|
||||
Jan is a local AI assistant built as a cross-platform desktop app using Tauri (Rust backend) with a React TypeScript frontend. The architecture follows a modular design with a core library and extension system.
|
||||
|
||||
### Key Components
|
||||
|
||||
- **Core (`/core`)**: TypeScript library providing the foundational APIs and interfaces
|
||||
- **Web App (`/web-app`)**: React frontend using Vite, Tailwind CSS, and Radix UI components
|
||||
- **Extensions (`/extensions`)**: Modular plugins (assistant, conversational, download, llamacpp)
|
||||
- **Extensions Web (`/extensions-web`)**: Web-specific extension implementations
|
||||
- **Tauri Backend (`/src-tauri`)**: Rust backend with native system integrations and plugins
|
||||
- **Website (`/website`)**: Documentation and marketing site
|
||||
|
||||
### State Management
|
||||
- Uses Zustand for state management in the React frontend
|
||||
- RxJS for reactive programming in the core library
|
||||
- Tauri's IPC for frontend-backend communication
|
||||
|
||||
## Development Commands
|
||||
|
||||
### Prerequisites
|
||||
- Node.js ≥ 20.0.0, Yarn ≥ 1.22.0, Make ≥ 3.81, Rust (for Tauri)
|
||||
- Use `make dev` or `mise dev` for full setup and launch
|
||||
|
||||
### Essential Commands
|
||||
|
||||
# These commands are pre-configured to avoid sccache issues
|
||||
RUSTC_WRAPPER= yarn mobile:ios
|
||||
RUSTC_WRAPPER= cargo check
|
||||
|
||||
**Development:**
|
||||
```bash
|
||||
make dev # Full development setup and launch (recommended)
|
||||
yarn dev # Same as yarn dev:tauri
|
||||
yarn dev:tauri # Start Tauri development server
|
||||
yarn dev:web-app # Start web-only version
|
||||
yarn dev:mobile # Start mobile development server
|
||||
```
|
||||
|
||||
**Building:**
|
||||
```bash
|
||||
make build # Production build
|
||||
yarn build # Build web app and Tauri app
|
||||
yarn build:core # Build core library
|
||||
yarn build:extensions # Build all extensions
|
||||
yarn build:web # Build web app only
|
||||
yarn build:mobile # Build mobile app
|
||||
```
|
||||
|
||||
**Mobile Development:**
|
||||
```bash
|
||||
yarn mobile:android # Start Android development
|
||||
yarn mobile:ios # Start iOS development (macOS only)
|
||||
```
|
||||
|
||||
**Testing:**
|
||||
```bash
|
||||
make test # Run all tests and linting
|
||||
yarn test # Run Vitest tests
|
||||
yarn test:watch # Watch mode for tests
|
||||
yarn test:coverage # Run tests with coverage
|
||||
```
|
||||
|
||||
**Linting:**
|
||||
```bash
|
||||
yarn lint # Run ESLint on web app
|
||||
```
|
||||
|
||||
**Cleaning:**
|
||||
```bash
|
||||
make clean # Delete all build artifacts and dependencies
|
||||
```
|
||||
|
||||
### Build Process
|
||||
|
||||
The build requires specific order:
|
||||
1. `yarn build:tauri:plugin:api` - Build Tauri plugins
|
||||
2. `yarn build:core` - Build core library (creates package.tgz)
|
||||
3. `yarn build:extensions` - Build extensions (depends on core)
|
||||
4. `yarn build:web` or `yarn build:tauri` - Build frontend/app
|
||||
|
||||
### Workspace Structure
|
||||
|
||||
This is a Yarn workspace with four main packages:
|
||||
- `@janhq/core` (core library)
|
||||
- `@janhq/web-app` (React desktop frontend)
|
||||
- `@jan/extensions-web` (web extensions)
|
||||
- `@janhq/mobile-app` (mobile React frontend with Tauri)
|
||||
|
||||
Extensions are built separately and packaged as .tgz files in `/pre-install/`.
|
||||
|
||||
### Testing Strategy
|
||||
|
||||
- Vitest for unit tests across all TypeScript packages
|
||||
- Cargo tests for Rust backend components
|
||||
- Tests run automatically in CI/CD pipeline
|
||||
- Use `yarn test:ui` for interactive test UI
|
||||
|
||||
### Extension Development
|
||||
|
||||
Extensions follow a plugin architecture:
|
||||
- Each extension has its own package.json and build process
|
||||
- Extensions communicate through the core API
|
||||
- Web extensions provide browser-compatible implementations
|
||||
- Extensions are dynamically loaded at runtime
|
||||
|
||||
## Key Technologies
|
||||
|
||||
- **Frontend**: React 19, TypeScript, Vite, Tailwind CSS v4, Radix UI
|
||||
- **Backend**: Rust, Tauri v2
|
||||
- **State**: Zustand, RxJS
|
||||
- **Routing**: TanStack Router
|
||||
- **Testing**: Vitest, ESLint
|
||||
- **Build**: Rolldown, Vite
|
||||
- **Package Management**: Yarn v4 with workspaces
|
||||
@ -752,9 +752,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-android-arm-eabi@npm:4.50.1"
|
||||
"@rollup/rollup-android-arm-eabi@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-android-arm-eabi@npm:4.48.0"
|
||||
conditions: os=android & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -766,9 +766,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-android-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-android-arm64@npm:4.50.1"
|
||||
"@rollup/rollup-android-arm64@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-android-arm64@npm:4.48.0"
|
||||
conditions: os=android & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -780,9 +780,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-darwin-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-darwin-arm64@npm:4.50.1"
|
||||
"@rollup/rollup-darwin-arm64@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-darwin-arm64@npm:4.48.0"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -794,9 +794,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-darwin-x64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-darwin-x64@npm:4.50.1"
|
||||
"@rollup/rollup-darwin-x64@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-darwin-x64@npm:4.48.0"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -808,9 +808,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-freebsd-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-freebsd-arm64@npm:4.50.1"
|
||||
"@rollup/rollup-freebsd-arm64@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-freebsd-arm64@npm:4.48.0"
|
||||
conditions: os=freebsd & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -822,9 +822,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-freebsd-x64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-freebsd-x64@npm:4.50.1"
|
||||
"@rollup/rollup-freebsd-x64@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-freebsd-x64@npm:4.48.0"
|
||||
conditions: os=freebsd & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -836,9 +836,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm-gnueabihf@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.48.0"
|
||||
conditions: os=linux & cpu=arm & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -850,9 +850,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm-musleabihf@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.48.0"
|
||||
conditions: os=linux & cpu=arm & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -864,9 +864,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm64-gnu@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.48.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -878,9 +878,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm64-musl@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.48.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -892,9 +892,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1"
|
||||
"@rollup/rollup-linux-loongarch64-gnu@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.48.0"
|
||||
conditions: os=linux & cpu=loong64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -906,9 +906,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-ppc64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.50.1"
|
||||
"@rollup/rollup-linux-ppc64-gnu@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.48.0"
|
||||
conditions: os=linux & cpu=ppc64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -920,16 +920,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.50.1"
|
||||
"@rollup/rollup-linux-riscv64-gnu@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.48.0"
|
||||
conditions: os=linux & cpu=riscv64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-riscv64-musl@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.50.1"
|
||||
"@rollup/rollup-linux-riscv64-musl@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.48.0"
|
||||
conditions: os=linux & cpu=riscv64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -941,9 +941,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.50.1"
|
||||
"@rollup/rollup-linux-s390x-gnu@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.48.0"
|
||||
conditions: os=linux & cpu=s390x & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -955,9 +955,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.50.1"
|
||||
"@rollup/rollup-linux-x64-gnu@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.48.0"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -969,20 +969,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-x64-musl@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-x64-musl@npm:4.50.1"
|
||||
"@rollup/rollup-linux-x64-musl@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-linux-x64-musl@npm:4.48.0"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-openharmony-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-openharmony-arm64@npm:4.50.1"
|
||||
conditions: os=openharmony & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@npm:4.34.8":
|
||||
version: 4.34.8
|
||||
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.34.8"
|
||||
@ -990,9 +983,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.50.1"
|
||||
"@rollup/rollup-win32-arm64-msvc@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.48.0"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -1004,9 +997,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.50.1"
|
||||
"@rollup/rollup-win32-ia32-msvc@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.48.0"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -1018,9 +1011,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.50.1"
|
||||
"@rollup/rollup-win32-x64-msvc@npm:4.48.0":
|
||||
version: 4.48.0
|
||||
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.48.0"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@ -1032,7 +1025,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@tauri-apps/api@npm:^2.8.0":
|
||||
"@tauri-apps/api@npm:^2.6.0, @tauri-apps/api@npm:^2.8.0":
|
||||
version: 2.8.0
|
||||
resolution: "@tauri-apps/api@npm:2.8.0"
|
||||
checksum: 10c0/fb111e4d7572372997b440ebe6879543fa8c4765151878e3fddfbfe809b18da29eed142ce83061d14a9ca6d896b3266dc8a4927c642d71cdc0b4277dc7e3aabf
|
||||
@ -1049,11 +1042,11 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"@tauri-apps/plugin-log@npm:^2.6.0":
|
||||
version: 2.7.0
|
||||
resolution: "@tauri-apps/plugin-log@npm:2.7.0"
|
||||
version: 2.6.0
|
||||
resolution: "@tauri-apps/plugin-log@npm:2.6.0"
|
||||
dependencies:
|
||||
"@tauri-apps/api": "npm:^2.8.0"
|
||||
checksum: 10c0/c699710898a666ebc888ec8b2a3f36d5887e5cc06f8c69e9b404438407f6a0df19840e00732a3651aa83ba5f056cba403a5a14c556d3097368e143bfe995b1a8
|
||||
"@tauri-apps/api": "npm:^2.6.0"
|
||||
checksum: 10c0/af34a07825e1272f80226f6bac539b939ca5b8ec5dbd1093b9e535b74e9622f6a383d4901652e2b4683cd6df61f874160c30411d0733bb09912f9674fc0a801b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2182,7 +2175,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fdir@npm:^6.5.0":
|
||||
"fdir@npm:^6.4.4, fdir@npm:^6.5.0":
|
||||
version: 6.5.0
|
||||
resolution: "fdir@npm:6.5.0"
|
||||
peerDependencies:
|
||||
@ -3312,9 +3305,9 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"nwsapi@npm:^2.2.16":
|
||||
version: 2.2.22
|
||||
resolution: "nwsapi@npm:2.2.22"
|
||||
checksum: 10c0/b6a0e5ea6754aacfdfe551c8c0f1b374eaf94d48b0a4e7eac666f879ecbc1892ef1d7c457e9b02eefad3fa1323ea1faebcba533eeab6582e24c9c503411bf879
|
||||
version: 2.2.21
|
||||
resolution: "nwsapi@npm:2.2.21"
|
||||
checksum: 10c0/dd330cabb886fd417624bd3af368d86c3d507c002c05fb2f7981874204298deec9e8bd5103d8a0c4a0e0dc280276dc4a59a059e1045eeb7a628f79e6cefba6a3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -3842,30 +3835,29 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"rollup@npm:^4.43.0":
|
||||
version: 4.50.1
|
||||
resolution: "rollup@npm:4.50.1"
|
||||
version: 4.48.0
|
||||
resolution: "rollup@npm:4.48.0"
|
||||
dependencies:
|
||||
"@rollup/rollup-android-arm-eabi": "npm:4.50.1"
|
||||
"@rollup/rollup-android-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-darwin-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-darwin-x64": "npm:4.50.1"
|
||||
"@rollup/rollup-freebsd-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-freebsd-x64": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm-musleabihf": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm64-musl": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-ppc64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-riscv64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-riscv64-musl": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-s390x-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-x64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-x64-musl": "npm:4.50.1"
|
||||
"@rollup/rollup-openharmony-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-win32-arm64-msvc": "npm:4.50.1"
|
||||
"@rollup/rollup-win32-ia32-msvc": "npm:4.50.1"
|
||||
"@rollup/rollup-win32-x64-msvc": "npm:4.50.1"
|
||||
"@rollup/rollup-android-arm-eabi": "npm:4.48.0"
|
||||
"@rollup/rollup-android-arm64": "npm:4.48.0"
|
||||
"@rollup/rollup-darwin-arm64": "npm:4.48.0"
|
||||
"@rollup/rollup-darwin-x64": "npm:4.48.0"
|
||||
"@rollup/rollup-freebsd-arm64": "npm:4.48.0"
|
||||
"@rollup/rollup-freebsd-x64": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-arm-musleabihf": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-arm64-gnu": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-arm64-musl": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-ppc64-gnu": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-riscv64-gnu": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-riscv64-musl": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-s390x-gnu": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-x64-gnu": "npm:4.48.0"
|
||||
"@rollup/rollup-linux-x64-musl": "npm:4.48.0"
|
||||
"@rollup/rollup-win32-arm64-msvc": "npm:4.48.0"
|
||||
"@rollup/rollup-win32-ia32-msvc": "npm:4.48.0"
|
||||
"@rollup/rollup-win32-x64-msvc": "npm:4.48.0"
|
||||
"@types/estree": "npm:1.0.8"
|
||||
fsevents: "npm:~2.3.2"
|
||||
dependenciesMeta:
|
||||
@ -3903,8 +3895,6 @@ __metadata:
|
||||
optional: true
|
||||
"@rollup/rollup-linux-x64-musl":
|
||||
optional: true
|
||||
"@rollup/rollup-openharmony-arm64":
|
||||
optional: true
|
||||
"@rollup/rollup-win32-arm64-msvc":
|
||||
optional: true
|
||||
"@rollup/rollup-win32-ia32-msvc":
|
||||
@ -3915,7 +3905,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
rollup: dist/bin/rollup
|
||||
checksum: 10c0/2029282826d5fb4e308be261b2c28329a4d2bd34304cc3960da69fd21d5acccd0267d6770b1656ffc8f166203ef7e865b4583d5f842a519c8ef059ac71854205
|
||||
checksum: 10c0/7fd0f9f5e4f888b52463b12f2bf49231eff2f2dbc8ea453455291a37fe24ac2656d70ac2f27d13928b436b297625bfe66d131dcb7475a62cf33c841c62fbd47a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -4049,13 +4039,13 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"sirv@npm:^3.0.1":
|
||||
version: 3.0.2
|
||||
resolution: "sirv@npm:3.0.2"
|
||||
version: 3.0.1
|
||||
resolution: "sirv@npm:3.0.1"
|
||||
dependencies:
|
||||
"@polka/url": "npm:^1.0.0-next.24"
|
||||
mrmime: "npm:^2.0.0"
|
||||
totalist: "npm:^3.0.0"
|
||||
checksum: 10c0/5930e4397afdb14fbae13751c3be983af4bda5c9aadec832607dc2af15a7162f7d518c71b30e83ae3644b9a24cea041543cc969e5fe2b80af6ce8ea3174b2d04
|
||||
checksum: 10c0/7cf64b28daa69b15f77b38b0efdd02c007b72bb3ec5f107b208ebf59f01b174ef63a1db3aca16d2df925501831f4c209be6ece3302b98765919ef5088b45bf80
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -4345,13 +4335,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15":
|
||||
version: 0.2.15
|
||||
resolution: "tinyglobby@npm:0.2.15"
|
||||
"tinyglobby@npm:^0.2.14":
|
||||
version: 0.2.14
|
||||
resolution: "tinyglobby@npm:0.2.14"
|
||||
dependencies:
|
||||
fdir: "npm:^6.5.0"
|
||||
picomatch: "npm:^4.0.3"
|
||||
checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844
|
||||
fdir: "npm:^6.4.4"
|
||||
picomatch: "npm:^4.0.2"
|
||||
checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -4689,8 +4679,8 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0":
|
||||
version: 7.1.5
|
||||
resolution: "vite@npm:7.1.5"
|
||||
version: 7.1.3
|
||||
resolution: "vite@npm:7.1.3"
|
||||
dependencies:
|
||||
esbuild: "npm:^0.25.0"
|
||||
fdir: "npm:^6.5.0"
|
||||
@ -4698,7 +4688,7 @@ __metadata:
|
||||
picomatch: "npm:^4.0.3"
|
||||
postcss: "npm:^8.5.6"
|
||||
rollup: "npm:^4.43.0"
|
||||
tinyglobby: "npm:^0.2.15"
|
||||
tinyglobby: "npm:^0.2.14"
|
||||
peerDependencies:
|
||||
"@types/node": ^20.19.0 || >=22.12.0
|
||||
jiti: ">=1.21.0"
|
||||
@ -4739,7 +4729,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
vite: bin/vite.js
|
||||
checksum: 10c0/782d2f20c25541b26d1fb39bef5f194149caff39dc25b7836e25f049ca919f2e2ce186bddb21f3f20f6195354b3579ec637a8ca08d65b117f8b6f81e3e730a9c
|
||||
checksum: 10c0/a0aa418beab80673dc9a3e9d1fa49472955d6ef9d41a4c9c6bd402953f411346f612864dae267adfb2bb8ceeb894482369316ffae5816c84fd45990e352b727d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
136
mobile-app/README.md
Normal file
@ -0,0 +1,136 @@
|
||||
# Jan Mobile - AI Chat Assistant
|
||||
|
||||
A mobile version of the Jan AI assistant built with Tauri, React, and TypeScript. This app provides a streamlined chat interface optimized for mobile devices with support for remote AI API connections.
|
||||
|
||||
## Features
|
||||
|
||||
- **Mobile-Optimized UI**: Touch-friendly interface designed for phones and tablets
|
||||
- **Remote AI API Support**: Connect to OpenAI, Anthropic, or custom API endpoints
|
||||
- **Streaming Responses**: Real-time streaming of AI responses for better UX
|
||||
- **Configurable Settings**: Easy setup for different AI providers
|
||||
- **Cross-Platform**: Supports both Android and iOS through Tauri
|
||||
- **Offline-First Architecture**: Local storage for settings and conversation history
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js ≥ 20.0.0
|
||||
- Yarn ≥ 1.22.0
|
||||
- Rust and Cargo
|
||||
- Android SDK (for Android builds)
|
||||
- Xcode (for iOS builds on macOS)
|
||||
|
||||
### Development
|
||||
|
||||
1. **Install dependencies:**
|
||||
```bash
|
||||
cd jan
|
||||
yarn install
|
||||
```
|
||||
|
||||
2. **Start the mobile development server:**
|
||||
```bash
|
||||
yarn dev:mobile
|
||||
```
|
||||
|
||||
3. **For native mobile development:**
|
||||
```bash
|
||||
# Android
|
||||
yarn mobile:android
|
||||
|
||||
# iOS (macOS only)
|
||||
yarn mobile:ios
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
1. Open the app and navigate to Settings (gear icon)
|
||||
2. Choose your AI provider (OpenAI, Anthropic, or Custom)
|
||||
3. Enter your API key and configure the endpoint
|
||||
4. Test the connection and save your settings
|
||||
5. Return to the main screen and start chatting!
|
||||
|
||||
### Supported AI Providers
|
||||
|
||||
- **OpenAI**: GPT-3.5, GPT-4, and other OpenAI models
|
||||
- **Anthropic**: Claude 3 models (Haiku, Sonnet, Opus)
|
||||
- **Custom**: Any OpenAI-compatible API endpoint
|
||||
|
||||
## Architecture
|
||||
|
||||
The mobile app leverages the existing Jan codebase structure:
|
||||
|
||||
- **Core Library**: Shared `@janhq/core` package for AI functionality
|
||||
- **Mobile UI**: React components optimized for touch interfaces
|
||||
- **State Management**: Zustand for lightweight state management
|
||||
- **Routing**: TanStack Router for navigation
|
||||
- **Styling**: Tailwind CSS with mobile-first design
|
||||
- **Backend**: Tauri for native mobile functionality
|
||||
|
||||
## Key Components
|
||||
|
||||
- `ChatScreen`: Main chat interface with message history
|
||||
- `MessageBubble`: Individual message rendering with markdown support
|
||||
- `ChatInput`: Touch-optimized input with auto-resize
|
||||
- `SettingsScreen`: API configuration and connection testing
|
||||
- `Header`: Navigation and app controls
|
||||
|
||||
## Build for Production
|
||||
|
||||
```bash
|
||||
# Build the mobile app
|
||||
yarn build:mobile
|
||||
|
||||
# Build for specific platforms
|
||||
yarn mobile:android # Android APK/Bundle
|
||||
yarn mobile:ios # iOS IPA (macOS only)
|
||||
```
|
||||
|
||||
## API Configuration
|
||||
|
||||
The app supports multiple AI providers with the following configuration options:
|
||||
|
||||
### OpenAI
|
||||
- Base URL: `https://api.openai.com/v1`
|
||||
- Models: `gpt-3.5-turbo`, `gpt-4`, `gpt-4-turbo`
|
||||
- Requires: OpenAI API key
|
||||
|
||||
### Anthropic
|
||||
- Base URL: `https://api.anthropic.com`
|
||||
- Models: `claude-3-haiku-20240307`, `claude-3-sonnet-20240229`
|
||||
- Requires: Anthropic API key
|
||||
|
||||
### Custom
|
||||
- Configurable base URL
|
||||
- OpenAI-compatible API format
|
||||
- Custom model names supported
|
||||
|
||||
## Security
|
||||
|
||||
- API keys are stored locally on the device
|
||||
- No data is sent to Jan servers
|
||||
- All communication is directly with your chosen AI provider
|
||||
- Settings can be cleared at any time
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Connection Issues
|
||||
1. Verify your API key is correct
|
||||
2. Check the base URL format
|
||||
3. Ensure you have internet connectivity
|
||||
4. Use the connection test feature in settings
|
||||
|
||||
### Build Issues
|
||||
1. Ensure all prerequisites are installed
|
||||
2. Check that Rust and Cargo are up to date
|
||||
3. Verify mobile development dependencies (Android SDK/Xcode)
|
||||
4. Clear node_modules and reinstall if needed
|
||||
|
||||
## Contributing
|
||||
|
||||
This mobile app is part of the larger Jan project. Please see the main [CONTRIBUTING.md](../CONTRIBUTING.md) for guidelines on contributing to the project.
|
||||
|
||||
## License
|
||||
|
||||
Apache 2.0 - See [LICENSE](../LICENSE) for details.
|
||||
13
mobile-app/index.html
Normal file
@ -0,0 +1,13 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
|
||||
<title>Jan Mobile - AI Chat Assistant</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
71
mobile-app/package.json
Normal file
@ -0,0 +1,71 @@
|
||||
{
|
||||
"name": "@janhq/mobile-app",
|
||||
"private": true,
|
||||
"version": "0.6.6",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --port 1422",
|
||||
"build": "tsc -b && vite build",
|
||||
"lint": "eslint .",
|
||||
"preview": "vite preview",
|
||||
"test": "vitest --run",
|
||||
"test:coverage": "vitest --coverage --run",
|
||||
"tauri:dev": "tauri dev",
|
||||
"tauri:build": "tauri build",
|
||||
"tauri:android": "tauri android dev",
|
||||
"tauri:ios": "tauri ios dev"
|
||||
},
|
||||
"dependencies": {
|
||||
"@janhq/core": "link:../core",
|
||||
"@radix-ui/react-dialog": "^1.1.14",
|
||||
"@radix-ui/react-dropdown-menu": "^2.1.15",
|
||||
"@radix-ui/react-label": "^2.1.7",
|
||||
"@radix-ui/react-progress": "^1.1.4",
|
||||
"@radix-ui/react-select": "^2.1.9",
|
||||
"@radix-ui/react-slot": "^1.2.0",
|
||||
"@radix-ui/react-switch": "^1.2.2",
|
||||
"@radix-ui/react-tooltip": "^1.2.4",
|
||||
"@tabler/icons-react": "^3.33.0",
|
||||
"@tailwindcss/vite": "^4.1.4",
|
||||
"@tanstack/react-router": "^1.121.34",
|
||||
"@tauri-apps/api": "^2.8.0",
|
||||
"@tauri-apps/plugin-os": "^2.3.1",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"framer-motion": "^12.23.12",
|
||||
"i18next": "^25.0.1",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lucide-react": "^0.536.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-i18next": "^15.5.1",
|
||||
"react-markdown": "^10.1.0",
|
||||
"react-syntax-highlighter": "^15.6.1",
|
||||
"react-textarea-autosize": "^8.5.9",
|
||||
"sonner": "^2.0.3",
|
||||
"tailwindcss": "^4.1.4",
|
||||
"ulidx": "^2.4.1",
|
||||
"zustand": "^5.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.22.0",
|
||||
"@tanstack/router-devtools": "^1.121.34",
|
||||
"@tanstack/router-plugin": "^1.116.1",
|
||||
"@tauri-apps/cli": "^2.8.4",
|
||||
"@types/lodash.debounce": "^4",
|
||||
"@types/node": "^22.14.1",
|
||||
"@types/react": "^19.0.10",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"@types/react-syntax-highlighter": "^15.5.13",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"clsx": "^2.1.1",
|
||||
"eslint": "^9.22.0",
|
||||
"eslint-plugin-react-hooks": "^5.2.0",
|
||||
"eslint-plugin-react-refresh": "^0.4.19",
|
||||
"globals": "^16.0.0",
|
||||
"tailwind-merge": "^3.3.1",
|
||||
"typescript": "~5.8.3",
|
||||
"typescript-eslint": "^8.26.1",
|
||||
"vite": "^6.3.0",
|
||||
"vitest": "^3.1.3"
|
||||
}
|
||||
}
|
||||
13
mobile-app/src-tauri/.cargo/config.toml
Normal file
@ -0,0 +1,13 @@
|
||||
[target.aarch64-apple-ios-sim]
|
||||
linker = "clang"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-target",
|
||||
"-C", "link-arg=aarch64-apple-ios13.0-simulator",
|
||||
]
|
||||
|
||||
[target.x86_64-apple-ios]
|
||||
linker = "clang"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-target",
|
||||
"-C", "link-arg=x86_64-apple-ios13.0-simulator",
|
||||
]
|
||||
30
mobile-app/src-tauri/Cargo.toml
Normal file
@ -0,0 +1,30 @@
|
||||
[package]
|
||||
name = "jan-mobile"
|
||||
version = "0.6.6"
|
||||
description = "Jan Mobile - AI Chat Assistant"
|
||||
authors = ["Jan Team"]
|
||||
license = "Apache-2.0"
|
||||
repository = "https://github.com/menloresearch/jan"
|
||||
edition = "2021"
|
||||
rust-version = "1.70"
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2.4.1", features = [] }
|
||||
|
||||
[dependencies]
|
||||
serde_json = "1.0"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
tauri = { version = "2.8.5", features = ["protocol-asset"] }
|
||||
tauri-plugin-os = "2.2.1"
|
||||
|
||||
[[bin]]
|
||||
name = "jan-mobile"
|
||||
path = "src/main.rs"
|
||||
|
||||
[lib]
|
||||
name = "app"
|
||||
crate-type = ["staticlib", "cdylib", "rlib"]
|
||||
|
||||
[features]
|
||||
default = ["custom-protocol"]
|
||||
custom-protocol = ["tauri/custom-protocol"]
|
||||
3
mobile-app/src-tauri/build.rs
Normal file
@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
tauri_build::build()
|
||||
}
|
||||
3
mobile-app/src-tauri/gen/apple/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
xcuserdata/
|
||||
build/
|
||||
Externals/
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,116 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-20x20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-20x20@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-29x29@2x-1.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-29x29@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-40x40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-40x40@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-60x60@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "AppIcon-60x60@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-20x20@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-20x20@2x-1.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-29x29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-29x29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-40x40@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-40x40@2x-1.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-76x76@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-76x76@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "83.5x83.5",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "AppIcon-83.5x83.5@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "1024x1024",
|
||||
"idiom" : "ios-marketing",
|
||||
"filename" : "AppIcon-512@2x.png",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
8
mobile-app/src-tauri/gen/apple/ExportOptions.plist
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>method</key>
|
||||
<string>debugging</string>
|
||||
</dict>
|
||||
</plist>
|
||||
30
mobile-app/src-tauri/gen/apple/LaunchScreen.storyboard
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17150" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Y6W-OH-hqX">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17122"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="s0d-6b-0kx">
|
||||
<objects>
|
||||
<viewController id="Y6W-OH-hqX" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="5EZ-qb-Rvc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<viewLayoutGuide key="safeArea" id="vDu-zF-Fre"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
21
mobile-app/src-tauri/gen/apple/Podfile
Normal file
@ -0,0 +1,21 @@
|
||||
# Uncomment the next line to define a global platform for your project
|
||||
|
||||
target 'jan-mobile_iOS' do
|
||||
platform :ios, '13.0'
|
||||
# Pods for jan-mobile_iOS
|
||||
end
|
||||
|
||||
target 'jan-mobile_macOS' do
|
||||
platform :osx, '11.0'
|
||||
# Pods for jan-mobile_macOS
|
||||
end
|
||||
|
||||
# Delete the deployment target for iOS and macOS, causing it to be inherited from the Podfile
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
|
||||
config.build_settings.delete 'MACOSX_DEPLOYMENT_TARGET'
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
namespace ffi {
|
||||
extern "C" {
|
||||
void start_app();
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
#include "bindings/bindings.h"
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
ffi::start_app();
|
||||
return 0;
|
||||
}
|
||||
@ -0,0 +1,439 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
2D5E1EF41FD40AD14A32AECB /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 9CF7145F5BEB31A48C039CAA /* assets */; };
|
||||
55727D4BF5F8903F3F82CA8E /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18194592748C25E86740316E /* WebKit.framework */; };
|
||||
80C8C51DBFFC5948E5E1F7D5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C50BBD71E279CD823209B08F /* UIKit.framework */; };
|
||||
8432E6CB5F590CC36407993D /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 66A5D3DAC8CD890F715884A7 /* Metal.framework */; };
|
||||
912B704D12AE5ABBB617F3A6 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F49DC7457B07DC5B5FFD9AD1 /* Security.framework */; };
|
||||
9921188051A8BAECF6072DF9 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1491DA99FB1892188AF47CA9 /* main.mm */; };
|
||||
AB05F879632F4635A3358098 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3912A7B1D3C66C8CE02A2670 /* Assets.xcassets */; };
|
||||
B7AF5D0792B2C6EAD6B27D42 /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE225DE6DD839E98AAD07B2A /* MetalKit.framework */; };
|
||||
C4D01ECFFFCA54D4D72E5F37 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25D61A2E7AD2C2C071E000EC /* QuartzCore.framework */; };
|
||||
E7D8A866EF752607B300AB8A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8E0ADE5A4C5563C271ED7CE /* CoreGraphics.framework */; };
|
||||
F10514A4225EEAA362BEC498 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CA2AA407C21744939A37F83F /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1491DA99FB1892188AF47CA9 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
|
||||
18194592748C25E86740316E /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
|
||||
25D61A2E7AD2C2C071E000EC /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
3912A7B1D3C66C8CE02A2670 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
53E965D2090F070AD1B0785E /* jan-mobile_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "jan-mobile_iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
66A5D3DAC8CD890F715884A7 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
|
||||
7D7AE12BBEB1576A7D52D387 /* main.rs */ = {isa = PBXFileReference; path = main.rs; sourceTree = "<group>"; };
|
||||
823F1AC49B5FEF2C26EF9664 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = "<group>"; };
|
||||
9623F20A757134A351169D4F /* lib.rs */ = {isa = PBXFileReference; path = lib.rs; sourceTree = "<group>"; };
|
||||
9CF7145F5BEB31A48C039CAA /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; };
|
||||
AE225DE6DD839E98AAD07B2A /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
|
||||
BF865FB8CA77765A92773B35 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
C50BBD71E279CD823209B08F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
C8E0ADE5A4C5563C271ED7CE /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
CA2AA407C21744939A37F83F /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
D28A658735980B59FF740559 /* jan-mobile_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "jan-mobile_iOS.entitlements"; sourceTree = "<group>"; };
|
||||
F49DC7457B07DC5B5FFD9AD1 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
E2C01FFE4278315B7D657888 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E7D8A866EF752607B300AB8A /* CoreGraphics.framework in Frameworks */,
|
||||
8432E6CB5F590CC36407993D /* Metal.framework in Frameworks */,
|
||||
B7AF5D0792B2C6EAD6B27D42 /* MetalKit.framework in Frameworks */,
|
||||
C4D01ECFFFCA54D4D72E5F37 /* QuartzCore.framework in Frameworks */,
|
||||
912B704D12AE5ABBB617F3A6 /* Security.framework in Frameworks */,
|
||||
80C8C51DBFFC5948E5E1F7D5 /* UIKit.framework in Frameworks */,
|
||||
55727D4BF5F8903F3F82CA8E /* WebKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0B36BC28CB06B690294C30BC /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
53E965D2090F070AD1B0785E /* jan-mobile_iOS.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4D9F3E19A730ABBD53863285 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9CF7145F5BEB31A48C039CAA /* assets */,
|
||||
3912A7B1D3C66C8CE02A2670 /* Assets.xcassets */,
|
||||
CA2AA407C21744939A37F83F /* LaunchScreen.storyboard */,
|
||||
B33B42C897C443872C9E4FED /* jan-mobile_iOS */,
|
||||
AA9698029C5175D1DF2AA03A /* Sources */,
|
||||
50BE4EC8312DBC49DB0CFBB7 /* src */,
|
||||
5563DA3623750B17CDE53221 /* Frameworks */,
|
||||
0B36BC28CB06B690294C30BC /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50BE4EC8312DBC49DB0CFBB7 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9623F20A757134A351169D4F /* lib.rs */,
|
||||
7D7AE12BBEB1576A7D52D387 /* main.rs */,
|
||||
);
|
||||
name = src;
|
||||
path = ../../src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5563DA3623750B17CDE53221 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C8E0ADE5A4C5563C271ED7CE /* CoreGraphics.framework */,
|
||||
66A5D3DAC8CD890F715884A7 /* Metal.framework */,
|
||||
AE225DE6DD839E98AAD07B2A /* MetalKit.framework */,
|
||||
25D61A2E7AD2C2C071E000EC /* QuartzCore.framework */,
|
||||
F49DC7457B07DC5B5FFD9AD1 /* Security.framework */,
|
||||
C50BBD71E279CD823209B08F /* UIKit.framework */,
|
||||
18194592748C25E86740316E /* WebKit.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA9698029C5175D1DF2AA03A /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E23954EB0CF38DAA5463246D /* jan-mobile */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B33B42C897C443872C9E4FED /* jan-mobile_iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BF865FB8CA77765A92773B35 /* Info.plist */,
|
||||
D28A658735980B59FF740559 /* jan-mobile_iOS.entitlements */,
|
||||
);
|
||||
path = "jan-mobile_iOS";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BCF569B51213D550E5EE2ECF /* bindings */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
823F1AC49B5FEF2C26EF9664 /* bindings.h */,
|
||||
);
|
||||
path = bindings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E23954EB0CF38DAA5463246D /* jan-mobile */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1491DA99FB1892188AF47CA9 /* main.mm */,
|
||||
BCF569B51213D550E5EE2ECF /* bindings */,
|
||||
);
|
||||
path = "jan-mobile";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
C3CE77689C09622CD69F6888 /* jan-mobile_iOS */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4037C541E7B0045FBEAECB76 /* Build configuration list for PBXNativeTarget "jan-mobile_iOS" */;
|
||||
buildPhases = (
|
||||
AE13105D63BDA4619A7EAF52 /* Build Rust Code */,
|
||||
0CED95022BED9EC0685EB54B /* Sources */,
|
||||
9EBD46F1F0A085BEDED360F1 /* Resources */,
|
||||
E2C01FFE4278315B7D657888 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "jan-mobile_iOS";
|
||||
packageProductDependencies = (
|
||||
);
|
||||
productName = "jan-mobile_iOS";
|
||||
productReference = 53E965D2090F070AD1B0785E /* jan-mobile_iOS.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
0F604C37BDFD2F51A95D9820 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
};
|
||||
buildConfigurationList = 55A1CCE9EF24EE89D8EE6635 /* Build configuration list for PBXProject "jan-mobile" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
Base,
|
||||
en,
|
||||
);
|
||||
mainGroup = 4D9F3E19A730ABBD53863285;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 77;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
C3CE77689C09622CD69F6888 /* jan-mobile_iOS */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
9EBD46F1F0A085BEDED360F1 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AB05F879632F4635A3358098 /* Assets.xcassets in Resources */,
|
||||
F10514A4225EEAA362BEC498 /* LaunchScreen.storyboard in Resources */,
|
||||
2D5E1EF41FD40AD14A32AECB /* assets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
AE13105D63BDA4619A7EAF52 /* Build Rust Code */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Build Rust Code";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export PATH=\"$HOME/.cargo/bin:$PATH\"\ncd ../../../src-tauri\nunset RUSTC_WRAPPER\n\n# Set iOS SDK environment variables\nexport IPHONEOS_DEPLOYMENT_TARGET=13.0\nexport CC_aarch64_apple_ios_sim=clang\nexport CXX_aarch64_apple_ios_sim=clang++\nexport CFLAGS_aarch64_apple_ios_sim=\"-target aarch64-apple-ios13.0-simulator -isysroot ${SDKROOT}\"\nexport CARGO_TARGET_AARCH64_APPLE_IOS_SIM_LINKER=clang\nexport CARGO_TARGET_AARCH64_APPLE_IOS_SIM_RUSTFLAGS=\"-C link-arg=-target -C link-arg=aarch64-apple-ios13.0-simulator -C link-arg=-isysroot -C link-arg=${SDKROOT}\"\n\nif [ \"$CONFIGURATION\" = \"debug\" ]; then\n mkdir -p ../gen/apple/Externals/arm64/Debug\n cargo build --target aarch64-apple-ios-sim --lib\n cp target/aarch64-apple-ios-sim/debug/libapp.a ../gen/apple/Externals/arm64/Debug/libapp.a\nelse\n mkdir -p ../gen/apple/Externals/arm64/Release\n cargo build --target aarch64-apple-ios-sim --lib --release\n cp target/aarch64-apple-ios-sim/release/libapp.a ../gen/apple/Externals/arm64/Release/libapp.a\nfi\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
0CED95022BED9EC0685EB54B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9921188051A8BAECF6072DF9 /* main.mm in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
24C8568C6640CB41D71B7DA4 /* debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
"DEBUG=1",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = debug;
|
||||
};
|
||||
DBAC9EAB4830B0DC7EABC879 /* release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = release;
|
||||
};
|
||||
E35C03F46C651D514C58F24F /* release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ARCHS = (
|
||||
arm64,
|
||||
);
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "jan-mobile_iOS/jan-mobile_iOS.entitlements";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
|
||||
INFOPLIST_FILE = "jan-mobile_iOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited) $(PROJECT_DIR)/Externals/arm64/Debug $(PROJECT_DIR)/Externals/arm64/Release $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
||||
OTHER_LDFLAGS = "-lapp";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = jan.ai.mobile;
|
||||
PRODUCT_NAME = "Jan Mobile";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALID_ARCHS = arm64;
|
||||
DEVELOPMENT_TEAM = "Y34Q9T3ZAB";
|
||||
};
|
||||
name = release;
|
||||
};
|
||||
FDCD7223935B85075857AACC /* debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ARCHS = (
|
||||
arm64,
|
||||
);
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "jan-mobile_iOS/jan-mobile_iOS.entitlements";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
|
||||
INFOPLIST_FILE = "jan-mobile_iOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited) $(PROJECT_DIR)/Externals/arm64/Debug $(PROJECT_DIR)/Externals/arm64/Release $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
||||
OTHER_LDFLAGS = "-lapp";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = jan.ai.mobile;
|
||||
PRODUCT_NAME = "Jan Mobile";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALID_ARCHS = arm64;
|
||||
DEVELOPMENT_TEAM = "Y34Q9T3ZAB";
|
||||
};
|
||||
name = debug;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
4037C541E7B0045FBEAECB76 /* Build configuration list for PBXNativeTarget "jan-mobile_iOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
FDCD7223935B85075857AACC /* debug */,
|
||||
E35C03F46C651D514C58F24F /* release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = debug;
|
||||
};
|
||||
55A1CCE9EF24EE89D8EE6635 /* Build configuration list for PBXProject "jan-mobile" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
24C8568C6640CB41D71B7DA4 /* debug */,
|
||||
DBAC9EAB4830B0DC7EABC879 /* release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = debug;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 0F604C37BDFD2F51A95D9820 /* Project object */;
|
||||
}
|
||||
7
mobile-app/src-tauri/gen/apple/jan-mobile.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildSystemType</key>
|
||||
<string>Original</string>
|
||||
<key>DisableBuildSystemDeprecationDiagnostic</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1430"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C3CE77689C09622CD69F6888"
|
||||
BuildableName = "Jan Mobile.app"
|
||||
BlueprintName = "jan-mobile_iOS"
|
||||
ReferencedContainer = "container:jan-mobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "NO">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C3CE77689C09622CD69F6888"
|
||||
BuildableName = "Jan Mobile.app"
|
||||
BlueprintName = "jan-mobile_iOS"
|
||||
ReferencedContainer = "container:jan-mobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<EnvironmentVariables>
|
||||
<EnvironmentVariable
|
||||
key = "RUST_BACKTRACE"
|
||||
value = "full"
|
||||
isEnabled = "YES">
|
||||
</EnvironmentVariable>
|
||||
<EnvironmentVariable
|
||||
key = "RUST_LOG"
|
||||
value = "info"
|
||||
isEnabled = "YES">
|
||||
</EnvironmentVariable>
|
||||
</EnvironmentVariables>
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C3CE77689C09622CD69F6888"
|
||||
BuildableName = "Jan Mobile.app"
|
||||
BlueprintName = "jan-mobile_iOS"
|
||||
ReferencedContainer = "container:jan-mobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<EnvironmentVariables>
|
||||
<EnvironmentVariable
|
||||
key = "RUST_BACKTRACE"
|
||||
value = "full"
|
||||
isEnabled = "YES">
|
||||
</EnvironmentVariable>
|
||||
<EnvironmentVariable
|
||||
key = "RUST_LOG"
|
||||
value = "info"
|
||||
isEnabled = "YES">
|
||||
</EnvironmentVariable>
|
||||
</EnvironmentVariables>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "release"
|
||||
shouldUseLaunchSchemeArgsEnv = "NO"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C3CE77689C09622CD69F6888"
|
||||
BuildableName = "Jan Mobile.app"
|
||||
BlueprintName = "jan-mobile_iOS"
|
||||
ReferencedContainer = "container:jan-mobile.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<EnvironmentVariables>
|
||||
<EnvironmentVariable
|
||||
key = "RUST_BACKTRACE"
|
||||
value = "full"
|
||||
isEnabled = "YES">
|
||||
</EnvironmentVariable>
|
||||
<EnvironmentVariable
|
||||
key = "RUST_LOG"
|
||||
value = "info"
|
||||
isEnabled = "YES">
|
||||
</EnvironmentVariable>
|
||||
</EnvironmentVariables>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
44
mobile-app/src-tauri/gen/apple/jan-mobile_iOS/Info.plist
Normal file
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.6.6</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.6.6</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>metal</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict/>
|
||||
</plist>
|
||||
105
mobile-app/src-tauri/gen/apple/project.yml
Normal file
@ -0,0 +1,105 @@
|
||||
name: jan-mobile
|
||||
options:
|
||||
bundleIdPrefix: jan.ai.mobile
|
||||
deploymentTarget:
|
||||
iOS: 13.0
|
||||
fileGroups: [../../src]
|
||||
configs:
|
||||
debug: debug
|
||||
release: release
|
||||
settingGroups:
|
||||
app:
|
||||
base:
|
||||
PRODUCT_NAME: Jan Mobile
|
||||
PRODUCT_BUNDLE_IDENTIFIER: jan.ai.mobile
|
||||
targetTemplates:
|
||||
app:
|
||||
type: application
|
||||
sources:
|
||||
- path: Sources
|
||||
scheme:
|
||||
environmentVariables:
|
||||
RUST_BACKTRACE: full
|
||||
RUST_LOG: info
|
||||
settings:
|
||||
groups: [app]
|
||||
targets:
|
||||
jan-mobile_iOS:
|
||||
type: application
|
||||
platform: iOS
|
||||
sources:
|
||||
- path: Sources
|
||||
- path: Assets.xcassets
|
||||
- path: jan-mobile_iOS
|
||||
- path: assets
|
||||
buildPhase: resources
|
||||
type: folder
|
||||
- path: LaunchScreen.storyboard
|
||||
info:
|
||||
path: jan-mobile_iOS/Info.plist
|
||||
properties:
|
||||
LSRequiresIPhoneOS: true
|
||||
UILaunchStoryboardName: LaunchScreen
|
||||
UIRequiredDeviceCapabilities: [arm64, metal]
|
||||
UISupportedInterfaceOrientations:
|
||||
- UIInterfaceOrientationPortrait
|
||||
- UIInterfaceOrientationLandscapeLeft
|
||||
- UIInterfaceOrientationLandscapeRight
|
||||
UISupportedInterfaceOrientations~ipad:
|
||||
- UIInterfaceOrientationPortrait
|
||||
- UIInterfaceOrientationPortraitUpsideDown
|
||||
- UIInterfaceOrientationLandscapeLeft
|
||||
- UIInterfaceOrientationLandscapeRight
|
||||
CFBundleShortVersionString: 0.6.6
|
||||
CFBundleVersion: "0.6.6"
|
||||
entitlements:
|
||||
path: jan-mobile_iOS/jan-mobile_iOS.entitlements
|
||||
scheme:
|
||||
environmentVariables:
|
||||
RUST_BACKTRACE: full
|
||||
RUST_LOG: info
|
||||
settings:
|
||||
base:
|
||||
ENABLE_BITCODE: false
|
||||
ARCHS: [arm64]
|
||||
VALID_ARCHS: arm64
|
||||
LIBRARY_SEARCH_PATHS: $(inherited) $(PROJECT_DIR)/Externals/arm64/Debug $(PROJECT_DIR)/Externals/arm64/Release $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
|
||||
OTHER_LDFLAGS: -lapp
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
|
||||
EXCLUDED_ARCHS[sdk=iphoneos*]: x86_64
|
||||
groups: [app]
|
||||
dependencies:
|
||||
- sdk: CoreGraphics.framework
|
||||
- sdk: Metal.framework
|
||||
- sdk: MetalKit.framework
|
||||
- sdk: QuartzCore.framework
|
||||
- sdk: Security.framework
|
||||
- sdk: UIKit.framework
|
||||
- sdk: WebKit.framework
|
||||
preBuildScripts:
|
||||
- script: |
|
||||
export PATH="$HOME/.cargo/bin:$PATH"
|
||||
cd ../../../src-tauri
|
||||
unset RUSTC_WRAPPER
|
||||
|
||||
# Set iOS SDK environment variables
|
||||
export IPHONEOS_DEPLOYMENT_TARGET=13.0
|
||||
export CC_aarch64_apple_ios_sim=clang
|
||||
export CXX_aarch64_apple_ios_sim=clang++
|
||||
export CFLAGS_aarch64_apple_ios_sim="-target aarch64-apple-ios13.0-simulator -isysroot ${SDKROOT}"
|
||||
export CARGO_TARGET_AARCH64_APPLE_IOS_SIM_LINKER=clang
|
||||
export CARGO_TARGET_AARCH64_APPLE_IOS_SIM_RUSTFLAGS="-C link-arg=-target -C link-arg=aarch64-apple-ios13.0-simulator -C link-arg=-isysroot -C link-arg=${SDKROOT}"
|
||||
|
||||
if [ "$CONFIGURATION" = "debug" ]; then
|
||||
mkdir -p ../gen/apple/Externals/arm64/Debug
|
||||
cargo build --target aarch64-apple-ios-sim --lib
|
||||
cp target/aarch64-apple-ios-sim/debug/libapp.a ../gen/apple/Externals/arm64/Debug/libapp.a
|
||||
else
|
||||
mkdir -p ../gen/apple/Externals/arm64/Release
|
||||
cargo build --target aarch64-apple-ios-sim --lib --release
|
||||
cp target/aarch64-apple-ios-sim/release/libapp.a ../gen/apple/Externals/arm64/Release/libapp.a
|
||||
fi
|
||||
name: Build Rust Code
|
||||
basedOnDependencyAnalysis: false
|
||||
outputFiles:
|
||||
- $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a
|
||||
1
mobile-app/src-tauri/gen/schemas/acl-manifests.json
Normal file
1
mobile-app/src-tauri/gen/schemas/capabilities.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
2322
mobile-app/src-tauri/gen/schemas/desktop-schema.json
Normal file
2322
mobile-app/src-tauri/gen/schemas/iOS-schema.json
Normal file
2322
mobile-app/src-tauri/gen/schemas/macOS-schema.json
Normal file
2322
mobile-app/src-tauri/gen/schemas/mobile-schema.json
Normal file
BIN
mobile-app/src-tauri/icons/128x128.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
mobile-app/src-tauri/icons/128x128@2x.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
mobile-app/src-tauri/icons/32x32.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
mobile-app/src-tauri/icons/64x64.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
mobile-app/src-tauri/icons/Square107x107Logo.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
mobile-app/src-tauri/icons/Square142x142Logo.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
mobile-app/src-tauri/icons/Square150x150Logo.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
mobile-app/src-tauri/icons/Square284x284Logo.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
mobile-app/src-tauri/icons/Square30x30Logo.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
mobile-app/src-tauri/icons/Square310x310Logo.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
mobile-app/src-tauri/icons/Square44x44Logo.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
mobile-app/src-tauri/icons/Square71x71Logo.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
mobile-app/src-tauri/icons/Square89x89Logo.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
mobile-app/src-tauri/icons/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
mobile-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
BIN
mobile-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
BIN
mobile-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 10 KiB |
BIN
mobile-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 23 KiB |
BIN
mobile-app/src-tauri/icons/icon.icns
Normal file
BIN
mobile-app/src-tauri/icons/icon.ico
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
mobile-app/src-tauri/icons/icon.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-20x20@1x.png
Normal file
|
After Width: | Height: | Size: 989 B |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-20x20@2x-1.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-20x20@2x.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-20x20@3x.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-29x29@1x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-29x29@2x-1.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-29x29@2x.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-29x29@3x.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-40x40@1x.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-40x40@2x-1.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-40x40@2x.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-40x40@3x.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-512@2x.png
Normal file
|
After Width: | Height: | Size: 172 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-60x60@2x.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-60x60@3x.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-76x76@1x.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-76x76@2x.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
mobile-app/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
9
mobile-app/src-tauri/src/lib.rs
Normal file
@ -0,0 +1,9 @@
|
||||
use tauri::{generate_context, Builder};
|
||||
|
||||
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
||||
pub fn run() {
|
||||
Builder::default()
|
||||
.plugin(tauri_plugin_os::init())
|
||||
.run(generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
||||