GUI.for.Cores News
1.86K subscribers
44 photos
1 video
3 files
81 links
版本更新、通知发布、使用手册

交流群组:https://t.me/GUI_for_Cores

项目地址:https://github.com/GUI-for-Cores
Download Telegram
GUI.for.Cores 滚动更新日志

- 重构核心版本管理
- 增加版本回滚按钮
插件发布 【流媒体解锁检测】

插件 ID:plugin-media-unlock-checker

插件描述:检测当前网络环境下的流媒体解锁情况。

通用插件
GUI.for.Cores 【v1.9.7】已发布

- 优化从规则集中心添加的规则集名称显示,格式为[name]-[geosite/geoip]-[format]
- 调整运行时的配置日志等级,控制在 INFO 及以下
- 网络 API 增加参数:Redirect,用于控制是否支持重定向
- 增加 API:UnzipTarGZFile,用于解压 .tar.gz 文件
- 解压核心资源包采用 UnzipTarGZFile API,不再依赖系统 tar 命令
- 优化 MMDB 操作 API
- 重构 StartServer API,增加参数 StaticPath、StaticRoute、UploadPath、UploadRoute、MaxUploadSize,分别用于设置静态资源目录、静态资源路由、上传目录、上传路由、上传文件大小
- 修改 StartServer API 参数,cert 和 key 改为大驼峰 Cert 和 Key

StartServer 使用示例

/* 触发器 手动触发 */
const onRun = async () => {
// 创建一个支持上传与静态资源的服务
const { close } = await Plugins.StartServer(
"127.0.0.1:8080",
"StartServerTest",
async (req, res) => {
res.end(
200,
{ "Content-Type": "application/json" },
"Server is running..."
);
},
{
StaticPath: "data/.cache",
UploadPath: "data/.cache",
// MaxUploadSize: 50 * 1024 * 1024, 默认值50MB
// StaticRoute: "/static/", 默认值
// UploadRoute: "/upload", 默认值
}
);

// 测试上传
const res = await Plugins.Upload(
"http://127.0.0.1:8080/upload",
"data/user.yaml"
);
console.log(`[${Plugin.name}]`, res);

// 测试静态资源
const res2 = await Plugins.HttpGet("http://127.0.0.1:8080/static/user.yaml");
console.log(`[${Plugin.name}]`, res2);

// 关闭服务
await close();
};
插件更新 【文件互传助手】

更新说明

- 支持多文件传输
- 支持大文件传输
- 不会导致GUI内存暴涨
- 自动下载快捷指令到共享文件夹
GUI.for.Cores 滚动更新日志

- 新建配置的restful api密钥将采用16进制编码的256位密钥
- Switch组件添加切换动画
- 测节点延迟时,失败也更新延迟数值
- 优化首页控制器鼠标滚轮事件,减少误操作,提升动画性能
- 增加控制器面板关闭模式,可选仅按钮关闭


GUI.for.SingBox

- fix: 修复http3类型的DNS格式问题

GUI.for.Clash

- feat: URLTest类型策略组可手动固定节点与清除固定

提示:为了进一步加强安全,可编辑配置 - 通用设置 - RESTful API密钥 - 点击右侧刷新按钮,生成更长的密钥

请使用【滚动发行】插件完成上述更新。
GUI.for.Cores 滚动更新日志

- 在概览界面 - 核心管理处添加自定义操作 API

关键代码:

// target目前可取值:core_state
// actions为组件配置,可传入单个或多个
const removeFn = Plugins.useAppStore().addCustomActions(target, actions);


使用教程:

// 保存插件状态
window[Plugin.id] = window[Plugin.id] || {};

const onRun = async () => {
const appStore = Plugins.useAppStore();
onRemove();
// 把移除方法存到插件状态里
window[Plugin.id].remove = appStore.addCustomActions("core_state", [
{
component: "Button",
componentProps: {
size: "small",
onClick: () => {
Plugins.message.success("点击了按钮");
},
},
componentSlots: {
default: "一个按钮",
},
},
{
component: "Switch",
componentSlots: {
default: "一个开关",
},
componentProps: {
size: "small",
modelValue: true,
onChange: (vvv) => {
console.log(vvv);
},
},
},
{
component: "CheckBox",
componentProps: {
size: "small",
modelValue: ["1"],
options: [
{ label: "多选1", value: "1" },
{ label: "多选2", value: "2" },
],
onChange: (vvv) => {
console.log(vvv);
},
},
},
{
component: "Radio",
componentProps: {
size: "small",
modelValue: "1",
options: [
{ label: "单选1", value: "1" },
{ label: "单选2", value: "2" },
],
onChange: (vvv) => {
console.log(vvv);
},
},
},
{
component: "Dropdown",
componentProps: {
size: "small",
style: { color: "green", fontSize: "12px" },
},
componentSlots: {
default: "下拉菜单",
overlay: ({ h }) => {
return h("div", [
h(
"Button",
{
onClick: () => {
console.log("点了菜单1");
},
},
() => "菜单1"
),
h(
"Button",
{
onClick: () => {
console.log("点了菜单2");
},
},
() => "菜单2"
),
]);
},
},
},
{
component: "div",
componentProps: {
style: {
color: "red",
},
},
componentSlots: {
default: () => {
return "一个div";
},
},
},
{
component: "Icon",
componentProps: {
icon: "refresh",
},
},
{
component: "Tag",
componentProps: {
color: "cyan",
},
componentSlots: {
default: "👍",
},
},
]);
Plugins.message.success("添加自定义操作成功");
};

const onRemove = () => {
// 从插件状态拿移除方法并执行
window[Plugin.id].remove?.();
Plugins.message.success("移除自定义操作成功");
};


请使用【滚动发行】插件完成更新。
GUI.for.Cores 滚动更新日志

- 订阅支持自定义请求头(header.request)、响应头(header.response)
- 订阅移除userAgent字段,已有字段将迁移至header.request['User-Agent']

GUI.for.Clash:

- 移除了订阅中的健康检查开关,有需要请用脚本添加

注:如果你自己写的插件里使用了订阅的userAgent字段,请注意迁移。

请使用【滚动发行】插件完成更新
GUI.for.Cores 滚动更新日志

- 重构 WebSocket 连接处理
- 启动 core 后将发起 3 条常驻连接(/memory、/traffic、/connections)
- /logs 连接将按需开启并自动关闭
- 增加 onLogs、onTraffic、onMemory、onConnections API

新增 API 使用示例:

const kernelApi = Plugins.useKernelApiStore();

// 处理核心的日志信息
const unregisterLogsHandler = kernelApi.onLogs((data) => {
console.log("onLogs", data);
});

// 处理核心的流量信息
const unregisterTrafficHandler = kernelApi.onTraffic((data) => {
console.log("onTraffic", data);
});

// 处理核心的内存信息
const unregisterMemoryHandler = kernelApi.onMemory((data) => {
console.log("onMemory", data);
});

// 处理核心的连接信息
const unregisterConnections = kernelApi.onConnections((data) => {
console.log("onConnections", data);
});

// 1分钟后移除所有注册的回调
setTimeout(() => {
unregisterLogsHandler();
unregisterTrafficHandler();
unregisterMemoryHandler();
unregisterConnections();
}, 60_000);


请使用【滚动发行】插件完成更新
GUI.for.Cores 滚动更新日志

- 新增插件触发器:onCoreStarted(核心启动后)、onCoreStopped(核心停止后)

使用教程:

/* 触发器 核心启动后 */
const onCoreStarted = async () => {
console.log(`[${Plugin.name}]`, "核心启动了");
};

/* 触发器 核心停止后 */
const onCoreStopped = async () => {
console.log(`[${Plugin.name}]`, "核心停止了");
};


请使用【滚动发行】插件完成更新
GUI.for.Cores 滚动更新日志

- 新增插件触发器:onBeforeCoreStart(核心启动前)、onBeforeCoreStop(核心停止前)

使用教程:

/* 触发器 核心启动前 */
const onBeforeCoreStart = async (config, profile) => {
console.log(`[${Plugin.name}]`, 'onBeforeCoreStart')
return config
}

/* 触发器 核心停止前 */
const onBeforeCoreStop = async () => {
console.log(`[${Plugin.name}]`, 'onBeforeCoreStop')
}


请使用【滚动发行】插件完成更新
GUI.for.Cores 滚动更新日志

- 新增设置项【将代理组添加到托盘菜单】。

该设置默认关闭,以减少托盘菜单的刷新频率。

开启后,在切换【展示不可用节点】或【按延迟排序】时,托盘菜单将随之更新;此外,节点的可用性变化或延迟排序的更新也会触发托盘菜单的刷新。
插件发布 【SNI 伪造】

插件ID:plugin-sni-spoofing

插件说明:通过为浏览器添加启动参数和运行 Nginx 反代服务,实现免代理访问被墙网站。Supported by: 泡泡茶壶

通用插件
GUI.for.Cores 滚动更新日志

- 增加插件API: Plugins.modal
- 插件支持自定义UI,提供完整的Vue3框架能力

使用示例:

const onRun = async () => {
const ui = createUIModal()
ui.open()
}

const createUIModal = () => {
const { h, defineComponent } = Vue

const component1 = () => 'component1'

const component2 = {
template: '{{msg}}',
setup() {
return { msg: 'component2' }
}
}

const component3 = defineComponent(() => {
return () => h('div', 'component3')
})

const component4 = defineComponent({
render() {
return h('div', 'component4')
}
})

const modal = Plugins.modal({ title: '自定义UI使用示例', component: h(component4) })

return modal
}


更多示例请参考插件【插件UI示例
插件发布 【WARP 配置生成】

插件ID:plugin-generate-warp-config

插件说明:自动注册并生成 Cloudflare WARP 的配置信息。Supported by: 泡泡茶壶

通用插件
GUI.for.Cores 滚动更新日志

- 新增插件元数据:【是否具有用户界面】

配合【手动触发】触发器使用,开启后运行按钮前有个bling bling的小图标