feat: add functional plugin icons
@@ -20,6 +20,8 @@
|
||||
"capabilities": ["Interactive", "Read", "Write"],
|
||||
"websiteURL": "https://git.cjysa.top/CJYSA/codex-free-market",
|
||||
"brandColor": "#2563EB",
|
||||
"composerIcon": "./assets/icon.png",
|
||||
"logo": "./assets/logo.png",
|
||||
"defaultPrompt": [
|
||||
"把这份内容整理成一份专业的 Word 文档。",
|
||||
"在保留格式的前提下修改这个 DOCX。",
|
||||
|
||||
BIN
plugins/cjysa-documents/assets/icon.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
6
plugins/cjysa-documents/assets/icon.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" rx="112" fill="#2563EB"/>
|
||||
<path d="M146 92h166l54 54v274H146z" fill="#fff"/>
|
||||
<path d="M312 92v70h54" fill="#BFDBFE"/>
|
||||
<path d="M184 232h144M184 286h144M184 340h102" stroke="#2563EB" stroke-width="24" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 334 B |
BIN
plugins/cjysa-documents/assets/logo.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
@@ -20,6 +20,8 @@
|
||||
"capabilities": ["Interactive", "Read", "Write"],
|
||||
"websiteURL": "https://git.cjysa.top/CJYSA/codex-free-market",
|
||||
"brandColor": "#DC2626",
|
||||
"composerIcon": "./assets/icon.png",
|
||||
"logo": "./assets/logo.png",
|
||||
"defaultPrompt": [
|
||||
"提取并总结这个 PDF 的内容。",
|
||||
"把这些 PDF 合并并检查页面是否正常。",
|
||||
|
||||
BIN
plugins/cjysa-pdf/assets/icon.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
7
plugins/cjysa-pdf/assets/icon.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" rx="112" fill="#DC2626"/>
|
||||
<path d="M146 92h166l54 54v274H146z" fill="#fff"/>
|
||||
<path d="M312 92v70h54" fill="#FECACA"/>
|
||||
<path d="M184 248c35-46 68-48 92-8 24 40 46 85 64 85 15 0 29-18 42-54" fill="none" stroke="#DC2626" stroke-width="22" stroke-linecap="round"/>
|
||||
<path d="M184 350h144" stroke="#DC2626" stroke-width="22" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 455 B |
BIN
plugins/cjysa-pdf/assets/logo.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
@@ -20,6 +20,8 @@
|
||||
"capabilities": ["Interactive", "Read", "Write"],
|
||||
"websiteURL": "https://git.cjysa.top/CJYSA/codex-free-market",
|
||||
"brandColor": "#C43E1C",
|
||||
"composerIcon": "./assets/icon.png",
|
||||
"logo": "./assets/logo.png",
|
||||
"defaultPrompt": [
|
||||
"根据这份材料制作一套结构清晰的 PPT。",
|
||||
"保留模板风格并修改这个演示文稿。",
|
||||
|
||||
BIN
plugins/cjysa-presentations/assets/icon.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
7
plugins/cjysa-presentations/assets/icon.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" rx="112" fill="#C43E1C"/>
|
||||
<rect x="104" y="114" width="304" height="226" rx="18" fill="#fff"/>
|
||||
<path d="M256 340v58M188 398h136" stroke="#fff" stroke-width="24" stroke-linecap="round"/>
|
||||
<path d="M154 292v-62h48v62M232 292v-112h48v112M310 292v-88h48v88" fill="#FED7AA" stroke="#C43E1C" stroke-width="12"/>
|
||||
<path d="M138 340h236" stroke="#FED7AA" stroke-width="14"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 476 B |
BIN
plugins/cjysa-presentations/assets/logo.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
@@ -20,6 +20,8 @@
|
||||
"capabilities": ["Interactive", "Read", "Write"],
|
||||
"websiteURL": "https://git.cjysa.top/CJYSA/codex-free-market",
|
||||
"brandColor": "#107C41",
|
||||
"composerIcon": "./assets/icon.png",
|
||||
"logo": "./assets/logo.png",
|
||||
"defaultPrompt": [
|
||||
"把这份 CSV 整理成带公式和格式的 Excel。",
|
||||
"分析这个工作簿并解释关键指标。",
|
||||
|
||||
BIN
plugins/cjysa-spreadsheets/assets/icon.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
7
plugins/cjysa-spreadsheets/assets/icon.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" rx="112" fill="#107C41"/>
|
||||
<rect x="112" y="106" width="288" height="300" rx="20" fill="#fff"/>
|
||||
<rect x="144" y="164" width="224" height="198" fill="#DCFCE7"/>
|
||||
<path d="M144 230h224M144 296h224M218 164v198M292 164v198" stroke="#107C41" stroke-width="18"/>
|
||||
<path d="M144 132h224" stroke="#86EFAC" stroke-width="26"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 426 B |
BIN
plugins/cjysa-spreadsheets/assets/logo.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
80
tools/render_plugin_icons.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from pathlib import Path
|
||||
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
SIZE = 512
|
||||
|
||||
|
||||
def rounded(draw, box, radius, fill):
|
||||
draw.rounded_rectangle(box, radius=radius, fill=fill)
|
||||
|
||||
|
||||
def document(path, color):
|
||||
image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(image)
|
||||
rounded(draw, (0, 0, 511, 511), 112, color)
|
||||
draw.polygon([(146, 92), (312, 92), (366, 146), (366, 420), (146, 420)], fill="white")
|
||||
draw.polygon([(312, 92), (312, 162), (366, 162)], fill="#BFDBFE")
|
||||
for y, width in [(232, 144), (286, 144), (340, 102)]:
|
||||
draw.line((184, y, 184 + width, y), fill=color, width=24)
|
||||
image.save(path)
|
||||
|
||||
|
||||
def pdf(path, color):
|
||||
image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(image)
|
||||
rounded(draw, (0, 0, 511, 511), 112, color)
|
||||
draw.polygon([(146, 92), (312, 92), (366, 146), (366, 420), (146, 420)], fill="white")
|
||||
draw.polygon([(312, 92), (312, 162), (366, 162)], fill="#FECACA")
|
||||
draw.arc((180, 198, 318, 338), 205, 345, fill=color, width=22)
|
||||
draw.line((184, 350, 328, 350), fill=color, width=22)
|
||||
image.save(path)
|
||||
|
||||
|
||||
def spreadsheet(path, color):
|
||||
image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(image)
|
||||
rounded(draw, (0, 0, 511, 511), 112, color)
|
||||
rounded(draw, (112, 106, 400, 406), 20, "white")
|
||||
draw.rectangle((144, 164, 368, 362), fill="#DCFCE7")
|
||||
for y in (230, 296):
|
||||
draw.line((144, y, 368, y), fill=color, width=18)
|
||||
for x in (218, 292):
|
||||
draw.line((x, 164, x, 362), fill=color, width=18)
|
||||
draw.line((144, 132, 368, 132), fill="#86EFAC", width=26)
|
||||
image.save(path)
|
||||
|
||||
|
||||
def presentation(path, color):
|
||||
image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(image)
|
||||
rounded(draw, (0, 0, 511, 511), 112, color)
|
||||
rounded(draw, (104, 114, 408, 340), 18, "white")
|
||||
draw.line((256, 340, 256, 398), fill="white", width=24)
|
||||
draw.line((188, 398, 324, 398), fill="white", width=24)
|
||||
draw.rectangle((154, 230, 202, 292), fill="#FED7AA", outline=color, width=12)
|
||||
draw.rectangle((232, 180, 280, 292), fill="#FED7AA", outline=color, width=12)
|
||||
draw.rectangle((310, 204, 358, 292), fill="#FED7AA", outline=color, width=12)
|
||||
draw.line((138, 340, 374, 340), fill="#FED7AA", width=14)
|
||||
image.save(path)
|
||||
|
||||
|
||||
def main():
|
||||
assets = {
|
||||
"cjysa-documents": (document, "#2563EB"),
|
||||
"cjysa-pdf": (pdf, "#DC2626"),
|
||||
"cjysa-spreadsheets": (spreadsheet, "#107C41"),
|
||||
"cjysa-presentations": (presentation, "#C43E1C"),
|
||||
}
|
||||
for plugin, (builder, color) in assets.items():
|
||||
target = ROOT / "plugins" / plugin / "assets"
|
||||
target.mkdir(parents=True, exist_ok=True)
|
||||
builder(target / "icon.png", color)
|
||||
builder(target / "logo.png", color)
|
||||
print(target / "icon.png")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||