更新日志
本页记录公开软件包 @neongate-ai/orbz、自定义元素 <orb-z> 的契约及其受支持集成方式中面向用户的变更。
实现以 GitHub 仓库 为准。已发布版本可在 npm 获取,完整文档位于 orbz.site 。
1.0.2 — 2026-09-08
Neongate 预设修正
- 将
neongate恢复为默认预设的规范名称,涵盖DEFAULT_ORBZ_PRESET、ORBZ_PRESET_NAMES以及元素的规范化预设 getter。Neongate 的颜色未变。 - 保留 1.0.1 中意外采用的账号名称,作为已弃用的输入别名。现有属性、属性赋值、类型化输入和校验函数仍接受它;规范化与属性反射使用
neongate。 - 保留已弃用的调色板键,作为
ORBZ_PRESETS.neongate的不可变、不可枚举别名。规范预设列表仍有六项。 - 规范化旧版精简和完整配置对象,不修改调用方输入,并保留提供的颜色与严格校验。
从 1.0.1 升级
安装已发布的补丁,并更新固定版本的 CDN URL:
npm install @neongate-ai/orbz@1.0.2新的显式预设值请使用 neongate。使用旧账号键的输入仍兼容,可在方便时迁移。读取规范化预设名称的代码应预期 neongate。默认示例与调色板访问方式见 Neongate 预设命名。
此修正取代 1.0.1 的命名指导;下方仍保留其历史记录。npm 作用域仍为 @neongate-ai/orbz;维护中的源码仓库现归 jonatassales 所有。
在 npm 查看 1.0.2
· 浏览 v1.0.2 源码标签
· 比较标签源码
1.0.1 — 2026-09-08
清理与精简配置
- 修复 Orbz 源码检出目录中的
orb cleanup(别名orb clean),默认删除根目录和子目录中未跟踪的node_modules及生成产物。--dry-run预览目标,--keep-dependencies保留依赖。受跟踪内容、源码/资源、harness 元数据及嵌套仓库会保留,清理不跟随目录符号链接。 - 简化编写的配置 JSON。转换器用类型化默认值补齐省略的内部外观、动画和语音分组,再校验、克隆并冻结运行时配置。仍支持显式覆盖这些分组。
- 将 GitHub 所有权链接更新为当时的个人账号,并更新 README、CLI 指南及工程检查。npm 包仍为
@neongate-ai/orbz。
从 1.0.0 升级
安装补丁,并更新固定版本的 CDN URL:
npm install @neongate-ai/orbz@1.0.1此版本曾暂时将默认预设改为个人账号名,同时保留原有 neongate 颜色。1.0.2 恢复了规范名称 neongate;新集成请使用 <orb-z preset="neongate"></orb-z>。维护 Orbz 源码检出目录时,可用 orb cleanup --keep-dependencies 保留 node_modules;单独运行 orb cleanup 现在会删除它。即使这是补丁版本,这些迁移细节也适用。
1.0.0 — 2026-09-06
语音模型与 Realtime 对话
- 为
web-speech、openai-speech和openai-realtime添加类型化 JavaScript 属性voiceModel。选择提供商不会发声;宿主在用户激活后显式启动语音或对话。 - 添加
OpenAIRealtimeAdapter和浏览器直连提供商的 WebRTC 音频。应用通过realtimeSession授权会话建立,可使用自己的端点或返回 SDP answer 的异步回调。 - 添加
startConversation()、stopConversation()、interruptConversation()、只读conversationState,以及orbz-conversation-state-change和orbz-transcript事件,由应用实现控制和转录界面。 - 提供商密钥保留在应用后端。模型设置仅含公开配置;端点对象拒绝
apiKey、token、headers等未知字段。密钥和会话令牌都不应放入 HTML 属性、组件属性或配置 JSON。
规范配置与 CLI
- 分支维护者现在编辑
src/orbz.config.json中的组件、外观、动画、语音和 Realtime 默认值,然后重新构建。安装的包使用内置默认值,不在运行时获取配置。 - 添加只读
orbzConfiguration和纯函数工具transformOrbzConfiguration(),可校验、克隆、转换和冻结完整配置,不改变包的单例。 - 整合 Orb CLI 的命令处理与帮助。现有公开导出、视觉属性、原生注册和显式
voiceEngine集成仍可使用。
从 0.4.3 升级
安装已发布版本,并更新所有固定版本的 CDN URL:
npm install @neongate-ai/orbz@1.0.0现有视觉示例仍使用 <orb-z> 标签和同一浏览器入口。新的结构化选项通过 JavaScript 属性设置;没有 voice-model HTML 属性。Realtime 需要应用负责会话授权并显式激活;升级包不会启动音频或请求麦克风。显式指定的 voiceEngine 优先于 voiceModel。
0.4.3 — 2026-09-04
自 0.3.1 以来的重点变更
- 将已发布的 POSIX shell CLI
orb添加为包的可执行程序。可通过npx -y --package=@neongate-ai/orbz@latest orb临时运行。 - Orb 项目设置根据项目元数据与锁文件识别 npm、pnpm、Yarn 或 Bun,安装正在执行的 Orbz 版本,不生成或覆盖应用源码。
WebSpeechAdapter现在默认使用巴西葡萄牙语(pt-BR)。应用可覆盖language,包括使用en-US。- Orbz 不再内置固定问候语、角色或默认对话流程。使用方提供
speech或talkFlow,配置voiceEngine,并显式调用startTalking()。
0.3.1 — 2026-08-25
显式启用语音
- 连接或升级
<orb-z>不再创建默认语音引擎或启动对话流程。 voiceEngine现在默认为undefined。应用明确提供引擎,并在访客选择启用后调用startTalking()。- 设置语音引擎仍不会发声;
stopTalking()停止活动流程,设置undefined则移除配置的引擎。 - 通过 HTML 或服务端渲染标记传入的数字字符串现在会统一规范化为像素长度,与数值属性一致。
0.3.0 — 2026-08-23
React 与 Next.js 类型支持
- 为 React 和 Next.js TypeScript 项目添加可选入口
@neongate-ai/orbz/react-types。 - 此入口扩展 JSX,为
<orb-z>提供类型,无需框架包装组件。 - Orbz 的运行时依赖仍不包含 React;React 类型仅用于构建可选声明入口。
0.2.0 — 2026-08-22
Orbz 0.2.0 将原有视觉助手组件扩展为支持语音、独立于框架的自定义元素。此版本引入对话运行时、可替换的语音与智能接口、更严格的外观控制、更强的封装,以及适用于所有支持框架的统一原生集成方式。
1.0 之前的不兼容版本: 使用
0.1.0的colors属性、公开 CSS 变量、Shadow Parts、开放 Shadow DOM 或@neongate-ai/orbz/react的应用必须迁移。
语音与对话运行时
- 添加自动且确定性的对话流程,在元素首次连接渲染后启动。
- 通过公开
talk对象和DEFAULT_TALK_FLOW添加内置步骤welcoming、askName、help和answer。 - 添加仅存在于运行时的对话记忆。默认流程记录访客姓名并通过
talkContext提供,不写入 cookies、本地存储、IndexedDB 或后端。 - 添加
startTalking(),重置当前运行时上下文并重新启动配置的流程。 - 添加
receive(input),使宿主应用能用自己界面收集的文本继续当前提问或回答步骤。 - 添加
stopTalking(),停止当前流程与语音输出。 - 添加可配置属性
voiceEngine、talkFlow和intelligence。 - 添加公开 TypeScript 契约
OrbzTalkStep、OrbzTalkContext和OrbzVoiceOptions。 - 添加
OrbzVoiceEnginePort,使应用可替换语音输出而无需修改组件。 - 添加
OrbzIntelligencePort,连接智能体或其他回答提供商,同时将产品逻辑和凭据保留在 Orbz 外部。 - 未配置智能提供商或提供商失败时,提供本地备用回答。
- 添加事件
orbz-speaking-change,详情为{ speaking: boolean }。 - 添加事件
orbz-talk-error,通过{ error: unknown }提供原始错误。 - 播放音频时暂时切换到
speaking视觉状态,之后恢复原状态。 - 麦克风采集、语音识别、权限、转录和文本输入仍由宿主应用负责。Orbz 只接收通过
receive()传入的文本。
浏览器语音
- 添加
WebSpeechAdapter作为零配置默认语音引擎。 - 将默认语音语言改为
en-US。 - 浏览器语音会等待异步语音列表加载后再选择音色。
- 添加显式英语筛选,不再接受无关语言的系统默认语音。
- 添加首选语音选择,支持已配置的语音,以及浏览器提供的高质量 Google、Microsoft、自然、神经、premium、增强或在线语音。
- 可配置语言、首选语音、语速、音高、音量和语音加载超时。
- 检测无法启动的语音,避免对话流程无限等待。
- 若浏览器通过
NotAllowedError阻止自动音频,首次渲染的语音会在首次指针、键盘或触摸交互后自动重试。 - 移除示例中必须通过全部重置重新挂载元素才能开始语音的行为。
- 明确浏览器语音仍由访客的浏览器和操作系统提供。可以改善语音选择,但系统语音不会因此变成 OpenAI 生成的语音。
OpenAI 语音
- 添加
OpenAISpeechAdapter,通过应用代理使用 OpenAI 文本转语音。 - 默认使用
gpt-4o-mini-tts、marin音色、MP3 输出和自然美式英语朗读指令。 - 可配置模型、音色、响应格式、指令、凭据、请求头和 fetch 实现。
- 兼容旧模型
tts-1和tts-1-hd,使用兼容的默认音色并省略不受支持的指令。 - OpenAI API 密钥保留在浏览器和 Orbz 包之外。适配器调用集成方拥有的端点获取生成的音频。
- 输出停止或被替换时取消待处理的语音请求。
- 播放、取消或失败后清理生成的音频对象 URL。
- 处理浏览器激活错误,使生成音频参与与浏览器语音相同的首次交互重试流程。
外观与组件 API
-
用两种严格互斥的外观模式取代开放的
colors属性:preset属性;- 五个属性
color-primary、color-secondary、color-accent、color-highlight和color-background。
-
添加六个预设:
neongate、periwinkle、magenta、peach、mocha和ivory。 -
预设和自定义颜色互斥。两者同时存在时,Orbz 报告冲突、应用预设,并忽略自定义颜色,直到预设属性被移除。
-
添加布尔属性
elevated,用于可选的居中阴影。 -
保留五个公开视觉状态:
idle、listening、thinking、speaking和asleep。 -
保留正值速度倍数、尺寸规范化、暂停与播放、动画重启,以及
system、always、never减弱动态效果策略。 -
保留状态、预设、减弱动态效果、尺寸、速度和颜色配置的公开常量、校验及规范化函数。
-
将 Shadow DOM 从开放改为封闭。
-
移除公开 Shadow Parts 和外部
::part(...)样式。 -
移除公开
--orbz-*CSS 变量定制。内部选择器与变量现在是私有实现细节。 -
将组件源码样式移至
src/element/index.css,保留在封闭的 shadow root 内,并生成同一份dist/index.css。
框架集成与包入口
- 移除框架专用 React 组件和
@neongate-ai/orbz/react入口。 - 从 Orbz 运行时包的 peer dependency 和开发依赖中移除 React。
- 所有框架统一使用字面自定义元素
<orb-z>。 - 更新 React 和 Next.js 集成,注册浏览器入口并直接渲染
<orb-z>。 - 在 React 和 Next.js 示例中添加本地 JSX intrinsic-element 声明,提供 TypeScript 类型识别,无需包装组件。
- 保留
@neongate-ai/orbz作为无副作用的类型、常量、适配器、接口、工厂和显式注册工具入口。 - 保留
@neongate-ai/orbz/browser作为注册<orb-z>的浏览器入口。 - 保留
@neongate-ai/orbz/standalone,为 CDN 和直接脚本集成提供自动注册的独立浏览器包。 - 保留服务端渲染环境中自定义元素类创建和注册的防护。
- 多个包或微前端尝试注册元素时,
defineOrbz()仍保持幂等。 - 将高级元素类创建函数改名为
orbzElementClassFactory()。 - 将浏览器注册副作用移入显式浏览器入口,不再从包根入口执行。
构建、打包与内部组织
- 添加
prepack生命周期,在npm pack或npm publish前执行严格 TypeScript 校验并重新构建。 - npm 包仅含生成的
dist产物,以及 npm 自动包含的package.json、README.md、LICENSE等文件。 - 文档、示例、内部智能体指令、源码及工作区配置不进入 npm tarball。
- 为共享 tsdown 配置导入添加显式
.ts扩展名,兼容 Node 原生 TypeScript 配置加载。 - 按
core、element、factories、ports、services和talk重组内部模块。 - 将原
voice源码区域改名为talk。 - 将相关类型声明整合到
.types.ts模块。 - 移除内部文件名中冗余的
orbz前缀,保留公开Orbz*符号名。 - 扁平化不必要的单文件目录。
- 从包源码中完全移除 React 运行时实现。
示例与文档
- 添加基于相同
<orb-z>界面的同步 Vanilla、React、Vue、Svelte、Angular 和 Next.js 示例。 - 重置控件恢复状态,无需重新挂载自定义元素。
- 用 Nextra 文档站替换原 VitePress 框架。
- 添加原生、框架及 CDN 集成入门文档。
- 添加设计理念、状态、外观、动画与无障碍概念文档。
- 添加框架、微前端、SSR 和语音助手指南。
- 添加完整的元素和包导出 API 参考。
- 添加示例、故障排查及迁移指南。
- 将 orbz.site 设为主要文档地址。
- 将框架专用子域名设为同步示例的部署地址。
从 0.1.0 迁移
替换 React 适配器
移除旧 React 入口的导入:
import { Orbz } from "@neongate-ai/orbz/react";
export function Assistant() {
return <Orbz state="idle" />;
}改为注册浏览器入口并渲染原生自定义元素:
import "@neongate-ai/orbz/browser";
export function Assistant() {
return <orb-z state="idle"></orb-z>;
}如果 TypeScript 尚不识别 orb-z,请添加本地 JSX intrinsic-element 声明。此声明仅提供编译时类型识别,不会创建 React 组件。
替换颜色 API
移除旧 colors 对象:
orb.colors = {
primary: "#7C3AED",
secondary: "#22D3EE"
};使用内置预设:
<orb-z preset="neongate"></orb-z>或不设置 preset,使用五个受支持的自定义颜色属性:
<orb-z
color-primary="#7C3AED"
color-secondary="#22D3EE"
color-accent="#F472B6"
color-highlight="#FDE68A"
color-background="#09090B"
></orb-z>除非有意让预设优先,否则不要同时设置显式预设和自定义颜色。
移除外部 Shadow DOM 定制
移除依赖以下内容的集成:
element.shadowRoot;- 内部选择器;
::part(...);- 公开
--orbz-*CSS 变量; - 对内部 DOM 结构的假设。
改用文档中公开的属性、方法、接口、适配器、事件及导出。
显式注册自定义元素
当前模块需要注册 <orb-z> 时使用浏览器入口:
import "@neongate-ai/orbz/browser";导入类型或工具且不需要浏览器副作用时,使用包根入口:
import {
defineOrbz,
type OrbzElement
} from "@neongate-ai/orbz";需要由宿主应用控制注册时,显式调用 defineOrbz()。
显式启用语音
0.2.0 和 0.3.0 会在首次连接渲染后调度对话流程。0.3.1 移除了此行为:现在应用设置 voiceEngine、talkFlow 和 intelligence,并在访客选择启用后显式调用 startTalking()。
import '@neongate-ai/orbz/browser'
import {
OpenAISpeechAdapter,
type OrbzElement
} from "@neongate-ai/orbz";
const orb = document.createElement("orb-z") as OrbzElement;
orb.voiceEngine = new OpenAISpeechAdapter({
endpoint: "/api/orbz/speech"
});
document.body.append(orb);
const startVoiceButton = document.querySelector<HTMLButtonElement>("[data-start-voice]");
startVoiceButton?.addEventListener("click", async () => {
await orb.startTalking();
});如果浏览器在显式操作后仍拒绝请求的音频,Orbz 会在下一次交互时重试该流程。
0.1.0 — 首个公开版本
- 在 npm 发布首个
@neongate-ai/orbz包。 - 将 Orbz 定义为使用 Web Components 构建、独立于框架的 AI 语音视觉组件。
- 提供五个助手状态:
idle、listening、thinking、speaking和asleep。 - 提供可配置尺寸、动画速度、暂停与播放、动画重启及减弱动态效果配置。
- 添加 SSR 安全的自定义元素创建与注册。
- 添加浏览器注册入口和独立浏览器包。
- 添加首版 React 适配器。
- 通过 JavaScript
colors属性公开颜色覆盖。 - 公开
--orbz-*CSS 变量。 - 使用开放 Shadow DOM 和命名 Shadow Parts 支持外部定制。
版本管理约定
文档所列属性、方法、事件、接口、适配器、类型、常量和包导出都属于公开 API。
从 Orbz 1.0.0 开始:
- 不兼容的公开 API 变更递增主版本;
- 向后兼容的功能递增次版本;
- 向后兼容的修复递增补丁版本。
示例、文档、部署配置和内部源码组织可以演进,而不增加公开运行时契约。它们演示并解释已发布包,但只有显式导出或列入组件文档契约的内容才属于 npm API。