diff --git a/hive-c0re/assets/app.js b/hive-c0re/assets/app.js index 2c6ea9a..600d672 100644 --- a/hive-c0re/assets/app.js +++ b/hive-c0re/assets/app.js @@ -1028,7 +1028,12 @@ // The broker uses the literal recipient `manager` for the // manager's inbox, not the container name `hm1nd`. Swap on // suggestion so `@manager` Just Works. - return s.containers.map((c) => (c.is_manager ? 'manager' : c.name)); + const names = s.containers.map((c) => (c.is_manager ? 'manager' : c.name)); + // `*` fans out the message to every registered agent (server-side + // broadcast_send). Surface it as a suggestion so operators can + // type `@*` from the dashboard the same way the manager does. + names.unshift('*'); + return names; } function autosize() { input.style.height = 'auto'; @@ -1037,7 +1042,7 @@ /// Parse "@name body…" — return {to, body} when the input opens /// with a known @-mention, otherwise null. function parseAddressed(raw) { - const m = raw.match(/^@([\w-]+)\s+([\s\S]+)$/); + const m = raw.match(/^@([\w*-]+)\s+([\s\S]+)$/); if (!m) return null; return { to: m[1], body: m[2] }; } diff --git a/hive-c0re/src/dashboard.rs b/hive-c0re/src/dashboard.rs index c5dd7bb..5e3e594 100644 --- a/hive-c0re/src/dashboard.rs +++ b/hive-c0re/src/dashboard.rs @@ -1054,7 +1054,14 @@ async fn post_op_send(State(state): State, Form(form): Form