Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions .github/workflows/publish-v0.2.0.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Publish Agent Orbs v0.2.0 — GitHub Packages and Release
on:
push:
branches: [main]
paths:
- '.github/workflows/publish-v0.2.0.yml'
workflow_dispatch:

permissions:
contents: write
packages: write

concurrency:
group: publish-agent-orbs-v0.2.0
cancel-in-progress: false

jobs:
publish:
runs-on: ubuntu-24.04
steps:
- name: Checkout exact source
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Configure GitHub npm registry
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '22'
registry-url: 'https://npm.pkg.github.com'
scope: '@firexcore'
- name: Verify intended package version
run: node -e "const p=require('./package.json'); if(p.name!=='@firexcore/agent-orbs'||p.version!=='0.2.0') process.exit(1)"
- name: Install dependencies and run acceptance suite
run: |
npm install
npm run check
- name: Smoke-test built library exports
run: |
node --input-type=module -e "const m=await import('./dist/index.js'); for(const x of ['AgentOrb','InteractiveOrb','MonoLatticeOrb','ThinkingOrb']) if(typeof m[x]!=='function') throw Error('Missing export: '+x); console.log('ESM exports OK')"
node -e "const m=require('./dist/index.cjs'); for(const x of ['AgentOrb','InteractiveOrb','MonoLatticeOrb','ThinkingOrb']) if(typeof m[x]!=='function') throw Error('Missing export: '+x); console.log('CJS exports OK')"
test -f dist/index.d.ts
test -f dist/register.js
test -f dist/register.d.ts
test -f third_party/thinking-orbs/LICENSE
test -f third_party/thinking-orbs/NOTICE.md
- name: Pack installable tarball
run: |
mkdir -p release-assets
npm pack --pack-destination release-assets
tar -tzf release-assets/*.tgz | grep -q 'package/dist/index.js'
tar -tzf release-assets/*.tgz | grep -q 'package/dist/index.d.ts'
tar -tzf release-assets/*.tgz | grep -q 'package/third_party/thinking-orbs/LICENSE'
tar -tzf release-assets/*.tgz | grep -q 'package/third_party/thinking-orbs/NOTICE.md'
- name: Publish npm package version to GitHub Packages
env:
NODE_AUTH_TOKEN: ${{ github.token }}
run: |
if npm view @firexcore/agent-orbs@0.2.0 version --registry=https://npm.pkg.github.com >/dev/null 2>&1; then
echo "Package @firexcore/agent-orbs@0.2.0 already exists in GitHub Packages"
else
npm publish --registry=https://npm.pkg.github.com
fi
test "$(npm view @firexcore/agent-orbs@0.2.0 version --registry=https://npm.pkg.github.com)" = '0.2.0'
- name: Publish distributable GitHub release
env:
GH_TOKEN: ${{ github.token }}
run: |
if gh release view v0.2.0 >/dev/null 2>&1; then
echo 'GitHub Release v0.2.0 already exists'
exit 0
fi
cat > release-assets/RELEASE_NOTES.md <<'NOTES'
FireXCore Agent Orbs v0.2.0 — installable GitHub Packages release.

Includes nine original FireXCore states; opt-in nine-state classic and interactive contour family; MonoLatticeOrb for faithful monochrome dots at native 32, 64, 96 and 128px; React, vanilla DOM controller, and web component.

Original FireXCore implementation is unchanged. The optional heritage engine is adapted under MIT from Schoolees/thinking-orbs and Jakub Antalik. See third_party/thinking-orbs/LICENSE and NOTICE.md.

Registry: https://npm.pkg.github.com/ (not npmjs.org).
Configure: npm config set @firexcore:registry https://npm.pkg.github.com
Install: npm install @firexcore/agent-orbs@0.2.0
Demo: https://agent-orbs-demo.vercel.app/
NOTES
gh release create v0.2.0 release-assets/*.tgz \
--target "$GITHUB_SHA" \
--title "FireXCore Agent Orbs v0.2.0" \
--notes-file release-assets/RELEASE_NOTES.md \
--latest
25 changes: 10 additions & 15 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
## Unreleased — Mono Lattice family (source and demo)

- Added named \`MonoLatticeOrb\` React wrapper for the heritage engine's authentic classic monochrome dots.
- Added a third showcase tab, **Mono Lattice**, without creating a third renderer or replacing FireXCore originals.
- Displayed each of the nine upstream states at native 128/96/64/32px with the original per-size density tunings, grayscale palette and matte surfaces.
- Connected selection, pause/resume, speed, theme, pointer interaction, integration preview and cleanup.
- Preserved upstream MIT license and attribution; maintained original and contour galleries independently.

## 0.2.0 (source update; not yet published)
# Changelog

- Preserved the original nine FireXCore motion states and existing AgentOrb API.
- Added an opt-in, MIT-attributed nine-state thinking-orb engine with classic and contour modes.
- Added interactive pointer/touch distortion, four sizes, idle/responding states, vanilla controller, and custom element.
- Added the React InteractiveOrb wrapper, expanded gallery and standalone preview.
- Added compatibility tests and retained upstream notices in third_party/thinking-orbs.
## v0.2.0 — Interactive contour and Mono Lattice package release (2026-11-03)

# Changelog
- Preserves the nine independently authored FireXCore Canvas 2D motion states, APIs and appearance.
- Adds the optional, MIT-attributed Schoolees / Jakub Antalik Thinking Orbs engine with nine states and classic/contour modes.
- Adds the `InteractiveOrb` React component, imperative DOM controller and web component.
- Adds the named `MonoLatticeOrb` family: authentic grayscale classic dots, four native 128/96/64/32px profiles with tuned density, no imposed glow.
- Provides pointer/touch interaction, light/dark themes, animation speed, pause and reduced-motion handling.
- Includes the production demo, source documentation, geometry and compatibility tests.
- Retains the upstream license and attribution in `third_party/thinking-orbs/`.
- Publishes a GitHub Packages npm installable package and release tarball. Publishing to npmjs.org remains separate.

## v0.1.0 — Initial public library

Expand Down
30 changes: 15 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# FireXCore Agent Orbs

[![Live Demo](https://img.shields.io/badge/Live_Demo-Vercel-121212?logo=vercel)](https://agent-orbs-demo.vercel.app/) [![MIT License](https://img.shields.io/badge/License-MIT-blue)](LICENSE) [![Release v0.1.0](https://img.shields.io/badge/Release-v0.1.0-0a7)](https://github.com/FireXCore/agent-orbs/releases/tag/v0.1.0) [![CI](https://github.com/FireXCore/agent-orbs/actions/workflows/ci.yml/badge.svg)](https://github.com/FireXCore/agent-orbs/actions/workflows/ci.yml)
[![Live Demo](https://img.shields.io/badge/Live_Demo-Vercel-121212?logo=vercel)](https://agent-orbs-demo.vercel.app/) [![MIT License](https://img.shields.io/badge/License-MIT-blue)](LICENSE) [![Release v0.2.0](https://img.shields.io/badge/Release-v0.2.0-0a7)](https://github.com/FireXCore/agent-orbs/releases/tag/v0.2.0) [![CI](https://github.com/FireXCore/agent-orbs/actions/workflows/ci.yml/badge.svg)](https://github.com/FireXCore/agent-orbs/actions/workflows/ci.yml)

**[Interactive live demo](https://agent-orbs-demo.vercel.app/)** · [Release v0.1.0](https://github.com/FireXCore/agent-orbs/releases/tag/v0.1.0) · [Source repository](https://github.com/FireXCore/agent-orbs) · [Changelog](CHANGELOG.md)
**[Interactive live demo](https://agent-orbs-demo.vercel.app/)** · [Release v0.2.0](https://github.com/FireXCore/agent-orbs/releases/tag/v0.2.0) · [Source repository](https://github.com/FireXCore/agent-orbs) · [Changelog](CHANGELOG.md)


FireXCore provides nine independently authored procedural orb states for React + TypeScript. Version 0.2 additionally includes an **optional, MIT-licensed adaptation** of the Schoolees thinking-orbs engine with a separate renderer. The original nine-state implementation remains independent and unchanged.
FireXCore provides nine independently authored procedural orb states for React + TypeScript. Version 0.2 additionally includes an **optional, MIT-licensed adaptation** of the Schoolees thinking-orbs engine with a separate renderer. The original nine-state implementation remains independent and unchanged. The named `MonoLatticeOrb` component uses the heritage engine's original grayscale classic renderer.

<p align="center">
<a href="https://agent-orbs-demo.vercel.app/">
Expand All @@ -31,7 +31,7 @@ FireXCore provides nine independently authored procedural orb states for React +

The GIF is rendered from the original `buildScene` implementation, not a marketing simulation: `node scripts/render-motion-frames.mjs` generates scene frames; a GitHub workflow encodes them with FFmpeg. The above SVG is an illustrative vector overview; the site contains real-time Canvas previews.

**Live controls:** original/contour engines, dark/light theme, 0.5–2× speed, classic/contour treatment, pause/resume, pointer distortion and copyable integration snippets.
**Live controls:** Original, Contour and Mono Lattice visual families across two engines, dark/light theme, 0.5–2× speed, classic/contour treatment, pause/resume, pointer distortion and copyable integration snippets.

<details>
<summary>View the compact original nine-state contact sheet</summary>
Expand All @@ -52,7 +52,7 @@ The GIF is rendered from the original `buildScene` implementation, not a marketi
- Accessible `AgentOrbLabel` combines a compact animation with `role="status"` text.
- React 18+ peer dependency, SSR-compatible static import, ESM/CJS/types build, strict TypeScript.

## Optional contour and interactive family (v0.2 source)
## Contour and interactive family (v0.2.0)

This opt-in engine adds features absent from the original FireXCore engine: `idle` and `responding` states, `classic` and `contour` modes for nine states, native `32/64/96/128px` presets, pointer/touch distortion with spring-back, an imperative DOM controller and a `<thinking-orb>` custom element. The original `AgentOrb` API and animation states are preserved.

Expand All @@ -74,7 +74,7 @@ orb.destroy();

For a framework-free custom element, import `@firexcore/agent-orbs/register` once in a browser entrypoint, then use `<thinking-orb state="idle" variant="contour" size="64" interactive></thinking-orb>`.

**Attribution:** The optional implementation is adapted from [Schoolees/thinking-orbs](https://github.com/Schoolees/thinking-orbs), itself adapted from [Jakub Antalik's thinking-orbs](https://github.com/Jakubantalik/thinking-orbs). Copyright and MIT license are retained at `third_party/thinking-orbs/LICENSE` and `third_party/thinking-orbs/NOTICE.md`. These upstream animations are not presented as FireXCore-original geometry. The v0.1.0 release/package does not include this new family until a new package release is published.
**Attribution:** The optional implementation is adapted from [Schoolees/thinking-orbs](https://github.com/Schoolees/thinking-orbs), itself adapted from [Jakub Antalik's thinking-orbs](https://github.com/Jakubantalik/thinking-orbs). Copyright and MIT license are retained at `third_party/thinking-orbs/LICENSE` and `third_party/thinking-orbs/NOTICE.md`. These upstream animations are not presented as FireXCore-original geometry. Version 0.2.0 includes this opt-in family and preserves upstream MIT attribution.

## Showcase assets

Expand All @@ -93,17 +93,17 @@ The visual gallery has **three separately named families** across **two renderin
| **Contour family** | MIT-licensed Schoolees/Jakub Antalik heritage engine | Lines/contours and pointer-reactive variants |
| **Mono Lattice** | Same MIT-licensed heritage engine, *classic* mode | Neutral grayscale halftone dots, no glow, native density presets |

**Mono Lattice** intentionally reproduces the upstream [Thinking Orbs monochrome gallery](https://schoolees.github.io/thinking-orbs/): all nine states at **128, 96, 64 and 32px**, each rendered natively, not resized from a single large orb. It uses the upstream \`variant="classic"\`, \`resolvePreset(state, size)\`, and \`ThinkingOrb\` controller already retained in the repository. This is not a third independent engine and its mathematics are not claimed as original FireXCore work.
**Mono Lattice** intentionally reproduces the upstream [Thinking Orbs monochrome gallery](https://schoolees.github.io/thinking-orbs/): all nine states at **128, 96, 64 and 32px**, each rendered natively, not resized from a single large orb. It uses the upstream `variant="classic"`, `resolvePreset(state, size)`, and `ThinkingOrb` controller already retained in the repository. This is not a third independent engine and its mathematics are not claimed as original FireXCore work.

\`\`\`tsx
```tsx
import { MonoLatticeOrb } from '@firexcore/agent-orbs';

// Distinct, named component: always renders the classic monochrome dots.
<MonoLatticeOrb state="listening" size={128} theme="dark" interactive />
<MonoLatticeOrb state="listening" size={96} theme="dark" interactive />
<MonoLatticeOrb state="listening" size={64} theme="dark" interactive />
<MonoLatticeOrb state="listening" size={32} theme="dark" interactive />
\`\`\`
```

The four-size showcase is available in the [Mono Lattice gallery tab](https://agent-orbs-demo.vercel.app/#gallery). The original FireXCore orbs and the interactive contour gallery remain available as separate tabs. License and origin notices: [third_party/thinking-orbs/LICENSE](third_party/thinking-orbs/LICENSE) and [third_party/thinking-orbs/NOTICE.md](third_party/thinking-orbs/NOTICE.md).

Expand Down Expand Up @@ -132,7 +132,7 @@ Open http://127.0.0.1:5174/preview/. The preview is generated from the exact sam

## Use in RMS (or any React application)

After publishing to npm, install `@firexcore/agent-orbs`. Until publishing, install locally:
To install from GitHub Packages after configuring authenticated access, use `@firexcore/agent-orbs@0.2.0`. For local development, install from a sibling folder:

```bash
npm install ../agent-orbs
Expand Down Expand Up @@ -176,18 +176,18 @@ Make the selected `state` reflect an actual action: for example, only display `l

## Releases

- **Latest release:** [v0.1.0](https://github.com/FireXCore/agent-orbs/releases/tag/v0.1.0)
- **Downloadable distributable:** [firexcore-agent-orbs-0.1.0.tgz](https://github.com/FireXCore/agent-orbs/releases/download/v0.1.0/firexcore-agent-orbs-0.1.0.tgz)
- **Latest release:** [v0.1.0](https://github.com/FireXCore/agent-orbs/releases/tag/v0.2.0)
- **Downloadable distributable:** [firexcore-agent-orbs-0.2.0.tgz](https://github.com/FireXCore/agent-orbs/releases/download/v0.1.0/firexcore-agent-orbs-0.2.0.tgz)
- **Changelog:** [CHANGELOG.md](CHANGELOG.md)
- **Interactive demo:** [agent-orbs-demo.vercel.app](https://agent-orbs-demo.vercel.app/)

The tarball is attached to the GitHub Release. The library is also published as **`@firexcore/agent-orbs@0.1.0`** on the [GitHub Packages npm registry](https://npm.pkg.github.com/) (not npmjs.org). GitHub Packages requires authenticated npm access; new packages default to private visibility until changed in GitHub package settings.
The v0.2.0 tarball is attached to the GitHub Release. The library is published as **`@firexcore/agent-orbs@0.2.0`** on the [GitHub Packages npm registry](https://npm.pkg.github.com/) (not npmjs.org). GitHub Packages requires authenticated npm access; visibility is controlled in the GitHub Packages settings. The npmjs.org registry is a separate publication channel.

To install with GitHub Packages authorization already configured:
To install with GitHub Packages authorization already configured (a GitHub token with package read permission may be required):

```bash
npm config set @firexcore:registry https://npm.pkg.github.com
npm install @firexcore/agent-orbs@0.1.0
npm install @firexcore/agent-orbs@0.2.0
```

See [GitHub's npm registry authentication guide](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry).
Expand Down
Loading