Remove E2EE and switch to plaintext messaging

🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
jjbrunton committed 2026-01-08 18:04:48 +00:00
1 parent 43fa7033dc
commit c48936686e
46 files changed
+738 -6874

No files matched your search

@@ -8,7 +8,7 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Textarea } from '@/components/ui/textarea';
import { EmojiPicker } from '@/components/ui/emoji-picker';
import { IconPicker, IconPreview } from '@/components/ui/icon-picker';
import { Skeleton } from '@/components/ui/skeleton';
import {
Dialog,
@@ -56,11 +56,11 @@ export function CategoriesPage() {
// Form state using the new hook
const form = useEntityForm<CategoryFormData, Category>(
{ name: '', description: '', icon: '📚' },
{ name: '', description: '', icon: 'bookmark-outline' },
(category) => ({
name: category.name,
description: category.description || '',
icon: category.icon || '📚',
icon: category.icon || 'bookmark-outline',
})
);
@@ -118,7 +118,7 @@ export function CategoriesPage() {
form.openCreateWith({
name: idea.name,
description: idea.description || '',
icon: idea.icon || '📚',
icon: idea.icon || 'bookmark-outline',
});
};
@@ -261,9 +261,9 @@ export function CategoriesPage() {
<div className="space-y-4 py-4">
<div className="space-y-2">
<Label>Icon</Label>
<EmojiPicker
<IconPicker
value={form.formData.icon}
onChange={(emoji) => form.setField('icon', emoji)}
onChange={(iconName) => form.setField('icon', iconName)}
/>
</div>
@@ -363,7 +363,9 @@ export function CategoriesPage() {
<ChevronDown className="h-4 w-4" />
</Button>
</div>
<div className="text-4xl mb-2">{category.icon || '📚'}</div>
<div className="text-4xl mb-2">
<IconPreview value={category.icon} fallback="bookmark-outline" className="text-4xl" />
</div>
</div>
<div className="opacity-0 group-hover:opacity-100 transition-opacity flex gap-1">
<Button
+10 -5
View File
@@ -12,6 +12,7 @@ import { toast } from 'sonner';
import { AiGeneratorDialog } from '@/components/ai/AiGeneratorDialog';
import { ExtractTopicsDialog } from '@/components/content/ExtractTopicsDialog';
import { PackFormDialog, type PackFormData } from '@/components/content/PackFormDialog';
import { IconPreview } from '@/components/ui/icon-picker';
// =============================================================================
// Types
@@ -65,7 +66,7 @@ export function PacksPage() {
{
name: '',
description: '',
icon: '💕',
icon: 'heart-outline',
is_premium: false,
is_public: false,
is_explicit: false,
@@ -73,7 +74,7 @@ export function PacksPage() {
(pack) => ({
name: pack.name,
description: pack.description || '',
icon: pack.icon || '💕',
icon: pack.icon || 'heart-outline',
is_premium: pack.is_premium,
is_public: pack.is_public,
is_explicit: pack.is_explicit,
@@ -265,7 +266,7 @@ export function PacksPage() {
form.openCreateWith({
name: result.name || '',
description: result.description,
icon: result.icon || '💕',
icon: result.icon || 'heart-outline',
is_premium: false,
is_public: false,
is_explicit: false,
@@ -331,7 +332,9 @@ export function PacksPage() {
<h1 className="text-3xl font-bold tracking-tight flex items-center gap-2">
{category && (
<>
<span className="text-3xl">{category.icon}</span>
<span className="text-3xl">
<IconPreview value={category.icon} fallback="bookmark-outline" className="text-3xl" />
</span>
{category.name}:
</>
)}
@@ -437,7 +440,9 @@ export function PacksPage() {
<ChevronDown className="h-4 w-4" />
</Button>
</div>
<div className="text-4xl mb-2">{pack.icon || '💕'}</div>
<div className="text-4xl mb-2">
<IconPreview value={pack.icon} fallback="heart-outline" className="text-4xl" />
</div>
</div>
<div className="flex items-center gap-1">
{pack.is_premium && (