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

@@ -6,6 +6,7 @@ import 'diagnostic_export.dart';
import '../editor/canvas/input_diagnostics.dart';
import '../editor/input/diagnostic_logger.dart';
import '../editor/input/pen_input_service.dart';
import '../l10n/app_localizations.dart';
/// Shared diagnostics chrome: overlay readout + export action.
/// Mount on any document surface (note / PDF / PPT / board).
@@ -54,7 +55,7 @@ class DiagnosticChromeState extends State<DiagnosticChrome> {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'诊断包已导出 (${result.bytes} bytes)\n路径已复制到剪贴板',
AppLocalizations.of(context).diagExported(result.bytes),
),
duration: const Duration(seconds: 5),
),
@@ -65,7 +66,9 @@ class DiagnosticChromeState extends State<DiagnosticChrome> {
});
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('导出失败: $e')),
SnackBar(
content: Text(AppLocalizations.of(context).diagExportFail('$e')),
),
);
} finally {
if (mounted) setState(() => _exporting = false);