<feed xmlns='http://www.w3.org/2005/Atom'>
<title>DropOut/ui/src, branch dropout-v0.2.0-alpha.1</title>
<subtitle>This is a new Minecraft launcher that is currently in development. It is designed to be a modern, fast and efficient launcher. It is written in Rust. Aims to be a Reproducible Minecraft Workspace Manager.</subtitle>
<id>https://git.hydroroll.team/DropOut/atom?h=dropout-v0.2.0-alpha.1</id>
<link rel='self' href='https://git.hydroroll.team/DropOut/atom?h=dropout-v0.2.0-alpha.1'/>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/'/>
<updated>2026-01-18T06:53:44Z</updated>
<entry>
<title>feat(frontend): add instance editor modal with tabbed interface</title>
<updated>2026-01-18T06:53:44Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-18T06:53:44Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=d4ea239d4477e9427b52994ea25d54941dfdba3f'/>
<id>urn:sha1:d4ea239d4477e9427b52994ea25d54941dfdba3f</id>
<content type='text'>
- Create InstanceEditorModal.svelte with 4 tabs:
  * Info: Instance name, notes, metadata (created date, last played)
  * Version: Mod loader switcher and version display
  * Files: File browser for mods/resourcepacks/shaderpacks/saves/screenshots
  * Settings: Memory override and JVM arguments customization
- Wire InstanceEditorModal to InstancesView with Edit button
- Add FileInfo type definition to types/index.ts
- Fix accessibility issues: proper button roles, keyboard events
- All TypeScript and Svelte compilation errors resolved
- Enable comprehensive per-instance configuration management
</content>
</entry>
<entry>
<title>feat(frontend): add instance creation wizard</title>
<updated>2026-01-18T06:36:52Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-18T06:36:52Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=5d403b86833c23ff7974daa829a9cbb2f837f4ec'/>
<id>urn:sha1:5d403b86833c23ff7974daa829a9cbb2f837f4ec</id>
<content type='text'>
- Create multi-step InstanceCreationModal with version and mod loader selection
- Step 1: Instance name input
- Step 2: Minecraft version selection with search and filtering
- Step 3: Mod loader choice (vanilla/Fabric/Forge) with version selection
- Automatically installs vanilla version + mod loader during creation
- Wire new modal to InstancesView, replace old simple creation dialog
- Remove unused confirmCreate function

This wizard integrates version management into instance creation workflow,
streamlining the user experience by combining instance setup and version
installation into a single guided process.
</content>
</entry>
<entry>
<title>feat(backend): enhance instance management for editor support</title>
<updated>2026-01-18T06:27:45Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-18T06:27:45Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=6fdb730c323bcb1b052a2f9b13034603cbaf1e4d'/>
<id>urn:sha1:6fdb730c323bcb1b052a2f9b13034603cbaf1e4d</id>
<content type='text'>
- Sync instance.version_id after start_game, install_fabric, install_forge
- Add jvm_args_override and memory_override to Instance struct
- Add file management commands: list_instance_directory, delete_instance_file, open_file_explorer
- Support per-instance settings overrides (Java args, memory)
</content>
</entry>
<entry>
<title>feat(migration): implement shared cache migration with SHA1 dedup</title>
<updated>2026-01-18T05:43:12Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-18T05:43:12Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=17e8dd78ca5b7aae9baa4f86d38fa755c8af21c5'/>
<id>urn:sha1:17e8dd78ca5b7aae9baa4f86d38fa755c8af21c5</id>
<content type='text'>
- Add migrate_to_shared_caches() with hard link preference
- SHA1-based deduplication across all instances
- Copy fallback for cross-filesystem scenarios
- Auto-enable use_shared_caches after successful migration
- UI shows statistics: moved files, hardlinks/copies, MB saved
</content>
</entry>
<entry>
<title>fix(ci): improve pre-commit fmt hook configuration</title>
<updated>2026-01-18T05:34:52Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-18T05:34:52Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=02520ca62ac5e508e8748b2445171be64f459b6c'/>
<id>urn:sha1:02520ca62ac5e508e8748b2445171be64f459b6c</id>
<content type='text'>
- Add pass_filenames: false to fmt hook
- Add -- separator for cargo fmt args
- Manually format code with cargo fmt
</content>
</entry>
<entry>
<title>refactor: move version refresh logic to App.svelte and clean up GameState constructor</title>
<updated>2026-01-18T05:05:29Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-18T05:05:29Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=9a16c14b7fde683eb41526085c15852c69bed5e5'/>
<id>urn:sha1:9a16c14b7fde683eb41526085c15852c69bed5e5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: complete Instance/Profile System isolation and state management</title>
<updated>2026-01-18T04:58:22Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-18T04:58:22Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=5e9850881d35d3af9ae8a2f99402e02300f77835'/>
<id>urn:sha1:5e9850881d35d3af9ae8a2f99402e02300f77835</id>
<content type='text'>
## Overview
Fixed critical multi-instance isolation bugs where versions, mod loaders, and
instance state were not properly isolated between instances. These changes ensure
full data isolation and consistent instance metadata.

## Bug Fixes - P0 (Critical Isolation Issues)

### 1. Backend: get_versions() command isolation
- Problem: Used global app_data_dir instead of instance-specific game_dir
- Fix: Added instance_id parameter, now queries instance.game_dir
- Impact: Versions are now properly isolated per instance

### 2. Frontend: delete_version missing instanceId
- Problem: Frontend passed only versionId, not instanceId
- Fix: Updated VersionsView.svelte to pass instanceId parameter
- Impact: Version deletion now targets correct instance

### 3. Frontend: get_version_metadata missing instanceId
- Problem: Metadata queries didn't specify which instance to check
- Fix: Updated VersionsView.svelte to pass instanceId parameter
- Impact: Version info displayed per-instance correctly

### 4. Frontend: Instance switching doesn't refresh versions
- Problem: Switching instances didn't reload version list
- Fix: Added $effect hook in GameState to watch activeInstanceId changes
- Impact: Version list auto-refreshes on instance switch

## Bug Fixes - P1 (State Synchronization)

### 5. Backend: install_fabric doesn't update Instance.mod_loader
- Problem: Instance.mod_loader field wasn't updated after installation
- Fix: Added instance_state.update_instance() call
- Impact: Instance metadata stays in sync

### 6. Backend: install_forge doesn't update Instance.mod_loader
- Problem: Instance.mod_loader field wasn't updated after installation
- Fix: Added instance_state.update_instance() call
- Impact: Instance metadata stays in sync

### 7. Backend: delete_version doesn't clean up Instance state
- Problem: Deleting version didn't clear Instance.version_id or .mod_loader
- Fix: Added cleanup logic to clear stale references
- Impact: Instance state remains valid after deletion

## Testing
- Added comprehensive integration tests in instance_isolation_tests.rs
- Tests document 10 key scenarios for multi-instance isolation
- All code compiles cleanly with no errors
</content>
</entry>
<entry>
<title>style: auto format and lint fix [skip ci]</title>
<updated>2026-01-16T12:56:47Z</updated>
<author>
<name>HsiangNianian</name>
<email>44714368+HsiangNianian@users.noreply.github.com</email>
</author>
<published>2026-01-16T12:56:47Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=e6de034475c8cdaef4a65d04dad7c626805d2ffc'/>
<id>urn:sha1:e6de034475c8cdaef4a65d04dad7c626805d2ffc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add InstancesView component and integrate instance management into the UI</title>
<updated>2026-01-16T12:20:19Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-16T12:20:19Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=743401f15199a116b1777bced843c774c5a59fba'/>
<id>urn:sha1:743401f15199a116b1777bced843c774c5a59fba</id>
<content type='text'>
Introduced a new InstancesView component for managing game instances, allowing users to create, edit, delete, and duplicate instances. Updated the App.svelte to include the InstancesView and modified various components to ensure instance selection is handled correctly. Enhanced the ModLoaderSelector and VersionsView to check for active instances before performing actions. Updated the Sidebar to include navigation to the new InstancesView.
</content>
</entry>
<entry>
<title>feat: implement instance management functionality</title>
<updated>2026-01-16T12:20:05Z</updated>
<author>
<name>HsiangNianian</name>
<email>i@jyunko.cn</email>
</author>
<published>2026-01-16T12:20:05Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=3c13c14dea03c6b91716fb0f1578deb12fcf9756'/>
<id>urn:sha1:3c13c14dea03c6b91716fb0f1578deb12fcf9756</id>
<content type='text'>
Added a new InstancesState class to manage game instances, including loading, creating, deleting, updating, and duplicating instances. Integrated instance selection into the game launch process, ensuring an active instance is selected before starting a game. Updated the types to include instance-related data structures.
</content>
</entry>
</feed>
