diff --git a/src/miniapp-market-web/README.md b/src/miniapp-market-web/README.md
index 670f7ba9b2..3a587f5e2b 100644
--- a/src/miniapp-market-web/README.md
+++ b/src/miniapp-market-web/README.md
@@ -41,9 +41,20 @@
| `src/styles.css` | 响应式布局与视觉样式 |
| `src/api.test.ts` | API 客户端契约测试 |
| `vite.config.ts` | `/miniapp/` base、本地端口和 API proxy |
-| `public/` | 网页静态资源 |
+| `public/` | 网页静态资源;见下方"站点图标" |
| `dist/` | 本地构建产物;由构建生成,不手工修改、不单独部署 |
+### 站点图标
+
+`public/favicon.svg` 是唯一的图标源文件,画的是 BitFun 立方体标志的简化
+等轴测版本(16px 下仍然可辨认)。`favicon.ico`、`apple-touch-icon.png`、
+`icon-192.png`、`icon-512.png` 都是按同一份几何数据栅格化出来的产物:小尺寸
+去掉了面与面之间的缝隙并放大立方体,否则 16px 下三个面会糊成一团。
+
+改图标时先改 `favicon.svg`,再重新生成这几个 PNG/ICO,保证两者不会漂移。
+`index.html` 里的 `` 必须带 `/miniapp/` 前缀——站点不在
+域名根目录下,浏览器默认探测的 `/favicon.ico` 会被 Nginx 挡在 404。
+
BitFun 桌面端内嵌的原生市场 Scene 不在这里。它位于
`src/web-ui/src/app/scenes/miniapps/`,通过
`src/apps/desktop/src/api/miniapp_market_api.rs` 访问市场。
diff --git a/src/miniapp-market-web/index.html b/src/miniapp-market-web/index.html
index 5afcd46773..2b2f2c572e 100644
--- a/src/miniapp-market-web/index.html
+++ b/src/miniapp-market-web/index.html
@@ -5,12 +5,16 @@
+
+
+
+
diff --git a/src/miniapp-market-web/public/apple-touch-icon.png b/src/miniapp-market-web/public/apple-touch-icon.png
new file mode 100644
index 0000000000..0df812e6e5
Binary files /dev/null and b/src/miniapp-market-web/public/apple-touch-icon.png differ
diff --git a/src/miniapp-market-web/public/favicon.ico b/src/miniapp-market-web/public/favicon.ico
new file mode 100644
index 0000000000..8b9d2b2e0e
Binary files /dev/null and b/src/miniapp-market-web/public/favicon.ico differ
diff --git a/src/miniapp-market-web/public/favicon.svg b/src/miniapp-market-web/public/favicon.svg
new file mode 100644
index 0000000000..b50c576845
--- /dev/null
+++ b/src/miniapp-market-web/public/favicon.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/miniapp-market-web/public/icon-192.png b/src/miniapp-market-web/public/icon-192.png
new file mode 100644
index 0000000000..058dabb4e7
Binary files /dev/null and b/src/miniapp-market-web/public/icon-192.png differ
diff --git a/src/miniapp-market-web/public/icon-512.png b/src/miniapp-market-web/public/icon-512.png
new file mode 100644
index 0000000000..dfec5856da
Binary files /dev/null and b/src/miniapp-market-web/public/icon-512.png differ
diff --git a/src/miniapp-market-web/public/site.webmanifest b/src/miniapp-market-web/public/site.webmanifest
new file mode 100644
index 0000000000..ec7854938e
--- /dev/null
+++ b/src/miniapp-market-web/public/site.webmanifest
@@ -0,0 +1,14 @@
+{
+ "name": "BitFun MiniApp Market",
+ "short_name": "MiniApp Market",
+ "start_url": "/miniapp/",
+ "scope": "/miniapp/",
+ "display": "standalone",
+ "background_color": "#0e0e10",
+ "theme_color": "#0e0e10",
+ "icons": [
+ { "src": "/miniapp/icon-192.png", "sizes": "192x192", "type": "image/png" },
+ { "src": "/miniapp/icon-512.png", "sizes": "512x512", "type": "image/png" },
+ { "src": "/miniapp/favicon.svg", "sizes": "any", "type": "image/svg+xml" }
+ ]
+}
diff --git a/src/miniapp-market-web/src/App.tsx b/src/miniapp-market-web/src/App.tsx
index 062b64adc9..17ef754a89 100644
--- a/src/miniapp-market-web/src/App.tsx
+++ b/src/miniapp-market-web/src/App.tsx
@@ -606,7 +606,7 @@ function AppCard({
{categoryLabel(app.category, t)}
- BitFun {app.minBitfunVersion}+
+ v{app.latestRelease}
@@ -621,16 +621,22 @@ function AppCard({
{localized.description}
-
+
0 ? 'fill' : 'regular'} aria-hidden="true" />
{app.ratingAverage.toFixed(1)}
{app.ratingCount}
+ {t('ratingLabel')}
+
+
+
+ {formatCompactNumber(app.favoriteCount, locale)}
+ {t('favoritesLabel')}
-
+
{formatCompactNumber(app.downloadCount, locale)}
+ {t('downloadsLabel')}
- v{app.latestRelease}
@@ -745,6 +751,7 @@ function DetailPage({
>
{app.isFavorited ? t('favorited') : t('favorite')}
+ {formatCompactNumber(app.favoriteCount, locale)}
{owner && webSubmissionsEnabled && (