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
6 changes: 6 additions & 0 deletions plugins/automatic-assistant/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 1.0.1 (2026-08-25)

- 修复安装后脚本图标与平台图标无法显示
- 修复「脚本隐藏后台运行」不生效
- 脚本内 API 对象统一为 `ztools`

## 1.0.0 (2026-08-25)

- 首个版本
Expand Down
2 changes: 1 addition & 1 deletion plugins/automatic-assistant/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "automatic-assistant",
"version": "1.0.0",
"version": "1.0.1",
"description": "自动化助手,让繁琐的步骤一步到位",
"type": "module",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion plugins/automatic-assistant/public/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"title": "自动化助手",
"description": "自动化助手,让繁琐的步骤一步到位。自定义指令 + JavaScript 脚本,一条指令完成一串操作",
"author": "lee",
"version": "1.0.0",
"version": "1.0.1",
"main": "index.html",
"preload": "preload/services.js",
"logo": "logo.png",
Expand Down
26 changes: 19 additions & 7 deletions plugins/automatic-assistant/src/App.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { computed, onMounted, reactive, ref } from 'vue'
import { computed, nextTick, onMounted, reactive, ref } from 'vue'
import type { CategoryDoc, Feature, ScriptDoc } from './types'
import { INSET_SCRIPTS } from './insets'
import {
Expand Down Expand Up @@ -86,7 +86,10 @@ const stringifyResult = (value: unknown) => {
// 有返回值 / 抛错 → 重新显示主窗口并展示结果面板
// 结果出来后 print 的内容不再追加

function runScript(script: string, action: Record<string, unknown>) {
// mainHide 为 true 时,在运行页挂载后隐藏主窗口,再开始执行脚本
// (对齐原版 componentDidMount 里先 hideMainWindow、再 setTimeout(run) 的时序;
// 在 onPluginEnter 回调里同步隐藏会被宿主随后的显示/聚焦覆盖)
function runScript(script: string, action: Record<string, unknown>, mainHide = false) {
runInfo.script = script
runInfo.action = action
view.value = 'run'
Expand All @@ -95,6 +98,13 @@ function runScript(script: string, action: Record<string, unknown>) {
runInfo.error = null
runInfo.running = true

nextTick(() => {
if (mainHide) window.ztools.hideMainWindow()
window.setTimeout(() => execScript(script, action), 0)
})
}

function execScript(script: string, action: Record<string, unknown>) {
const print = (msg: unknown) => {
if (runInfo.result !== null || runInfo.error !== null) return
runInfo.logs = [...runInfo.logs, stringify(msg)]
Expand Down Expand Up @@ -126,7 +136,7 @@ function rerun() {
runInfo.logs = []
runInfo.result = null
runInfo.error = null
window.setTimeout(() => runScript(script, action), 50)
window.setTimeout(() => runScript(script, action, false), 50)
}

function handleEnter(action: { code: string; type: string; payload: unknown; option: unknown; from?: string }) {
Expand All @@ -144,18 +154,20 @@ function handleEnter(action: { code: string; type: string; payload: unknown; opt
window.ztools.removeFeature(code)
window.ztools.outPlugin()
}
// ZTools 的 action.from 为可选字段,未提供时按主输入框入口处理,
// 否则 mainHide 会因判断恒为假而完全失效
const fromMain = (action.from || 'main') === 'main'
const enter = action as unknown as Record<string, unknown>
const inset = INSET_SCRIPTS.find((x) => x.id === action.code)
if (inset) {
const script = window.services.getInsetScript(inset.id)
if (!script) return bail(action.code)
if (insetFeature(inset.id)?.mainHide && action.from === 'main') window.ztools.hideMainWindow()
runScript(script, action as unknown as Record<string, unknown>)
runScript(script, enter, !!insetFeature(inset.id)?.mainHide && fromMain)
return
}
const doc = scripts.value.find((s) => s.feature.code === action.code)
if (!doc) return bail(action.code)
if (doc.feature.mainHide && action.from === 'main') window.ztools.hideMainWindow()
runScript(doc.script, action as unknown as Record<string, unknown>)
runScript(doc.script, enter, !!doc.feature.mainHide && fromMain)
}

onMounted(() => {
Expand Down
Loading