diff --git a/AmpleLinux/Agent.md b/AmpleLinux/Agent.md index 940135f8..51b8f6a6 100644 --- a/AmpleLinux/Agent.md +++ b/AmpleLinux/Agent.md @@ -1,6 +1,31 @@ # Agent Task Audit Log - Ample Linux Port +## 📅 Session: 2026-05-19 (Session 5) + +### 🎯 Objective: Complete Slot Configuration Persistence (MAME Command Line) +Synchronized command line argument logic with AmpleWin to ensure "None" slots are explicitly disabled in MAME. + +### ✅ Key Achievements: +1. **Command-Line Slot Persistence**: + * Modified `build_args` in `mame_launcher.py` to allow empty string values (e.g. `option is not None` instead of `if option:`). + * This ensures that `-[slot_name] ""` is explicitly passed on the command line, preventing MAME from falling back to its internal defaults. +2. **Cross-Platform Parity**: Ensured consistent behavior with Windows and Web ports. + +--- + +## 📅 Session: 2026-05-11 (Session 4) + +### 🎯 Objective: Slot Configuration Consistency Fix +Synchronized slot initialization logic with AmpleWin to fix "None" persistence issue. + +### ✅ Key Achievements: +1. **"None-Aware" Slot Initialization**: + * Applied the `slot_name not in self.current_slots` fix to `main.py`. +2. **Cross-Platform Consistency**: Ensured Linux port shares the improved slot behavior. + +--- + ## 📅 Session: 2026-03-02 (Session 3) ### 🎯 Objective: Upstream Version Tracking & Documentation Maintenance diff --git a/AmpleLinux/README.md b/AmpleLinux/README.md index 3d9b0477..0aaf999a 100644 --- a/AmpleLinux/README.md +++ b/AmpleLinux/README.md @@ -27,7 +27,7 @@ This is a port of the macOS native [Ample](https://github.com/ksherlock/ample) p ### 🍏 Faithful Mac Experience (Feature Parity) * **Visual Precision**: Precision support for **Window 1x-4x** modes with machine-specific aspect ratio heuristics. * **Software Library**: Smart filtering, search overlay, and compatibility checking. -* **Advanced Slot Emulation**: Full support for nested sub-slots (e.g. SCSI cards). +* **Advanced Slot Emulation**: Full support for nested sub-slots (e.g. SCSI cards) with robust default device initialization and persistence for "None" selections. * **ROM Management**: Real-time search, multi-server failover download, extended library. * **Shared Directory**: Full parity with `-share_directory` argument. diff --git a/AmpleLinux/README_tw.md b/AmpleLinux/README_tw.md index 1130b98b..2a68c66b 100644 --- a/AmpleLinux/README_tw.md +++ b/AmpleLinux/README_tw.md @@ -27,7 +27,7 @@ ### 🍏 忠實還原 Mac 體驗 (功能對齊) * **視覺精準度**:精準支援 **Window 1x-4x** 模式,並內建機器專屬的比例啟發邏輯。 * **軟體資料庫**:智慧過濾、搜尋遮罩、相容性檢查。 -* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡)。 +* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡),並具備穩健的設備初始化與「空」(None) 選項持久化邏輯。 * **ROM 管理**:即時搜尋、多伺服器 Failover 下載、擴展韌體庫。 * **共享目錄**:與 Mac 版功能完全對齊 (`-share_directory`)。 diff --git a/AmpleLinux/main.py b/AmpleLinux/main.py index 21536769..f4356b96 100644 --- a/AmpleLinux/main.py +++ b/AmpleLinux/main.py @@ -1249,7 +1249,7 @@ def find_global_def(name): if not slot_name: continue # Default selection - if not self.current_slots.get(slot_name): + if slot_name not in self.current_slots: best_val = None for opt in slot.get('options', []): if opt.get('default'): diff --git a/AmpleLinux/mame_launcher.py b/AmpleLinux/mame_launcher.py index 376e80d0..2c6e2346 100644 --- a/AmpleLinux/mame_launcher.py +++ b/AmpleLinux/mame_launcher.py @@ -80,7 +80,7 @@ def build_args(self, machine, slots=None, media=None, soft_list_args=None, extra if slots: for slot_name, option in slots.items(): - if option and not slot_name.startswith(':'): + if option is not None and not slot_name.startswith(':'): # Pass the slot argument regardless of base machine validation args.extend([f"-{slot_name}", option]) diff --git a/AmpleWin/Agent.md b/AmpleWin/Agent.md index b1e6817e..9edb6984 100644 --- a/AmpleWin/Agent.md +++ b/AmpleWin/Agent.md @@ -1,6 +1,32 @@ # Agent Task Audit Log - Ample Windows Port +## 📅 Session: 2026-05-19 (Session 15) + +### 🎯 Objective: Complete Slot Configuration Persistence (MAME Command Line) +Resolved the issue where selecting "None" for a slot in the UI didn't actually disable the device in MAME because empty slot arguments were being omitted from the command line. + +### ✅ Key Achievements: +1. **Command-Line Slot Persistence**: + * Modified `build_args` in `mame_launcher.py` to allow empty string values (e.g. `option is not None` instead of `if option:`). + * This ensures that `-[slot_name] ""` is explicitly passed on the command line, preventing MAME from falling back to its internal defaults. +2. **Parity**: Checked and verified this behavior across both `AmpleWin` and `AmpleLinux` ports, ensuring slots explicitly set to "None" are truly disabled when the emulator launches. + +--- + +## 📅 Session: 2026-05-11 (Session 14) + +### 🎯 Objective: Slot Configuration Consistency Fix +Resolved an issue where slots with defaults could not be set to "None" because UI refreshes would revert them. + +### ✅ Key Achievements: +1. **"None-Aware" Slot Initialization**: + * Modified `initialize_default_slots` to use `slot_name not in self.current_slots`. + * Ensured manual "None" selections are preserved while maintaining automated defaults for new card insertion. +2. **Upstream Compatibility**: Prepared codebase for PR back to original source, ensuring robust slot behavior. + +--- + ## 📅 Session: 2026-03-02 (Session 13) ### 🎯 Objective: Upstream Version Bump & Documentation Maintenance diff --git a/AmpleWin/README.md b/AmpleWin/README.md index 273a83fe..39f6a6ae 100644 --- a/AmpleWin/README.md +++ b/AmpleWin/README.md @@ -40,7 +40,9 @@ This is a precision port of the macOS native [Ample](https://github.com/ksherloc * **Smart Filtering**: Automatically identifies supported media types (flop1, flop2, cass...) to match machine capabilities. * **Search Overlay**: Integrated Mac-style search with auto-completion and full descriptive names. * **Compatibility Check**: Options marked as `disabled` in property lists (e.g. incompatible SCSI cards) are now correctly grayed out and unselectable, matching Mac behavior. -* **Advanced Slot Emulation**: Full support for nested sub-slots (e.g. SCSI cards). Automatically initializes default devices (CD-ROM/Hard Disk) upon card selection. +* **Advanced Slot Emulation**: Full support for nested sub-slots (e.g. SCSI cards). + * **Automated Defaults**: Automatically initializes default devices (CD-ROM/Hard Disk) upon card selection. + * **Slot Consistency**: Improved logic to respect "None" (empty) selections across UI refreshes, matching the high standards of the native macOS port. * **ROM Management**: * **Search Filter**: Real-time searching in the ROM manager window to quickly find system firmwares. * **Download Failover**: Automatic multi-server acquisition (callapple + mdk.cab) with transparent failover for maximum stability. diff --git a/AmpleWin/README_tw.md b/AmpleWin/README_tw.md index 1ede2f2e..474782ca 100644 --- a/AmpleWin/README_tw.md +++ b/AmpleWin/README_tw.md @@ -40,7 +40,9 @@ * **智慧過濾**:自動識別機器支援的媒體類型 (flop1, flop2, cass...),確保啟動參數與原始硬體一致。 * **搜尋遮罩**:完整還原 Mac 版的搜尋介面,支援自動補完與完整網格化清單顯示。 * **相容性檢查**:自動偵測屬性表中的 `disabled` 標記(如不相容的 SCSI 卡),並正確以灰色顯示不可選,與 Mac 行為一致。 -* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡)。在選中卡片後自動初始化預設設備(如 ID 1 CD-ROM, ID 6 Hard Disk)。 +* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡)。 + * **自動化配置**:在選中卡片後自動初始化預設設備(如 ID 1 CD-ROM, ID 6 Hard Disk)。 + * **配置持久性**:優化插槽初始化邏輯,確保在 UI 重新整理時能正確保留「空」(None) 的選取狀態,與 Mac 原生行為一致。 * **ROM 管理**: * **搜尋過濾**:ROM 管理器視窗中新增即時搜尋功能,方便快速查詢系統韌體。 * **下載 Failover**:多伺服器自動獲取 (callapple + mdk.cab),主伺服器失敗時自動切換,確保最高穩定性。 diff --git a/AmpleWin/main.py b/AmpleWin/main.py index edb5ac03..1a2dc55c 100644 --- a/AmpleWin/main.py +++ b/AmpleWin/main.py @@ -1142,7 +1142,7 @@ def find_global_def(name): if not slot_name: continue # Default selection - if not self.current_slots.get(slot_name): + if slot_name not in self.current_slots: best_val = None for opt in slot.get('options', []): if opt.get('default'): diff --git a/AmpleWin/mame_launcher.py b/AmpleWin/mame_launcher.py index e988cc66..8fe19d37 100644 --- a/AmpleWin/mame_launcher.py +++ b/AmpleWin/mame_launcher.py @@ -80,7 +80,7 @@ def build_args(self, machine, slots=None, media=None, soft_list_args=None, extra if slots: for slot_name, option in slots.items(): - if option and not slot_name.startswith(':'): + if option is not None and not slot_name.startswith(':'): # Pass the slot argument regardless of base machine validation args.extend([f"-{slot_name}", option])