Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 1.52.1

### Fixed

- **Dashboard: listing a node's git credentials no longer sticks on
“Loading credentials…”.** The background load cleared its status only on error;
a successful load — including an empty list (node has none registered) — now
clears it too, so the view shows the credentials (or the empty-state hint)
instead of a lingering loading message.

## 1.52.0

### Added
Expand Down
6 changes: 6 additions & 0 deletions lib/src/application/client/dashboard/dashboard_app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -963,6 +963,12 @@ class DashboardApp {
if (_credSel > _maxIndex(_credentials.length)) {
_credSel = _maxIndex(_credentials.length);
}
// Clear the "Loading credentials…" status now that the (possibly empty)
// list is ready. The background load finishes without a keypress, which is
// what would otherwise clear a transient message.
_message = null;
_messageHint = null;
_messageIsError = false;
} on Object catch (e) {
if (_credentials.isEmpty) {
_setError('Failed to list credentials', e);
Expand Down
2 changes: 1 addition & 1 deletion lib/src/version.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
/// This is the single source of truth for "what build is this": it is rendered
/// in the CLI banner and is the default a node reports as its
/// [NodeConfig.agentVersion] / [PlatformInfo.agentVersion].
const String omnyShellVersion = '1.52.0';
const String omnyShellVersion = '1.52.1';
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: >-
connect to a Hub by node identity (not host:port); the Hub authenticates,
authorizes and brokers encrypted sessions to Nodes over WebSocket-on-TLS.
Ships Hub, Node, Client and CLI implementations behind first-class Dart APIs.
version: 1.52.0
version: 1.52.1
repository: https://github.com/OmnyGrid/omnyshell

environment:
Expand Down
22 changes: 22 additions & 0 deletions test/unit/dashboard/dashboard_app_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -924,6 +924,28 @@ void main() {
},
);

test('node credentials: an empty list clears the loading status', () async {
final term = FakeTerminal();
final backend = connectedBackend(); // no credentials registered
final running = _app(term, backend).run();
await pump();
term.send(enter); // connect
await pump();
term.send(enter); // open node web-01
await pump();
term.send('c'.codeUnits); // open credentials -> empty list
await pump();

expect(backend.calls, contains('listGitCredentials:web-01'));
final text = frameText(term.lastFrame);
expect(text, contains('No credentials'));
// The transient "Loading…" status must not linger once the load settles.
expect(text, isNot(contains('Loading credentials')));

term.send(ctrlQ);
await running;
});

test(
'node credentials: a backend error is shown and the TUI stays interactive',
() async {
Expand Down
Loading