Skip to content

Commit 58d9c7c

Browse files
Publish PythonIDE website deployment guide
1 parent 177aac4 commit 58d9c7c

13 files changed

Lines changed: 229 additions & 1502 deletions

File tree

docs/assets/site.css

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,59 @@ body::before {
104104

105105
::selection { background: var(--ink); color: var(--bg); }
106106

107+
/* Website deployment */
108+
.website-hero { position: relative; min-height: min(760px, calc(100svh - 62px)); overflow: hidden; display: flex; align-items: center; background: #0d0d0d; color: #fff; }
109+
.website-hero::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .34); pointer-events: none; }
110+
.website-hero-media { position: absolute; inset: 0; background: #0d0d0d url("/assets/website-deploy-screen.png") no-repeat calc(50% + 350px) 48%; background-size: auto 92%; opacity: .92; }
111+
.website-hero-content { position: relative; z-index: 1; padding-block: 96px 112px; }
112+
.website-hero-content > * { max-width: 660px; }
113+
.website-display { margin: 14px 0 22px; max-width: 760px; font-size: clamp(48px, 6.8vw, 92px); line-height: .98; letter-spacing: 0; font-weight: 620; text-wrap: balance; }
114+
.website-lede { margin: 0; max-width: 650px; color: rgba(255,255,255,.78); font-size: clamp(18px, 2vw, 23px); line-height: 1.55; }
115+
.website-hero .button-row { margin-top: 34px; }
116+
.website-hero-primary { background: #fff !important; color: #111 !important; border-color: #fff !important; }
117+
.website-hero-secondary { color: #fff; border-color: rgba(255,255,255,.42); background: rgba(0,0,0,.28); }
118+
.website-proof { display: none; background: #0d0d0d; }
119+
.website-proof-inner { padding-block: 24px 42px; }
120+
.website-proof img { width: 100%; max-height: 760px; object-fit: contain; object-position: center; }
121+
.website-workflow { scroll-margin-top: 72px; }
122+
.website-steps { border-top: 1px solid var(--line-strong); }
123+
.website-step { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 22px; padding: 34px 0; border-bottom: 1px solid var(--line); }
124+
.website-step-number { color: var(--faint); font-family: var(--mono); font-size: 13px; padding-top: 4px; }
125+
.website-step h3 { margin: 0 0 9px; color: var(--ink); font-size: clamp(24px, 3vw, 36px); font-weight: 590; letter-spacing: 0; }
126+
.website-step p { margin: 0; max-width: 760px; color: var(--muted); font-size: 17px; line-height: 1.68; }
127+
.website-case-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--line-strong); }
128+
.website-case-grid article { min-height: 250px; padding: 30px 36px 34px 0; border-bottom: 1px solid var(--line); }
129+
.website-case-grid article:nth-child(odd) { border-right: 1px solid var(--line); padding-right: 44px; }
130+
.website-case-grid article:nth-child(even) { padding-left: 44px; }
131+
.website-case-grid span { color: var(--faint); font-family: var(--mono); font-size: 13px; }
132+
.website-case-grid h3 { margin: 54px 0 9px; color: var(--ink); font-size: 25px; font-weight: 590; letter-spacing: 0; }
133+
.website-case-grid p { margin: 0; color: var(--muted); line-height: 1.65; }
134+
.website-detail-grid { display: grid; grid-template-columns: minmax(0, .88fr) minmax(420px, 1.12fr); gap: 84px; align-items: start; }
135+
.website-detail-list { border-top: 1px solid var(--line-strong); }
136+
.website-detail-list > div { padding: 24px 0 26px; border-bottom: 1px solid var(--line); }
137+
.website-detail-list strong { display: block; color: var(--ink); font-size: 18px; font-weight: 620; }
138+
.website-detail-list p { margin: 8px 0 0; color: var(--muted); line-height: 1.65; }
139+
.website-cta .section-copy { margin-top: 18px; }
140+
141+
@media (max-width: 820px) {
142+
.website-hero { min-height: min(720px, calc(100svh - 62px)); align-items: flex-end; }
143+
.website-hero-media { background-position: 72% 24%; background-size: auto 78%; opacity: .48; }
144+
.website-hero::after { background: rgba(0,0,0,.48); }
145+
.website-hero-content { padding-block: 180px 64px; }
146+
.website-display { font-size: clamp(42px, 12vw, 64px); }
147+
.website-case-grid, .website-detail-grid { grid-template-columns: 1fr; }
148+
.website-detail-grid { gap: 42px; }
149+
.website-case-grid article:nth-child(odd), .website-case-grid article:nth-child(even) { border-right: 0; padding: 28px 0 30px; min-height: 210px; }
150+
.website-case-grid h3 { margin-top: 34px; }
151+
}
152+
153+
@media (max-width: 520px) {
154+
.website-hero-content { padding-block: 158px 54px; }
155+
.website-hero .button-row { align-items: stretch; }
156+
.website-hero .button { width: 100%; }
157+
.website-step { grid-template-columns: 48px minmax(0, 1fr); gap: 14px; padding: 28px 0; }
158+
}
159+
107160
a { color: inherit; text-decoration: none; }
108161
button, input, textarea, select { color: inherit; font: inherit; }
109162
button { cursor: pointer; }

docs/assets/site.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
if (!node.dataset.labelZh) node.dataset.labelZh = node.getAttribute("aria-label") || "";
5959
node.setAttribute("aria-label", lang === "en" ? node.dataset.labelEn : node.dataset.labelZh);
6060
});
61+
document.querySelectorAll("[data-alt-en]").forEach(function (node) {
62+
if (!node.dataset.altZh) node.dataset.altZh = node.getAttribute("alt") || "";
63+
node.setAttribute("alt", lang === "en" ? node.dataset.altEn : node.dataset.altZh);
64+
});
6165

6266
setMeta("title[data-zh]", lang);
6367
setMeta('meta[name="description"][data-zh]', lang);
216 KB
Loading

docs/contact/index.html

Lines changed: 11 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -4,94 +4,19 @@
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
66
<meta name="theme-color" content="#ffffff">
7-
<meta name="apple-itunes-app" content="app-id=6753987304">
8-
<meta name="description" content="PythonIDE 邀请活动联系方式:提交 Pro 终身 5 折申请后,按本页说明联系开发者。">
9-
<meta property="og:type" content="website">
10-
<meta property="og:title" content="PythonIDE 邀请活动联系方式">
11-
<meta property="og:description" content="提交 Pro 终身 5 折申请后,按本页说明发送申请编号。">
12-
<meta property="og:image" content="https://pythonide.xin/assets/brand-mark.svg">
7+
<meta http-equiv="refresh" content="0; url=/support/#referral-claim">
8+
<meta name="robots" content="noindex,follow">
9+
<link rel="canonical" href="https://pythonide.xin/support/#referral-claim">
1310
<link rel="icon" href="/assets/brand-mark.svg" type="image/svg+xml">
14-
<link rel="stylesheet" href="/referral/referral.css">
15-
<script defer src="/referral/referral.js"></script>
16-
<title>PythonIDE 邀请活动联系方式</title>
11+
<link rel="stylesheet" href="/assets/site.css">
12+
<title>正在打开邀请支持 — PythonIDE</title>
1713
</head>
1814
<body>
19-
<div class="page">
20-
<header class="site-header">
21-
<nav class="nav" aria-label="PythonIDE">
22-
<a class="brand" href="/" aria-label="PythonIDE">
23-
<img class="brand-mark" src="/assets/brand-mark.svg" alt="">
24-
<span>PythonIDE</span>
25-
</a>
26-
<div class="nav-links" aria-label="Primary">
27-
<a class="nav-link" href="/i/" data-t="navInvite">邀请</a>
28-
<a class="nav-link" href="/activity/" data-t="navRules">规则</a>
29-
<a class="nav-link" href="/contact/" aria-current="page" data-t="navContact">联系</a>
30-
<a class="nav-download" href="#" data-download data-t="download">下载 App</a>
31-
</div>
32-
<div class="language-toggle" aria-label="Language">
33-
<button type="button" data-lang="zh" aria-pressed="true"></button>
34-
<button type="button" data-lang="en" aria-pressed="false">EN</button>
35-
</div>
36-
</nav>
37-
</header>
38-
39-
<main class="main">
40-
<div class="contact-layout">
41-
<section class="contact-hero" aria-labelledby="contact-title">
42-
<p class="eyebrow reveal" data-t="brandSub">邀请活动</p>
43-
<h1 class="contact-title reveal" id="contact-title" data-t="contactTitle">领取 Pro 终身 5 折</h1>
44-
<p class="contact-summary reveal" data-t="contactSummary">达到 20 位有效邀请后,请在 App 内提交申请,并带上申请编号联系开发者。</p>
45-
</section>
46-
47-
<section class="contact-panel reveal" aria-labelledby="contact-method-title">
48-
<h2 class="section-title" id="contact-method-title" data-t="contactMethodTitle">联系方式</h2>
49-
<p class="contact-body" data-t="contactMethodBody">选择一个平台联系开发者,并发送申请编号。此页面会保持最新联系方式。</p>
50-
<div class="contact-link-list" aria-label="联系方式">
51-
<a class="contact-link" href="https://qm.qq.com/q/JvD7H91BmI" target="_blank" rel="noopener noreferrer" data-t="contactQQ">QQ</a>
52-
<a class="contact-link" href="https://t.me/DLH52" target="_blank" rel="noopener noreferrer" data-t="contactTelegram">Telegram</a>
53-
<a class="contact-link" href="https://xhslink.com/m/6Js4Cnqx8fM" target="_blank" rel="noopener noreferrer" data-t="contactXiaohongshu">小红书</a>
54-
</div>
55-
</section>
56-
57-
<section class="contact-panel reveal" aria-labelledby="contact-request-title">
58-
<h2 class="section-title" id="contact-request-title" data-t="contactRequestTitle">发送时包含</h2>
59-
<div class="contact-request-list">
60-
<div class="contact-request">
61-
<div class="contact-request-number">1</div>
62-
<div>
63-
<strong data-t="contactRequest1Title">申请编号</strong>
64-
<span data-t="contactRequest1Body">在 App 的邀请页点击「Pro 终身 5 折」-「查看」,复制 REF 开头的编号。</span>
65-
</div>
66-
</div>
67-
<div class="contact-request">
68-
<div class="contact-request-number">2</div>
69-
<div>
70-
<strong data-t="contactRequest2Title">你的邀请码</strong>
71-
<span data-t="contactRequest2Body">在 App 邀请页复制自己的邀请码,方便后台核对。</span>
72-
</div>
73-
</div>
74-
<div class="contact-request">
75-
<div class="contact-request-number">3</div>
76-
<div>
77-
<strong data-t="contactRequest3Title">领取说明</strong>
78-
<span data-t="contactRequest3Body">说明你要领取 Pro 终身 5 折资格,不需要发送截图作为凭证。</span>
79-
</div>
80-
</div>
81-
</div>
82-
</section>
83-
84-
<div class="contact-actions reveal">
85-
<a class="button primary" href="/activity/">
86-
<span data-t="viewRules">查看活动规则</span>
87-
</a>
88-
</div>
89-
90-
<p class="note reveal" data-t="contactNote">最终是否满足条件,以后台有效邀请与领取记录为准。</p>
91-
</div>
92-
</main>
93-
94-
<footer class="footer" data-t="footer">活动解释权与兑换记录以后台数据为准</footer>
95-
</div>
15+
<main class="main"><section class="hero"><div class="shell hero-center">
16+
<p class="kicker">PythonIDE</p>
17+
<h1 class="display small">联系方式已移至支持中心。</h1>
18+
<p class="lede">正在打开邀请奖励与社区支持。如未自动跳转,请点击下方按钮。</p>
19+
<div class="button-row"><a class="button primary" href="/support/#referral-claim">打开支持中心</a></div>
20+
</div></section></main>
9621
</body>
9722
</html>

docs/docs/pages/agent-development-index/index.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@
285285
<h1>Agent Skills 安装与说明</h1>
286286
<p>一行命令安装 Skills,配合 AppUI、Widget 与 iOS 原生文档使用。</p>
287287
</header>
288-
<section class="agent-install-panel" id="agent-skills-install"><div class="install-cmd" data-install-cmd><span class="install-cmd-prompt" aria-hidden="true">$</span><code class="install-cmd-text" id="code-211b7af28bee">npx skills add Python-IDE/pythonide-skills -g</code><div class="install-cmd-actions"><button class="install-cmd-copy" type="button" data-copy-code="211b7af28bee" aria-label="复制"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/><rect x="4" y="4" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/></svg></button><span class="install-cmd-toast" role="status" aria-live="polite" hidden>已复制</span></div></div></section>
288+
<section class="agent-install-panel" id="agent-skills-install"><div class="install-cmd" data-install-cmd><span class="install-cmd-prompt" aria-hidden="true">$</span><code class="install-cmd-text" id="code-93145cf4bc63">npx skills add Python-IDE/pythonide-skills -g</code><div class="install-cmd-actions"><button class="install-cmd-copy" type="button" data-copy-code="93145cf4bc63" aria-label="复制"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/><rect x="4" y="4" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/></svg></button><span class="install-cmd-toast" role="status" aria-live="polite" hidden>已复制</span></div></div></section>
289289
<div class="markdown-body">
290290
<p><strong>编码 Agent</strong>(如 Codex、Claude Code、Gemini CLI 等)中编写 PythonIDE 代码时,先安装本站的 Agent Skills。Skills 提供执行规则;完整 API 仍以左侧文档与公开 schema 为准。</p>
291291
<blockquote class="callout note"><strong>边界</strong>:这是给 <strong>电脑上的编码 Agent</strong> 用的安装包,不是 PythonIDE App 内的 AI 助手,也不是替代在线文档的第二套手册。</blockquote>
@@ -305,12 +305,12 @@ <h2 id="常见误区"><a class="heading-anchor" href="#常见误区">#</a>常见
305305
<h2 id="相关文档"><a class="heading-anchor" href="#相关文档">#</a>相关文档</h2>
306306
<ul><li><a href="../../pages/ios-native/">iOS 原生能力</a> — 入口模型、AppUI 原生组件、模块导航</li><li><a href="../../pages/miniapp-choose-runtime/">运行时选择</a> — 选择 appui / widget / scene / ui</li><li><a href="../../pages/appui-quickstart/">appui 快速上手</a></li></ul>
307307
<h2 id="安装示例"><a class="heading-anchor" href="#安装示例">#</a>安装示例</h2>
308-
<figure class="code-block" data-code-id="f9d4462acf67">
308+
<figure class="code-block" data-code-id="3e2d8d6340a5">
309309
<figcaption>
310310
<span>bash</span>
311-
<div class="code-copy-actions"><button class="copy-code" type="button" data-copy-code="f9d4462acf67" aria-label="复制"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/><rect x="4" y="4" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/></svg></button><span class="copy-code-toast" role="status" aria-live="polite" hidden>已复制</span></div>
311+
<div class="code-copy-actions"><button class="copy-code" type="button" data-copy-code="3e2d8d6340a5" aria-label="复制"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/><rect x="4" y="4" width="11" height="11" rx="2.25" stroke="currentColor" stroke-width="1.75"/></svg></button><span class="copy-code-toast" role="status" aria-live="polite" hidden>已复制</span></div>
312312
</figcaption>
313-
<pre><code id="code-f9d4462acf67" class="language-bash">npx skills add Python-IDE/pythonide-skills</code></pre>
313+
<pre><code id="code-3e2d8d6340a5" class="language-bash">npx skills add Python-IDE/pythonide-skills</code></pre>
314314
</figure>
315315
<p>预期效果:编码 Agent 工作区出现 <code>pythonide</code><code>pythonide-appui</code> 等 Skills,可在写 MiniApp 前自动加载规则。</p>
316316
</div>

docs/docs/pages/storage-module/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,8 @@ <h1>storage</h1>
288288

289289
<div class="markdown-body">
290290
<p>轻量级键值存储(基于 UserDefaults):保存设置项、开关、计数和小型 JSON 配置。</p>
291-
<blockquote class="callout note"><strong>边界</strong>:适合小数据偏好,不是文件数据库,也不是敏感数据存储。token / 密码用 <a href="../../pages/keychain-module/">keychain</a>;大列表、离线缓存用 <a href="../../pages/database-module/">database</a>。MiniApp 内键名会自动按应用目录隔离,不同 MiniApp 不会互相覆盖。</blockquote>
291+
<blockquote class="callout note"><strong>边界</strong>:适合小数据偏好,不是文件数据库,也不是敏感数据存储。token / 密码用 <a href="../../pages/keychain-module/">keychain</a>;大列表、离线缓存用 <a href="../../pages/database-module/">database</a>。MiniApp 内键名会自动按应用隔离,不同 MiniApp 不会互相覆盖。</blockquote>
292+
<p>写入后可在「设置 → 应用数据」中直接查看和修改,不需要把经常变化的值写死在代码里。关联小组件会读取同一份数据;界面只显示脚本使用的简单键名,不显示内部隔离前缀。</p>
292293
<h2 id="模块概览"><a class="heading-anchor" href="#模块概览">#</a>模块概览</h2>
293294
<div class="table-scroll"><table><thead><tr><th></th><th>说明</th></tr></thead><tbody><tr><td>导入</td><td><code>import storage</code></td></tr><tr><td>适合做什么</td><td>主题、排序、筛选条件、开关、小型 JSON 配置</td></tr><tr><td>调用时机</td><td><code>on_change</code>、按钮回调或启动时读写;不要在 <code>body()</code> 里反复写入</td></tr><tr><td>推荐顺序</td><td>启动时 <code>get</code>(带默认值)→ 用户操作后 <code>set</code> → 需要时 <code>remove</code> / <code>all_keys</code></td></tr><tr><td>键名规范</td><td><code>settings.theme</code> 这类命名空间,避免不同脚本冲突</td></tr></tbody></table></div>
294295
<hr>

0 commit comments

Comments
 (0)