mirror of
https://github.com/JimLiu/baoyu-skills.git
synced 2026-07-15 06:59:48 +08:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b7585ebf71 | |||
| 3205239067 | |||
| c5b3066962 | |||
| 84d7777246 | |||
| 8412392788 |
@@ -6,7 +6,7 @@
|
|||||||
},
|
},
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Skills shared by Baoyu for improving daily work efficiency",
|
"description": "Skills shared by Baoyu for improving daily work efficiency",
|
||||||
"version": "1.42.2"
|
"version": "1.43.0"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
English | [中文](./CHANGELOG.zh.md)
|
English | [中文](./CHANGELOG.zh.md)
|
||||||
|
|
||||||
|
## 1.43.0 - 2026-03-02
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- `baoyu-post-to-wechat`: support env var overrides for browser debug port (`WECHAT_BROWSER_DEBUG_PORT`) and profile directory (`WECHAT_BROWSER_PROFILE_DIR`)
|
||||||
|
- `baoyu-post-to-x`: support env var overrides for browser debug port (`X_BROWSER_DEBUG_PORT`) and profile directory (`X_BROWSER_PROFILE_DIR`)
|
||||||
|
|
||||||
|
## 1.42.3 - 2026-03-02
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- `baoyu-image-gen`: use standard size presets for DashScope aspect ratio mapping instead of free-form calculation
|
||||||
|
|
||||||
## 1.42.2 - 2026-03-01
|
## 1.42.2 - 2026-03-01
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|||||||
@@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
[English](./CHANGELOG.md) | 中文
|
[English](./CHANGELOG.md) | 中文
|
||||||
|
|
||||||
|
## 1.43.0 - 2026-03-02
|
||||||
|
|
||||||
|
### 新功能
|
||||||
|
- `baoyu-post-to-wechat`:支持通过环境变量覆盖浏览器调试端口(`WECHAT_BROWSER_DEBUG_PORT`)和配置目录(`WECHAT_BROWSER_PROFILE_DIR`)
|
||||||
|
- `baoyu-post-to-x`:支持通过环境变量覆盖浏览器调试端口(`X_BROWSER_DEBUG_PORT`)和配置目录(`X_BROWSER_PROFILE_DIR`)
|
||||||
|
|
||||||
|
## 1.42.3 - 2026-03-02
|
||||||
|
|
||||||
|
### 修复
|
||||||
|
- `baoyu-image-gen`:DashScope 宽高比映射改用标准预设尺寸匹配,避免自由计算产生无效分辨率
|
||||||
|
|
||||||
## 1.42.2 - 2026-03-01
|
## 1.42.2 - 2026-03-01
|
||||||
|
|
||||||
### 新功能
|
### 新功能
|
||||||
|
|||||||
@@ -22,27 +22,53 @@ function parseAspectRatio(ar: string): { width: number; height: number } | null
|
|||||||
return { width: w, height: h };
|
return { width: w, height: h };
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSizeFromAspectRatio(ar: string | null, quality: CliArgs["quality"]): string {
|
const STANDARD_SIZES: [number, number][] = [
|
||||||
const baseSize = quality === "2k" ? 1440 : 1024;
|
[1024, 1024],
|
||||||
|
[1280, 720],
|
||||||
|
[720, 1280],
|
||||||
|
[1024, 768],
|
||||||
|
[768, 1024],
|
||||||
|
[1536, 1024],
|
||||||
|
[1024, 1536],
|
||||||
|
[1536, 864],
|
||||||
|
[864, 1536],
|
||||||
|
];
|
||||||
|
|
||||||
if (!ar) return `${baseSize}*${baseSize}`;
|
const STANDARD_SIZES_2K: [number, number][] = [
|
||||||
|
[1536, 1536],
|
||||||
|
[2048, 1152],
|
||||||
|
[1152, 2048],
|
||||||
|
[1536, 1024],
|
||||||
|
[1024, 1536],
|
||||||
|
[1536, 864],
|
||||||
|
[864, 1536],
|
||||||
|
[2048, 2048],
|
||||||
|
];
|
||||||
|
|
||||||
|
function getSizeFromAspectRatio(ar: string | null, quality: CliArgs["quality"]): string {
|
||||||
|
const is2k = quality === "2k";
|
||||||
|
const defaultSize = is2k ? "1536*1536" : "1024*1024";
|
||||||
|
|
||||||
|
if (!ar) return defaultSize;
|
||||||
|
|
||||||
const parsed = parseAspectRatio(ar);
|
const parsed = parseAspectRatio(ar);
|
||||||
if (!parsed) return `${baseSize}*${baseSize}`;
|
if (!parsed) return defaultSize;
|
||||||
|
|
||||||
const ratio = parsed.width / parsed.height;
|
const targetRatio = parsed.width / parsed.height;
|
||||||
|
const sizes = is2k ? STANDARD_SIZES_2K : STANDARD_SIZES;
|
||||||
|
|
||||||
if (Math.abs(ratio - 1) < 0.1) {
|
let best = defaultSize;
|
||||||
return `${baseSize}*${baseSize}`;
|
let bestDiff = Infinity;
|
||||||
|
|
||||||
|
for (const [w, h] of sizes) {
|
||||||
|
const diff = Math.abs(w / h - targetRatio);
|
||||||
|
if (diff < bestDiff) {
|
||||||
|
bestDiff = diff;
|
||||||
|
best = `${w}*${h}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ratio > 1) {
|
return best;
|
||||||
const w = Math.round(baseSize * ratio);
|
|
||||||
return `${w}*${baseSize}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
const h = Math.round(baseSize / ratio);
|
|
||||||
return `${baseSize}*${h}`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function normalizeSize(size: string): string {
|
function normalizeSize(size: string): string {
|
||||||
|
|||||||
@@ -109,6 +109,8 @@ function sleep(ms: number): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getFreePort(): Promise<number> {
|
async function getFreePort(): Promise<number> {
|
||||||
|
const fixed = parseInt(process.env.WECHAT_BROWSER_DEBUG_PORT || '', 10);
|
||||||
|
if (fixed > 0) return fixed;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const server = net.createServer();
|
const server = net.createServer();
|
||||||
server.unref();
|
server.unref();
|
||||||
@@ -170,6 +172,8 @@ function findChromeExecutable(): string | undefined {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getDefaultProfileDir(): string {
|
function getDefaultProfileDir(): string {
|
||||||
|
const override = process.env.WECHAT_BROWSER_PROFILE_DIR?.trim();
|
||||||
|
if (override) return path.resolve(override);
|
||||||
const base = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share');
|
const base = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share');
|
||||||
return path.join(base, 'wechat-browser-profile');
|
return path.join(base, 'wechat-browser-profile');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ export function findChromeExecutable(candidates: PlatformCandidates): string | u
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getDefaultProfileDir(): string {
|
export function getDefaultProfileDir(): string {
|
||||||
|
const override = process.env.X_BROWSER_PROFILE_DIR?.trim();
|
||||||
|
if (override) return path.resolve(override);
|
||||||
const base = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share');
|
const base = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share');
|
||||||
return path.join(base, 'x-browser-profile');
|
return path.join(base, 'x-browser-profile');
|
||||||
}
|
}
|
||||||
@@ -79,6 +81,8 @@ export function sleep(ms: number): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function getFreePort(): Promise<number> {
|
export async function getFreePort(): Promise<number> {
|
||||||
|
const fixed = parseInt(process.env.X_BROWSER_DEBUG_PORT || '', 10);
|
||||||
|
if (fixed > 0) return fixed;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const server = net.createServer();
|
const server = net.createServer();
|
||||||
server.unref();
|
server.unref();
|
||||||
|
|||||||
Reference in New Issue
Block a user