### 详细变更:
1. **文档与配置**:更新AGENTS.md添加命令超时约束,升级Rive依赖至0.14.7并替换平台插件引用
2. **UI优化**:重构AppInfo页面布局、移除图表冗余配置、锁定部分系统设置项
3. **功能增强**:
- 新增工具面板拖拽状态管理与介绍弹窗
- 新增进度页面编辑/重排/清空用户进度功能
- 新增摇一摇路由作用域拦截逻辑
4. **体验优化**:
- 统一外部链接跳转弹窗,添加文件打开确认逻辑
- 修复设备卡片IP溢出、Android权限声明问题
- 后台任务初始化增加协议校验
5. **代码重构**:拆分工具面板配置、拖拽逻辑与动画参数,优化状态管理代码
6. **工具脚本**:新增协议文件上传脚本
487 lines
18 KiB
HTML
487 lines
18 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>开发团队 - 闲言APP</title>
|
||
<style>
|
||
:root {
|
||
--primary: #6C5CE7;
|
||
--primary-light: #A29BFE;
|
||
--primary-dark: #5A4BD1;
|
||
--bg: #F2F2F7;
|
||
--bg-card: #FFFFFF;
|
||
--text: #1C1C1E;
|
||
--text-secondary: #8E8E93;
|
||
--text-tertiary: #AEAEB2;
|
||
--border: #E5E5EA;
|
||
--highlight-bg: rgba(108, 92, 231, 0.08);
|
||
--shadow-sm: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.06);
|
||
--shadow-md: 0 4px 12px rgba(0,0,0,0.08);
|
||
--radius-sm: 8px;
|
||
--radius-md: 12px;
|
||
--radius-lg: 16px;
|
||
--radius-xl: 20px;
|
||
--font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||
}
|
||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||
body {
|
||
font-family: var(--font-family);
|
||
background: var(--bg);
|
||
color: var(--text);
|
||
line-height: 1.8;
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
.lang-switch {
|
||
position: fixed;
|
||
top: 16px;
|
||
right: 16px;
|
||
z-index: 100;
|
||
display: flex;
|
||
background: rgba(255,255,255,0.85);
|
||
backdrop-filter: blur(20px);
|
||
-webkit-backdrop-filter: blur(20px);
|
||
border-radius: 20px;
|
||
padding: 3px;
|
||
box-shadow: 0 2px 12px rgba(0,0,0,0.1);
|
||
border: 0.5px solid rgba(108, 92, 231, 0.15);
|
||
}
|
||
.lang-btn {
|
||
padding: 6px 14px;
|
||
border: none;
|
||
background: transparent;
|
||
color: var(--text-secondary);
|
||
font-size: 13px;
|
||
font-weight: 500;
|
||
cursor: pointer;
|
||
border-radius: 17px;
|
||
transition: all 0.25s ease;
|
||
font-family: var(--font-family);
|
||
}
|
||
.lang-btn.active {
|
||
background: var(--primary);
|
||
color: #FFF;
|
||
box-shadow: 0 2px 8px rgba(108, 92, 231, 0.3);
|
||
}
|
||
.lang-btn:hover:not(.active) {
|
||
background: rgba(108, 92, 231, 0.08);
|
||
color: var(--primary);
|
||
}
|
||
.header {
|
||
background: linear-gradient(135deg, #6C5CE7 0%, #5A4BD1 50%, #4A3DB5 100%);
|
||
padding: 48px 20px 44px;
|
||
text-align: center;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
.header::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: -50%;
|
||
left: -50%;
|
||
width: 200%;
|
||
height: 200%;
|
||
background: radial-gradient(circle at 30% 50%, rgba(255,255,255,0.1) 0%, transparent 50%);
|
||
pointer-events: none;
|
||
}
|
||
.header::after {
|
||
content: '';
|
||
position: absolute;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
height: 32px;
|
||
background: var(--bg);
|
||
border-radius: var(--radius-xl) var(--radius-xl) 0 0;
|
||
}
|
||
.header-icon { font-size: 40px; margin-bottom: 10px; display: block; }
|
||
.header h1 { color: #FFF; font-size: 24px; font-weight: 700; letter-spacing: -0.3px; margin-bottom: 4px; }
|
||
.header p { color: rgba(255,255,255,0.75); font-size: 14px; }
|
||
.container { max-width: 800px; margin: 0 auto; padding: 20px 16px 40px; }
|
||
.content-card {
|
||
background: var(--bg-card);
|
||
border-radius: var(--radius-lg);
|
||
padding: 28px 24px;
|
||
margin-bottom: 20px;
|
||
box-shadow: var(--shadow-sm);
|
||
}
|
||
h1 {
|
||
font-size: 22px;
|
||
font-weight: 700;
|
||
color: var(--text);
|
||
margin: 28px 0 12px;
|
||
}
|
||
h2 {
|
||
font-size: 20px;
|
||
font-weight: 700;
|
||
color: var(--text);
|
||
margin: 32px 0 16px;
|
||
padding-bottom: 10px;
|
||
border-bottom: 2px solid var(--primary);
|
||
display: inline-block;
|
||
}
|
||
h3 {
|
||
font-size: 17px;
|
||
font-weight: 600;
|
||
color: var(--text);
|
||
margin: 24px 0 12px;
|
||
}
|
||
p {
|
||
font-size: 15px;
|
||
color: var(--text);
|
||
margin-bottom: 12px;
|
||
line-height: 1.8;
|
||
}
|
||
p.note {
|
||
background: rgba(108, 92, 231, 0.06);
|
||
border-left: 3px solid var(--primary);
|
||
padding: 12px 16px;
|
||
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
||
margin: 12px 0;
|
||
}
|
||
.highlight {
|
||
color: var(--primary);
|
||
font-weight: 600;
|
||
background: var(--highlight-bg);
|
||
padding: 1px 6px;
|
||
border-radius: 4px;
|
||
}
|
||
.copyright-cert {
|
||
margin: 20px 0;
|
||
text-align: center;
|
||
padding: 20px;
|
||
background: rgba(108, 92, 231, 0.04);
|
||
border-radius: var(--radius-md);
|
||
border: 1px solid rgba(108, 92, 231, 0.12);
|
||
}
|
||
.cert-image {
|
||
max-width: 100%;
|
||
max-height: 500px;
|
||
border-radius: var(--radius-sm);
|
||
box-shadow: var(--shadow-md);
|
||
}
|
||
.cert-caption {
|
||
margin-top: 12px;
|
||
font-size: 14px;
|
||
color: var(--text-secondary);
|
||
font-weight: 500;
|
||
}
|
||
ul {
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 0 0 16px;
|
||
}
|
||
li {
|
||
font-size: 15px;
|
||
color: var(--text);
|
||
padding: 6px 0 6px 20px;
|
||
position: relative;
|
||
line-height: 1.7;
|
||
}
|
||
li::before {
|
||
content: '\2022';
|
||
color: var(--primary);
|
||
font-weight: 700;
|
||
position: absolute;
|
||
left: 4px;
|
||
top: 6px;
|
||
}
|
||
table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin: 16px 0;
|
||
font-size: 14px;
|
||
}
|
||
th {
|
||
background: var(--primary);
|
||
color: #FFF;
|
||
padding: 10px 12px;
|
||
text-align: left;
|
||
font-weight: 600;
|
||
font-size: 13px;
|
||
}
|
||
td {
|
||
padding: 10px 12px;
|
||
border-bottom: 0.5px solid var(--border);
|
||
line-height: 1.6;
|
||
}
|
||
tr:hover td {
|
||
background: rgba(108, 92, 231, 0.04);
|
||
}
|
||
.back-link {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 6px;
|
||
color: var(--primary);
|
||
text-decoration: none;
|
||
font-size: 15px;
|
||
font-weight: 500;
|
||
padding: 12px 0;
|
||
transition: opacity 0.2s;
|
||
}
|
||
.back-link:hover { opacity: 0.7; }
|
||
.footer {
|
||
text-align: center;
|
||
padding: 24px 20px 40px;
|
||
color: var(--text-secondary);
|
||
font-size: 13px;
|
||
line-height: 1.8;
|
||
border-top: 0.5px solid var(--border);
|
||
margin-top: 20px;
|
||
}
|
||
.footer .company { font-weight: 500; color: var(--text); margin-bottom: 4px; }
|
||
@media (max-width: 640px) {
|
||
.lang-switch { top: 10px; right: 10px; }
|
||
.lang-btn { padding: 5px 10px; font-size: 12px; }
|
||
.header { padding: 40px 16px 36px; }
|
||
.header h1 { font-size: 20px; }
|
||
.container { padding: 16px 12px 32px; }
|
||
.content-card { padding: 20px 16px; }
|
||
h2 { font-size: 18px; }
|
||
h3 { font-size: 16px; }
|
||
p, li { font-size: 14px; }
|
||
table { font-size: 12px; }
|
||
th, td { padding: 8px 6px; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="lang-switch">
|
||
<button class="lang-btn active" onclick="switchLang('zh')" id="btn-zh">中文</button>
|
||
<button class="lang-btn" onclick="switchLang('en')" id="btn-en">EN</button>
|
||
</div>
|
||
|
||
<div class="header">
|
||
<span class="header-icon">💻</span>
|
||
<h1 id="header-title">开发团队</h1>
|
||
<p id="header-subtitle">开发团队信息与联系方式</p>
|
||
</div>
|
||
|
||
<div class="container">
|
||
<div class="content-card">
|
||
<div id="content-zh" class="lang-content">
|
||
<p><strong>闲言APP</strong> 开发团队</p>
|
||
<p>更新日期:2026年5月20日</p>
|
||
<h2>一、团队介绍</h2>
|
||
<p><strong>闲言APP</strong>由微风暴工作室独立开发运营。我们是一支热爱文字、追求极致体验的团队,致力于用技术让文字阅读更纯粹。</p>
|
||
<h2>二、团队信息</h2>
|
||
<ul>
|
||
<li>工作室全称:**弥勒市朋普镇微风暴网络科技工作室**</li>
|
||
<li>统一社会信用代码:92532526MA6PCX153W</li>
|
||
<li>品牌名称:微风暴工作室</li>
|
||
<li>负责人:李先生</li>
|
||
</ul>
|
||
<h2>三、联系方式</h2>
|
||
<h3>3.1 商务合作</h3>
|
||
<ul>
|
||
<li>邮箱:2821981550@qq.com</li>
|
||
</ul>
|
||
<h3>3.2 用户反馈</h3>
|
||
<ul>
|
||
<li>应用内反馈:我的 → 关于 → 用户反馈</li>
|
||
<li>邮箱:2821981550@qq.com</li>
|
||
</ul>
|
||
<h3>3.3 其他邮箱</h3>
|
||
<ul>
|
||
<li>gg@0gg.cc</li>
|
||
<li>ad@avefs.com</li>
|
||
<li>2821981550@qq.com</li>
|
||
<li>2572560133@qq.com</li>
|
||
</ul>
|
||
<h3>3.4 通信地址</h3>
|
||
<ul>
|
||
<li>云南省昆明市西山区滇池度假区(碧鸡街道车家壁513号)</li>
|
||
</ul>
|
||
<h2>四、应用信息</h2>
|
||
<ul>
|
||
<li>应用名称:闲言</li>
|
||
<li>英文名称:Xianyan</li>
|
||
<li>应用标语:文字阅读更纯粹</li>
|
||
<li>应用描述:一款优雅的句子阅读与卡片创作应用,用文字点亮生活的每一刻</li>
|
||
<li>软件著作权登记号:2020SR0421982</li>
|
||
</ul>
|
||
<div class="copyright-cert">
|
||
<img src="rz.png" alt="软件著作权登记证书" class="cert-image" />
|
||
<p class="cert-caption">软件著作权登记证书</p>
|
||
</div>
|
||
<h2>五、平台支持</h2>
|
||
<p><strong>闲言APP</strong>致力于为用户提供跨平台一致的使用体验,当前支持以下平台:</p>
|
||
<ul>
|
||
<li>📱 Android — 安卓手机和平板</li>
|
||
<li>🍎 iOS — iPhone 和 iPad</li>
|
||
<li>🌐 鸿蒙 — HarmonyOS 设备</li>
|
||
<li>💻 macOS — Mac 电脑</li>
|
||
<li>🖥️ Windows — Windows 电脑</li>
|
||
<li>🐧 Linux — Linux 电脑</li>
|
||
<li>🌍 Web — 网页浏览器</li>
|
||
</ul>
|
||
<h2>六、技术栈</h2>
|
||
<ul>
|
||
<li>框架:Flutter</li>
|
||
<li>状态管理:Riverpod</li>
|
||
<li>路由:GoRouter</li>
|
||
<li>本地存储:SQLite + SharedPreferences</li>
|
||
<li>网络通信:Dio</li>
|
||
<li>UI风格:iOS Cupertino + 液态玻璃效果</li>
|
||
</ul>
|
||
<h2>七、开源致谢</h2>
|
||
<p><strong>闲言APP</strong>的开发离不开开源社区的支持,感谢所有开源项目的贡献者。详细的开源许可信息请查看:关于 → 开发者 → 开源许可。</p>
|
||
<h2>八、法律声明</h2>
|
||
<ul>
|
||
<li>本应用由**弥勒市朋普镇微风暴网络科技工作室**依法开发运营</li>
|
||
<li>本应用遵守<span class="highlight">中华人民共和国相关法律法规</span></li>
|
||
<li>本应用的<span class="highlight">知识产权</span>归**弥勒市朋普镇微风暴网络科技工作室**所有</li>
|
||
<li>未经授权,任何人不得复制、修改、传播本应用的任何部分</li>
|
||
</ul>
|
||
<h2>九、隐私与安全</h2>
|
||
<p>我们高度重视用户隐私和数据安全:</p>
|
||
<ul>
|
||
<li>遵循<span class="highlight">最小必要原则</span>收集信息</li>
|
||
<li>数据本地存储优先</li>
|
||
<li>传输过程<span class="highlight">端到端加密</span></li>
|
||
<li>定期安全评估与漏洞修复</li>
|
||
<li>详细的隐私政策请参阅《隐私政策》</li>
|
||
</ul>
|
||
<h2>十、加入我们</h2>
|
||
<p>如果你也热爱文字和技术,欢迎加入我们!</p>
|
||
<ul>
|
||
<li>邮箱:2821981550@qq.com</li>
|
||
<li>地址:云南省昆明市</li>
|
||
</ul>
|
||
<p>© 2026 <strong>弥勒市朋普镇微风暴网络科技工作室</strong></p>
|
||
</div>
|
||
<div id="content-en" class="lang-content" style="display:none;">
|
||
<p><strong>Xianyan APP</strong> — Development Team</p>
|
||
<p>Version: V6.5</p>
|
||
<p>Updated: May 20, 2026</p>
|
||
<h2>I. About the Team</h2>
|
||
<p><strong>Mile City Pengpu Town Weifengbao Network Technology Studio</strong> is a small team passionate about technology and literature. We are committed to creating a pure, elegant reading and creation space for users.</p>
|
||
<p>Unified Social Credit Code: 92532526MA6PCX153W</p>
|
||
<h2>II. Our Mission</h2>
|
||
<ul>
|
||
<li>Make reading more pure</li>
|
||
<li>Make creation simpler</li>
|
||
<li>Make sharing more beautiful</li>
|
||
<li>Protect user privacy with technology</li>
|
||
</ul>
|
||
<h2>III. Technical Architecture</h2>
|
||
<h3>3.1 Development Framework</h3>
|
||
<ul>
|
||
<li>Built with Flutter for cross-platform support</li>
|
||
<li>Local-first data storage</li>
|
||
<li>Cloud sync support</li>
|
||
</ul>
|
||
<h3>3.2 Data Storage</h3>
|
||
<ul>
|
||
<li>User data is stored locally on the device</li>
|
||
<li>Cloud sync is optional and encrypted</li>
|
||
<li>We do not access your private data</li>
|
||
</ul>
|
||
<h3>3.3 Open Source</h3>
|
||
<ul>
|
||
<li>We actively use and contribute to open-source projects</li>
|
||
<li>Some components of the app are based on open-source projects</li>
|
||
<li>We respect and comply with open-source licenses</li>
|
||
</ul>
|
||
<h3>3.4 Mailing Address</h3>
|
||
<ul>
|
||
<li>Dianchi Resort Area, Xishan District, Kunming, Yunnan Province, China (Bijie Subdistrict, Chejiabi No. 513)</li>
|
||
</ul>
|
||
<h2>IV. App Information</h2>
|
||
<ul>
|
||
<li>App Name: Xianyan</li>
|
||
<li>English Name: Xianyan</li>
|
||
<li>App Tagline: Pure reading through words</li>
|
||
<li>App Description: An elegant sentence reading and card creation app that illuminates every moment of your life with words</li>
|
||
<li>Software Copyright Registration Number: 2020SR0421982</li>
|
||
</ul>
|
||
<div class="copyright-cert">
|
||
<img src="rz.png" alt="软件著作权登记证书" class="cert-image" />
|
||
<p class="cert-caption">Software Copyright Registration Certificate</p>
|
||
</div>
|
||
<h2>V. Platform Support</h2>
|
||
<ul>
|
||
<li>iOS 12.0+</li>
|
||
<li>Android 6.0+</li>
|
||
<li>iPadOS 13.0+</li>
|
||
<li>macOS 11.0+</li>
|
||
<li>Web (Chrome, Safari, Firefox, Edge)</li>
|
||
</ul>
|
||
<h2>VI. Contact Us</h2>
|
||
<ul>
|
||
<li>Email: 2821981550@qq.com</li>
|
||
<li>Mailing address: Dianchi Resort Area, Xishan District, Kunming, Yunnan Province, China (Bijie Subdistrict, Chejiabi No. 513)</li>
|
||
</ul>
|
||
<h2>VII. Join Us</h2>
|
||
<p>If you also love words and technology, welcome to join us!</p>
|
||
<ul>
|
||
<li>Email: 2821981550@qq.com</li>
|
||
<li>Address: Kunming, Yunnan Province, China</li>
|
||
</ul>
|
||
<p>© 2026 <strong>Mile City Pengpu Town Weifengbao Network Technology Studio</strong></p>
|
||
</div>
|
||
</div>
|
||
|
||
<a href="index.html" class="back-link" id="back-link">← 返回协议列表</a>
|
||
</div>
|
||
|
||
<div class="footer" id="footer">
|
||
<div class="company" id="footer-company">弥勒市朋普镇微风暴网络科技工作室</div>
|
||
<div id="footer-contact">📧 2821981550@qq.com | 📧 2572560133@qq.com | 📍 云南省昆明市西山区滇池度假区(碧鸡街道车家壁513号)</div>
|
||
<div style="margin-top: 8px;" id="footer-credit">统一社会信用代码:92532526MA6PCX153W</div>
|
||
<div style="margin-top: 4px;" id="footer-icp">滇ICP备2022000863号-18A</div>
|
||
<div style="margin-top: 4px; color: var(--text-tertiary);">© 2026 Xianyan. All rights reserved.</div>
|
||
</div>
|
||
|
||
<script>
|
||
const DATA = {
|
||
zh: {
|
||
title: '开发团队',
|
||
subtitle: '开发团队信息与联系方式',
|
||
backLink: '← 返回协议列表',
|
||
company: '弥勒市朋普镇微风暴网络科技工作室',
|
||
contact: '📧 2821981550@qq.com | 📧 2572560133@qq.com | 📍 云南省昆明市西山区滇池度假区(碧鸡街道车家壁513号)',
|
||
credit: '统一社会信用代码:92532526MA6PCX153W',
|
||
icp: '滇ICP备2022000863号-18A'
|
||
},
|
||
en: {
|
||
title: 'Development Team',
|
||
subtitle: 'Development team information and contact',
|
||
backLink: '← Back to Agreement List',
|
||
company: 'Mile City Pengpu Town Weifengbao Network Technology Studio',
|
||
contact: '📧 2821981550@qq.com | <20> 2572560133@qq.com | <20>📍 Dianchi Resort, Xishan District, Kunming, Yunnan, China',
|
||
credit: 'Unified Social Credit Code: 92532526MA6PCX153W',
|
||
icp: 'ICP License: 滇ICP备2022000863号-18A'
|
||
}
|
||
};
|
||
|
||
function switchLang(lang) {
|
||
document.getElementById('content-zh').style.display = lang === 'zh' ? 'block' : 'none';
|
||
document.getElementById('content-en').style.display = lang === 'en' ? 'block' : 'none';
|
||
document.getElementById('header-title').textContent = DATA[lang].title;
|
||
document.getElementById('header-subtitle').textContent = DATA[lang].subtitle;
|
||
document.getElementById('back-link').textContent = DATA[lang].backLink;
|
||
document.getElementById('footer-company').textContent = DATA[lang].company;
|
||
document.getElementById('footer-contact').innerHTML = DATA[lang].contact;
|
||
document.getElementById('footer-credit').textContent = DATA[lang].credit;
|
||
document.getElementById('footer-icp').textContent = DATA[lang].icp;
|
||
document.getElementById('btn-zh').className = 'lang-btn' + (lang === 'zh' ? ' active' : '');
|
||
document.getElementById('btn-en').className = 'lang-btn' + (lang === 'en' ? ' active' : '');
|
||
document.documentElement.lang = lang === 'zh' ? 'zh-CN' : 'en';
|
||
const url = new URL(window.location);
|
||
if (lang === 'en') {
|
||
url.searchParams.set('lang', 'en');
|
||
} else {
|
||
url.searchParams.delete('lang');
|
||
}
|
||
history.replaceState(null, '', url);
|
||
}
|
||
|
||
(function() {
|
||
const params = new URLSearchParams(window.location.search);
|
||
const lang = params.get('lang');
|
||
if (lang === 'en') switchLang('en');
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html> |