Commit Graph
3968 Commits
Author SHA1 Message Date
Neko 7e3698147d fix(stage-ui-live2d): ignore macOS files (#1991) 2026-06-19 02:02:53 +08:00
Nashchennc cc8d6287e1 fix(stage-ui-live2d): cache Live2D zips as original directories (#1934) 2026-06-18 15:19:26 +08:00
Neko Ayaka 5bac31f60c chore(AGENTS.md): updated with better rules 2026-06-18 15:14:32 +08:00
Neko Ayaka c029e8c444 test(stage-ui): updated 2026-06-18 15:14:31 +08:00
Neko Ayaka 4ba237c5c0 chore(.gitignore): updated 2026-06-18 15:14:31 +08:00
Nekoandautofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> 47bfe02a87 feat(better-ws): added new package (#1989)
---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by-agent: Codex
2026-06-18 15:11:35 +08:00
Nekoandautofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> 391d21b996 refactor(audio-pipelines-transcribe): use @proj-airi/audio (#1990)
---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by-agent: Codex
2026-06-18 15:10:34 +08:00
Ryan Leiandleiyutian 70d1c317df feat(stage-ui): add Google Gemini TTS provider (#1828)
---------

Co-authored-by: leiyutian <leiyutian@echo.tech>
Co-authored-by-agent: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-18 06:41:45 +00:00
gpc123456 4a9275cb45 fix(stage-ui): fetch minimax models from v1/models (#1930) 2026-06-18 14:32:45 +08:00
Doji 5c60cb7661 fix(stage-ui): sync module selections to active character card (#1979) 2026-06-18 11:21:00 +08:00
Doji 27569c94f2 fix(stage-pages): add vision provider settings (#1987) 2026-06-17 17:52:53 +08:00
Doji bb9a6a9b37 fix(stage): fix ReLU card init and i18n translations (#1977) 2026-06-14 20:00:21 +08:00
Doji 3a41215785 fix(stage-pages): restore speech none option (#1969) 2026-06-14 11:34:07 +00:00
Lovehsigure_520 16d50433b9 fix(server): auth UI callback trust (#1976) 2026-06-14 17:34:43 +08:00
RainbowBird 51a44c1f54 fix: disable SSML when not support 2026-06-14 05:03:53 +08:00
RainbowBird c3f2beba47 feat(admin-ui): enhance LLM router page to support Streaming TTS and ASR providers 2026-06-14 04:45:36 +08:00
RainbowBird 3215687e98 feat(server): add Aliyun NLS ASR gateway and official transcription provider (#1970) 2026-06-14 04:22:07 +08:00
Neko Ayaka 0f975a4f73 refactor(stage-tamagotchi,plugin-*): unified to extension id 2026-06-12 19:27:23 +08:00
Neko Ayaka eb98845b11 refactor(stage-tamagotchi): better formatting and naming 2026-06-12 19:09:30 +08:00
Neko AyakaandGarfield Lee 1ae161c273 chore(stage-tamagotchi): cleanup unused code
Co-authored-by: Garfield Lee <3471836+Garfield550@users.noreply.github.com>
Co-authored-by-agent: Codex
2026-06-12 19:08:48 +08:00
Neko Ayaka 2eb05425c5 refactor(stage-tamagotchi): reload tools when extension reloads 2026-06-12 16:11:59 +08:00
Doji 8b98a2c138 feat(stage-tamagotchi):add spotlight (#1959) 2026-06-12 02:53:35 +08:00
Nekoandautofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> 668440a732 refactor(extension-*,stage-tamagotchi,stage-ui,server-*): rename to extension, improve DX (#1892)
---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by-agent: Codex
2026-06-12 02:03:42 +08:00
RainbowBird 8518c65aa4 feat(auth): enhance trusted admin redirect handling and add local patterns 2026-06-11 22:26:39 +08:00
RainbowBird 2786393aa5 feat(admin-ui): enhance dark mode support across UI components
- Updated various components in the llm-router to include dark mode styles, ensuring better visibility and aesthetics in dark theme.
- Added tests for API URL helpers to validate sign-in URL construction and redirection logic.
- Improved the sign-in flow to handle trusted redirects for standalone admin origins.
- Enhanced CSS styles for dark mode, including adjustments to backgrounds, borders, and text colors for better contrast and readability.
- Refactored input components to maintain consistent styling in both light and dark modes.
2026-06-11 21:59:08 +08:00
RainbowBird 8e572ad93c feat(server): add stepfun tts provider
Signed-off-by: RainbowBird <git@luoling.moe>

Commit-Message-Assisted-by: Claude (via Claude Code)
2026-06-11 00:23:04 +08:00
RainbowBird 5bf6deab89 feat(admin-ui): load and edit router config from forms
Add a form-first LLM/TTS router config editor and a redacted admin config snapshot so operators can inspect configKV state before applying changes.

Preserve existing encrypted key entries when loaded slices are submitted without new plaintext keys.

Signed-off-by: RainbowBird <git@luoling.moe>
Commit-Message-Assisted-by: Claude (via Claude Code)
2026-06-11 00:14:34 +08:00
Neko 52e0476154 chore(deps): update moeru eslint config (#1963) 2026-06-10 23:57:48 +08:00
RainbowBird 16f9aaa4e3 feat(auth): enhance OAuth linking flow with account selection and error handling
- Added `prompt: 'select_account'` for Google and GitHub providers to force account selection during OAuth linking.
- Introduced localized error messages for account linking issues in multiple languages.
- Implemented a function to resolve OAuth error codes to specific i18n keys for better user feedback.
- Updated account settings page to display relevant error messages based on OAuth linking status.
2026-06-10 16:42:13 +08:00
Lulu aa5223ad73 feat(stage): hide BYOK providers for Steam builds via VITE_DISABLE_CUSTOM_PROVIDERS (#1908) 2026-06-10 16:36:31 +08:00
Zhou fanqiautofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>Rin
027ad7436f refactor(minecraft): restore services to neutral Minecraft semantics (#1950)
## Summary

Restores `services/minecraft` to own **only Minecraft semantics**,
decoupling the already-merged #1915 runtime contract from the (unmerged)
#1916 desktop-relay design — as requested by @shinohara-rin in the #1916
review:

> I'd prefer we first restore `services/minecraft` to only own Minecraft
semantics, then reintroduce desktop relay/read-aloud through a generic
module capability/tool contribution path or a Minecraft adapter.
Otherwise `main` now contains half of a cross-PR runtime contract whose
other half we are saying should not land as-is.

The perception/reflex/brain reliability work from #1915 is untouched.
This PR only removes the three desktop-coupling points baked into the
bot service.

## Changes

- **`airi-bridge.ts` — `handleActionIntent`**: a `spark:command` is
high-level guidance from the AIRI server, now attributed to a neutral
`'airi'` source. Removed the hardcoded `username = '主人'` / `relayedFrom:
'desktop-airi'` "treat it as if the master typed it in-game" framing.
The generic server→bot directive still routes through
`signal:chat_message` to trigger a fresh decision cycle, exactly as
before — only the identity/provenance is neutralized. Binding a relayed
command to the master's in-game identity is desktop-relay policy and
will live in the Minecraft adapter.
- **`minecraft-context-service.ts`**: stopped emitting the
machine-readable `master:` status hint (whose only consumer was the
desktop `gaming-minecraft` store) and removed the desktop-coupling
NOTICE. The owner identity remains in the human-readable status **text**
for the bot's own brain.
- **`cognitive/index.ts`**: stopped forwarding the bot's own in-game
chat over the `context:update` lane `minecraft:speech` (only meaningful
with the #1916 desktop TTS consumer). The bot still ignores its own
messages.

## How tested

- Updated `minecraft-context-service.test.ts` to assert the neutral
behavior (owner identity in status text, **never** as a `master:` hint).
2/2 pass.
- `pnpm exec eslint <changed files>` → 0 problems.
- The changed files typecheck clean. (Note: this worktree surfaces
pre-existing `vec3@0.1.10` vs `vec3@0.2.0` dependency-resolution errors
in unrelated files —
`gaze.ts`/`runtime.ts`/`patched-goto.ts`/`world.ts`/`map-renderer`/`brain`/`rules`
— present on `main` before this change too; not introduced here.)

## Follow-up

Desktop relay (`relayToMinecraft`) and read-aloud will be reintroduced
through a Minecraft adapter in the renderer (registering tools/prompts
into the existing generic stores), so the runtime contract is owned by
the Minecraft surface rather than baked into the neutral bot service.
The generic stage-ui robustness fixes are already split out in #1949.

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Rin <shinohara-rin@users.noreply.github.com>
2026-06-10 06:51:56 +00:00
Zhou fanqi 39b68ddf12 fix(stage-ui): robust spark:command result + TTS session isolation (#1949)
## Summary

Two small, generic robustness fixes, split out of the Minecraft desktop
integration (#1916) so they can land independently of that rework — as
suggested in @shinohara-rin's review:

> The generic fixes in this PR, like the TTS session cleanup and
`spark:command` result handling, seem separable and worth keeping in a
smaller PR.

Both are in shared `stage-ui` runtime code and contain **no
Minecraft-specific logic**.

## What's included

- **`spark:command` result handling**
(`tools/character/orchestrator/spark-command.ts`):
`command.destinations` may be `undefined` — the channel sender
(`stores/llm.ts` `sendSparkCommand`) deletes it to broadcast to all
authenticated peers. The success message's `.join()` therefore surfaced
`Cannot read properties of undefined (reading 'join')` back to the LLM
even though the send had already succeeded. Guard it and report a
broadcast instead.
- **TTS session isolation** (`components/scenes/Stage.vue`
`openTtsSession`): a completing/erroring session now only clears the
module-level `currentSession` if it **is** that session. The previous
code cleared it whenever any `stream-` session completed, which becomes
unsafe once sessions exist that are not assigned to `currentSession`
(e.g. one-off read-aloud sessions) — one of those finishing would null a
still-active chat session and drop the rest of the reply.

## How tested

```bash
pnpm -F @proj-airi/stage-ui exec vitest run src/tools/character/orchestrator/spark-command.test.ts  # 9 passed (+1 new)
pnpm -F @proj-airi/stage-ui typecheck   # 0 errors
pnpm exec eslint <changed files>        # 0 problems
```

- Regression test for the broadcast-destinations result message.

## Context

This is the first, low-risk slice of reworking the Minecraft↔desktop
integration around the neutral Context Flow architecture (per the #1916
review). The Minecraft relay/read-aloud behavior will be reintroduced
through a Minecraft-owned adapter in a follow-up.

---------
2026-06-10 14:47:25 +08:00
github-actions[bot]Crowdin BotGarfield Leeautofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
4ff491a44d chore(i18n): update translations (#1954)
This PR contains updated translations from Crowdin. Created from [GitHub
Actions](https://github.com/moeru-ai/airi/blob/main/.github/workflows/crowdin-cron-sync.yml).

You can review the source of translations
[here](https://crowdin.com/project/proj-airi)

---------

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Garfield Lee <Garfield550@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-09 22:35:42 +08:00
RainbowBird a331d3a42a feat(auth): update AUTH_UI_URL to point to accounts.airi.build 2026-06-09 18:01:34 +08:00
RainbowBird 7fa7f8a072 feat(admin-ui): update admin UI URLs to remove trailing slashes and adjust redirects 2026-06-09 17:46:58 +08:00
RainbowBird 2ac4e90d56 feat(auth): add account linking support for different email providers 2026-06-09 17:46:51 +08:00
RainbowBird 11b820a77f feat(admin-ui): implement standalone admin UI with Cloudflare Pages deployment 2026-06-09 17:09:06 +08:00
RainbowBird 57ba232432 feat(auth): migrate auth ui to unique domain 2026-06-09 00:15:34 +08:00
Lulu ff7c18694a chore(server): remove unused CLIENT_URL from env template (#1884) 2026-06-08 13:52:19 +08:00
Lulu 0647f5b37a feat(stage): hide flux purchase UI for Steam builds via VITE_DISABLE_FLUX_PURCHASE (#1912) 2026-06-08 13:51:10 +08:00
Lulu d91dab7bf0 fix(ui-server-auth): clarify social-only email sign-in hint (#1879) 2026-06-08 13:47:52 +08:00
Lulu 0b8fc26314 fix(stage-ui): limit provider validation to listed providers only (#1899) 2026-06-08 13:46:27 +08:00
RainbowBird 19e5020fd3 test: resolve type 2026-06-07 20:47:40 +08:00
RainbowBird 9382a12137 chore: cleanup and lint fix 2026-06-07 20:31:22 +08:00
RainbowBird 4de2aef746 chore(server): type issues 2026-06-07 19:53:44 +08:00
RainbowBird 007fae6810 chore: update package dependencies and remove specific catalog references
- Removed specific catalog references for '@unocss/core', 'es-toolkit', 'nanoid', and 'valibot' in pnpm-workspace.yaml and various service package.json files.
- Updated versions for '@vueuse/core', 'es-toolkit', 'nanoid', 'reka-ui', and 'valibot' to their latest compatible versions.
- Cleaned up unused catalog entries in pnpm-workspace.yaml.
2026-06-07 19:45:28 +08:00
Weathercold 18f8a2a94d fix(nix): missing runtime libs & small changes (#1956)
Add the missing runtime libs to LD_LIBRARY_PATH. Also pin pnpm and electron versions, use getExe and update flake lock.
2026-06-07 01:37:54 -04:00
Weathercoldandgithub-actions[bot] <github-actions[bot]@users.noreply.github.com> 61a128045b chore(nix): update assets hash (#1955)
Auto-generated by CI to keep Nix asset hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-07 02:23:55 +00:00
RainbowBird eae942702c feat(speech): enhance voice pack handling and add computed properties for UI logic 2026-06-07 01:56:04 +08:00
github-actions[bot]Crowdin BotGarfield Leeautofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
6c9c6eb29d chore(i18n): update translations (#1943)
This PR contains updated translations from Crowdin. Created from [GitHub
Actions](https://github.com/moeru-ai/airi/blob/main/.github/workflows/crowdin-cron-sync.yml).

You can review the source of translations
[here](https://crowdin.com/project/proj-airi)

---------

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Garfield Lee <Garfield550@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-06 20:40:01 +08:00