Files
G-Launcher/Doc/HISTORY_AND_LOGS.md
T

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)

📅 ไทม์ไลน์การพัฒนา (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 ใน Go GitService
  • สร้างโฟลเดอร์เอกสารความจำถาวร Doc/ เพื่อป้องกัน AI ลืมบริบทหลัง Compact