Include last 4-chars of Dyad Pro user id for bug reports (#1933)

This allows us to identify which Dyad Pro user filed an issue on GitHub
by using a partial internal identifier

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds a redacted Dyad Pro user ID (last 4 chars) to bug report/session
templates, sourced from the Pro user info endpoint and exposed via user
budget info.
> 
> - **Frontend (HelpDialog)**:
> - Display `Pro User ID` in prefilled bug report and session report
bodies using `userBudget.redactedUserId`.
>   - Consume `useUserBudgetInfo` to access `userBudget`.
> - **IPC/Backend**:
> - `get-user-budget`: derive `redactedUserId` from `user_info.user_id`
(mask all but last 4 chars); include in test mock and response.
> - **Types**:
>   - Extend `UserBudgetInfoSchema` with `redactedUserId: string`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
1883a1ef94fec25b370df3d46054fb56d659dee8. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->



<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds a redacted Dyad Pro user ID (last 4 chars) to bug report templates
to help correlate GitHub issues with Pro accounts while protecting
privacy.

- **New Features**
- Derives redactedUserId from user_info.user_id in the Pro IPC handler
and adds it to UserBudgetInfo.
  - Shows “Pro User ID” in HelpDialog’s debug info and session details.
  - Extends UserBudgetInfo schema with a redactedUserId field.

<sup>Written for commit 1883a1ef94fec25b370df3d46054fb56d659dee8.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
This commit is contained in:
Will Chen
2025-12-11 14:19:57 -08:00
committed by GitHub
parent 5b789cb971
commit 976e065fe5
3 changed files with 13 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import { showError } from "@/lib/toast";
import { HelpBotDialog } from "./HelpBotDialog";
import { useSettings } from "@/hooks/useSettings";
import { BugScreenshotDialog } from "./BugScreenshotDialog";
import { useUserBudgetInfo } from "@/hooks/useUserBudgetInfo";
interface HelpDialogProps {
isOpen: boolean;
@@ -43,7 +44,7 @@ export function HelpDialog({ isOpen, onClose }: HelpDialogProps) {
const [isBugScreenshotOpen, setIsBugScreenshotOpen] = useState(false);
const selectedChatId = useAtomValue(selectedChatIdAtom);
const { settings } = useSettings();
const { userBudget } = useUserBudgetInfo();
const isDyadProUser = settings?.providerSettings?.["auto"]?.apiKey?.value;
// Function to reset all dialog state
@@ -103,6 +104,7 @@ Issues that do not meet these requirements will be closed and may need to be res
- Node Version: ${debugInfo.nodeVersion || "n/a"}
- PNPM Version: ${debugInfo.pnpmVersion || "n/a"}
- Node Path: ${debugInfo.nodePath || "n/a"}
- Pro User ID: ${userBudget?.redactedUserId || "n/a"}
- Telemetry ID: ${debugInfo.telemetryId || "n/a"}
- Model: ${debugInfo.selectedLanguageModel || "n/a"}
@@ -226,6 +228,7 @@ Issues that do not meet these requirements will be closed and may need to be res
-->
Session ID: ${sessionId}
Pro User ID: ${userBudget?.redactedUserId || "n/a"}
## Issue Description (required)
<!-- Please describe the issue you're experiencing -->