Upload 5 files
Browse files- .gitattributes +2 -0
- dist/icons/icon-192.png +3 -0
- dist/icons/icon-512.png +3 -0
- dist/index.html +63 -0
- dist/manifest.json +30 -0
- dist/sw.js +71 -0
.gitattributes
CHANGED
|
@@ -38,3 +38,5 @@ dist/assets/js/vue-vendor-C9tKH67p.js.br filter=lfs diff=lfs merge=lfs -text
|
|
| 38 |
dist/favicon.ico filter=lfs diff=lfs merge=lfs -text
|
| 39 |
dist/static/avatar/miobot.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
dist/static/background/default.png filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 38 |
dist/favicon.ico filter=lfs diff=lfs merge=lfs -text
|
| 39 |
dist/static/avatar/miobot.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
dist/static/background/default.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
dist/icons/icon-192.png filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
dist/icons/icon-512.png filter=lfs diff=lfs merge=lfs -text
|
dist/icons/icon-192.png
ADDED
|
|
Git LFS Details
|
dist/icons/icon-512.png
ADDED
|
|
Git LFS Details
|
dist/index.html
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8" />
|
| 5 |
+
<link rel="icon" href="/favicon.ico" />
|
| 6 |
+
<meta
|
| 7 |
+
name="viewport"
|
| 8 |
+
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
|
| 9 |
+
/>
|
| 10 |
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
| 11 |
+
<meta name="renderer" content="webkit" />
|
| 12 |
+
<link rel="dns-prefetch" href="/api" />
|
| 13 |
+
<link rel="preconnect" href="/api" />
|
| 14 |
+
<link rel="manifest" href="/manifest.json" />
|
| 15 |
+
<meta name="theme-color" content="#4f46e5" />
|
| 16 |
+
<meta name="apple-mobile-web-app-capable" content="yes" />
|
| 17 |
+
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
| 18 |
+
<meta name="apple-mobile-web-app-title" content="MioChat" />
|
| 19 |
+
<link rel="apple-touch-icon" href="/favicon.ico" />
|
| 20 |
+
<title>Mio-Chat 加载中...</title>
|
| 21 |
+
<script type="text/javascript">
|
| 22 |
+
(function (c, l, a, r, i, t, y) {
|
| 23 |
+
c[a] =
|
| 24 |
+
c[a] ||
|
| 25 |
+
function () {
|
| 26 |
+
(c[a].q = c[a].q || []).push(arguments);
|
| 27 |
+
};
|
| 28 |
+
t = l.createElement(r);
|
| 29 |
+
t.async = 1;
|
| 30 |
+
t.src = "https://www.clarity.ms/tag/" + i;
|
| 31 |
+
y = l.getElementsByTagName(r)[0];
|
| 32 |
+
y.parentNode.insertBefore(t, y);
|
| 33 |
+
})(window, document, "clarity", "script", "qdc7jeq81j");
|
| 34 |
+
</script>
|
| 35 |
+
<script type="module" crossorigin src="/assets/js/index-4XH0zhJT.js"></script>
|
| 36 |
+
<link rel="modulepreload" crossorigin href="/assets/js/vendor-YBFrpnnw.js">
|
| 37 |
+
<link rel="modulepreload" crossorigin href="/assets/js/vue-vendor-D0VPqAlb.js">
|
| 38 |
+
<link rel="modulepreload" crossorigin href="/assets/js/components-DKTinEtP.js">
|
| 39 |
+
<link rel="modulepreload" crossorigin href="/assets/js/emoji-BVjhSaBE.js">
|
| 40 |
+
<link rel="modulepreload" crossorigin href="/assets/js/views-esxRcLAZ.js">
|
| 41 |
+
<link rel="stylesheet" crossorigin href="/assets/css/vue-vendor-D16_wjd0.css">
|
| 42 |
+
<link rel="stylesheet" crossorigin href="/assets/css/components-Bx885qAH.css">
|
| 43 |
+
<link rel="stylesheet" crossorigin href="/assets/css/views-blOgTL1D.css">
|
| 44 |
+
<link rel="stylesheet" crossorigin href="/assets/css/index-D6wnVaRe.css">
|
| 45 |
+
</head>
|
| 46 |
+
<body>
|
| 47 |
+
<div id="app"></div>
|
| 48 |
+
<script>
|
| 49 |
+
// 检查浏览器是否支持服务工作线程
|
| 50 |
+
if ('serviceWorker' in navigator) {
|
| 51 |
+
window.addEventListener('load', () => {
|
| 52 |
+
navigator.serviceWorker.register('/sw.js')
|
| 53 |
+
.then(registration => {
|
| 54 |
+
console.log('ServiceWorker 注册成功: ', registration.scope);
|
| 55 |
+
})
|
| 56 |
+
.catch(error => {
|
| 57 |
+
console.log('ServiceWorker 注册失败: ', error);
|
| 58 |
+
});
|
| 59 |
+
});
|
| 60 |
+
}
|
| 61 |
+
</script>
|
| 62 |
+
</body>
|
| 63 |
+
</html>
|
dist/manifest.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "蜜柚——MioChat",
|
| 3 |
+
"short_name": "MioChat",
|
| 4 |
+
"description": "AI智能聊天助手",
|
| 5 |
+
"start_url": "/",
|
| 6 |
+
"display": "standalone",
|
| 7 |
+
"background_color": "#ffffff",
|
| 8 |
+
"theme_color": "#4f46e5",
|
| 9 |
+
"icons": [
|
| 10 |
+
{
|
| 11 |
+
"src": "/favicon.ico",
|
| 12 |
+
"sizes": "64x64",
|
| 13 |
+
"type": "image/x-icon"
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"src": "/icons/icon-192.png",
|
| 17 |
+
"sizes": "192x192",
|
| 18 |
+
"type": "image/png",
|
| 19 |
+
"purpose": "any maskable"
|
| 20 |
+
},
|
| 21 |
+
{
|
| 22 |
+
"src": "/icons/icon-512.png",
|
| 23 |
+
"sizes": "512x512",
|
| 24 |
+
"type": "image/png"
|
| 25 |
+
}
|
| 26 |
+
],
|
| 27 |
+
"orientation": "portrait",
|
| 28 |
+
"lang": "zh-CN",
|
| 29 |
+
"prefer_related_applications": false
|
| 30 |
+
}
|
dist/sw.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// 服务工作线程版本,用于更新缓存
|
| 2 |
+
const CACHE_VERSION = 'v1';
|
| 3 |
+
const CACHE_NAME = `miochat-${CACHE_VERSION}`;
|
| 4 |
+
|
| 5 |
+
// 需要缓存的资源
|
| 6 |
+
const urlsToCache = [
|
| 7 |
+
'/',
|
| 8 |
+
'/index.html',
|
| 9 |
+
'/manifest.json',
|
| 10 |
+
'/favicon.ico',
|
| 11 |
+
'/assets/css/index-D6wnVaRe.css',
|
| 12 |
+
'/assets/js/index-4XH0zhJT.js'
|
| 13 |
+
];
|
| 14 |
+
|
| 15 |
+
// 安装服务工作线程,预缓存资源
|
| 16 |
+
self.addEventListener('install', event => {
|
| 17 |
+
event.waitUntil(
|
| 18 |
+
caches.open(CACHE_NAME)
|
| 19 |
+
.then(cache => {
|
| 20 |
+
console.log('打开缓存');
|
| 21 |
+
return cache.addAll(urlsToCache);
|
| 22 |
+
})
|
| 23 |
+
);
|
| 24 |
+
});
|
| 25 |
+
|
| 26 |
+
// 激活服务工作线程,清理旧缓存
|
| 27 |
+
self.addEventListener('activate', event => {
|
| 28 |
+
event.waitUntil(
|
| 29 |
+
caches.keys().then(cacheNames => {
|
| 30 |
+
return Promise.all(
|
| 31 |
+
cacheNames.filter(name => name.startsWith('miochat-') && name !== CACHE_NAME)
|
| 32 |
+
.map(name => caches.delete(name))
|
| 33 |
+
);
|
| 34 |
+
})
|
| 35 |
+
);
|
| 36 |
+
});
|
| 37 |
+
|
| 38 |
+
// 拦截请求,优先使用缓存
|
| 39 |
+
self.addEventListener('fetch', event => {
|
| 40 |
+
event.respondWith(
|
| 41 |
+
caches.match(event.request)
|
| 42 |
+
.then(response => {
|
| 43 |
+
// 如果找到缓存的响应,则返回
|
| 44 |
+
if (response) {
|
| 45 |
+
return response;
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
// 克隆请求,因为请求是流,只能使用一次
|
| 49 |
+
const fetchRequest = event.request.clone();
|
| 50 |
+
|
| 51 |
+
// 发起网络请求
|
| 52 |
+
return fetch(fetchRequest).then(response => {
|
| 53 |
+
// 检查响应是否有效
|
| 54 |
+
if (!response || response.status !== 200 || response.type !== 'basic') {
|
| 55 |
+
return response;
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
// 克隆响应,因为响应是流,只能使用一次
|
| 59 |
+
const responseToCache = response.clone();
|
| 60 |
+
|
| 61 |
+
// 将新响应添加到缓存
|
| 62 |
+
caches.open(CACHE_NAME)
|
| 63 |
+
.then(cache => {
|
| 64 |
+
cache.put(event.request, responseToCache);
|
| 65 |
+
});
|
| 66 |
+
|
| 67 |
+
return response;
|
| 68 |
+
});
|
| 69 |
+
})
|
| 70 |
+
);
|
| 71 |
+
});
|