Skip to content

Commit 9990ab4

Browse files
feat: PWA (#19)
1 parent e61e1a0 commit 9990ab4

File tree

9 files changed

+6420
-2293
lines changed

9 files changed

+6420
-2293
lines changed

index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<meta name="keywords" content="ai, llm, llm-webui, llama.cpp" />
1414
<meta
1515
name="description"
16-
content="A minimal AI chat interface that runs entirely in your browser."
16+
content="Minimal Interface for AI Companion that runs entirely in your browser."
1717
/>
1818
<meta name="author" content="ggml-org" />
1919
<meta name="apple-mobile-web-app-title" content="llama.ui" />
@@ -25,7 +25,7 @@
2525
<meta property="og:title" content="llama.ui - Minimal AI chat interface" />
2626
<meta
2727
property="og:description"
28-
content="A minimal AI chat interface that runs entirely in your browser."
28+
content="Minimal Interface for AI Companion that runs entirely in your browser."
2929
/>
3030
<meta property="og:site_name" content="llama.ui" />
3131

package-lock.json

Lines changed: 6354 additions & 2245 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"typescript": "~5.6.2",
5252
"typescript-eslint": "^8.18.2",
5353
"vite": "^7.1.2",
54+
"vite-plugin-pwa": "^1.0.2",
5455
"vite-plugin-singlefile": "^2.3.0"
5556
},
5657
"prettier": {

public/assets/icon512_maskable.png

64.2 KB
Loading

public/assets/icon512_rounded.png

73.4 KB
Loading

public/assets/site.webmanifest

Lines changed: 0 additions & 21 deletions
This file was deleted.
-15.6 KB
Binary file not shown.
-64.8 KB
Binary file not shown.

vite.config.ts

Lines changed: 63 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,71 @@
11
import react from '@vitejs/plugin-react';
2-
import { defineConfig } from 'vite';
2+
import { defineConfig, loadEnv } from 'vite';
3+
import { VitePWA } from 'vite-plugin-pwa';
34

4-
export default defineConfig({
5-
plugins: [react()],
6-
build: {
7-
rollupOptions: {
8-
output: {
9-
entryFileNames: `assets/[name]-[hash].js`,
10-
chunkFileNames: `assets/[name].js`,
11-
assetFileNames: function (file) {
12-
return file.names.some((name) => name.includes('css'))
13-
? `assets/[name]-[hash].[ext]`
14-
: `assets/[name].[ext]`;
5+
export default defineConfig(({ mode }) => {
6+
const env = loadEnv(mode, false);
7+
8+
return {
9+
plugins: [
10+
react(),
11+
VitePWA({
12+
registerType: 'autoUpdate',
13+
manifest: {
14+
name: 'llama.ui',
15+
short_name: 'llama.ui',
16+
description:
17+
'Minimal Interface for AI Companion that runs entirely in your browser.',
18+
display: 'standalone',
19+
theme_color: '#f8f8f8',
20+
background_color: '#f8f8f8',
21+
icons: [
22+
{
23+
purpose: 'maskable',
24+
sizes: '512x512',
25+
src: 'icon512_maskable.png',
26+
type: 'image/png',
27+
},
28+
{
29+
purpose: 'any',
30+
sizes: '512x512',
31+
src: 'icon512_rounded.png',
32+
type: 'image/png',
33+
},
34+
{ src: 'assets/favicon.ico', sizes: '48x48', type: 'image/x-icon' },
35+
{ src: 'assets/favicon.svg', sizes: 'any', type: 'image/svg+xml' },
36+
],
37+
start_url: env['BASE_URL'],
38+
orientation: 'any',
39+
lang: 'en',
1540
},
16-
manualChunks: {
17-
katex: ['katex'],
18-
'pdfjs-dist': ['pdfjs-dist'],
41+
}),
42+
],
43+
build: {
44+
rollupOptions: {
45+
output: {
46+
entryFileNames: `assets/[name]-[hash].js`,
47+
chunkFileNames: `assets/[name].js`,
48+
assetFileNames: function (file) {
49+
return file.names.some((name) => name.includes('css'))
50+
? `assets/[name]-[hash].[ext]`
51+
: `assets/[name].[ext]`;
52+
},
53+
manualChunks: {
54+
katex: ['katex'],
55+
'pdfjs-dist': ['pdfjs-dist'],
56+
},
1957
},
2058
},
2159
},
22-
},
23-
server: {
24-
proxy: {
25-
'/v1': 'http://localhost:8080',
26-
'/props': 'http://localhost:8080',
27-
},
28-
headers: {
29-
'Cross-Origin-Embedder-Policy': 'require-corp',
30-
'Cross-Origin-Opener-Policy': 'same-origin',
60+
server: {
61+
proxy: {
62+
'/v1': 'http://localhost:8080',
63+
'/props': 'http://localhost:8080',
64+
},
65+
headers: {
66+
'Cross-Origin-Embedder-Policy': 'require-corp',
67+
'Cross-Origin-Opener-Policy': 'same-origin',
68+
},
3169
},
32-
},
70+
};
3371
});

0 commit comments

Comments
 (0)