feat: 发布 v0.5.0 加密存储与匿名同步
This commit is contained in:
@@ -21,6 +21,7 @@ import {
|
||||
} from '@/lib/assessment-db';
|
||||
import { downloadText, profileToMarkdown, recordToMarkdown } from '@/lib/assessment-export';
|
||||
import { decryptBackup, encryptBackup } from '@/lib/backup-crypto';
|
||||
import { AnonymousSyncPanel } from '@/components/records/AnonymousSyncPanel';
|
||||
|
||||
type View = 'history' | 'trends' | 'portrait';
|
||||
|
||||
@@ -205,6 +206,8 @@ export function RecordsDashboard() {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<AnonymousSyncPanel localRecords={records} />
|
||||
|
||||
<div className="mb-6 flex border-b" role="tablist" aria-label="档案视图">
|
||||
{([['history', '历史记录'], ['trends', '变化趋势'], ['portrait', '统一画像']] as const).map(([id, label]) => (
|
||||
<button key={id} role="tab" aria-selected={view === id} onClick={() => setView(id)} className={`border-b-2 px-4 py-3 text-sm font-medium ${view === id ? 'border-primary text-foreground' : 'border-transparent text-muted-foreground'}`}>{label}</button>
|
||||
|
||||
Reference in New Issue
Block a user