P15c: client UI for shared campaigns + publishing characters
- src/lib/cloud/campaigns.ts wraps the campaign/character API. - Settings "Shared campaigns (cloud)" panel (signed-in only): publish a local campaign → get an invite code; join a campaign by code; publish a local character to a campaign (stays yours, re-publish to sync); owners "View party" to read all published characters (read-all, per the View+suggest model). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import { pickTextFile } from '@/lib/io/file';
|
||||
import { seedSampleCampaign } from '@/lib/sample';
|
||||
import { cloudUsername, register as cloudRegister, login as cloudLogin, logout as cloudLogout, pushBackup, pullBackup, CloudError } from '@/lib/cloud/client';
|
||||
import { AssistantSettings } from './AssistantSettings';
|
||||
import { CloudCampaigns } from './CloudCampaigns';
|
||||
import { Page, PageHeader } from '@/components/ui/Page';
|
||||
import { Button } from '@/components/ui/Button';
|
||||
import { Modal } from '@/components/ui/Modal';
|
||||
@@ -71,6 +72,8 @@ export function SettingsPage() {
|
||||
|
||||
<CloudSync />
|
||||
|
||||
<CloudCampaigns />
|
||||
|
||||
<section className="rounded-lg border border-line bg-panel p-4">
|
||||
<h2 className="mb-2 text-xs font-semibold uppercase tracking-wide text-muted">Data sources & licenses</h2>
|
||||
<ul className="space-y-1 text-sm text-muted">
|
||||
|
||||
Reference in New Issue
Block a user