Files
G-Launcher/Doc/HISTORY_AND_LOGS.md
T

62 lines
5.6 KiB
Markdown

# 📜 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