Feature: Plugin system, site search, notifications, webhooks, caching & loading states
Local Build and Deploy / deploy (push) Successful in 1m2s

- Plugin/module system with registry, hooks for admin nav/permissions/i18n
- Example Games plugin demonstrating the plugin system
- Site-wide search with Cmd+K command palette (cmdk-based)
- Real-time notification system (SSE + Redis pub/sub)
- Extensible webhook system with admin management UI
- Caching strategy: tiered data cache (unstable_cache + Redis)
- Theme import/export as JSON
- Loading states (spinner/skeleton) for all public pages
- Mobile responsive fixes (admin dashboard, guilds page)
- Webhooks admin page under Settings hub
This commit is contained in:
openhands committed 2026-07-18 13:37:19 +02:00
1 parent 09f1bc2bd6
commit 98d2b92218
85 files changed
+1889 -7

No files matched your search

+25
View File
@@ -4,6 +4,7 @@ import {
applyCustomTheme,
applyPreset,
deleteCustomTheme,
importThemeJson,
saveCustomTheme,
saveTheme,
} from "@/actions/admin-theme";
@@ -520,6 +521,30 @@ export default async function AdminTheme({
)}
</section>
<section className="mt-6">
<h2 className="admin-section-title">Import / Export</h2>
<p className="text-xs text-[var(--admin-text-muted)] mb-3">
Export your current theme as JSON to share or back up. Import a
previously exported JSON file to restore a theme.
</p>
<div className="flex flex-wrap gap-4">
<a href="/api/admin/theme/export" download className="btn btn-outline inline-flex items-center">
⬇ Export theme JSON
</a>
<form action={importThemeJson} className="flex flex-wrap items-center gap-2">
<textarea
name="theme_json"
placeholder="Paste theme JSON here..."
className="px-3 py-2 rounded-lg border bg-[var(--admin-canvas)] text-[var(--admin-text)] text-xs w-80 h-20 resize-none"
style={{ borderColor: "var(--admin-border)" }}
/>
<button type="submit" className="btn btn-primary">
Import theme
</button>
</form>
</div>
</section>
<form action={saveTheme}>
<h2 className="mt-6 text-lg font-extrabold">☀ Light mode</h2>
<p className="text-xs text-[var(--admin-text-muted)] mb-3 mt-1">