Skip to content

Fix ci - #65

Open
oniharnantyo wants to merge 9 commits into
dapi-labs:mainfrom
oniharnantyo:fix-ci
Open

oniharnantyo wants to merge 9 commits into
dapi-labs:mainfrom
oniharnantyo:fix-ci

Conversation

@oniharnantyo

Copy link
Copy Markdown

No description provided.

Oni Harnantyo and others added 9 commits October 20, 2026 22:13
Replace the legacy webpack / Jest / ESLint setup with Vite+, which unifies
Vite, Vitest, Rolldown, Oxlint and Oxfmt into a single toolchain.

- build: library build emitting dual ESM + CJS bundles with bundled
  TypeScript declarations and sourcemaps
- test: migrate Jest to Vitest v5 (jsdom, @testing-library/react)
- lint/format: replace ESLint + Prettier with Oxlint + Oxfmt
- demo: rebuild on Vite using the React 18 createRoot API
- ci: replace Travis with GitHub Actions running lint, test and build on
  Node 18/20/22
- release: publish to npm from the `v*` tag workflow with provenance
- add runnable Vite examples (basic, random, expressions)
- point the release changelog URLs at the dapi-labs repository
Turn the static avatar into a character that can be interacted with.

- expressions: 11 named expressions driving eyebrow/eye/mouth styles, with
  feature offsets so the face glides between them instead of snapping
- gestures: one-shot nod, shake, sneeze and squash, playable declaratively
  via the `gesture` prop or imperatively through the ref handle
- gaze tracking: `lookAt` follows the pointer over the avatar (hover) or
  across the whole window (global)
- agent states: persona states (listening, thinking, speaking, focused,
  executing, tool_call, celebrating, confused, error) that change the pose,
  the expression, the breathing tempo and the emote badge
- sentiment: a separate fast-changing emotional channel layered on top of
  the agent state
- emote fx: animated comic / anime overlay badges (idea, zzz, sparkle,
  sweat, anger, question, exclamation, heart, gear)
- secondary motion: spring inertia on the hair and accessories
- talking: the mouth cycles speech-like shapes while the agent speaks
- sleeping: the avatar yawns, droops and falls asleep after a period of
  inactivity, and startles awake on any interaction
- useAvatarController: hook bundling the props, the ref and an imperative
  API for driving the avatar from app code
- new feature sets: eyes (closed, droopy, squint, wide), mouth (frown,
  grimace, open, straight, surprised) and eyebrows (angry, down, flat,
  raised)
- respect prefers-reduced-motion: the keyframes are never injected, so the
  avatar stays still
- list every new prop in the options table with its accepted values
- add tables for expressions, agent states, sentiment and emote fx
- document the useAvatarController and ref handle APIs
- explain the ambient life behaviors, reduced motion and SSR support
- list the runnable examples
- replace the Travis badge with the GitHub Actions CI badge
`npm ci` failed on a clean checkout because the root project aliased `vite`
to `@voidzero-dev/vite-plus-core@^1.3.0`. The alias renames the package, so
npm compares the peer ranges of `@vitejs/plugin-react` (vite ^8.0.0) and
`vitest` (vite ^6.4.0 || ^7.0.0 || ^8.0.0) against the aliased version
1.3.0 and rejects the whole tree.

The root alias is not needed: `vite-plus` already depends on it, and npm
nests it under `node_modules/vite-plus/node_modules/vite`, which is exactly
where the `vp` CLI resolves its runtime from. Dropping the root alias lets
the real Vite 8 satisfy every peer range, so `npm ci` succeeds without
`--force` or `--legacy-peer-deps` and peer conflicts are validated again.

Also drop `@vitejs/plugin-react-oxc`, which was unused and peers on
vite ^6.3.0 || ^7.0.0.

Verified with a clean `npm ci` on npm 11.19.1: check, test, typecheck and
both the library and demo builds pass.
`vp check` crashed on Node 18 with "node:util does not provide an export
named 'styleText'". styleText was added in Node 20.12, and vite-plus
declares `engines.node: ^22.18.0 || ^24.11.0 || >=26.0.0`, so every version
in the CI matrix was unsupported.

- ci: test against Node 22.x, 24.x and 26.x instead of 18.x/20.x/22.x
- publish: build and publish from Node 24.x instead of 20.x, which would
  have failed for the same reason
- package.json: declare the requirement as devEngines, so contributors get
  a clear message (or a matching runtime) instead of a cryptic SyntaxError.
  devEngines is only checked for the root project, so consumers of the
  published package are unaffected
- readme: document the Node requirement

Verified with npm 10.9 (as shipped with Node 22) and npm 11.19: install,
check, test, typecheck and both builds pass.
Replace the long-lived NPM_TOKEN with npm trusted publishing, so the
release workflow authenticates to the registry with a short-lived OIDC
token minted for this workflow instead of a static secret.

- npm-publish: drop the NODE_AUTH_TOKEN secret and rely on the OIDC
  exchange; keep id-token: write, which is what makes it possible
- npm-publish: publish from Node 24.x, whose bundled npm (>= 11.5.1) is the
  minimum for trusted publishing. Node 22 ships npm 10.x and cannot publish
  this way
- npm-publish: disable the package manager cache for release builds
- npm-publish: drop --provenance, it is attached automatically under
  trusted publishing, and stop leaving the job token in .git/config
- ci: bump checkout/setup-node to v7 and pin permissions to contents: read
- readme: document the one-time trusted publisher setup on npmjs.com
Move the package to its own npm scope so it no longer collides with the
upstream `react-nice-avatar` package, which is owned by another account and
already has every version from 0.0.1 to 1.5.0 published.

- package.json: rename to @oniharnantyo/react-nice-avatar and add
  publishConfig.access=public, so a scoped package publishes publicly
  instead of defaulting to restricted access
- lockfiles: regenerate for the root and for all three examples
- aliases: point the vitest and demo vite configs at the scoped name
- demo: fix the tsconfig "path" key, which should be "paths"
- examples: depend on and import the scoped package
- readme: update the badges, install commands, imports and release steps
- versionrc and changelog: repoint the commit links at this repository
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant