5.6 KiB
5.6 KiB
📜 G-Launcher Development History & Decision Logs
เอกสารนี้บันทึกประวัติการพัฒนา การตัดสินใจเชิงเทคนิค และที่มาของฟีเจอร์ต่างๆ ในโปรเจกต์ G-Launcher
🏛️ จุดกำเนิดและการผสานโค้ด (Origins & Merging)
G-Launcher เกิดจากการรวมจุดเด่นของ 2 โปรเจกต์ต้นแบบเข้าด้วยกัน:
1. Firefly-Shelter/Firefly_Launcher (รากฐานฝั่ง UI & Architecture)
- สิ่งที่นำมาใช้:
- โครงสร้าง UI หน้าต่าง Launcher สไตล์มินิมอล โมเดิร์น (TailwindCSS + DaisyUI)
- สถาปัตยกรรม Proxy และ Local Server Downloader
- ระบบเปลี่ยนภาษาหลายภาษาแบบไดนามิก (i18next)
- Zustand Store (
launcherStore,modalStore)
2. horoyoi-san/game-Launcher (sunbringer-launcher branch) (ฟังก์ชันความปลอดภัย & เครื่องมือ)
- สิ่งที่นำมาใช้:
- เครื่องมือแพตช์ไฟล์ฟอร์แมต Zift (
.ziff) ผ่านzift.exe - ระบบจัดเตรียม Portable MinGit อัตโนมัติ (
git_runtime.go) - การสำรองไฟล์เกมเดิมเป็น
.backupก่อนแก้ไข และระบบ Atomic Rollback - การบันทึกพาธเกมแบบทนทานต่อ Crash ด้วย Windows API
MoveFileEx(game-selection.go) - สคริปต์คำนวณเวอร์ชันและแฮช SHA-256 (
scripts/launcher-release.mjs) - ระบบติดตั้งม็อดแปลภาษาไทย (
thai-patch.go)
- เครื่องมือแพตช์ไฟล์ฟอร์แมต Zift (
📅 ไทม์ไลน์การพัฒนา (Changelog & Milestone Timeline)
Milestone 1: Rebranding & Repository Initial Setup
- ตั้งชื่อโปรเจกต์อย่างเป็นทางการว่า G-Launcher ภายใต้สังกัด GaCy
- สร้าง Git Remote:
https://gaytea.cod-algieba.ts.net/GaCy/G-Launcher.git - สร้างและตั้งค่าการทำงานบนสาขา
Devเป็นสาขาหลัก - รีแบรนด์ Go Module เป็น
g-launcher, ปรับปรุงbuild/config.yml,Taskfile.yml,main.go, และwails.exe.manifest - เพิ่มไฟล์ข้อกำหนดการพัฒนา
AGENTS.mdและเอกสารแนะนำโปรเจกต์README.md
Milestone 2: Thai Localization & Game Selection Persistence
- สร้างไฟล์คำแปลภาษาไทยฉบับเต็ม:
frontend/public/locales/th.json - เพิ่มปุ่มเลือกภาษาไทยใน
LanguageSwitcher - เชื่อมโยงระบบจำพาธเกมลงใน
%APPDATA%/g-launcher/game-selection.jsonโดยใช้MoveFileExแบบ Atomic Write
Milestone 3: CI/CD & Build Workflow
- ดัดแปลงสคริปต์คำนวณเวอร์ชัน
scripts/launcher-release.mjsพร้อมชุดทดสอบอัตโนมัติlauncher-release.test.mjs - สร้าง GitHub Actions Workflow:
.github/workflows/build-launcher.yml - แก้ไขข้อผิดพลาด Mermaid ELK parser บน Gitea (
Referenced shape does not exist: OS) โดยปรับรูปแบบลูกศรในไดอะแกรมสถาปัตยกรรม
Milestone 4: Zero-Dependency Local Auto-Updater
- พัฒนาสคริปต์
update-and-build.batและscripts/bootstrap.ps1 - ระบบตรวจจับและดาวน์โหลด Portable MinGit, Go 1.24, Node.js v22 และ Wails v3 CLI อัตโนมัติลงใน
tools/ - แก้ไขปัญหา Text Encoding ของ Windows PowerShell 5.1 ด้วยการบันทึกไฟล์เป็น UTF-8 with BOM
Milestone 5: Isolated Temp Build & Rollback (Current Milestone)
- ปรับปรุงสถาปัตยกรรมการอัปเดตใหม่ตามกฎ:
"โหลด Temp มา -> Build ใหม่ใน Temp -> นำมาแทนของเก่า -> ลบ Temp ทิ้ง 100%"
- ซอร์สโค้ดถูก clone ลง
temp/build_workspace(หรือos.MkdirTemp) - คอมไพล์ Frontend และ Go Backend ภายในโฟลเดอร์ Temp
- สลับไฟล์ไบนารี
bin/G-Launcher.exeอย่างปลอดภัยด้วยการสำรอง.oldและมีระบบ Rollback อัตโนมัติหากเกิดข้อผิดพลาด - ลบโฟลเดอร์ Temp ทิ้ง 100% ผ่านบล็อก
finally/defer - เพิ่มเมธอด
BuildAndUpdateFromSourceใน GoGitService - สร้างโฟลเดอร์เอกสารความจำถาวร
Doc/เพื่อป้องกัน AI ลืมบริบทหลัง Compact