Commit Graph
2150 Commits
Author SHA1 Message Date
Lovehsigure_520 9560a26fe2 feat(stage-tamagotchi): reset to center (#1978)
Authored-by-agent: Codex <codex@openai.com>
2026-07-11 00:26:51 +08:00
Lovehsigure_520 62a01d83b9 feat(stage-tamagotchi,stage-ui,pipelines-audio): integrate voice input composable into tamagotchi (#2004)
---------

Authored-by-agent: Codex <codex@openai.com>
2026-07-11 00:25:07 +08:00
f89a7eb607 chore(i18n): update translations (#2030)
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: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-10 14:56:42 +08:00
RainbowBird 0e4dc69ec0 fix(analytics): normalize PostHog event semantics (#2041) 2026-07-10 13:54:23 +08:00
RainbowBird 0642ede8d1 feat(analytics): expand PostHog coverage and forward server business facts (#2038)
## What

Closes the three structural gaps in AIRI's product analytics: the signup
surface had zero instrumentation, the payment funnel had no terminator
in PostHog, and SPA route changes emitted no pageviews. Also adds
semantic events for character cards, desktop-only features, and
data-maintenance actions.

## User paths

- User signs up / logs in / verifies email / resets password / links
OAuth / deletes account → each step now emits a PostHog event from
`apps/ui-server-auth` (previously fully uninstrumented), with
`identify()` wired on session load so anonymous funnel events merge into
the user person.
- User pays via Stripe → webhook writes `product_events` as before, and
the product-events service now forwards `payment_completed` (plus signup
and subscription lifecycle facts) to PostHog via posthog-node
`captureImmediate`, keyed by the Better Auth user id → the
`checkout_started → payment_completed` funnel closes end-to-end.
Per-request LLM/TTS volume is explicitly not forwarded.
- User navigates between routes in any surface (web / desktop / pocket /
docs) → `$pageview` + `$pageleave` fire per route change via the
posthog-js `defaults: '2025-05-24'` preset in the shared
`posthog.config.ts`.
- User creates / imports / duplicates / edits a ccv3 card, switches
stage background, runs destructive data actions (export / import / clear
chats, reset providers, wipe app data), or uses desktop differentiators
(Spotlight send, widget windows, in-app updater, MCP server management,
pairing QR) → dedicated low-cardinality events.

## Notable decisions

- Server forwarding defaults on: `POSTHOG_PROJECT_KEY` defaults to the
shared browser-safe phc_* project key; set it to an empty string to
disable. Postgres `product_events` remains the source of truth.
- Cross-surface events (`oauth_callback_failed`, account lifecycle)
share one stage vocabulary exported from stage-ui so the two emitters
cannot drift silently.
- Events captured right before full-page navigation use `sendBeacon` so
they survive the redirect (checkout, OAuth consent handoff, login
redirect).
- Removed dead wrappers (`trackSignup`, `trackFirstModelSelected`,
`trackModelChanged`) that duplicated live event streams under second
names.

## How tested

- `pnpm -F @proj-airi/server exec vitest run
src/services/domain/product-events.test.ts` — 6 passed, covering the
forwarding allowlist, the `user_signed_up → signup_completed` mapping,
non-forwarded per-request actions, and a throwing sink not failing the
webhook path nor losing the DB row.
- stage-ui suites (`use-analytics`, `use-linked-accounts`, exports
contract) — 22 passed, including new account/card/data/desktop event
assertions.
- Real transport smoke: posthog-node `captureImmediate` against
`us.i.posthog.com` with the production key resolved in 1380ms (one
`server_forwarding_smoke_test` event left in the project; filter by
event name).
- Browser-tested pageviews: `VITE_ENABLE_POSTHOG=true` dev build, two
`history.pushState` route changes each produced a `$pageview` with
`$pathname`, `navigation_type: pushState`, previous-page dwell time, and
the `surface` super property; batched POST to `us.i.posthog.com/e/`
returned 200. Note: posthog-js drops events from automated browsers
(`navigator.webdriver`) by default — the verification session bypassed
the bot filter locally; production config is untouched.
- Typecheck and lint pass for server, stage-ui, stage-pages, stage-web,
stage-tamagotchi, ui-server-auth.

Full verification record:
`apps/server/docs/ai-context/verifications/posthog-forwarding-and-pageview.md`

## Follow-ups (not in this PR)

- Bot channel usage stats (Discord / Telegram) once they route through
server-runtime counters.
- Main-process desktop events (tray menu, global shortcut fire) need
renderer relay plumbing.
- Confirm `payment_completed` arrives in PostHog after the first real
Stripe payment post-deploy.

https://claude.ai/code/session_01Q1yGavkQ1P41YhTWE4XKex
2026-07-08 15:33:39 +08:00
Dojiandautofix-ci[bot] 5aa44aedd3 feat(stage-ui): add character card import and export (#1998)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-08 14:14:43 +08:00
Neko Ayaka 3779eb6103 release: v0.11.0 2026-07-08 01:20:12 +08:00
RainbowBird 689f02ac4f refactor(posthog): unify project key for all AIRI surfaces and streamline configuration 2026-07-08 00:05:26 +08:00
55e850d71a chore(i18n): update translations (#2018)
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: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-04 23:22:44 +08:00
Lovehsigure_520 2da9d37add feat(analytics): add official provider ops metrics
Build on existing pricing funnel events with official provider, TTS usage, second-turn activation, and Flux balance bucket metrics.
2026-07-01 21:19:42 +08:00
RainbowBird e1a2c51573 feat(speech): integrate Voice Pack model into speech catalog and update related tests 2026-07-01 20:18:13 +08:00
RainbowBird af7de96042 feat(analytics): add p1 behavior events 2026-07-01 20:16:09 +08:00
RainbowBird 0daac71435 feat(analytics): add p0 operations events 2026-07-01 20:16:06 +08:00
RainbowBird 27255001bd refactor: streamline speech module by removing voice pack dependencies
- Removed voice pack related imports and functionality from speech.vue and Stage.vue.
- Simplified speech input handling by eliminating voice pack parameters in speech store.
- Updated tests to reflect changes in voice pack handling and speech input resolution.
- Adjusted Airi card store to remove voice pack binding logic, focusing on speech configuration updates.
- Enhanced voice pack list item structure for clarity and maintainability.
2026-07-01 19:23:33 +08:00
RainbowBird c2aee68513 feat: add upstreamVoiceId to voice packs and related services
- Introduced upstreamVoiceId field in voice pack schema and database.
- Updated voice pack service to handle upstreamVoiceId in CRUD operations.
- Modified API routes and tests to accommodate upstreamVoiceId.
- Enhanced UI components to include upstreamVoiceId in forms and displays.
- Adjusted speech processing logic to utilize upstreamVoiceId where applicable.
- Updated related tests to ensure proper functionality with new field.
2026-07-01 16:07:33 +08:00
RainbowBird 1f1ef49eed feat(speech): refactor voice pack handling and remove synthetic model references 2026-07-01 02:47:31 +08:00
RainbowBird 71482d3859 feat(speech): implement Voice Pack model option and integrate into settings 2026-07-01 00:45:08 +08:00
Lovehsigure_520 5f13127810 fix(analytics): address speech preview review (#2024)
## Summary
- attach manual preview analytics metadata to official TTS preview
requests
- avoid tracking custom voice selection during settings sync or every
input keystroke

## Tests
- corepack pnpm -F @proj-airi/stage-pages typecheck
- corepack pnpm exec eslint
packages/stage-pages/src/pages/settings/modules/speech.vue
- git diff --check
2026-07-01 00:20:36 +08:00
Lovehsigure_520 3d7a8300d8 feat(analytics): add product instrumentation for activation and voice flows (#2023) 2026-06-30 23:36:08 +08:00
LemonNeko f8d3e3db2c feat(cap-vite): auto select the first device when no target specified 2026-06-29 14:51:43 +08:00
d52a81fbcf chore(i18n): update translations (#2000)
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: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-28 23:16:11 +08:00
RainbowBird cc6fe4e6e3 feat(stage-ui): add function to find recommended voice from available voices 2026-06-28 17:25:01 +08:00
RainbowBird 8036501fb0 feat(server): add default TTS model handling and update related tests 2026-06-28 16:55:09 +08:00
Neko 22d0711dc0 fix(stage-ui,stage-tamagotchi): simplify hearing controls (#2014)
---

Co-authored-by-agent: Codex
2026-06-27 01:33:43 +08:00
Lovehsigure_520 8c6e4576e1 refactor(stage-tamagotchi,stage-ui): improve input transcription pipeline (#2001)
---------

Co-authored-by-agent: Codex <codex@openai.com>
2026-06-26 16:05:02 +08:00
Neko Ayaka 6372491e3b feat(stage-*,plugin-*): retriable tool call 2026-06-26 14:52:20 +08:00
35da67395c chore(i18n): update translations (#1999)
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: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-21 15:27:45 +08:00
f1418d6e33 chore(i18n): update translations (#1961)
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>
2026-06-20 13:43:32 +08:00
nyuekiandnyueki 911ebb283b fix(stage-tamagotchi): integration bugs and improve Spine UI, preview (#1994)
Co-authored-by: nyueki <nyuek.i@proton.me>
2026-06-20 00:46:10 +08:00
Garfield Lee 911572fe80 chore(i18n): remove redundant closing tag and change to YAML literal string (#1992) 2026-06-19 02:05:57 +08:00
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 c029e8c444 test(stage-ui): updated 2026-06-18 15:14:31 +08:00
Nekoandautofix-ci[bot] 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] 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
RainbowBird 51a44c1f54 fix: disable SSML when not support 2026-06-14 05:03:53 +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
Doji 8b98a2c138 feat(stage-tamagotchi):add spotlight (#1959) 2026-06-12 02:53:35 +08:00
Nekoandautofix-ci[bot] 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 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 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
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