root-cause T-122 + restore 95% coverage; fix recents-row overflow
T-122: WelcomeView "hangs when recents are non-empty" was not a render/marquee bug — SettingsStore.set does real file I/O, and awaiting settings.set + loadRecents inside a testWidgets body runs it in fake-async, trapping the completion so the await never returns. Fix: seed via tester.runAsync. Un-skip the welcome recents test; add render/sticky/open-recent coverage. Coverage: new test/app_test.dart covers the app shell (RootLayout, slots, rails, spines, editor split, hat bar, intents, keymap, project switcher + dialogs); welcome recents + events/types fill the rest. Total 92.04% -> 95.13%. Also fixes a real bug found en route: the recent-project row (welcome + switcher) overflowed instead of ellipsizing a long path (T-122). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+7
-2
@@ -583,7 +583,12 @@ class _RecentProjectRow extends StatelessWidget {
|
||||
if (project.branch != null)
|
||||
Row(
|
||||
children: [
|
||||
ClideText(project.relativePath, muted: true, fontSize: 12, fontFamily: clideMonoFamily),
|
||||
// Elide a long path instead of overflowing the row
|
||||
// (matches the welcome recents row; T-160 discipline).
|
||||
Flexible(
|
||||
child: ClideText(project.relativePath,
|
||||
muted: true, fontSize: 12, fontFamily: clideMonoFamily, maxLines: 1, overflow: TextOverflow.ellipsis),
|
||||
),
|
||||
ClideText(' · ', muted: true, fontSize: 12),
|
||||
ClideIcon(PhosphorIcons.gitBranch, size: 10, color: tokens.globalTextMuted),
|
||||
const SizedBox(width: 3),
|
||||
@@ -591,7 +596,7 @@ class _RecentProjectRow extends StatelessWidget {
|
||||
],
|
||||
)
|
||||
else
|
||||
ClideText(project.relativePath, muted: true, fontSize: 12, fontFamily: clideMonoFamily),
|
||||
ClideText(project.relativePath, muted: true, fontSize: 12, fontFamily: clideMonoFamily, maxLines: 1, overflow: TextOverflow.ellipsis),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user