Commit Graph
1994 Commits
Author SHA1 Message Date
RainbowBird ae35b580d8 feat(stage): group chat controls and track speech mute (#2139) 2026-07-28 19:34:14 +08:00
RainbowBird 899131b0a1 feat(stage): add persistent speech mute controls (#2128) 2026-07-28 17:58:50 +08:00
RainbowBird de8de0a353 fix(stage-ui): repair dangling character card selection (#2114)
Signed-off-by: RainbowBird <git@luoling.moe>
2026-07-27 19:48:40 +08:00
RainbowBird ce65bcd7f5 feat(ccc): add forward-compatible CCv3 codec (#2113)
Signed-off-by: RainbowBird <git@luoling.moe>
2026-07-27 01:38:53 +08:00
Ryanba bcf7742862 fix(stage-ui): preserve VAD speech padding in chat input (#2095) 2026-07-26 21:08:57 +08:00
RainbowBird f414d165de fix(stage-ui): preserve character card runtime data (#2111) 2026-07-26 20:50:19 +08:00
0xSelenicDove cd9704cf38 fix(stage-ui): apply display model on character card activation (#2090) 2026-07-26 18:04:29 +08:00
RainbowBird 20355670a9 fix(stage-pages): sync active card sessions (#2110) 2026-07-26 17:45:04 +08:00
RainbowBird 019d3fa15f fix(stage-pages): validate and preserve AIRI Card drafts (#2109)
Signed-off-by: RainbowBird <git@luoling.moe>
2026-07-26 17:05:28 +08:00
d6fe72b50a chore(i18n): update translations (#2106)
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-07-26 16:40:22 +08:00
1a5372a0bb chore(i18n): update translations (#2094)
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>
Co-authored-by: Garfield Lee <Garfield550@users.noreply.github.com>
2026-07-24 09:24:01 +08:00
Anfi1andRainbowBird 42925e58f5 feat(stage-tamagotchi): universal TTS stop button in controls island (#2072)
Co-authored-by: RainbowBird <git@luoling.moe>
2026-07-23 00:21:58 +08:00
Neko Ayaka 5228f94123 refactor(ui): better with types 2026-07-22 02:59:43 +08:00
Neko Ayaka f2313e0070 test(ci): fix timestamp and whisper regressions 2026-07-21 15:26:39 +08:00
wuyua9 1ddb68381c fix(stage-ui): preserve Kokoro worker on abort (#1911) 2026-07-21 14:56:09 +08:00
Neko Ayaka 20416d6897 refactor(vishot-*): remove packages, now open sourced at https://github.com/moeru-ai/vishot 2026-07-21 14:52:56 +08:00
hahaqwq 834f17f28e fix(stage-ui): disable dragging on model preview image (#1935) 2026-07-20 20:59:09 +08:00
juyua9 8a3f916641 fix(stage-ui): fail fast on Whisper worker errors (#1803) 2026-07-20 20:52:59 +08:00
luyua9 72b4884dbf fix(core-agent): stabilize legacy chat timestamps (#1858) 2026-07-20 20:52:00 +08:00
ricemaster1 1f0aeb9fcc fix(stage-ui-live2d): decode legacy-codepage zip filenames (#2016) 2026-07-20 20:49:43 +08:00
eabec9a64f feat(stage-ui-mmd): add MMD support (#1997)
---------

Co-authored-by: nyueki <nyuek.i@proton.me>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Neko Ayaka <neko@ayaka.moe>
Co-authored-by-agent: Unknown
2026-07-20 16:13:55 +08:00
0xSelenicDove 78d6588cb0 feat(stage-*): add clickable VRM body-part reactions (#2068) 2026-07-20 16:13:03 +08:00
Ryanba 2bf8cb1f7f fix(stage-ui): keep microphone selection in one store (#2082) 2026-07-20 16:11:21 +08:00
0xSelenicDove 38f7460558 fix(stage-tamagotchi): refresh chats after import (#2088) 2026-07-20 16:10:11 +08:00
Neko Ayaka dbf8124888 release: v0.11.3 2026-07-19 04:03:59 +08:00
Neko Ayaka 55f080642d fix(stage-ui): incorrect type 2026-07-19 04:03:32 +08:00
Neko Ayaka b43b8944bf release: v0.11.2 2026-07-18 10:37:13 +08:00
Lee Penkman 3f4011a6e8 feat(stage-ui): add OpenPaths provider (#1980)
Co-authored-by-agent: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 03:05:51 +08:00
nb213andbinyangzhu000-sudo e5385e90da feat(stage-ui): add Atlas Cloud provider definition (#2076)
---

Co-authored-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com>
2026-07-18 03:03:54 +08:00
Ayobami Adegoke 774aed92bb fix(stage-ui): make provider capability checks non-throwing and reset chat model on provider switch (#2078) 2026-07-18 03:03:12 +08:00
Zyr - AI f0d9f3d3bb fix(stage-ui-live2d): close Live2D mouth after TTS finishes speaking (#2064) 2026-07-17 17:55:31 +08:00
Ryanba 88c4790770 fix(stage-ui): recover stale stage model selection (#2033) 2026-07-17 17:53:38 +08:00
Ryanba fb2b3f5ce9 fix(stage-pages): add local provider WIP routes (#2045) 2026-07-17 17:53:09 +08:00
jim139129 32c79f6e29 fix(stage-ui): allow retrying canceled mobile login (#2058) 2026-07-17 17:51:15 +08:00
Alan-Yu-2077 f453a967f1 feat(stage-ui): add web search tool so the character can look things up online (#2066)
Co-authored-by-agent: Unknown
2026-07-17 17:49:06 +08:00
Neko Ayaka 089ca99108 release: v0.11.1 2026-07-17 03:35:49 +08:00
0c2932679c chore(i18n): update translations (#2049)
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-16 19:52:50 +08:00
RainbowBird c74ed2ff7b fix(server): improve ai generation analytics correlation 2026-07-15 19:06:34 +08:00
RainbowBird 3543a60d3c feat(auth): integrate useAuthProviderSync across multiple components and add tests 2026-07-15 17:26:05 +08:00
RainbowBird 2e9f9ca435 feat: add llm usage and stripe identity analytics (#2056) 2026-07-14 21:56:47 +08:00
Ryanba 563a738c88 fix(ui): safelist settings entry icons (#2050) 2026-07-13 11:34:20 +08:00
Iro 88983a1611 feat(pipelines-audio): Refine event types and error handling (#2026) 2026-07-13 11:16:26 +08:00
Neko ed664e8107 fix(stage-ui-live2d): normalize Live2D model file references (#2047)
Authored-by-agent: Codex <codex@openai.com>
2026-07-11 23:44:41 +08:00
369208afbe chore(i18n): update translations (#2044)
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-11 15:14:32 +08:00
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