gitextract_pand8s4o/ ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.yml │ │ └── feature-request.yml │ └── workflows/ │ ├── build-platform.yml │ └── docker-build.yml ├── .gitignore ├── .idea/ │ ├── .gitignore │ ├── changerawr.iml │ ├── dataSources.xml │ ├── data_source_mapping.xml │ ├── db-forest-config.xml │ ├── discord.xml │ ├── inspectionProfiles/ │ │ └── Project_Default.xml │ ├── jsLibraryMappings.xml │ ├── modules.xml │ ├── sqldialects.xml │ └── vcs.xml ├── APIDOCGUIDE.md ├── CHANGELOG.md ├── Caddyfile ├── Dockerfile ├── Dockerfile.compose ├── LICENSE ├── PROJECT_INDEX.md ├── README.md ├── app/ │ ├── (auth)/ │ │ ├── forgot-password/ │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── login/ │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── oauth-callback/ │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── register/ │ │ │ └── [token]/ │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── reset-password/ │ │ │ └── [token]/ │ │ │ ├── layout.tsx │ │ │ ├── page.tsx │ │ │ └── reset-password-form.tsx │ │ ├── setup/ │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ └── two-factor/ │ │ ├── layout.tsx │ │ └── page.tsx │ ├── (email)/ │ │ └── unsubscribed/ │ │ └── page.tsx │ ├── .well-known/ │ │ └── acme-challenge/ │ │ ├── [token]/ │ │ │ ├── route.ts │ │ │ └── route.ts.disabled │ │ └── route.ts │ ├── api/ │ │ ├── acme/ │ │ │ ├── cancel/ │ │ │ │ └── [certId]/ │ │ │ │ └── route.ts │ │ │ ├── issue/ │ │ │ │ └── route.ts │ │ │ ├── renew/ │ │ │ │ └── [certId]/ │ │ │ │ └── route.ts │ │ │ ├── revoke/ │ │ │ │ └── [certId]/ │ │ │ │ └── route.ts │ │ │ ├── status/ │ │ │ │ └── [certId]/ │ │ │ │ └── route.ts │ │ │ └── verify-dns/ │ │ │ └── route.ts │ │ ├── admin/ │ │ │ ├── ai-settings/ │ │ │ │ ├── route.ts │ │ │ │ └── test-key/ │ │ │ │ └── route.ts │ │ │ ├── analytics/ │ │ │ │ └── route.ts │ │ │ ├── api-keys/ │ │ │ │ ├── [keyId]/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── audit-logs/ │ │ │ │ ├── actions/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── config/ │ │ │ │ ├── route.ts │ │ │ │ └── system-email/ │ │ │ │ └── route.ts │ │ │ ├── dashboard/ │ │ │ │ └── route.ts │ │ │ ├── oauth/ │ │ │ │ └── providers/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── saml/ │ │ │ │ └── providers/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── sponsor/ │ │ │ │ └── route.ts │ │ │ ├── system/ │ │ │ │ └── slack/ │ │ │ │ └── route.ts │ │ │ └── users/ │ │ │ ├── [userId]/ │ │ │ │ ├── role/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── invitations/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ └── route.ts │ │ ├── ai/ │ │ │ ├── decrypt/ │ │ │ │ └── route.ts │ │ │ └── settings/ │ │ │ └── route.ts │ │ ├── analytics/ │ │ │ └── track/ │ │ │ └── route.ts │ │ ├── auth/ │ │ │ ├── change-password/ │ │ │ │ └── route.ts │ │ │ ├── cli/ │ │ │ │ ├── generate/ │ │ │ │ │ └── route.ts │ │ │ │ ├── refresh/ │ │ │ │ │ └── route.ts │ │ │ │ └── token/ │ │ │ │ └── route.ts │ │ │ ├── connections/ │ │ │ │ └── route.ts │ │ │ ├── forgot-password/ │ │ │ │ └── route.ts │ │ │ ├── invitation/ │ │ │ │ └── [token]/ │ │ │ │ └── route.ts │ │ │ ├── login/ │ │ │ │ ├── route.ts │ │ │ │ └── second-factor/ │ │ │ │ └── route.ts │ │ │ ├── logout/ │ │ │ │ └── route.ts │ │ │ ├── me/ │ │ │ │ └── route.ts │ │ │ ├── oauth/ │ │ │ │ ├── authorize/ │ │ │ │ │ └── [providerName]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── callback/ │ │ │ │ │ └── [providerName]/ │ │ │ │ │ └── route.ts │ │ │ │ └── providers/ │ │ │ │ └── route.ts │ │ │ ├── passkeys/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── authenticate/ │ │ │ │ │ ├── options/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── verify/ │ │ │ │ │ └── route.ts │ │ │ │ ├── register/ │ │ │ │ │ ├── options/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── verify/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── preview/ │ │ │ │ └── route.ts │ │ │ ├── refresh/ │ │ │ │ └── route.ts │ │ │ ├── register/ │ │ │ │ └── route.ts │ │ │ ├── reset-password/ │ │ │ │ ├── [token]/ │ │ │ │ │ └── route.ts │ │ │ │ └── request/ │ │ │ │ └── route.ts │ │ │ ├── saml/ │ │ │ │ ├── authorize/ │ │ │ │ │ └── [providerName]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── callback/ │ │ │ │ │ └── [providerName]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── metadata/ │ │ │ │ │ └── [providerName]/ │ │ │ │ │ └── route.ts │ │ │ │ └── providers/ │ │ │ │ └── route.ts │ │ │ ├── security-settings/ │ │ │ │ └── route.ts │ │ │ ├── settings/ │ │ │ │ └── route.ts │ │ │ └── validate/ │ │ │ └── route.ts │ │ ├── avatar/ │ │ │ └── [hash]/ │ │ │ └── route.ts │ │ ├── changelog/ │ │ │ ├── [projectId]/ │ │ │ │ └── entries/ │ │ │ │ ├── all/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── entries/ │ │ │ │ └── [entryId]/ │ │ │ │ └── route.ts │ │ │ ├── requests/ │ │ │ │ ├── [requestId]/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── subscribe/ │ │ │ │ └── route.ts │ │ │ ├── unsubscribe/ │ │ │ │ └── [token]/ │ │ │ │ └── route.ts │ │ │ └── verify-domain/ │ │ │ └── route.ts │ │ ├── check-setup/ │ │ │ └── route.ts │ │ ├── config/ │ │ │ ├── runtime/ │ │ │ │ └── route.ts │ │ │ └── timezone/ │ │ │ └── route.ts │ │ ├── cron/ │ │ │ └── ssl-renewal/ │ │ │ └── route.ts │ │ ├── custom-domains/ │ │ │ ├── [domain]/ │ │ │ │ ├── browser-rules/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── dns-instructions/ │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ ├── ssl/ │ │ │ │ │ ├── mode/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── revoke/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── toggle-https/ │ │ │ │ │ └── route.ts │ │ │ │ └── throttle/ │ │ │ │ └── route.ts │ │ │ ├── add/ │ │ │ │ └── route.ts │ │ │ ├── list/ │ │ │ │ └── route.ts │ │ │ └── verify/ │ │ │ └── route.ts │ │ ├── dashboard/ │ │ │ └── stats/ │ │ │ └── route.ts │ │ ├── domain-check/ │ │ │ └── route.ts │ │ ├── health/ │ │ │ └── route.ts │ │ ├── integrations/ │ │ │ ├── slack/ │ │ │ │ ├── callback/ │ │ │ │ │ └── route.ts │ │ │ │ └── manifest/ │ │ │ │ └── route.ts │ │ │ └── widget/ │ │ │ └── [projectId]/ │ │ │ ├── [widgetId]/ │ │ │ │ └── route.ts │ │ │ ├── list/ │ │ │ │ └── route.ts │ │ │ └── route.ts │ │ ├── internal/ │ │ │ ├── agent/ │ │ │ │ └── version/ │ │ │ │ └── route.ts │ │ │ ├── cert/ │ │ │ │ └── [domain]/ │ │ │ │ └── route.ts │ │ │ └── ip-config/ │ │ │ └── route.ts │ │ ├── projects/ │ │ │ ├── [projectId]/ │ │ │ │ ├── analytics/ │ │ │ │ │ ├── export/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── api-keys/ │ │ │ │ │ ├── [keyId]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── catch-up/ │ │ │ │ │ ├── ai-summary/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── changelog/ │ │ │ │ │ ├── [entryId]/ │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── approval/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ └── tags/ │ │ │ │ │ ├── [tagId]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── cli/ │ │ │ │ │ ├── link/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── sync/ │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ └── status/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── unlink/ │ │ │ │ │ └── route.ts │ │ │ │ ├── integrations/ │ │ │ │ │ ├── email/ │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ ├── send/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── test/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── github/ │ │ │ │ │ │ ├── generate/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── test/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── slack/ │ │ │ │ │ ├── channels/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ ├── settings/ │ │ │ │ │ └── route.ts │ │ │ │ └── versions/ │ │ │ │ └── route.ts │ │ │ ├── import/ │ │ │ │ ├── canny/ │ │ │ │ │ ├── fetch/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── validate/ │ │ │ │ │ └── route.ts │ │ │ │ ├── parse/ │ │ │ │ │ └── route.ts │ │ │ │ └── process/ │ │ │ │ └── route.ts │ │ │ └── route.ts │ │ ├── requests/ │ │ │ └── route.ts │ │ ├── search/ │ │ │ └── route.ts │ │ ├── setup/ │ │ │ ├── admin/ │ │ │ │ └── route.ts │ │ │ ├── invitations/ │ │ │ │ └── route.ts │ │ │ ├── oauth/ │ │ │ │ ├── auto/ │ │ │ │ │ └── route.ts │ │ │ │ ├── debug/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── route.ts │ │ │ ├── settings/ │ │ │ │ └── route.ts │ │ │ ├── setupProgressSchema.ts │ │ │ ├── status/ │ │ │ │ └── route.ts │ │ │ └── types.ts │ │ ├── subscribers/ │ │ │ ├── [subscriberId]/ │ │ │ │ └── route.ts │ │ │ ├── generate-mock/ │ │ │ │ └── route.ts │ │ │ └── route.ts │ │ ├── system/ │ │ │ ├── agent-version/ │ │ │ │ └── route.ts │ │ │ ├── easypanel/ │ │ │ │ └── status/ │ │ │ │ └── route.ts │ │ │ ├── perform-update/ │ │ │ │ └── route.ts │ │ │ ├── update-status/ │ │ │ │ └── route.ts │ │ │ └── version/ │ │ │ └── route.ts │ │ └── telemetry/ │ │ ├── config/ │ │ │ └── route.ts │ │ └── debug/ │ │ └── route.ts │ ├── api-docs/ │ │ └── route.ts │ ├── changelog/ │ │ ├── [projectId]/ │ │ │ ├── [entryId]/ │ │ │ │ └── page.tsx │ │ │ ├── changelog-view.tsx │ │ │ ├── layout.tsx │ │ │ ├── loading.tsx │ │ │ ├── not-found.tsx │ │ │ ├── page.tsx │ │ │ └── rss.xml/ │ │ │ └── route.ts │ │ └── custom-domain/ │ │ └── [domain]/ │ │ ├── [entryId]/ │ │ │ ├── EntryContent.tsx │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── page.tsx │ │ ├── rss.xml/ │ │ │ └── route.ts │ │ └── unsubscribed/ │ │ └── page.tsx │ ├── cli/ │ │ └── auth/ │ │ └── page.tsx │ ├── dashboard/ │ │ ├── admin/ │ │ │ ├── about/ │ │ │ │ └── page.tsx │ │ │ ├── ai-settings/ │ │ │ │ └── page.tsx │ │ │ ├── analytics/ │ │ │ │ └── page.tsx │ │ │ ├── api-keys/ │ │ │ │ └── page.tsx │ │ │ ├── audit-logs/ │ │ │ │ └── page.tsx │ │ │ ├── domains/ │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── oauth/ │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── requests/ │ │ │ │ └── page.tsx │ │ │ ├── system/ │ │ │ │ ├── email/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── slack/ │ │ │ │ │ └── page.tsx │ │ │ │ └── templates/ │ │ │ │ └── page.tsx │ │ │ └── users/ │ │ │ └── page.tsx │ │ ├── bookmarks/ │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── page.tsx │ │ ├── projects/ │ │ │ ├── [projectId]/ │ │ │ │ ├── analytics/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── api-keys/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── catch-up/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── changelog/ │ │ │ │ │ ├── [entryId]/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── new/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── domains/ │ │ │ │ │ ├── [domain]/ │ │ │ │ │ │ ├── client.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DomainCard.tsx │ │ │ │ │ │ ├── InlineSSLSetup.tsx │ │ │ │ │ │ ├── SSLCertificateCard.tsx │ │ │ │ │ │ ├── SSLCertificateWizard.tsx │ │ │ │ │ │ ├── SSLManagement.tsx │ │ │ │ │ │ └── ssl/ │ │ │ │ │ │ ├── ExternalSSLManagement.tsx │ │ │ │ │ │ ├── SSLCertificateActions.tsx │ │ │ │ │ │ ├── SSLCertificateStatus.tsx │ │ │ │ │ │ ├── SSLDNSInstructions.tsx │ │ │ │ │ │ ├── SSLModeSelector.tsx │ │ │ │ │ │ ├── SSLVerificationMethod.tsx │ │ │ │ │ │ ├── SSLVerificationProgress.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── page.tsx.backup │ │ │ │ ├── import/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── integrations/ │ │ │ │ │ ├── email/ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── subscribers/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── github/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── slack/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── widget/ │ │ │ │ │ ├── [widgetId]/ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── widget-editor.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── widget-config.tsx │ │ │ │ │ └── widget-list.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── settings/ │ │ │ │ └── page.tsx │ │ │ ├── new/ │ │ │ │ └── page.tsx │ │ │ └── page.tsx │ │ ├── providers.tsx │ │ ├── requests/ │ │ │ └── page.tsx │ │ └── settings/ │ │ └── page.tsx │ ├── globals.css │ ├── layout.tsx │ ├── page.tsx │ └── startup.ts ├── components/ │ ├── CommandPalette.tsx │ ├── DinoGame.tsx │ ├── Logo.tsx │ ├── MarkdownEditor.tsx │ ├── UpdateIndicatorBadge.tsx │ ├── UpdateStatus.tsx │ ├── admin/ │ │ ├── api/ │ │ │ ├── PermissionsModal.tsx │ │ │ ├── Rename.tsx │ │ │ ├── sdk-showcase-compact.tsx │ │ │ └── sdk-showcase.tsx │ │ ├── audit-logs/ │ │ │ └── VirtualizedList.tsx │ │ └── requests/ │ │ └── Management.tsx │ ├── analytics/ │ │ ├── analytics-chart.tsx │ │ ├── analytics-metric-card.tsx │ │ ├── country-analytics-table.tsx │ │ ├── entry-analytics-table.tsx │ │ ├── project-analytics-table.tsx │ │ └── referrer-analytics-table.tsx │ ├── changelog/ │ │ ├── ButtonGroup.tsx │ │ ├── ChangelogActionRequest.tsx │ │ ├── ChangelogEditor.tsx │ │ ├── ChangelogEntries.tsx │ │ ├── RequestHandler.tsx │ │ ├── ScrollToTopButton.tsx │ │ ├── ShareButton.tsx │ │ ├── ThemeToggle.tsx │ │ ├── WidgetPreview.tsx │ │ └── editor/ │ │ ├── AITitleGenerator.tsx │ │ ├── EditorHeader.tsx │ │ ├── TagColorPicker.tsx │ │ ├── TagSelector.tsx │ │ ├── TagSuggester.tsx │ │ ├── VersionSelector.tsx │ │ └── scheduler/ │ │ └── ScheduleEntryDialog.tsx │ ├── dashboard/ │ │ └── WhatsNewModal.tsx │ ├── github/ │ │ ├── GitHubGenerateDialog.tsx │ │ └── GitHubIntegrationSettings.tsx │ ├── loading-spinner.tsx │ ├── markdown-editor/ │ │ ├── MarkdownEditor.tsx │ │ ├── MarkdownEditorArea.tsx │ │ ├── MarkdownPreview.tsx │ │ ├── MarkdownToolbar.tsx │ │ ├── RenderMarkdown.tsx │ │ ├── StatusBar.tsx │ │ ├── ai/ │ │ │ └── AIAssistantPanel.tsx │ │ ├── hooks/ │ │ │ └── useCUMModals.ts │ │ ├── index.ts │ │ ├── modals/ │ │ │ ├── CUMAlertModal.tsx │ │ │ ├── CUMButtonModal.tsx │ │ │ ├── CUMEmbedModal.tsx │ │ │ ├── CUMTableModal.tsx │ │ │ └── index.ts │ │ ├── types/ │ │ │ └── cum-extensions.ts │ │ └── utils/ │ │ ├── formatting.ts │ │ ├── keyboard-shortcuts.ts │ │ ├── renderer.ts │ │ └── safe-keyboard-shortcuts.tsx │ ├── project/ │ │ ├── ProjectNavItem.tsx │ │ ├── ProjectSettingsPage.tsx │ │ ├── ProjectSidebar.tsx │ │ ├── RecentChangelogItem.tsx │ │ ├── catch-up/ │ │ │ ├── CatchUpEntry.tsx │ │ │ ├── CatchUpView.tsx │ │ │ └── SinceSelector.tsx │ │ └── settings/ │ │ └── TagManagement.tsx │ ├── projects/ │ │ └── importing/ │ │ ├── ChangelogImportModal.tsx │ │ ├── ImportDataPrompt.tsx │ │ └── integrations/ │ │ └── CannyImportStep.tsx │ ├── providers/ │ │ ├── CommandPaletteProvider.tsx │ │ └── setup-context.tsx │ ├── settings/ │ │ ├── connected-sso-section.tsx │ │ ├── passkeys-section.tsx │ │ └── security-settings.tsx │ ├── setup/ │ │ ├── TeamImportModal.tsx │ │ ├── setup-context.tsx │ │ ├── setup-step.tsx │ │ └── steps/ │ │ ├── admin-step.tsx │ │ ├── completion-step.tsx │ │ ├── oauth-step.tsx │ │ ├── settings-step.tsx │ │ ├── team-step.tsx │ │ └── welcome-step.tsx │ ├── sso/ │ │ └── ProviderLogo.tsx │ ├── subscription-form.tsx │ ├── telemetry/ │ │ └── PromptModal.tsx │ ├── theme-provider.tsx │ └── ui/ │ ├── accordion.tsx │ ├── alert-dialog.tsx │ ├── alert.tsx │ ├── avatar.tsx │ ├── badge.tsx │ ├── breadcrumb.tsx │ ├── breadcrumbs.tsx │ ├── button.tsx │ ├── calendar.tsx │ ├── card.tsx │ ├── checkbox.tsx │ ├── collapsible.tsx │ ├── command.tsx │ ├── confetti.tsx │ ├── dialog.tsx │ ├── dropdown-menu.tsx │ ├── error-alert.tsx │ ├── form.tsx │ ├── hover-card.tsx │ ├── input.tsx │ ├── label.tsx │ ├── popover.tsx │ ├── progress.tsx │ ├── radio-group.tsx │ ├── scroll-area.tsx │ ├── searchable-select.tsx │ ├── select.tsx │ ├── separator.tsx │ ├── sheet.tsx │ ├── sidebar.tsx │ ├── skeleton.tsx │ ├── slider.tsx │ ├── switch.tsx │ ├── table.tsx │ ├── tabs.tsx │ ├── textarea.tsx │ ├── toast.tsx │ ├── toaster.tsx │ └── tooltip.tsx ├── components.json ├── context/ │ └── auth.tsx ├── docker-compose-online.yml ├── docker-compose.yml ├── docker-entrypoint-compose.sh ├── docker-entrypoint.sh ├── emails/ │ ├── approval-notification.tsx │ ├── changelog.tsx │ ├── password-reset.tsx │ ├── rejection-notification.tsx │ └── schedule-published.tsx ├── eslint.config.mjs ├── hooks/ │ ├── use-local-storage.ts │ ├── use-media-query.ts │ ├── use-timezone.ts │ ├── use-toast.ts │ ├── useAIAssistant.ts │ ├── useBookmarks.ts │ ├── useChunkedData.ts │ ├── useCommandPalette.ts │ ├── useEditorHistory.ts │ ├── useMarkdownState.ts │ ├── useSlashCommands.ts │ ├── useTelemetry.ts │ └── useWhatsNew.ts ├── ideas.md ├── instrumentation.ts ├── issues.md ├── jsdoc.json ├── lib/ │ ├── api/ │ │ ├── README.md │ │ ├── middleware.ts │ │ ├── permissions.ts │ │ └── route-permissions.ts │ ├── app-info.ts │ ├── auth/ │ │ ├── api-key.ts │ │ ├── authorization.ts │ │ ├── claim-validator.ts │ │ ├── cli-auth.ts │ │ ├── email-domain-validator.ts │ │ ├── jwt-utils.ts │ │ ├── oauth.ts │ │ ├── password.ts │ │ ├── providers/ │ │ │ ├── easypanel/ │ │ │ │ ├── auto-setup.ts │ │ │ │ └── client.ts │ │ │ ├── easypanel.ts │ │ │ └── pocketid.ts │ │ ├── saml.ts │ │ ├── tokens.ts │ │ └── webauthn.ts │ ├── constants/ │ │ └── timezones.ts │ ├── custom-domains/ │ │ ├── constants.ts │ │ ├── dns.ts │ │ ├── service.ts │ │ ├── ssl/ │ │ │ ├── acme-account.ts │ │ │ ├── auto-renewal.ts │ │ │ ├── cron-setup.md │ │ │ ├── encryption.ts │ │ │ ├── is-supported.ts │ │ │ ├── service.ts │ │ │ ├── setup-renewal-job.ts │ │ │ ├── ssrf-guard.ts │ │ │ └── webhook.ts │ │ ├── utils.ts │ │ └── validation.ts │ ├── db.ts │ ├── middleware/ │ │ └── analytics.ts │ ├── services/ │ │ ├── analytics/ │ │ │ └── geolocation.ts │ │ ├── auth/ │ │ │ ├── password-breach.ts │ │ │ └── password-reset.ts │ │ ├── bookmarks/ │ │ │ └── bookmark.service.ts │ │ ├── changelog/ │ │ │ └── rss.ts │ │ ├── core/ │ │ │ ├── markdown/ │ │ │ │ ├── EXTENSIONS.md │ │ │ │ ├── EXTENSIONS_SETUP.md │ │ │ │ ├── extensions/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── subtext/ │ │ │ │ │ │ └── subtext.ts │ │ │ │ │ └── table/ │ │ │ │ │ └── table.ts │ │ │ │ └── useCustomExtensions.ts │ │ │ └── system-user/ │ │ │ ├── README.md │ │ │ └── service.ts │ │ ├── easypanel/ │ │ │ └── index.ts │ │ ├── email/ │ │ │ ├── notification.ts │ │ │ └── schedule-notification.ts │ │ ├── github/ │ │ │ ├── changelog-generator.ts │ │ │ └── client.ts │ │ ├── jobs/ │ │ │ ├── executors/ │ │ │ │ ├── changelog-publish.executor.ts │ │ │ │ ├── ssl-renewal.executor.ts │ │ │ │ └── telemetry-send.executor.ts │ │ │ ├── job-runner.service.ts │ │ │ └── scheduled-job.service.ts │ │ ├── projects/ │ │ │ ├── catch-up/ │ │ │ │ └── catch-up.service.ts │ │ │ └── importing/ │ │ │ ├── index.ts │ │ │ ├── integrations/ │ │ │ │ └── canny.service.ts │ │ │ ├── markdown-parser.service.ts │ │ │ ├── processor.service.ts │ │ │ └── validation.service.ts │ │ ├── request/ │ │ │ └── changelog-request.ts │ │ ├── search/ │ │ │ └── service.ts │ │ ├── slack/ │ │ │ ├── index.ts │ │ │ ├── logo.tsx │ │ │ └── post-message.ts │ │ ├── sponsor/ │ │ │ └── service.ts │ │ └── telemetry/ │ │ └── service.ts │ ├── types/ │ │ ├── analytics.ts │ │ ├── auth.ts │ │ ├── changelog.ts │ │ ├── cli/ │ │ │ └── project-api.ts │ │ ├── custom-domains.ts │ │ ├── dashboard.ts │ │ ├── easypanel.ts │ │ ├── oauth.ts │ │ ├── projects/ │ │ │ ├── catch-up/ │ │ │ │ └── types.ts │ │ │ ├── importing/ │ │ │ │ └── canny.ts │ │ │ └── importing.ts │ │ ├── saml.ts │ │ ├── settings.ts │ │ ├── sso.ts │ │ └── telemetry.ts │ ├── utils/ │ │ ├── ai/ │ │ │ ├── prompts.ts │ │ │ ├── secton.ts │ │ │ └── types.ts │ │ ├── analytics.ts │ │ ├── api.ts │ │ ├── auditLog.ts │ │ ├── changelog.ts │ │ ├── cookies.ts │ │ ├── docker.ts │ │ ├── encryption.ts │ │ ├── format-date.ts │ │ ├── gravatar.ts │ │ ├── rate-limit.ts │ │ └── text.ts │ └── utils.ts ├── next.config.ts ├── next.openapi.json ├── nginx.conf ├── package-lock.json.backup ├── package.json ├── package.json.backup ├── postcss.config.mjs ├── prisma/ │ ├── migrations/ │ │ ├── 20250215042251_init_authentication/ │ │ │ └── migration.sql │ │ ├── 20250215051621_add_invitation_links/ │ │ │ └── migration.sql │ │ ├── 20250215063030_add_last_logged_in_at_field/ │ │ │ └── migration.sql │ │ ├── 20250215075317_add_changelog_models/ │ │ │ └── migration.sql │ │ ├── 20250215080528_add_viewer_role/ │ │ │ └── migration.sql │ │ ├── 20250215180005_add_project_settings/ │ │ │ └── migration.sql │ │ ├── 20250215232640_add_api_keys/ │ │ │ └── migration.sql │ │ ├── 20250216005356_add_audit_logs/ │ │ │ └── migration.sql │ │ ├── 20250216050812_add_system_configuration/ │ │ │ └── migration.sql │ │ ├── 20250216053424_update_changelog_requests_schema/ │ │ │ └── migration.sql │ │ ├── 20250221000121_add_new_request_types/ │ │ │ └── migration.sql │ │ ├── 20250305225249_add_oauth/ │ │ │ └── migration.sql │ │ ├── 20250418044737_add_email_integration/ │ │ │ └── migration.sql │ │ ├── 20250418045834_add_email_logs/ │ │ │ └── migration.sql │ │ ├── 20250418161805_add_email_log_enums/ │ │ │ └── migration.sql │ │ ├── 20250418163601_add_email_subscription/ │ │ │ └── migration.sql │ │ ├── 20250419000001_add_password_reset/ │ │ │ └── migration.sql │ │ ├── 20250421000001_add_notification_preferences/ │ │ │ └── migration.sql │ │ ├── 20250504203021_passkey_support/ │ │ │ └── migration.sql │ │ ├── 20250504203707_add_last_challenge/ │ │ │ └── migration.sql │ │ ├── 20250504211358_add_two_factor_mode/ │ │ │ └── migration.sql │ │ ├── 20250504212400_add_two_factor_session/ │ │ │ └── migration.sql │ │ ├── 20250511204818_add_ai_assistant_config/ │ │ │ └── migration.sql │ │ ├── 20250512000000_add_github_integration/ │ │ │ └── migration.sql │ │ ├── 20250610120000_fix_user_deletion_constraints/ │ │ │ └── migration.sql │ │ ├── 20250613040144_changelog_analytics/ │ │ │ └── migration.sql │ │ ├── 20250624024525_add_custom_domains/ │ │ │ └── migration.sql │ │ ├── 20250625030954_add_custom_domains_to_email_notifications/ │ │ │ └── migration.sql │ │ ├── 20250625120000_add_changelog_scheduling/ │ │ │ └── migration.sql │ │ ├── 20250627020135_add_color_field_to_changelog_tag/ │ │ │ └── migration.sql │ │ ├── 20250628171029_add_telemetry/ │ │ │ └── migration.sql │ │ ├── 20250628175000_preemptive_telemetry_setup/ │ │ │ └── migration.sql │ │ ├── 20250628180800_add_telemetry_support/ │ │ │ └── migration.sql │ │ ├── 20250628215000_complete_telemetry_fix/ │ │ │ └── migration.sql │ │ ├── 20250628215100_fix_telemetry_casting/ │ │ │ └── migration.sql │ │ ├── 20250628230000_add_changelogentryid_back/ │ │ │ └── migration.sql │ │ ├── 20250702092443_add_cli_auth_codes/ │ │ │ └── migration.sql │ │ ├── 20250702121802_add_synced_cli_migrations_and_metadata/ │ │ │ └── migration.sql │ │ ├── 20250703092000_fix_missing_changelogentryid_column/ │ │ │ └── migration.sql │ │ ├── 20251031_add_metadata_to_changelog_request/ │ │ │ └── migration.sql │ │ ├── 20251111210147_add_api_key_and_widgets/ │ │ │ └── migration.sql │ │ ├── 20251127011835_add_slack_integration/ │ │ │ └── migration.sql │ │ ├── 20251127015242_add_slack_oauth_to_system_config/ │ │ │ └── migration.sql │ │ ├── 20251127_add_slack_signing_secret/ │ │ │ └── migration.sql │ │ ├── 20260219214321_add_license_fields/ │ │ │ └── migration.sql │ │ ├── 20260219215954_fix_changelog_request_cascade_delete/ │ │ │ └── migration.sql │ │ ├── 20260220120000_add_timezone_config/ │ │ │ └── migration.sql │ │ ├── 20260220140000_add_custom_date_templates/ │ │ │ └── migration.sql │ │ └── migration_lock.toml │ ├── schema/ │ │ ├── README.md │ │ ├── base.prisma │ │ ├── enums.prisma │ │ ├── integrations.prisma │ │ ├── projects.prisma │ │ ├── system.prisma │ │ └── users.prisma │ ├── schema.prisma.backup │ └── seed.ts ├── proxy.ts ├── public/ │ └── swagger.json ├── scripts/ │ ├── api/ │ │ ├── generateSwagger.js │ │ └── generateSwagger.ts │ ├── ftb/ │ │ ├── index.html │ │ └── server.js │ ├── maintenance/ │ │ ├── index.html │ │ └── server.js │ ├── nginx-reload.sh │ ├── utils/ │ │ └── scan.ts │ └── widget/ │ └── build.ts ├── tailwind.config.ts ├── temp_migration.sql ├── tsconfig.json ├── useful-information-for-development/ │ └── slack_scopes.md └── widgets/ ├── changelog/ │ └── index.js ├── core/ │ └── styles/ │ ├── announcement.css │ ├── common.css │ ├── floating.css │ ├── modal.css │ ├── reset.css │ └── variables.css └── variants/ ├── announcement.js ├── classic.js ├── floating.js └── modal.js