From e1a1920e4ca9011506e96af627b17e8ecb0a832d Mon Sep 17 00:00:00 2001
From: Loong Loong
Date: Wed, 11 Feb 2026 00:45:16 +0800
Subject: [PATCH 1/4] feat: connect umami
---
app/components/Community.tsx | 18 ++++-
app/components/Contribute.tsx | 10 +++
app/components/DocsAssistant.tsx | 10 ++-
app/components/EditOnGithub.tsx | 2 +
app/components/Footer.tsx | 21 +++++
app/components/Header.tsx | 12 +++
app/components/Hero.tsx | 10 ++-
app/components/SignInButton.tsx | 9 ++-
app/components/ThemeToggle.tsx | 3 +
app/components/UserMenu.tsx | 1 +
.../assistant-ui/assistant-modal.tsx | 6 ++
app/types/umami.d.ts | 9 +++
.../PNPM_LOCKFILE_GUIDE.md | 12 +--
docs/README.md | 5 ++
docs/umami_tracking.md | 77 +++++++++++++++++++
15 files changed, 195 insertions(+), 10 deletions(-)
create mode 100644 app/types/umami.d.ts
rename PNPM_LOCKFILE_GUIDE.md => docs/PNPM_LOCKFILE_GUIDE.md (99%)
create mode 100644 docs/README.md
create mode 100644 docs/umami_tracking.md
diff --git a/app/components/Community.tsx b/app/components/Community.tsx
index 65ffcefb..1ce8f86c 100644
--- a/app/components/Community.tsx
+++ b/app/components/Community.tsx
@@ -41,7 +41,14 @@ export function Community() {
asChild
className="bg-transparent border-[var(--foreground)] text-[var(--foreground)] hover:bg-[var(--foreground)] hover:text-[var(--background)] px-12 py-8 h-auto font-sans text-sm uppercase tracking-widest font-bold"
>
-
+
Access Articles / 访问文章{" "}
@@ -73,6 +80,9 @@ export function Community() {
href="https://github.com/involutionhell"
target="_blank"
rel="noopener noreferrer"
+ data-umami-event="social_click"
+ data-umami-event-platform="github"
+ data-umami-event-location="community_card"
>
Source Code
@@ -98,6 +108,9 @@ export function Community() {
href="https://discord.com/invite/6CGP73ZWbD"
target="_blank"
rel="noopener noreferrer"
+ data-umami-event="social_click"
+ data-umami-event-platform="discord"
+ data-umami-event-location="community_card"
>
Join Dispatch
@@ -123,6 +136,9 @@ export function Community() {
href="https://www.zotero.org/groups/6053219/unsw_ai/library"
target="_blank"
rel="noopener noreferrer"
+ data-umami-event="resource_click"
+ data-umami-event-type="zotero"
+ data-umami-event-location="community_card"
>
View Library
diff --git a/app/components/Contribute.tsx b/app/components/Contribute.tsx
index dff5ce03..e068407f 100644
--- a/app/components/Contribute.tsx
+++ b/app/components/Contribute.tsx
@@ -132,6 +132,14 @@ export function Contribute() {
if (filename !== articleFile) {
setArticleFile(filename);
}
+
+ if (window.umami) {
+ window.umami.track("contribute_github_redirect", {
+ dir: finalDirPath,
+ filename: filename,
+ });
+ }
+
window.open(
buildGithubNewUrl(finalDirPath, filename, title),
"_blank",
@@ -162,6 +170,8 @@ export function Contribute() {
text-2xl font-serif font-black uppercase italic tracking-tighter
bg-[var(--foreground)] text-[var(--background)] border border-[var(--foreground)]
hover:bg-[var(--background)] hover:text-[var(--foreground)] transition-all duration-300"
+ data-umami-event="contribute_trigger"
+ data-umami-event-location="hero"
onClick={(event) => {
event.preventDefault();
router.push("/editor");
diff --git a/app/components/DocsAssistant.tsx b/app/components/DocsAssistant.tsx
index e877ed8e..60e2af6e 100644
--- a/app/components/DocsAssistant.tsx
+++ b/app/components/DocsAssistant.tsx
@@ -52,7 +52,15 @@ function DocsAssistantInner({ pageContext }: DocsAssistantProps) {
[geminiApiKey, openaiApiKey, pageContext, provider],
);
- const chat = useChat({ transport });
+ const chat = useChat({
+ transport,
+ onFinish: () => {
+ // 当对话结束时(流式传输完成),记录一次查询行为
+ if (window.umami) {
+ window.umami.track("ai_assistant_query");
+ }
+ },
+ });
const {
error: chatError,
diff --git a/app/components/EditOnGithub.tsx b/app/components/EditOnGithub.tsx
index b1a22947..55d1c494 100644
--- a/app/components/EditOnGithub.tsx
+++ b/app/components/EditOnGithub.tsx
@@ -5,6 +5,8 @@ export function EditOnGithub({ href }: { href: string }) {
-
+
@@ -107,6 +113,8 @@ export function Hero() {
00{idx + 1}
diff --git a/app/components/SignInButton.tsx b/app/components/SignInButton.tsx
index a93cdce8..768ee915 100644
--- a/app/components/SignInButton.tsx
+++ b/app/components/SignInButton.tsx
@@ -27,7 +27,14 @@ export function SignInButton({
});
}}
>
-