# 📜 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`) --- ## 📅 ไทม์ไลน์การพัฒนา (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`](../AGENTS.md) และเอกสารแนะนำโปรเจกต์ [`README.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`](../update-and-build.bat) และ [`scripts/bootstrap.ps1`](../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` ใน Go `GitService` * สร้างโฟลเดอร์เอกสารความจำถาวร [`Doc/`](./README.md) เพื่อป้องกัน AI ลืมบริบทหลัง Compact