- <.icon name="hero-cloud" class="h-3 w-3" />
- <%= if @agent_info.agent_token_id do %>
- {t("Cloud")} ({@agent_info.name})
- <% else %>
- {t("Cloud")}
- <% end %>
+
+
+ {t("Agent:")}
- <% else %>
-
- <.icon name="hero-server" class="h-3 w-3" />
- {@agent_info.name}
-
- <%= if @agent_info.is_offline do %>
-
- <.icon name="hero-exclamation-triangle" class="h-3 w-3" /> Offline
+ <%= if @agent_info.type == :cloud do %>
+
+ <.icon name="hero-cloud" class="h-3 w-3" />
+ <%= if @agent_info.agent_token_id do %>
+ {t("Cloud")} ({@agent_info.name})
+ <% else %>
+ {t("Cloud")}
+ <% end %>
+ <% else %>
+ <%= if @agent_info.is_offline do %>
+
+ <.icon name="hero-exclamation-triangle" class="h-3 w-3" />
+ {@agent_info.name} · Offline
+
+ <% else %>
+
+ <.icon name="hero-server" class="h-3 w-3" />
+ {@agent_info.name}
+
+ <% end %>
<% end %>
- <% end %>
+
diff --git a/test/towerops_web/graphql/resolvers/time_series_test.exs b/test/towerops_web/graphql/resolvers/time_series_test.exs
index 57aa1f0c..e598c9aa 100644
--- a/test/towerops_web/graphql/resolvers/time_series_test.exs
+++ b/test/towerops_web/graphql/resolvers/time_series_test.exs
@@ -1,5 +1,5 @@
defmodule ToweropsWeb.GraphQL.Resolvers.TimeSeriesTest do
- use ToweropsWeb.ConnCase, async: true
+ use ToweropsWeb.ConnCase, async: false
import Towerops.AccountsFixtures
import Towerops.DevicesFixtures
diff --git a/test/towerops_web/live/org/settings_live_test.exs b/test/towerops_web/live/org/settings_live_test.exs
index 63886824..feb74649 100644
--- a/test/towerops_web/live/org/settings_live_test.exs
+++ b/test/towerops_web/live/org/settings_live_test.exs
@@ -218,9 +218,13 @@ defmodule ToweropsWeb.Org.SettingsLiveTest do
property "unicode names within length bounds are accepted", %{organization: org} do
check all(name <- string(:printable, min_length: 2, max_length: 100), max_runs: 50) do
- changeset = Organizations.change_organization(org, %{name: name})
- # Should not have a name error (length is valid)
- refute Keyword.has_key?(changeset.errors, :name)
+ # String.length/1 counts grapheme clusters, which may be fewer than code points
+ # when combining characters are present (e.g. a base char + combining mark = 1 grapheme).
+ # Only assert when the grapheme count satisfies the validation bounds.
+ if String.length(name) >= 2 and String.length(name) <= 100 do
+ changeset = Organizations.change_organization(org, %{name: name})
+ refute Keyword.has_key?(changeset.errors, :name)
+ end
end
end
end