{/* 当路由与文档路径匹配时,显示文档搜索框 */}
diff --git a/src/theme/Navbar/styles.module.scss b/src/theme/Navbar/styles.module.scss
index bdcffe44..a9b99d5d 100644
--- a/src/theme/Navbar/styles.module.scss
+++ b/src/theme/Navbar/styles.module.scss
@@ -152,6 +152,142 @@
gap: 12px;
}
+.productMenuWrapper {
+ position: relative;
+ display: flex;
+ align-items: center;
+
+ &::after {
+ content: "";
+ position: absolute;
+ top: 100%;
+ left: 0;
+ width: 100%;
+ height: 0.75rem;
+ }
+}
+
+.productMenuTrigger {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.52rem;
+ min-height: 42px;
+ padding: 0.52rem 0.9rem;
+ margin: 0 0.18rem;
+ border: 0;
+ border-radius: 999px;
+ background: transparent;
+ color: var(--oomol-text-primary);
+ font-weight: 600;
+ font-size: 14px;
+ cursor: pointer;
+ transition:
+ background 0.2s ease,
+ color 0.2s ease;
+
+ &:hover {
+ color: var(--oomol-primary);
+ background: color-mix(in srgb, var(--oomol-primary-bg) 58%, transparent);
+ }
+}
+
+.productMenuTriggerActive {
+ color: var(--oomol-primary);
+ background: color-mix(in srgb, var(--oomol-primary-bg) 76%, transparent);
+}
+
+.productMenuCaret {
+ width: 0.45rem;
+ height: 0.45rem;
+ margin-left: 0.08rem;
+ border-right: 2px solid currentColor;
+ border-bottom: 2px solid currentColor;
+ transform: rotate(45deg) translateY(-1px);
+ opacity: 0.82;
+}
+
+.productMenuPanel {
+ position: absolute;
+ top: calc(100% + 0.2rem);
+ left: 0;
+ min-width: 18rem;
+ padding: 0.55rem;
+ border-radius: 1.1rem;
+ border: 1px solid color-mix(in srgb, var(--oomol-border-default) 78%, white);
+ background: color-mix(in srgb, var(--oomol-bg-elevated) 96%, white 4%);
+ box-shadow: var(--oomol-shadow-lg);
+ opacity: 0;
+ pointer-events: none;
+ transform: translateY(-4px);
+ transition:
+ opacity 0.18s ease,
+ transform 0.18s ease;
+ z-index: 120;
+}
+
+.productMenuPanelOpen {
+ opacity: 1;
+ pointer-events: auto;
+ transform: translateY(0);
+}
+
+.productMenuEntry {
+ display: grid;
+ grid-template-columns: auto 1fr;
+ gap: 0.9rem;
+ align-items: start;
+ min-height: 4rem;
+ padding: 0.85rem 0.9rem;
+ border-radius: 0.95rem;
+ text-decoration: none;
+ transition:
+ background 0.18s ease,
+ transform 0.18s ease;
+
+ &:hover {
+ text-decoration: none;
+ background: color-mix(in srgb, var(--oomol-primary-bg) 64%, transparent);
+ transform: translateY(-1px);
+ }
+}
+
+.productMenuEntryIcon {
+ width: 2.15rem;
+ height: 2.15rem;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 0.8rem;
+ background: color-mix(in srgb, var(--oomol-bg-layout) 90%, white 10%);
+ border: 1px solid var(--oomol-divider);
+ color: var(--oomol-primary);
+ box-shadow:
+ inset 0 1px 0 rgba(255, 255, 255, 0.7),
+ 0 8px 18px rgba(77, 88, 124, 0.08);
+
+ i {
+ font-size: 1.05rem;
+ }
+}
+
+.productMenuEntryText {
+ display: grid;
+ gap: 0.2rem;
+}
+
+.productMenuEntryLabel {
+ color: var(--oomol-text-primary);
+ font-size: 0.96rem;
+ font-weight: 700;
+ line-height: 1.2;
+}
+
+.productMenuEntryDescription {
+ color: var(--oomol-text-secondary);
+ font-size: 0.82rem;
+ line-height: 1.45;
+}
+
.brand {
display: flex;
align-items: center;
From 5dbfb68e1e2a56f640144e37ab1a0f1041a7fa9d Mon Sep 17 00:00:00 2001
From: shaun
Date: Sat, 28 Mar 2026 16:50:15 +0800
Subject: [PATCH 02/15] update
---
.impeccable.md | 21 -
docusaurus.config.js | 8 +-
i18n/en/code.json | 180 ++++---
i18n/zh-CN/code.json | 180 ++++---
src/components/DownloadButton/index.tsx | 18 +-
.../DownloadButton/styles.module.scss | 10 +
src/components/GetStartedPrompt/index.tsx | 8 +-
.../GetStartedPrompt/styles.module.scss | 33 ++
src/components/HomepageCliEntry/index.tsx | 23 +-
.../HomepageCliEntry/styles.module.scss | 109 ++++-
src/components/HomepageFirstScreen/index.tsx | 123 +++--
.../HomepageFirstScreen/styles.module.scss | 447 +++++++++++------
src/components/HomepageLinearFlow/index.tsx | 452 ++++++++++++++++++
.../HomepageLinearFlow/styles.module.scss | 436 +++++++++++++++++
src/pages/app/index.tsx | 33 +-
src/pages/cloud/index.tsx | 41 +-
src/pages/cloud/styles.module.scss | 28 ++
src/pages/index.tsx | 12 +-
18 files changed, 1749 insertions(+), 413 deletions(-)
delete mode 100644 .impeccable.md
create mode 100644 src/components/HomepageLinearFlow/index.tsx
create mode 100644 src/components/HomepageLinearFlow/styles.module.scss
diff --git a/.impeccable.md b/.impeccable.md
deleted file mode 100644
index 0c24a32b..00000000
--- a/.impeccable.md
+++ /dev/null
@@ -1,21 +0,0 @@
-## Design Context
-
-### Users
-
-OOMOL 的主要用户是希望把真实任务做成自动化流程的开发者、技术型团队成员和 AI 工作流重度用户。对文档页来说,用户通常处在“我现在就要完成一个任务”的上下文里,不是为了系统性学习平台而来,而是为了快速找到下一步动作。
-
-### Brand Personality
-
-品牌应当给人这几种感受:直接、可靠、专业。表达上优先强调可执行性和工程感,而不是夸张营销。页面应该让用户感到“这个产品能立刻帮我做事”,而不是“我还要先花很多时间学习它”。
-
-### Aesthetic Direction
-
-延续当前官网和文档站已经建立的方向:冷静的技术产品气质、浅色阅读界面、克制的品牌紫色点缀、较高的信息密度和清晰的层级。避免花哨的大面积营销视觉,优先让关键结论、操作路径和演示内容在首屏就被看见。
-
-### Design Principles
-
-1. 首屏先给结论,再给解释。
-2. 所有视觉强调都必须服务于“下一步做什么”。
-3. 保持工程产品的可信感,避免过度装饰。
-4. 文档体验优先可扫描、可定位、可回看,而不是追求页面表演感。
-5. 在延续现有站点语言的前提下,用更直接的结构减少阅读负担。
diff --git a/docusaurus.config.js b/docusaurus.config.js
index bf292ba3..4cf1b0d6 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -10,7 +10,7 @@ const darkTheme = themes.dracula;
/** @type {import('@docusaurus/types').Config} */
const config = {
title: "OOMOL",
- tagline: "Write a function. Ship a service.",
+ tagline: "Build cloud skills. Keep the code.",
favicon: "img/favicon.ico",
// Set the production url of your site here
@@ -70,7 +70,7 @@ const config = {
"@context": "https://schema.org",
"@type": "Organization",
name: "OOMOL",
- tagline: "Write a function. Ship a service.",
+ tagline: "Build cloud skills. Keep the code.",
favicon: "img/favicon.ico",
url: "https://oomol.com",
sameAs: ["https://hub.oomol.com"],
@@ -153,12 +153,12 @@ const config = {
{
name: "keywords",
content:
- "function to service, ai-native developer tools, local validation, api publishing, mcp tools, automation tasks, containerized development, function delivery, OOMOL",
+ "cloud skill, skill distribution, closed-source skill delivery, ai-native developer tools, local validation, oo-cli, mcp tools, automation tasks, containerized development, OOMOL",
},
{
name: "description",
content:
- "Generate functions in a real coding environment, validate locally, and publish the same capability as an API, MCP tool, or automation task.",
+ "Build cloud skills in a real coding environment, validate locally, and publish them for oo-cli, agents, APIs, and automation without exposing your source code.",
},
],
diff --git a/i18n/en/code.json b/i18n/en/code.json
index 7d06bb8b..fa882558 100644
--- a/i18n/en/code.json
+++ b/i18n/en/code.json
@@ -27,7 +27,7 @@
"message": "Community"
},
"HOME.page.title": {
- "message": "OOMOL - Build and Deliver Capabilities for Agents"
+ "message": "OOMOL - Build and publish cloud skills"
},
"HOME.FirstScreen.slogan": {
"message": "Build and Deliver Capabilities for Agents"
@@ -38,6 +38,21 @@
"HOME.FirstScreen.script": {
"message": "Start with ready-made capabilities in oo-cli, create your own blocks in OOMOL Studio, then deploy and deliver them privately through Cloud."
},
+ "HOME.FirstScreen.heroTitle": {
+ "message": "Let agents use your skill while you keep full control of the code"
+ },
+ "HOME.FirstScreen.heroSubtitle": {
+ "message": "We call this a cloud skill: a capability that runs in the cloud and can be used directly from terminals and agent workflows."
+ },
+ "HOME.FirstScreen.heroLead": {
+ "message": "A cloud skill is a capability that runs in the cloud, stays reusable, and can be used directly from terminals and agent workflows."
+ },
+ "HOME.FirstScreen.heroAdvantage": {
+ "message": "Open source or closed source,"
+ },
+ "HOME.FirstScreen.heroAdvantageHighlight": {
+ "message": "the decision stays yours."
+ },
"HOME.FirstScreen.pill1": {
"message": "No new DSL"
},
@@ -177,7 +192,7 @@
"message": "only supports x64"
},
"HOME.FirstScreen.cta.secondary": {
- "message": "Start Building"
+ "message": "Start with oo-cli"
},
"HOME.ValueProps.localCompute.title": {
"message": "Turn Local Compute Into Your Private AI Cloud"
@@ -876,7 +891,7 @@
"message": "Get the first path working"
},
"HOME.GetStartedPrompt.subtitle": {
- "message": "Start with oo-cli to use published capabilities. When you need more, write your own blocks in OOMOL Studio and deploy them through Cloud."
+ "message": "Start with oo-cli to run published cloud skills. When you need your own, generate and validate it in OOMOL Studio, then publish it through Cloud."
},
"HOME.Pricing.title": {
"message": "Pricing"
@@ -921,13 +936,13 @@
"message": "CLI"
},
"HOME.Downloads.cli.title": {
- "message": "Prefer the terminal? Use oo-cli to consume cloud functions directly."
+ "message": "Prefer terminal workflows? Start with oo-cli."
},
"HOME.Downloads.cli.subtitle": {
- "message": "Install oo-cli in Codex, Claude Code, or any local terminal to search packages, inspect inputs, run cloud functions, and fetch results without wiring API or MCP first."
+ "message": "Install oo-cli in Codex, Claude Code, or any local terminal to search packages, inspect inputs, run cloud skills, and fetch results without wiring API or MCP first."
},
"HOME.Downloads.cli.action.guide": {
- "message": "Open CLI Guide"
+ "message": "Open oo-cli Guide"
},
"HOME.Downloads.cli.action.github": {
"message": "View oo-cli on GitHub"
@@ -2467,10 +2482,10 @@
"message": "Containerized deployment to private cloud or K8s clusters, supporting CI/CD pipelines for continuous delivery and operations of enterprise-grade API services."
},
"HOME.ProductComparison.title": {
- "message": "Cloud exists for delivery, not just hosting"
+ "message": "Cloud is where a skill becomes deliverable"
},
"HOME.ProductComparison.subtitle": {
- "message": "Cloud is not just where code runs. It is where validated blocks become capabilities you can keep providing to yourself, your team, or your customers."
+ "message": "OOMOL Cloud is not just runtime. It is the delivery layer that turns a validated implementation into a cloud skill you can provide privately to yourself, your team, or your customers."
},
"HOME.ChatAgent.title": {
"message": "OOMOL Chat & Agent Ecosystem"
@@ -2518,58 +2533,58 @@
"message": "Deploy and deliver"
},
"HOME.ProductComparison.cloud.capability": {
- "message": "Deploy validated blocks as cloud functions and keep providing them reliably without rebuilding another service layer around the same capability."
+ "message": "Deploy validated blocks as cloud skills that run remotely, so users get the capability without receiving your source code."
},
"HOME.ProductComparison.cloud.scenario": {
- "message": "For developers and small teams that want to extend CLI workflows, provide shared capabilities internally, or deliver skills and CLI services to customers."
+ "message": "For developers and small teams that want to share, sell, or operate reusable skills without rebuilding a separate SaaS around each one."
},
"HOME.ProductComparison.cloud.tech": {
- "message": "Reuse the implementation you already validated in Studio while OOMOL Cloud handles runtime and external delivery. When needed, the same capability can keep expanding through API or MCP."
+ "message": "Reuse the implementation you already validated in Studio while OOMOL Cloud handles runtime, access, and external delivery. When needed, the same cloud skill can still expand through API or MCP."
},
"HOME.ProductComparison.cta": {
- "message": "Explore Cloud Function"
+ "message": "Explore Cloud"
},
"HOME.ProductComparison.outputIntro": {
- "message": "Keep the same capability expanding"
+ "message": "One cloud skill, multiple surfaces"
},
"HOME.ProductComparison.outputSummary": {
- "message": "The same validated block can keep being consumed and integrated in different ways."
+ "message": "The same validated implementation can be consumed through terminal, apps, agents, and automation without splitting into separate products."
},
"HOME.ProductComparison.output1.title": {
- "message": "CLI Usage"
+ "message": "CLI and Agents"
},
"HOME.ProductComparison.output1.description": {
- "message": "Search, inspect, and run deployed capabilities directly through oo-cli."
+ "message": "Search, inspect, and run deployed cloud skills directly through oo-cli and agent terminal workflows."
},
"HOME.ProductComparison.output2.title": {
- "message": "API Integration"
+ "message": "API and App Integration"
},
"HOME.ProductComparison.output2.description": {
- "message": "Carry the same capability into your own applications, services, or automation code."
+ "message": "Carry the same cloud skill into your own application surfaces, backend services, or product integrations."
},
"HOME.ProductComparison.output3.title": {
- "message": "MCP Integration"
+ "message": "MCP and Automation"
},
"HOME.ProductComparison.output3.description": {
- "message": "When needed, keep exposing the same capability to other agent and tool systems."
+ "message": "Expose the same cloud skill to agent ecosystems or keep it running on schedules and triggers."
},
"HOME.ProductComparison.benefit1.label": {
- "message": "Delivery Overhead"
+ "message": "Commercialization Path"
},
"HOME.ProductComparison.benefit1.value": {
- "message": "Less service rebuilding"
+ "message": "Ship the skill, keep the code"
},
"HOME.ProductComparison.benefit1.description": {
- "message": "Cloud takes over the online runtime and delivery layer so you do not need to rebuild another interface stack around the same function."
+ "message": "Cloud lets you provide the capability without shipping the implementation, so distribution does not force you into open-sourcing or rebuilding the product as SaaS."
},
"HOME.ProductComparison.benefit2.label": {
- "message": "Runtime Overhead"
+ "message": "Delivery Overhead"
},
"HOME.ProductComparison.benefit2.value": {
- "message": "More stable online usage"
+ "message": "Less product rebuilding"
},
"HOME.ProductComparison.benefit2.description": {
- "message": "Stay focused on the function itself instead of spending more time on environments, scheduling, scaling, and production maintenance."
+ "message": "Stay focused on the skill itself instead of rebuilding auth, hosting, scheduling, and interface layers around the same implementation."
},
"HOME.DeveloperBenefits.badge": {
"message": "Developer Benefits"
@@ -2632,10 +2647,22 @@
"message": "CLI FIRST"
},
"HOME.CliEntry.title": {
- "message": "Use first, then decide whether to build your own"
+ "message": "oo-cli is the default way to discover and run cloud skills"
},
"HOME.CliEntry.subtitle": {
- "message": "oo-cli is the fastest way into OOMOL. Search, inspect, and run published capabilities directly from the terminal."
+ "message": "Install once in Codex, Claude Code, or any terminal. Search packages, inspect inputs, run cloud skills, and get results before you wire API or MCP."
+ },
+ "HOME.CliEntry.benefit1.label": {
+ "message": "Start from published skills"
+ },
+ "HOME.CliEntry.benefit1.description": {
+ "message": "Search, inspect, and run skills other developers have already published instead of building your own path on day one."
+ },
+ "HOME.CliEntry.benefit2.label": {
+ "message": "Publish your own when needed"
+ },
+ "HOME.CliEntry.benefit2.description": {
+ "message": "When existing skills are not enough, use Studio to generate, validate, and publish your own cloud skill."
},
"HOME.CliEntry.bridge": {
"message": "Publish the function to OOMOL Cloud first. Then let CLI handle sign-in, discovery, and execution. That relationship only needs to be stated once."
@@ -2644,25 +2671,25 @@
"message": "Install oo-cli"
},
"HOME.CliEntry.step1.description": {
- "message": "Install the entry point for using published capabilities."
+ "message": "Install the default entry point for using published cloud skills."
},
"HOME.CliEntry.step2.title": {
"message": "Sign in to your account"
},
"HOME.CliEntry.step2.description": {
- "message": "Sign in, then start searching and running capabilities."
+ "message": "Sign in, then start searching and running cloud skills."
},
"HOME.CliEntry.step3.title": {
- "message": "Search and run a capability"
+ "message": "Search and run a skill"
},
"HOME.CliEntry.step3.description": {
- "message": "Check what it does and what input it needs, then run it directly."
+ "message": "Check what it does and what input it needs, then run it directly from the terminal."
},
"HOME.CliEntry.action.primary": {
"message": "Open oo-cli"
},
"HOME.CliEntry.action.secondary": {
- "message": "Explore Cloud Function"
+ "message": "See Cloud Delivery"
},
"HOME.CliEntry.setup.eyebrow": {
"message": "INSTALL ONCE"
@@ -2785,16 +2812,19 @@
"message": "Translate long-form documents into bilingual EPUB or Markdown outputs that stay usable for reading instead of returning only raw text."
},
"CLOUD.hero.title": {
- "message": "OOMOL Cloud"
+ "message": "Publish private cloud skills"
},
"CLOUD.hero.description": {
- "message": "Turn the function you already validated locally into a service, without rebuilding backend scaffolding, deployment flow, and operations from scratch."
+ "message": "Take the skill you already validated locally and run it in the cloud, so users can use the capability without getting your source code or a custom service stack."
},
"CLOUD.hero.kicker": {
- "message": "Cloud Function"
+ "message": "Cloud Skill Runtime"
+ },
+ "CLOUD.hero.note": {
+ "message": "Users get the skill through oo-cli, apps, or agents. Your implementation stays on the server."
},
"CLOUD.hero.stat1": {
- "message": "Direct Publish"
+ "message": "Private Delivery"
},
"CLOUD.hero.stat2": {
"message": "Pay-as-you-go"
@@ -2803,7 +2833,7 @@
"message": "Less Ops"
},
"CLOUD.hero.cta.start": {
- "message": "Start Building"
+ "message": "Build a Cloud Skill"
},
"CLOUD.hero.cta.docs": {
"message": "Learn More"
@@ -2812,46 +2842,46 @@
"message": "Open Cloud Console"
},
"CLOUD.painPoints.title": {
- "message": "Delivery Shouldn't Be Torture"
+ "message": "Shipping a skill should not mean rebuilding a SaaS"
},
"CLOUD.painPoints.subtitle": {
"message": "We know the struggle as developers"
},
"CLOUD.painPoints.description": {
- "message": "What slows delivery is usually not the function itself, but the repeated work required to wrap it as a service: building interfaces, preparing environments, scaling it, and keeping it available. Cloud is built to compress that part."
+ "message": "What slows delivery is usually not the skill itself, but the work around it: packaging a user surface, hosting it reliably, handling access, and keeping operations stable. Cloud is built to compress that layer."
},
"CLOUD.solution.title": {
- "message": "One Function, Three Delivery Paths"
+ "message": "One skill, three consumption paths"
},
"CLOUD.solution.subtitle": {
- "message": "The same capability can be delivered as an API, an MCP tool, or an automation task."
+ "message": "The same cloud skill can be consumed through API, MCP, or automation while staying backed by one implementation."
},
"CLOUD.solution.kicker": {
- "message": "Delivery Paths"
+ "message": "Consumption Paths"
},
"CLOUD.modes.library.title": {
- "message": "Publish as Automation"
+ "message": "Run as Automation"
},
"CLOUD.modes.library.description": {
- "message": "Run the same function on triggers or schedules so it keeps working as an ongoing task instead of staying local and manual."
+ "message": "Run the same cloud skill on triggers or schedules so it keeps delivering value beyond local and manual execution."
},
"CLOUD.modes.serverless.title": {
- "message": "Publish as API Service"
+ "message": "Use through API"
},
"CLOUD.modes.serverless.description": {
- "message": "Deliver the function directly as a callable API without building a separate service framework, while OOMOL handles runtime and scaling."
+ "message": "Give applications direct API access to the same cloud skill without rebuilding a separate backend surface."
},
"CLOUD.modes.mcp.title": {
- "message": "Publish as MCP Tool"
+ "message": "Use through MCP"
},
"CLOUD.modes.mcp.description": {
- "message": "Expose the function as an MCP tool for agents and AI apps so the same implementation enters the call chain directly."
+ "message": "Expose the same cloud skill to agents and AI apps as an MCP tool when agent-native integration matters."
},
"CLOUD.pricing.title": {
- "message": "Pay Per Call, No Upfront Cost"
+ "message": "Start small, pay when the skill is used"
},
"CLOUD.pricing.description": {
- "message": "No expensive server fees, no complex prepaid plans. We charge by call count. Save money, save effort, and focus on the joy of programming."
+ "message": "You do not need dedicated servers just to test distribution. Publish first, validate demand, and pay as usage grows."
},
"CLOUD.pricing.kicker": {
"message": "Pricing"
@@ -2866,13 +2896,13 @@
"message": "Open Cloud Console"
},
"CLOUD.opensource.title": {
- "message": "Open Source Infrastructure"
+ "message": "Open runtime, flexible deployment"
},
"CLOUD.opensource.subtitle": {
- "message": "OOMOL's underlying runtime kernel is fully open source, giving you complete control over your deployment environment"
+ "message": "The runtime foundation stays open source even when the cloud skill you publish stays private."
},
"CLOUD.opensource.description": {
- "message": "We believe in the power of open source. OOMOL's virtual machine and runtime core code are completely open source, allowing you to freely view, modify, and deploy. Whether it's a personal NAS, private server, or public cloud, you have complete deployment freedom."
+ "message": "OOMOL's virtual machine and runtime core stay open source, so you keep deployment freedom across personal servers, private infrastructure, or public cloud environments while choosing how each skill is delivered."
},
"CLOUD.opensource.projects.title": {
"message": "Open Source Projects"
@@ -2904,16 +2934,16 @@
"STUDIO.hero.description": {
"message": "Local development environment for developers, VSCode-based visual programming tool with FRP protocol for P2P computing power sharing"
},
- "APP.new.hero.title": { "message": "OOMOL App" },
+ "APP.new.hero.title": { "message": "OOMOL App Surfaces" },
"APP.new.hero.subtitle": {
- "message": "Direct Product Surfaces for Your Functions"
+ "message": "Product surfaces for cloud skills"
},
"APP.new.hero.description": {
- "message": "Turn function capabilities directly into Chat skills or Applet entry points, without building separate UI from scratch."
+ "message": "A single cloud skill can be delivered through chat or structured applets, without building separate product surfaces from scratch."
},
- "APP.new.concept.title": { "message": "Code is Product" },
+ "APP.new.concept.title": { "message": "One skill, different surfaces" },
"APP.new.concept.description": {
- "message": "OOMOL wraps function capabilities into usable product surfaces. You focus on the function; we connect it to the user."
+ "message": "OOMOL turns the same cloud skill into usable entry points. You focus on the implementation; we connect it to the user."
},
"APP.new.chat.pill": { "message": "Chat Surface · Skill" },
"APP.new.chat.title": { "message": "OOMOL Chat" },
@@ -2921,37 +2951,37 @@
"message": "AI Assistant · Exploratory Interaction"
},
"APP.new.chat.description": {
- "message": "When user intent is still vague, let AI choose and call your function capabilities through conversation."
+ "message": "When user intent is still vague, let AI choose and run the right cloud skill through conversation."
},
"APP.new.chat.meta1.label": { "message": "For Whom" },
"APP.new.chat.meta1.value": {
- "message": "Best when capabilities need to be exposed through conversation and intent needs clarification first"
+ "message": "Best when a cloud skill should be used through conversation and intent needs clarification first"
},
"APP.new.chat.meta2.label": { "message": "Core Experience" },
"APP.new.chat.meta2.value": {
- "message": "Understand intent first, then call the right service with less user setup"
+ "message": "Understand intent first, then call the right cloud skill with less setup"
},
"APP.new.chat.devValue": {
- "message": "Functions as Skills: your functions become AI-callable capabilities."
+ "message": "Cloud skill as agent tool: the same implementation becomes an AI-callable surface."
},
- "APP.new.applet.pill": { "message": "Parameterized Surface · Applet" },
+ "APP.new.applet.pill": { "message": "Structured Surface · Applet" },
"APP.new.applet.title": { "message": "OOMOL Applet" },
"APP.new.applet.subtitle": {
"message": "Form Applet · Deterministic Interaction"
},
"APP.new.applet.description": {
- "message": "When inputs are clear, call the function directly through structured parameters for more reliable delivery."
+ "message": "When inputs are clear, run the same cloud skill through structured parameters for more reliable delivery."
},
"APP.new.applet.meta1.label": { "message": "For Whom" },
"APP.new.applet.meta1.value": {
- "message": "Best for teams delivering fixed-input function capabilities to internal or external users"
+ "message": "Best for teams delivering fixed-input cloud skills to internal or external users"
},
"APP.new.applet.meta2.label": { "message": "Core Experience" },
"APP.new.applet.meta2.value": {
- "message": "Wrap a function as a fillable, executable, and reusable product entry point"
+ "message": "Wrap the same cloud skill as a fillable, executable, and reusable entry point"
},
"APP.new.applet.devValue": {
- "message": "Function as App: auto-generated parameter UI with less frontend boilerplate."
+ "message": "Cloud skill as app: auto-generated parameter UI with less frontend boilerplate."
},
"APP.new.hero.cta.web": {
"message": "Use in Web"
@@ -3022,28 +3052,28 @@
"message": "So Studio has a clear role: not to replace engineering workflow, but to bring function generation, local validation, and delivery back inside it."
},
"HOME.StudioChain.title": {
- "message": "From blocks to deployment to delivery"
+ "message": "From idea to cloud skill"
},
"HOME.StudioChain.subtitle": {
- "message": "When ready-made capabilities are not enough, OOMOL lets you keep moving: build blocks in Studio, deploy through Cloud, and deliver the capability with one continuous path."
+ "message": "When ready-made skills are not enough, OOMOL gives you one continuous path: generate in Studio, validate locally, publish through Cloud, and deliver through oo-cli."
},
"HOME.StudioChain.lead": {
- "message": "Do not just connect capabilities. Build them and deliver them."
+ "message": "Do not stop at local automation. Build a skill people can actually use."
},
"HOME.StudioChain.summary": {
- "message": "In OOMOL, you can start with ready-made capabilities, create your own blocks in Studio, then deploy and deliver them privately to yourself, your team, or your customers."
+ "message": "In OOMOL, you can start with ready-made skills, create your own implementation in Studio, validate it locally, then publish it privately to yourself, your team, or your customers."
},
"HOME.StudioChain.card1.title": {
"message": "OOMOL Studio"
},
"HOME.StudioChain.card1.description": {
- "message": "Write, debug, and validate your own blocks in a familiar environment for code, dependencies, and inputs."
+ "message": "Describe, write, debug, and validate your own skill in a real coding environment for code, dependencies, and inputs."
},
"HOME.StudioChain.card2.title": {
"message": "Cloud"
},
"HOME.StudioChain.card2.description": {
- "message": "Deploy validated blocks as cloud functions and keep providing them reliably without exposing your source code."
+ "message": "Publish the validated implementation as a cloud skill and keep serving it without exposing your source code."
},
"HOME.StudioChain.action.studio": {
"message": "Explore Studio"
@@ -3055,7 +3085,7 @@
"message": "Build, debug, and validate your blocks"
},
"Theme.Navbar.product.cloud.description": {
- "message": "Deploy and deliver capabilities privately"
+ "message": "Publish and deliver cloud skills privately"
},
"Theme.Navbar.product.label": {
"message": "Product"
diff --git a/i18n/zh-CN/code.json b/i18n/zh-CN/code.json
index d53207e3..cc2e7c3a 100644
--- a/i18n/zh-CN/code.json
+++ b/i18n/zh-CN/code.json
@@ -27,7 +27,7 @@
"message": "社区"
},
"HOME.page.title": {
- "message": "OOMOL - 为 agent 构建并交付你的能力"
+ "message": "OOMOL - 构建并发布 cloud skill"
},
"HOME.FirstScreen.slogan": {
"message": "为 agent 构建并交付你的能力"
@@ -38,6 +38,21 @@
"HOME.FirstScreen.script": {
"message": "先通过 oo-cli 使用现成能力,再在 OOMOL Studio 中编写自己的 block,最后通过 Cloud 私有部署并交付出去。"
},
+ "HOME.FirstScreen.heroTitle": {
+ "message": "让 Agent 用上你的 Skill,\n代码依然由你掌控。"
+ },
+ "HOME.FirstScreen.heroSubtitle": {
+ "message": "我们把这种运行在云端、可被终端和 agent 工作流直接使用的能力,叫做 cloud skill。"
+ },
+ "HOME.FirstScreen.heroLead": {
+ "message": "cloud skill 是一种运行在云端、可复用,并且能被终端和 agent 工作流直接使用的能力。"
+ },
+ "HOME.FirstScreen.heroAdvantage": {
+ "message": "开源还是闭源,"
+ },
+ "HOME.FirstScreen.heroAdvantageHighlight": {
+ "message": "都由你自己决定。"
+ },
"HOME.FirstScreen.pill1": {
"message": "不学新 DSL"
},
@@ -262,7 +277,7 @@
"message": "仅支持 x64 版本"
},
"HOME.FirstScreen.cta.secondary": {
- "message": "开始构建"
+ "message": "先用 oo-cli"
},
"HOME.ValueProps.localCompute.title": {
"message": "将本地算力转化为你的私有 AI 云"
@@ -961,7 +976,7 @@
"message": "先把第一条链路跑通"
},
"HOME.GetStartedPrompt.subtitle": {
- "message": "先下载 oo-cli,使用已经发布好的能力。需要时,再用 OOMOL Studio 写自己的 block,并通过 Cloud 部署出去。"
+ "message": "先通过 oo-cli 运行已经发布好的 cloud skill。需要时,再回到 OOMOL Studio 里生成并验证自己的实现,再通过 Cloud 发布出去。"
},
"HOME.Pricing.title": {
"message": "价格"
@@ -1006,13 +1021,13 @@
"message": "CLI"
},
"HOME.Downloads.cli.title": {
- "message": "更想直接在终端里用?通过 oo-cli 直接消费云函数。"
+ "message": "更偏终端工作流?先从 oo-cli 开始。"
},
"HOME.Downloads.cli.subtitle": {
- "message": "在 Codex、Claude Code 或任意本地终端中安装 oo-cli,就可以先搜包、看输入、执行云函数,再拿结果,不必一开始就接 API 或 MCP。"
+ "message": "在 Codex、Claude Code 或任意本地终端中安装 oo-cli,就可以先搜包、看输入、执行 cloud skill,再拿结果,不必一开始就接 API 或 MCP。"
},
"HOME.Downloads.cli.action.guide": {
- "message": "打开 CLI 指南"
+ "message": "打开 oo-cli 指南"
},
"HOME.Downloads.cli.action.github": {
"message": "查看 oo-cli GitHub"
@@ -2554,10 +2569,10 @@
"message": "容器化部署到私有云或 K8s 集群,支持 CI/CD 流水线,实现企业级 API 服务的持续交付和运维。"
},
"HOME.ProductComparison.title": {
- "message": "不是为了上云,而是为了交付"
+ "message": "Cloud 不是托管层,而是 skill 的交付层"
},
"HOME.ProductComparison.subtitle": {
- "message": "Cloud 的意义,不只是把代码放到云上,而是让已经验证过的 block 可以持续提供给自己、团队或客户使用。"
+ "message": "OOMOL Cloud 不只是代码运行的地方,而是把已经验证过的实现变成 cloud skill,并私有交付给自己、团队或客户的那一层。"
},
"HOME.ChatAgent.title": {
"message": "OOMOL Chat & Agent 生态"
@@ -2605,58 +2620,58 @@
"message": "部署并交付"
},
"HOME.ProductComparison.cloud.capability": {
- "message": "把已经验证过的 block 部署为云函数,稳定提供给自己、团队或客户使用,不必再围着同一份能力重做一层服务。"
+ "message": "把已经验证过的 block 发布为 cloud skill,让用户拿到能力,而不是拿到你的源码。"
},
"HOME.ProductComparison.cloud.scenario": {
- "message": "适合给自己扩展 CLI 能力、给团队提供统一能力,或给客户提供 skill 与 CLI 服务的开发者和小团队。"
+ "message": "适合想把 skill 共享、售卖或持续运营出去,但又不想围着每个能力重做一层 SaaS 的开发者和小团队。"
},
"HOME.ProductComparison.cloud.tech": {
- "message": "沿用 Studio 中已经跑通的实现,由 OOMOL Cloud 承接运行和对外交付;如果需要,同一份能力也可以继续通过 API 或 MCP 接出去。"
+ "message": "沿用 Studio 中已经跑通的实现,由 OOMOL Cloud 承接运行、访问控制和对外交付;如果需要,同一份 cloud skill 也可以继续通过 API 或 MCP 接出去。"
},
"HOME.ProductComparison.cta": {
- "message": "查看 Cloud Function"
+ "message": "了解 Cloud"
},
"HOME.ProductComparison.outputIntro": {
- "message": "同一份能力,按需继续扩展"
+ "message": "一个 cloud skill,多种消费面"
},
"HOME.ProductComparison.outputSummary": {
- "message": "同一份已经验证过的 block,可以继续通过不同方式被消费和集成。"
+ "message": "同一份已经验证过的实现,可以继续被终端、应用、agent 和自动化消费,而不用拆成多个产品。"
},
"HOME.ProductComparison.output1.title": {
- "message": "CLI 使用"
+ "message": "CLI 与 Agent"
},
"HOME.ProductComparison.output1.description": {
- "message": "通过 oo-cli 直接搜索、查看和运行已经部署好的能力。"
+ "message": "通过 oo-cli 和 agent 终端工作流,直接搜索、查看和运行已经部署好的 cloud skill。"
},
"HOME.ProductComparison.output2.title": {
- "message": "API 接入"
+ "message": "API 与应用接入"
},
"HOME.ProductComparison.output2.description": {
- "message": "把同一份能力继续接进自己的应用、服务或自动化代码。"
+ "message": "把同一份 cloud skill 接进自己的应用界面、后端服务或产品集成里。"
},
"HOME.ProductComparison.output3.title": {
- "message": "MCP 接入"
+ "message": "MCP 与自动化"
},
"HOME.ProductComparison.output3.description": {
- "message": "在需要时,把同一份能力继续接入其他 agent 和工具系统。"
+ "message": "在需要时,把同一份 cloud skill 接入 agent 生态,或让它持续按触发器和定时器运行。"
},
"HOME.ProductComparison.benefit1.label": {
- "message": "交付负担"
+ "message": "商业化路径"
},
"HOME.ProductComparison.benefit1.value": {
- "message": "少补一层服务"
+ "message": "交付 skill,不交付源码"
},
"HOME.ProductComparison.benefit1.description": {
- "message": "Cloud 承接函数的线上运行和对外交付,让你不用再围着同一份能力重做一套接口工程。"
+ "message": "Cloud 让你交付能力而不交付实现,分发不再逼着你不是开源,就是重做成完整 SaaS。"
},
"HOME.ProductComparison.benefit2.label": {
- "message": "运行负担"
+ "message": "交付负担"
},
"HOME.ProductComparison.benefit2.value": {
- "message": "更稳定地在线上用"
+ "message": "少重做产品外壳"
},
"HOME.ProductComparison.benefit2.description": {
- "message": "把精力放回函数本身,而不是持续处理环境、调度、扩缩容和线上维护。"
+ "message": "把精力放回 skill 本身,而不是持续重做鉴权、托管、调度和交互外壳。"
},
"HOME.DeveloperBenefits.badge": {
"message": "开发者福利"
@@ -2719,10 +2734,22 @@
"message": "CLI FIRST"
},
"HOME.CliEntry.title": {
- "message": "先用,再决定要不要自己做"
+ "message": "oo-cli 是发现和运行 cloud skill 的默认入口"
},
"HOME.CliEntry.subtitle": {
- "message": "oo-cli 是 OOMOL 最快的使用入口。你可以先搜索、查看、运行已经发布好的能力,在终端里直接开始使用。"
+ "message": "在 Codex、Claude Code 或任意终端里装一次,就可以搜索包、查看输入、运行 cloud skill,再决定要不要接 API 或 MCP。"
+ },
+ "HOME.CliEntry.benefit1.label": {
+ "message": "先用现成 skill"
+ },
+ "HOME.CliEntry.benefit1.description": {
+ "message": "先从别人已经发布好的 skill 开始搜索、查看和运行,不必第一天就自己重做一套。"
+ },
+ "HOME.CliEntry.benefit2.label": {
+ "message": "需要时再发布自己的"
+ },
+ "HOME.CliEntry.benefit2.description": {
+ "message": "如果现成 skill 不够,就回到 Studio 里生成、验证并发布自己的 cloud skill。"
},
"HOME.CliEntry.bridge": {
"message": "函数先发布到 OOMOL Cloud,CLI 再负责登录、搜索和调用。这层关系说一遍就够,重点是让你第一次跑通。"
@@ -2731,25 +2758,25 @@
"message": "安装 oo-cli"
},
"HOME.CliEntry.step1.description": {
- "message": "先把使用入口装好。"
+ "message": "先把使用已发布 cloud skill 的默认入口装好。"
},
"HOME.CliEntry.step2.title": {
"message": "登录账号"
},
"HOME.CliEntry.step2.description": {
- "message": "登录后开始搜索和运行已发布能力。"
+ "message": "登录后开始搜索和运行已发布的 cloud skill。"
},
"HOME.CliEntry.step3.title": {
- "message": "搜索并运行能力"
+ "message": "搜索并运行 skill"
},
"HOME.CliEntry.step3.description": {
- "message": "先看清楚能力做什么、需要什么输入,再直接运行。"
+ "message": "先看清楚 skill 做什么、需要什么输入,再直接在终端里运行。"
},
"HOME.CliEntry.action.primary": {
"message": "查看 oo-cli"
},
"HOME.CliEntry.action.secondary": {
- "message": "查看 Cloud Function"
+ "message": "了解 Cloud 交付"
},
"HOME.CliEntry.setup.eyebrow": {
"message": "INSTALL ONCE"
@@ -2872,16 +2899,19 @@
"message": "把长文档翻译成可继续阅读的双语 EPUB 或 Markdown 输出,而不是只拿回一段文本结果。"
},
"CLOUD.hero.title": {
- "message": "OOMOL Cloud"
+ "message": "发布私有的 cloud skill"
},
"CLOUD.hero.description": {
- "message": "把已经在本地跑通的函数直接交付成服务,不必再重搭后端、部署框架和运维流程。"
+ "message": "把已经在本地验证过的 skill 放到云端运行,让用户用到能力,而不用拿到你的源码或一套单独搭出来的服务。"
},
"CLOUD.hero.kicker": {
- "message": "Cloud Function"
+ "message": "Cloud Skill Runtime"
+ },
+ "CLOUD.hero.note": {
+ "message": "用户通过 oo-cli、应用或 agent 使用 skill,而你的实现继续留在服务器端。"
},
"CLOUD.hero.stat1": {
- "message": "直接发布"
+ "message": "私有交付"
},
"CLOUD.hero.stat2": {
"message": "按量计费"
@@ -2890,7 +2920,7 @@
"message": "少管运维"
},
"CLOUD.hero.cta.start": {
- "message": "开始使用"
+ "message": "开始构建 Cloud Skill"
},
"CLOUD.hero.cta.docs": {
"message": "了解更多"
@@ -2899,46 +2929,46 @@
"message": "打开 Cloud 控制台"
},
"CLOUD.painPoints.title": {
- "message": "交付代码不该是折磨"
+ "message": "交付一个 skill,不该等于重做一个 SaaS"
},
"CLOUD.painPoints.subtitle": {
"message": "作为开发者,我们深知你的苦恼"
},
"CLOUD.painPoints.description": {
- "message": "真正拖慢交付的,往往不是函数本身,而是把它包成服务的那一大段重复工作:准备接口、部署环境、配置扩缩容、维护可用性。Cloud 的目标就是把这段工作缩到最短。"
+ "message": "真正拖慢交付的,往往不是 skill 本身,而是围绕它补出来的那层东西:给用户做入口、让它稳定在线、控制访问、承担运维。Cloud 的目标就是把这一层压到最短。"
},
"CLOUD.solution.title": {
- "message": "同一份函数,三种交付方式"
+ "message": "一个 skill,三种消费路径"
},
"CLOUD.solution.subtitle": {
- "message": "写好的函数能力,可以继续交付为 API、MCP 工具或自动化任务。"
+ "message": "同一个 cloud skill 可以继续通过 API、MCP 或自动化被消费,同时仍然只维护一份实现。"
},
"CLOUD.solution.kicker": {
- "message": "交付方式"
+ "message": "消费路径"
},
"CLOUD.modes.library.title": {
- "message": "发布成自动化任务"
+ "message": "作为自动化运行"
},
"CLOUD.modes.library.description": {
- "message": "按触发器或定时器运行同一份函数能力,让它持续执行,而不是停留在本地手动运行。"
+ "message": "让同一个 cloud skill 按触发器或定时器持续运行,而不是只停留在本地手动执行。"
},
"CLOUD.modes.serverless.title": {
- "message": "发布成 API 服务"
+ "message": "通过 API 使用"
},
"CLOUD.modes.serverless.description": {
- "message": "不必再单独搭服务框架,直接把函数交付为可调用 API,并由 OOMOL 负责运行和扩缩容。"
+ "message": "让应用直接通过 API 调用同一个 cloud skill,而不用围绕它再补一层独立后端。"
},
"CLOUD.modes.mcp.title": {
- "message": "发布成 MCP 工具"
+ "message": "通过 MCP 使用"
},
"CLOUD.modes.mcp.description": {
- "message": "把函数能力作为 MCP Tool 暴露给 Agent 和 AI 应用,让同一份实现直接进入调用链。"
+ "message": "当 agent-native 集成更重要时,把同一个 cloud skill 作为 MCP Tool 暴露给 Agent 和 AI 应用。"
},
"CLOUD.pricing.title": {
- "message": "按调用收费,不用预支"
+ "message": "先发布,按使用增长再付费"
},
"CLOUD.pricing.description": {
- "message": "没有昂贵的服务器租用费,没有复杂的预付费套餐。我们按调用次数收取费用,真正做到省钱省力,让你专注于享受编程的乐趣。"
+ "message": "你不需要为了验证分发这件事先养一台服务器。先把 skill 发布出去,验证需求,再随着使用量增长付费。"
},
"CLOUD.pricing.kicker": {
"message": "价格"
@@ -2953,13 +2983,13 @@
"message": "打开 Cloud 控制台"
},
"CLOUD.opensource.title": {
- "message": "开源基础设施"
+ "message": "开放运行时,灵活部署"
},
"CLOUD.opensource.subtitle": {
- "message": "OOMOL 的底层运行时内核全部开源,让你完全掌控部署环境"
+ "message": "即使你发布的 cloud skill 是私有的,底层运行时基础仍然保持开源。"
},
"CLOUD.opensource.description": {
- "message": "我们坚信开源的力量。OOMOL 的虚拟机和运行时核心代码完全开源,你可以自由查看、修改和部署。无论是个人 NAS、私有服务器还是公有云,你都拥有完全的部署自由。"
+ "message": "OOMOL 的虚拟机和运行时核心持续开源,所以无论你用个人服务器、私有基础设施还是公有云,都依然保有部署自由,同时为每个 skill 单独决定如何交付。"
},
"CLOUD.opensource.projects.title": {
"message": "开源项目"
@@ -2991,48 +3021,48 @@
"STUDIO.hero.description": {
"message": "面向开发者的本地开发环境,基于 VSCode 的可视化编程工具,结合 FRP 协议实现 P2P 算力共享"
},
- "APP.new.hero.title": { "message": "OOMOL App" },
- "APP.new.hero.subtitle": { "message": "把函数直接交付给用户" },
+ "APP.new.hero.title": { "message": "OOMOL App Surfaces" },
+ "APP.new.hero.subtitle": { "message": "cloud skill 的产品化入口" },
"APP.new.hero.description": {
- "message": "无需单独开发 UI,把函数能力直接交付为 Chat 技能或 Applet 入口,让用户立刻可以使用。"
+ "message": "一个 cloud skill 可以继续通过对话入口或结构化 applet 被使用,而不用为每种产品形态重做一套界面。"
},
- "APP.new.concept.title": { "message": "代码即产品" },
+ "APP.new.concept.title": { "message": "一个 skill,多种入口" },
"APP.new.concept.description": {
- "message": "OOMOL 把函数能力封装成可直接使用的产品入口。你专注写函数,我们负责把它连接到用户。"
+ "message": "OOMOL 把同一个 cloud skill 包装成不同的可用入口。你专注实现本身,我们负责把它连接到用户。"
},
"APP.new.chat.pill": { "message": "对话入口 · Chat Skill" },
"APP.new.chat.title": { "message": "OOMOL Chat" },
"APP.new.chat.subtitle": { "message": "AI 助手 · 探索性交互" },
"APP.new.chat.description": {
- "message": "当用户需求还不够明确时,让 AI 在对话中选择并调用你的函数能力。"
+ "message": "当用户意图还不够明确时,让 AI 在对话中选择并运行合适的 cloud skill。"
},
"APP.new.chat.meta1.label": { "message": "适合谁" },
"APP.new.chat.meta1.value": {
- "message": "适合通过对话暴露函数能力、逐步澄清需求的场景"
+ "message": "适合通过对话暴露 cloud skill,并先逐步澄清用户意图的场景"
},
"APP.new.chat.meta2.label": { "message": "核心体验" },
"APP.new.chat.meta2.value": {
- "message": "先理解意图,再调用服务,降低用户上手门槛"
+ "message": "先理解意图,再调用正确的 cloud skill,降低用户上手门槛"
},
"APP.new.chat.devValue": {
- "message": "函数即技能:你的函数就是 AI 可调用的能力"
+ "message": "cloud skill 即 agent tool:同一份实现可以直接变成 AI 可调用入口"
},
- "APP.new.applet.pill": { "message": "参数入口 · Applet" },
+ "APP.new.applet.pill": { "message": "结构化入口 · Applet" },
"APP.new.applet.title": { "message": "OOMOL Applet" },
"APP.new.applet.subtitle": { "message": "表单小程序 · 确定性交互" },
"APP.new.applet.description": {
- "message": "当用户输入明确时,用结构化参数直接调用函数能力,交付更稳定。"
+ "message": "当用户输入明确时,用结构化参数运行同一个 cloud skill,交付更稳定。"
},
"APP.new.applet.meta1.label": { "message": "适合谁" },
"APP.new.applet.meta1.value": {
- "message": "适合把固定输入输出的函数能力交付给团队或最终用户"
+ "message": "适合把固定输入输出的 cloud skill 交付给团队或最终用户"
},
"APP.new.applet.meta2.label": { "message": "核心体验" },
"APP.new.applet.meta2.value": {
- "message": "把函数包装成可填写、可执行、可复用的产品入口"
+ "message": "把同一个 cloud skill 包装成可填写、可执行、可复用的产品入口"
},
"APP.new.applet.devValue": {
- "message": "函数即应用:自动生成参数入口,减少前端样板"
+ "message": "cloud skill 即应用:自动生成参数入口,减少前端样板"
},
"APP.new.hero.cta.web": {
"message": "在网页中使用"
@@ -3103,28 +3133,28 @@
"message": "所以 Studio 的角色很明确:它不是为了替代工程环境,而是把函数生成、本地验证和后续交付重新放回工程环境里。"
},
"HOME.StudioChain.title": {
- "message": "从 block,到部署,再到交付"
+ "message": "从想法,到 cloud skill"
},
"HOME.StudioChain.subtitle": {
- "message": "当现成能力不够时,OOMOL 让你继续往下走: 在 OOMOL Studio 里生产 block,在 Cloud 里部署,并把能力稳定交付出去。"
+ "message": "当现成 skill 不够时,OOMOL 给你一条连续的路径:在 Studio 里生成,在本地验证,通过 Cloud 发布,再由 oo-cli 交付出去。"
},
"HOME.StudioChain.lead": {
- "message": "不只是连接能力,更是把能力做出来并交付出去。"
+ "message": "不要停在本地自动化,把它做成别人真的能用的 skill。"
},
"HOME.StudioChain.summary": {
- "message": "在 OOMOL 里,你可以先使用现成能力,再在 Studio 里编写和验证自己的 block,最后通过 Cloud 私有部署并交付给自己、团队或客户使用。"
+ "message": "在 OOMOL 里,你可以先使用现成 skill,再在 Studio 里生成并验证自己的实现,最后通过 Cloud 私有发布给自己、团队或客户使用。"
},
"HOME.StudioChain.card1.title": {
"message": "OOMOL Studio"
},
"HOME.StudioChain.card1.description": {
- "message": "在 Studio 里编写、调试和验证自己的 block,用熟悉的方式组织代码、依赖和输入输出。"
+ "message": "在 Studio 里描述、编写、调试和验证自己的 skill,用真实工程环境管理代码、依赖和输入输出。"
},
"HOME.StudioChain.card2.title": {
"message": "Cloud"
},
"HOME.StudioChain.card2.description": {
- "message": "把已经验证过的 block 部署为云函数,稳定提供给自己、团队或客户使用。"
+ "message": "把已经验证过的实现发布为 cloud skill,持续提供给自己、团队或客户使用,而不暴露源码。"
},
"HOME.StudioChain.action.studio": {
"message": "了解 Studio"
@@ -3136,7 +3166,7 @@
"message": "编写、调试并验证你的 block"
},
"Theme.Navbar.product.cloud.description": {
- "message": "部署并私有交付你的能力"
+ "message": "私有发布并交付你的 cloud skill"
},
"Theme.Navbar.product.label": {
"message": "产品"
diff --git a/src/components/DownloadButton/index.tsx b/src/components/DownloadButton/index.tsx
index cdf87fa0..21aa33f0 100644
--- a/src/components/DownloadButton/index.tsx
+++ b/src/components/DownloadButton/index.tsx
@@ -27,19 +27,29 @@ function detectOSAndArchitecture(): OS {
export interface DownloadButtonProps {
stableTag?: boolean;
+ centered?: boolean;
}
-export const DownloadButton = ({ stableTag }: DownloadButtonProps) => {
+export const DownloadButton = ({
+ stableTag,
+ centered,
+}: DownloadButtonProps) => {
const downloadIcon = (
);
+ const containerClassName = centered
+ ? `${styles.downloadContainer} ${styles.centered}`
+ : styles.downloadContainer;
+ const windowsClassName = centered
+ ? `${styles.windowsBox} ${styles.centered}`
+ : styles.windowsBox;
return (
+
@@ -211,7 +214,7 @@ export default function AppPage() {
{translate({
id: "APP.new.applet.meta2.value",
message:
- "Wrap a function as a fillable, executable, and reusable product entry point",
+ "Wrap the same cloud skill as a fillable, executable, and reusable entry point",
})}
@@ -220,7 +223,7 @@ export default function AppPage() {
{translate({
id: "APP.new.applet.devValue",
message:
- "Function as App: auto-generated parameter UI with less frontend boilerplate.",
+ "Cloud skill as app: auto-generated parameter UI with less frontend boilerplate.",
})}
diff --git a/src/pages/cloud/index.tsx b/src/pages/cloud/index.tsx
index 24c39118..12159cb9 100644
--- a/src/pages/cloud/index.tsx
+++ b/src/pages/cloud/index.tsx
@@ -73,6 +73,9 @@ export default function CloudPage() {