feat: parallel agent upgrades with per-host log panels (0.4.2)

Allow multiple remote update jobs at once; each upgrade gets its own
bottom-right log dock that auto-closes 30s after success.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-25 10:22:31 +10:00
parent 719d5c5719
commit dd2ae51b43
10 changed files with 267 additions and 174 deletions
@@ -0,0 +1,49 @@
<template>
<div v-if="openLogs.length" class="host-action-log-stack" aria-live="polite">
<HostActionLogModal
v-for="entry in openLogs"
:key="entry.id"
:open="true"
:title="entry.title"
:loading="entry.loading"
:ok="entry.ok"
:message="entry.message"
:output="entry.output"
@close="closeHostRemoteActionLog(entry.id)"
/>
</div>
</template>
<script setup lang="ts">
import { computed } from "vue";
import HostActionLogModal from "./HostActionLogModal.vue";
import {
closeHostRemoteActionLog,
hostRemoteActionLogs,
} from "../composables/useHostRemoteAction";
const openLogs = computed(() => hostRemoteActionLogs.filter((e) => e.open));
</script>
<style scoped>
.host-action-log-stack {
position: fixed;
right: 1rem;
bottom: 1rem;
z-index: 1000;
display: flex;
flex-direction: column-reverse;
align-items: flex-end;
gap: 0.65rem;
width: min(56rem, calc(100vw - 2rem));
max-height: min(90vh, 48rem);
overflow-y: auto;
pointer-events: none;
}
.host-action-log-stack :deep(.host-action-log-panel) {
pointer-events: auto;
width: 100%;
max-height: min(36rem, 45vh);
}
</style>