Files
clawtap/vite.config.ts
T
kuannnn 9c2158961c feat(pwa): favicon, maskable icon, splash screens, runtime cache, safe-area insets
- Add favicon.ico, favicon-32x32.png, favicon-16x16.png
- Add dedicated maskable-512x512.png with safe-zone padding for Android adaptive icons
- Add iOS splash screens for 5 common device sizes (excluded from SW precache)
- Add NetworkFirst runtime caching for stable API routes (excludes volatile endpoints)
- Add safe-top inset to all view headers for PWA standalone mode
- Bump version to 0.2.2

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:16:38 +08:00

68 lines
1.7 KiB
TypeScript

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import tailwindcss from '@tailwindcss/vite';
import { VitePWA } from 'vite-plugin-pwa';
import path from 'path';
export default defineConfig({
plugins: [
react(),
tailwindcss(),
VitePWA({
strategies: 'injectManifest',
srcDir: 'src',
filename: 'sw.ts',
registerType: 'autoUpdate',
manifest: {
name: 'ClawTap',
short_name: 'ClawTap',
description: 'Control Claude Code from your phone',
theme_color: '#09090b',
background_color: '#09090b',
display: 'standalone',
orientation: 'portrait',
scope: '/',
start_url: '/',
icons: [
{ src: '/pwa-192x192.png', sizes: '192x192', type: 'image/png' },
{ src: '/pwa-512x512.png', sizes: '512x512', type: 'image/png' },
{ src: '/maskable-512x512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
],
shortcuts: [
{
name: 'New Chat',
short_name: 'New',
url: '/?action=newchat',
icons: [{ src: '/pwa-192x192.png', sizes: '192x192' }],
},
],
categories: ['developer-tools', 'productivity'],
},
injectManifest: {
globPatterns: ['**/*.{js,css,html,ico,svg,woff2}', '*.png', 'mascot/*.png'],
},
}),
],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
server: {
proxy: {
'/api': {
target: 'https://localhost:3456',
secure: false,
},
'/ws': {
target: 'wss://localhost:3456',
ws: true,
secure: false,
},
},
},
build: {
outDir: 'dist',
},
});