finish T-235 (persisted activity fold level); close T-132 via Q-34

T-235: app-scoped kActivityFoldLevelKey + a claude.activity.fold-level command
that cycles none→tools→thinking→everything; ClaudePane + team_panel_host read it
and re-fold live via the settings notifier. Unit tests for the helpers.

T-132 cleanup: the one blocked item (account/team token budget) is detached
(T-158), reframed as Q-34 'how + when to surface the budget given upstream
doesn't expose it', with T-158 as its backlog resolver. T-132 closed — all
doable work delivered.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-09 19:24:19 +02:00
co-authored by Claude Opus 4.8
parent eb7b738c17
commit 86a52cd731
10 changed files with 173 additions and 1 deletions
@@ -90,6 +90,24 @@ void main() {
});
});
group('fold-level persistence helpers (T-235)', () {
test('foldLevelFromName parses known names, defaults to L1 (tools)', () {
expect(foldLevelFromName('none'), FoldLevel.none);
expect(foldLevelFromName('tools'), FoldLevel.tools);
expect(foldLevelFromName('thinking'), FoldLevel.thinking);
expect(foldLevelFromName('everything'), FoldLevel.everything);
expect(foldLevelFromName(null), FoldLevel.tools);
expect(foldLevelFromName('bogus'), FoldLevel.tools);
});
test('nextFoldLevel cycles none → tools → thinking → everything → none', () {
expect(nextFoldLevel(FoldLevel.none), FoldLevel.tools);
expect(nextFoldLevel(FoldLevel.tools), FoldLevel.thinking);
expect(nextFoldLevel(FoldLevel.thinking), FoldLevel.everything);
expect(nextFoldLevel(FoldLevel.everything), FoldLevel.none);
});
});
group('editFilePath', () {
test('reads the file of an edit tool-use; null otherwise', () {
expect(editFilePath(_edit('1', '/a/b.dart')), '/a/b.dart');