feat: vault-aligned server v1 + UX polish
All checks were successful
CI / Windows build (push) Successful in 7m47s

Redesign the optional FastAPI companion around vault files (manifest /
PUT/GET/DELETE + OCR jobs) instead of legacy strokes_json notes. Wire a
client Server settings panel for health/login. Polish shell UX: l10n for
settings/home/board, sticky-board empty state, and a narrow-screen
diagnostics FAB.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-05 19:04:48 +08:00
parent d346cc2670
commit 198da00ecd
20 changed files with 1325 additions and 90 deletions

View File

@@ -134,6 +134,7 @@ class _BoardScreenState extends ConsumerState<BoardScreen> {
final selected = _selectedId != null ? _board.cardById(_selectedId!) : null;
final backlinks =
selected != null ? _board.backlinksOf(selected.id) : <String>{};
final isEmpty = _board.length == 0;
return Scaffold(
backgroundColor: Theme.of(context).colorScheme.surface,
@@ -153,7 +154,43 @@ class _BoardScreenState extends ConsumerState<BoardScreen> {
),
],
),
body: Row(
body: isEmpty
? Center(
child: Padding(
padding: const EdgeInsets.all(32),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.sticky_note_2_outlined,
size: 72,
color: AppTokens.copper.withValues(alpha: 0.85),
),
const SizedBox(height: 20),
Text(
l.boardEmptyTitle,
style: Theme.of(context).textTheme.headlineSmall,
textAlign: TextAlign.center,
),
const SizedBox(height: 8),
Text(
l.boardEmptyBody,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
color: AppTokens.inkMuted,
),
textAlign: TextAlign.center,
),
const SizedBox(height: 24),
FilledButton.icon(
onPressed: _addCard,
icon: const Icon(Icons.add),
label: Text(l.boardAddCard),
),
],
),
),
)
: Row(
children: [
Expanded(
child: InteractiveViewer(
@@ -242,7 +279,7 @@ class _BoardScreenState extends ConsumerState<BoardScreen> {
),
const SizedBox(height: 4),
Text(
'在便利贴正文里写 [[另一张卡片id]] 建立双链',
l.boardEmptyBody,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: AppTokens.inkMuted,
),