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:
@@ -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>
|
||||
Reference in New Issue
Block a user