From d1d9eeb9816c56f912a886d578f4523b1fc70366 Mon Sep 17 00:00:00 2001 From: FireXCore Date: Tue, 3 Nov 2026 19:31:23 +0330 Subject: [PATCH] release: prepare v0.2.0 GitHub Packages publish with checks and tarball --- .github/workflows/publish-v0.2.0.yml | 88 ++++++++++++++++++++++++++++ CHANGELOG.md | 25 ++++---- README.md | 30 +++++----- 3 files changed, 113 insertions(+), 30 deletions(-) create mode 100644 .github/workflows/publish-v0.2.0.yml diff --git a/.github/workflows/publish-v0.2.0.yml b/.github/workflows/publish-v0.2.0.yml new file mode 100644 index 0000000..6c9f01f --- /dev/null +++ b/.github/workflows/publish-v0.2.0.yml @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1aab38e..35efe7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index 694c09e..be97f99 100644 --- a/README.md +++ b/README.md @@ -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.

@@ -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.

View the compact original nine-state contact sheet @@ -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 `` custom element. The original `AgentOrb` API and animation states are preserved. @@ -74,7 +74,7 @@ orb.destroy(); For a framework-free custom element, import `@firexcore/agent-orbs/register` once in a browser entrypoint, then use ``. -**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 @@ -93,9 +93,9 @@ 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. @@ -103,7 +103,7 @@ import { MonoLatticeOrb } from '@firexcore/agent-orbs'; -\`\`\` +``` 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). @@ -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 @@ -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).