mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-04-04 07:25:53 +00:00
Compare commits
1 Commits
dev
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12be5311ce |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -71,5 +71,4 @@ resources/wx_send
|
|||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
/pnpm-workspace.yaml
|
/pnpm-workspace.yaml
|
||||||
wechat-research-site
|
wechat-research-site
|
||||||
.codex
|
.codex
|
||||||
weflow-web-offical
|
|
||||||
@@ -136,7 +136,6 @@ const shouldOfferUpdateForTrack = (latestVersion: string, currentVersion: string
|
|||||||
}
|
}
|
||||||
|
|
||||||
let lastAppliedUpdaterChannel: string | null = null
|
let lastAppliedUpdaterChannel: string | null = null
|
||||||
let lastAppliedUpdaterFeedUrl: string | null = null
|
|
||||||
const resetUpdaterProviderCache = () => {
|
const resetUpdaterProviderCache = () => {
|
||||||
const updater = autoUpdater as any
|
const updater = autoUpdater as any
|
||||||
// electron-updater 会缓存 provider;切换 channel 后需清理缓存,避免仍请求旧通道
|
// electron-updater 会缓存 provider;切换 channel 后需清理缓存,避免仍请求旧通道
|
||||||
@@ -147,41 +146,23 @@ const resetUpdaterProviderCache = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const getUpdaterFeedUrlByTrack = (track: 'stable' | 'preview' | 'dev'): string => {
|
|
||||||
const repoBase = 'https://github.com/hicccc77/WeFlow/releases'
|
|
||||||
if (track === 'stable') return `${repoBase}/latest/download`
|
|
||||||
if (track === 'preview') return `${repoBase}/download/nightly-preview`
|
|
||||||
return `${repoBase}/download/nightly-dev`
|
|
||||||
}
|
|
||||||
|
|
||||||
const applyAutoUpdateChannel = (reason: 'startup' | 'settings' = 'startup') => {
|
const applyAutoUpdateChannel = (reason: 'startup' | 'settings' = 'startup') => {
|
||||||
const track = getEffectiveUpdateTrack()
|
const track = getEffectiveUpdateTrack()
|
||||||
const currentTrack = inferUpdateTrackFromVersion(appVersion)
|
const currentTrack = inferUpdateTrackFromVersion(appVersion)
|
||||||
const baseUpdateChannel = track === 'stable' ? 'latest' : track
|
const baseUpdateChannel = track === 'stable' ? 'latest' : track
|
||||||
const nextFeedUrl = getUpdaterFeedUrlByTrack(track)
|
|
||||||
const nextUpdaterChannel =
|
const nextUpdaterChannel =
|
||||||
process.platform === 'win32' && process.arch === 'arm64'
|
process.platform === 'win32' && process.arch === 'arm64'
|
||||||
? `${baseUpdateChannel}-arm64`
|
? `${baseUpdateChannel}-arm64`
|
||||||
: baseUpdateChannel
|
: baseUpdateChannel
|
||||||
if (
|
if (lastAppliedUpdaterChannel && lastAppliedUpdaterChannel !== nextUpdaterChannel) {
|
||||||
(lastAppliedUpdaterChannel && lastAppliedUpdaterChannel !== nextUpdaterChannel) ||
|
|
||||||
(lastAppliedUpdaterFeedUrl && lastAppliedUpdaterFeedUrl !== nextFeedUrl)
|
|
||||||
) {
|
|
||||||
resetUpdaterProviderCache()
|
resetUpdaterProviderCache()
|
||||||
}
|
}
|
||||||
autoUpdater.allowPrerelease = track !== 'stable'
|
autoUpdater.allowPrerelease = track !== 'stable'
|
||||||
// 只要用户当前选择的目标通道与当前安装版本所属通道不同,就允许跨通道更新(含降级)
|
// 只要用户当前选择的目标通道与当前安装版本所属通道不同,就允许跨通道更新(含降级)
|
||||||
autoUpdater.allowDowngrade = track !== currentTrack
|
autoUpdater.allowDowngrade = track !== currentTrack
|
||||||
// 统一走 generic feed,确保 preview/dev 命中各自固定发布页,不受 GitHub provider 的 prerelease 选择影响。
|
|
||||||
autoUpdater.setFeedURL({
|
|
||||||
provider: 'generic',
|
|
||||||
url: nextFeedUrl,
|
|
||||||
channel: nextUpdaterChannel
|
|
||||||
})
|
|
||||||
autoUpdater.channel = nextUpdaterChannel
|
autoUpdater.channel = nextUpdaterChannel
|
||||||
lastAppliedUpdaterChannel = nextUpdaterChannel
|
lastAppliedUpdaterChannel = nextUpdaterChannel
|
||||||
lastAppliedUpdaterFeedUrl = nextFeedUrl
|
console.log(`[Update](${reason}) 当前版本 ${appVersion},当前轨道: ${currentTrack},渠道偏好: ${track},更新通道: ${autoUpdater.channel},allowDowngrade=${autoUpdater.allowDowngrade}`)
|
||||||
console.log(`[Update](${reason}) 当前版本 ${appVersion},当前轨道: ${currentTrack},渠道偏好: ${track},更新通道: ${autoUpdater.channel},feed=${nextFeedUrl},allowDowngrade=${autoUpdater.allowDowngrade}`)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
applyAutoUpdateChannel('startup')
|
applyAutoUpdateChannel('startup')
|
||||||
|
|||||||
56
package-lock.json
generated
56
package-lock.json
generated
@@ -27,7 +27,7 @@
|
|||||||
"react-router-dom": "^7.14.0",
|
"react-router-dom": "^7.14.0",
|
||||||
"react-virtuoso": "^4.18.1",
|
"react-virtuoso": "^4.18.1",
|
||||||
"remark-gfm": "^4.0.1",
|
"remark-gfm": "^4.0.1",
|
||||||
"sherpa-onnx-node": "^1.10.38",
|
"sherpa-onnx-node": "^1.12.35",
|
||||||
"silk-wasm": "^3.7.1",
|
"silk-wasm": "^3.7.1",
|
||||||
"sudo-prompt": "^9.2.1",
|
"sudo-prompt": "^9.2.1",
|
||||||
"wechat-emojis": "^1.0.2",
|
"wechat-emojis": "^1.0.2",
|
||||||
@@ -9087,9 +9087,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sherpa-onnx-darwin-arm64": {
|
"node_modules/sherpa-onnx-darwin-arm64": {
|
||||||
"version": "1.12.34",
|
"version": "1.12.35",
|
||||||
"resolved": "https://registry.npmjs.org/sherpa-onnx-darwin-arm64/-/sherpa-onnx-darwin-arm64-1.12.34.tgz",
|
"resolved": "https://registry.npmjs.org/sherpa-onnx-darwin-arm64/-/sherpa-onnx-darwin-arm64-1.12.35.tgz",
|
||||||
"integrity": "sha512-UMUZW+NAto+Na7wOYzAwwPU7wZtWdkYcoTNQ5RgDPkPW6PO6l+AlaUxoJJR6ehNojoEAfSxSOpQz+GYkDTHgJw==",
|
"integrity": "sha512-WGIABo3ruBXE/7FhAdaVNuM+ZKx0B7jkA+jT22k5TxUcw58nWzgkY6k+CPdM14lfaaXR+jPWdDrM4gXl/bP4RQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -9100,9 +9100,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/sherpa-onnx-darwin-x64": {
|
"node_modules/sherpa-onnx-darwin-x64": {
|
||||||
"version": "1.12.34",
|
"version": "1.12.35",
|
||||||
"resolved": "https://registry.npmjs.org/sherpa-onnx-darwin-x64/-/sherpa-onnx-darwin-x64-1.12.34.tgz",
|
"resolved": "https://registry.npmjs.org/sherpa-onnx-darwin-x64/-/sherpa-onnx-darwin-x64-1.12.35.tgz",
|
||||||
"integrity": "sha512-ni9nAkceaUM7X7OglnipiHhFd0XDN6OaQdOBfR7ePVWIj0FOfJgZsHbFeBK8g3erd2Q1O07isOiidMd1rslTJg==",
|
"integrity": "sha512-hzWQm4CJhGyf3N9Sd1Oobcdz49FauuSCmhrm5vRqydyNsANjs89wATHAuatPAtinpBkgEqacDPrGz+1A/BWpNA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -9113,9 +9113,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/sherpa-onnx-linux-arm64": {
|
"node_modules/sherpa-onnx-linux-arm64": {
|
||||||
"version": "1.12.34",
|
"version": "1.12.35",
|
||||||
"resolved": "https://registry.npmjs.org/sherpa-onnx-linux-arm64/-/sherpa-onnx-linux-arm64-1.12.34.tgz",
|
"resolved": "https://registry.npmjs.org/sherpa-onnx-linux-arm64/-/sherpa-onnx-linux-arm64-1.12.35.tgz",
|
||||||
"integrity": "sha512-0w6x9onElqmDYoIm7+gLHIbNzCZ6+ivKBMkrSMI1iTNVtSV0jLumY5XwW9VgzNeEfnLCK7eqlviMKQPo7M52UA==",
|
"integrity": "sha512-9glJ+dRv/rFWz/61tiKfaR9Gj+8B6sXi7NBgwBAnO/+ygu/WAjBfQRz2+S0YIy1dxqu7ng246TBNnx1M2XaNXA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -9126,9 +9126,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/sherpa-onnx-linux-x64": {
|
"node_modules/sherpa-onnx-linux-x64": {
|
||||||
"version": "1.12.34",
|
"version": "1.12.35",
|
||||||
"resolved": "https://registry.npmjs.org/sherpa-onnx-linux-x64/-/sherpa-onnx-linux-x64-1.12.34.tgz",
|
"resolved": "https://registry.npmjs.org/sherpa-onnx-linux-x64/-/sherpa-onnx-linux-x64-1.12.35.tgz",
|
||||||
"integrity": "sha512-yIf3A+F/hUwPX/YJ0XSaB+KoS4a+sQa3qdQ1Bai046yfCxCRLC8+mDFnSVPf/Ekp3U3jhKLRv4F+68ZXrV2qHw==",
|
"integrity": "sha512-h+v4Yed8T+k1qLlKX2LTGoXP/11ycz7jbqC2f80kDWgz9J8m46mOBa/H20wVkLyQPy1vG1O5iH5Fe5Wh4QlLhw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -9139,23 +9139,23 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/sherpa-onnx-node": {
|
"node_modules/sherpa-onnx-node": {
|
||||||
"version": "1.12.34",
|
"version": "1.12.35",
|
||||||
"resolved": "https://registry.npmjs.org/sherpa-onnx-node/-/sherpa-onnx-node-1.12.34.tgz",
|
"resolved": "https://registry.npmjs.org/sherpa-onnx-node/-/sherpa-onnx-node-1.12.35.tgz",
|
||||||
"integrity": "sha512-Ov3nqqSJBiW45KMfV32smo3NNqYO1oiB9nUR7sbRpRunoZZZrxbFg8YkH+pZ8VlcErDyJVSLk/oKtqwHGc13lQ==",
|
"integrity": "sha512-RHCgV+9fos/ZxP0MsIL7JPU9K3YHnIDmwtX674ChQZY6DLVaIQaju+J3hDqzRu1R3agnDg9WDf01zsT46NC7SQ==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"sherpa-onnx-darwin-arm64": "^1.12.34",
|
"sherpa-onnx-darwin-arm64": "^1.12.35",
|
||||||
"sherpa-onnx-darwin-x64": "^1.12.34",
|
"sherpa-onnx-darwin-x64": "^1.12.35",
|
||||||
"sherpa-onnx-linux-arm64": "^1.12.34",
|
"sherpa-onnx-linux-arm64": "^1.12.35",
|
||||||
"sherpa-onnx-linux-x64": "^1.12.34",
|
"sherpa-onnx-linux-x64": "^1.12.35",
|
||||||
"sherpa-onnx-win-ia32": "^1.12.34",
|
"sherpa-onnx-win-ia32": "^1.12.35",
|
||||||
"sherpa-onnx-win-x64": "^1.12.34"
|
"sherpa-onnx-win-x64": "^1.12.35"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sherpa-onnx-win-ia32": {
|
"node_modules/sherpa-onnx-win-ia32": {
|
||||||
"version": "1.12.34",
|
"version": "1.12.35",
|
||||||
"resolved": "https://registry.npmjs.org/sherpa-onnx-win-ia32/-/sherpa-onnx-win-ia32-1.12.34.tgz",
|
"resolved": "https://registry.npmjs.org/sherpa-onnx-win-ia32/-/sherpa-onnx-win-ia32-1.12.35.tgz",
|
||||||
"integrity": "sha512-AAhK2dvx1zSYLae7NTmxnXmD8bTWHcd1Rr1MQRnDAAGAFW0rnZ7WSmJwsoZ4uT2K+d4Kf4vlbSxl8k8qzWkq6g==",
|
"integrity": "sha512-6H6BSdXXWtz92AuvOmr4w/QvCofxXbfbNKT7jCxdE7Nd4AvinLJxT02vbnL6T54vuXd9chu0QvQrDl1tuRphAA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@@ -9166,9 +9166,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/sherpa-onnx-win-x64": {
|
"node_modules/sherpa-onnx-win-x64": {
|
||||||
"version": "1.12.34",
|
"version": "1.12.35",
|
||||||
"resolved": "https://registry.npmjs.org/sherpa-onnx-win-x64/-/sherpa-onnx-win-x64-1.12.34.tgz",
|
"resolved": "https://registry.npmjs.org/sherpa-onnx-win-x64/-/sherpa-onnx-win-x64-1.12.35.tgz",
|
||||||
"integrity": "sha512-OjQwOfoKIKL1F/i1hjV8918FYZFVwHxrSnk4/yvG1GLzabzifzGcKcj5SjGnIJSH3Zj233wZStTLTrBH+8+BfA==",
|
"integrity": "sha512-+GLrxwaEvpJAO0KZgKulfd4qUR089MD+TjE5jVSugMTq4Eh/R/TpPPqYQGibRZVPHW7Se1ABfHGapZQoFMHH5Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
"react-router-dom": "^7.14.0",
|
"react-router-dom": "^7.14.0",
|
||||||
"react-virtuoso": "^4.18.1",
|
"react-virtuoso": "^4.18.1",
|
||||||
"remark-gfm": "^4.0.1",
|
"remark-gfm": "^4.0.1",
|
||||||
"sherpa-onnx-node": "^1.10.38",
|
"sherpa-onnx-node": "^1.12.35",
|
||||||
"silk-wasm": "^3.7.1",
|
"silk-wasm": "^3.7.1",
|
||||||
"sudo-prompt": "^9.2.1",
|
"sudo-prompt": "^9.2.1",
|
||||||
"wechat-emojis": "^1.0.2",
|
"wechat-emojis": "^1.0.2",
|
||||||
|
|||||||
50
src/App.tsx
50
src/App.tsx
@@ -591,13 +591,9 @@ function App() {
|
|||||||
<div className="agreement-notice">
|
<div className="agreement-notice">
|
||||||
<strong>这是免费软件,如果你是付费购买的话请骂死那个骗子。</strong>
|
<strong>这是免费软件,如果你是付费购买的话请骂死那个骗子。</strong>
|
||||||
<span className="agreement-notice-link">
|
<span className="agreement-notice-link">
|
||||||
官方网站:
|
我们唯一的官方网站:
|
||||||
<a href="https://weflow.top" target="_blank" rel="noreferrer">
|
|
||||||
https://weflow.top
|
|
||||||
</a>
|
|
||||||
·
|
|
||||||
<a href="https://github.com/hicccc77/WeFlow" target="_blank" rel="noreferrer">
|
<a href="https://github.com/hicccc77/WeFlow" target="_blank" rel="noreferrer">
|
||||||
GitHub 仓库
|
https://github.com/hicccc77/WeFlow
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -612,7 +608,7 @@ function App() {
|
|||||||
<p>因使用本软件产生的任何直接或间接损失,开发者不承担任何责任。请确保你的使用行为符合当地法律法规。</p>
|
<p>因使用本软件产生的任何直接或间接损失,开发者不承担任何责任。请确保你的使用行为符合当地法律法规。</p>
|
||||||
|
|
||||||
<h4>4. 隐私保护</h4>
|
<h4>4. 隐私保护</h4>
|
||||||
<p>本软件不收集任何用户隐私数据。软件更新检测仅获取版本信息,不涉及任何个人隐私。</p>
|
<p>本软件不收集任何用户数据。软件更新检测仅获取版本信息,不涉及任何个人隐私。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="agreement-footer">
|
<div className="agreement-footer">
|
||||||
@@ -670,30 +666,30 @@ function App() {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{showWaylandWarning && (
|
{showWaylandWarning && (
|
||||||
<div className="agreement-overlay">
|
<div className="agreement-overlay">
|
||||||
<div className="agreement-modal">
|
<div className="agreement-modal">
|
||||||
<div className="agreement-header">
|
<div className="agreement-header">
|
||||||
<Shield size={32} />
|
<Shield size={32} />
|
||||||
<h2>环境兼容性提示 (Wayland)</h2>
|
<h2>环境兼容性提示 (Wayland)</h2>
|
||||||
</div>
|
|
||||||
<div className="agreement-content">
|
|
||||||
<div className="agreement-text">
|
|
||||||
<p>检测到您当前正在使用 <strong>Wayland</strong> 显示服务器。</p>
|
|
||||||
<p>在 Wayland 环境下,出于系统级的安全与设计机制,<strong>应用程序无法直接控制新弹出窗口的位置</strong>。</p>
|
|
||||||
<p>这可能导致某些独立窗口(如消息通知、图片查看器等)出现位置随机、或不受控制的情况。这是底层机制导致的,对此我们无能为力。</p>
|
|
||||||
<br />
|
|
||||||
<p>如果您觉得窗口位置异常严重影响了使用体验,建议尝试:</p>
|
|
||||||
<p>1. 在系统登录界面,将会话切换回 <strong>X11 (Xorg)</strong> 模式。</p>
|
|
||||||
<p>2. 修改您的桌面管理器 (WM/DE) 配置,强制指定该应用程序的窗口规则。</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div className="agreement-content">
|
||||||
<div className="agreement-footer">
|
<div className="agreement-text">
|
||||||
<div className="agreement-actions">
|
<p>检测到您当前正在使用 <strong>Wayland</strong> 显示服务器。</p>
|
||||||
<button className="btn btn-primary" onClick={handleDismissWaylandWarning}>我知道了,不再提示</button>
|
<p>在 Wayland 环境下,出于系统级的安全与设计机制,<strong>应用程序无法直接控制新弹出窗口的位置</strong>。</p>
|
||||||
|
<p>这可能导致某些独立窗口(如消息通知、图片查看器等)出现位置随机、或不受控制的情况。这是底层机制导致的,对此我们无能为力。</p>
|
||||||
|
<br />
|
||||||
|
<p>如果您觉得窗口位置异常严重影响了使用体验,建议尝试:</p>
|
||||||
|
<p>1. 在系统登录界面,将会话切换回 <strong>X11 (Xorg)</strong> 模式。</p>
|
||||||
|
<p>2. 修改您的桌面管理器 (WM/DE) 配置,强制指定该应用程序的窗口规则。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="agreement-footer">
|
||||||
|
<div className="agreement-actions">
|
||||||
|
<button className="btn btn-primary" onClick={handleDismissWaylandWarning}>我知道了,不再提示</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* 更新提示对话框 */}
|
{/* 更新提示对话框 */}
|
||||||
|
|||||||
@@ -2508,9 +2508,7 @@ function SettingsPage({ onClose }: SettingsPageProps = {}) {
|
|||||||
<div className="about-footer">
|
<div className="about-footer">
|
||||||
<p className="about-desc">微信聊天记录分析工具</p>
|
<p className="about-desc">微信聊天记录分析工具</p>
|
||||||
<div className="about-links">
|
<div className="about-links">
|
||||||
<a href="#" onClick={(e) => { e.preventDefault(); window.electronAPI.shell.openExternal('https://weflow.top') }}>官网</a>
|
<a href="#" onClick={(e) => { e.preventDefault(); window.electronAPI.shell.openExternal('https://github.com/hicccc77/WeFlow') }}>官网</a>
|
||||||
<span>·</span>
|
|
||||||
<a href="#" onClick={(e) => { e.preventDefault(); window.electronAPI.shell.openExternal('https://github.com/hicccc77/WeFlow') }}>GitHub 仓库</a>
|
|
||||||
<span>·</span>
|
<span>·</span>
|
||||||
<a href="#" onClick={(e) => { e.preventDefault(); window.electronAPI.shell.openExternal('https://chatlab.fun') }}>ChatLab</a>
|
<a href="#" onClick={(e) => { e.preventDefault(); window.electronAPI.shell.openExternal('https://chatlab.fun') }}>ChatLab</a>
|
||||||
<span>·</span>
|
<span>·</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user