feat(electron): add welcome page for meetings (#12042)

fix AF-2572

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/0e56b58a-97b4-4984-81fa-f8e45f8cc561.png)

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/97e3bb97-e326-48f6-8dd4-27734f583775.png)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced a Meetings welcome page with a beta disclaimer and "Get Started" flow.
  - Added separate toggles for AI auto summary and AI auto todo list in meeting settings.
  - Added "Beta" labels to relevant settings and sidebar items for clearer feature status.
  - Enhanced settings UI with improved headers, subtitles, and new styling.

- **Improvements**
  - Meeting settings now allow independent control over AI-generated summaries and todo lists.
  - Updated internationalization to support new meeting and AI transcription features, including richer prompts and hints.
  - Refined logic for enabling meeting recording, including improved permission handling.
  - Simplified transcription logic to rely solely on AI enablement flag.

- **Bug Fixes**
  - Fixed display and control of meeting settings based on beta disclaimer acceptance.

- **Chores**
  - Updated localization files and completeness percentages for several languages.
  - Removed deprecated feature flag for enabling meetings.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
pengx17
2025-05-06 09:29:57 +00:00
parent f79dfe837f
commit 53c531c931
36 changed files with 1470 additions and 201 deletions

View File

@@ -59,7 +59,6 @@ export const MenubarStateSchema = z.object({
enabled: z.boolean().default(true),
});
// eslint-disable-next-line no-redeclare
export type MenubarStateSchema = z.infer<typeof MenubarStateSchema>;
export const MeetingSettingsKey = 'meetingSettings' as const;
@@ -67,15 +66,20 @@ export const MeetingSettingsSchema = z.object({
// global meeting feature control
enabled: z.boolean().default(false),
// if false (and enabled = false), show a prompt page
betaDisclaimerAccepted: z.boolean().default(false),
// when recording is saved, where to create the recording block
recordingSavingMode: z.enum(['new-doc', 'journal-today']).default('new-doc'),
// whether to enable auto transcription for new meeting recordings
autoTranscription: z.boolean().default(true),
// whether to enable generation of summary for new meeting recordings
autoTranscriptionSummary: z.boolean().default(true),
// whether to enable generation of todo list for new meeting recordings
autoTranscriptionTodo: z.boolean().default(true),
// recording reactions to new meeting events
recordingMode: z.enum(['none', 'prompt', 'auto-start']).default('prompt'),
});
// eslint-disable-next-line no-redeclare
export type MeetingSettingsSchema = z.infer<typeof MeetingSettingsSchema>;