feat(Samples): replace DrivelutionSample with directory-scan quick-install sample#74
Closed
JusterZhu wants to merge 7 commits into
Closed
feat(Samples): replace DrivelutionSample with directory-scan quick-install sample#74JusterZhu wants to merge 7 commits into
JusterZhu wants to merge 7 commits into
Conversation
The server registers both /Upgrade/Verification and /Update/Verification but only /Update/Report for status reporting. Add /Upgrade/Report so clients using the /Upgrade/* URL variant can report update status. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add Architecture.md: system architecture, update flow, component relationships - Add Pipeline.md: middleware pipeline deep dive, BSDiff/HDiffPatch algorithms - Add Security.md: TLS, auth (Bearer/API Key/HMAC), AES-256-CBC IPC encryption - Add Configuration.md: complete config reference for all components - Add FAQ.md: 24 frequently asked questions with code examples - Enhance PacketTool.md: add Simulate Update and Config Generator documentation - Enhance Packaging.md: expand from 2 links to comprehensive deployment guide - All new docs include English translations (i18n/en/) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ractive CLI Consolidate all 9 individual sample projects into a single Hub console application with an interactive menu. Each sample demonstrates a different GeneralUpdate component API end-to-end. **New:** - src/Hub/ — unified sample launcher with interactive menu - src/Hub/Samples/ — all 9 samples as ISample implementations - src/Hub/AppConfig.cs — JSON configuration model - src/Hub/appsettings.json — server & product configuration - src/Run.cmd / src/Run.ps1 — one-click launcher scripts - src/gen_packages.ps1 — test package generator - src/content_client/ — test data for Differential sample - src/content_upgrade/ — test data for Upgrade packages - src/content/ — intermediate version test data - Directory.Build.props — shared build properties - global.json — .NET 10 SDK pinning **Samples & their GeneralUpdate API usage:** 1. CompleteUpdate — GeneralUpdateBootstrap (AppType.Client) 2. SilentUpdate — GeneralUpdateBootstrap (AppType.Client, silent) 3. OSS — GeneralUpdateBootstrap (AppType.OssClient) 4. Differential — DiffPipelineBuilder + BsdiffDiffer 5. Push — UpgradeHubService (SignalR push client) 6. Bowl — BowlContext (process monitor/dump) 7. Extension — GeneralExtensionHost (plugin system) 8. Drivelution — GeneralDrivelution (driver management) 9. Compress — CompressProvider (zip compress/decompress) **Removed:** old individual sample projects (Bowl, Client, Compress, Diff, Drivelution, Extension, OSS, Push, Upgrade) — all consolidated under src/Hub/. **Fixed:** - Removed unnecessary PackageReferences already provided by ASP.NET Core - Added OperatingSystem.IsWindows() guard in DrivelutionSample (CA1416) - Cleaned up unused GuLibsPath property in Directory.Build.props Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…nput conflict - Program.cs: drain server stdout/stderr to prevent pipe buffer deadlock that blocked HTTP download request handling (~2 min timeout) - CompleteUpdateSample: add UpdatePath to find Hub.exe in Both scenario, add MultiDownloadCompleted listener for success feedback - SilentUpdateSample: wait for poll completion then call TryLaunchUpgrade, exit process after launch to prevent duplicate console input - OssSample: use full UpdateRequest with UpdatePath+UpdateAppName so OssClient can locate Hub.exe in temp install directory - libs: update GeneralUpdate.Core.dll with ClientStrategy launch banner and SilentPollOrchestrator improved log message Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Remove non-existent ClientSample.sln and UpgradeSample.sln references - Add .NET 10 SDK setup for Hub project (net10.0) - Build ServerSample.sln with .NET 8 - Build Hub with UseNuGet=true (local DLLs not available in CI) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Program.cs: find sample by ISample.Index instead of array position to handle non-contiguous indices correctly - Run.ps1: replace hard-coded GeneralUpdate source path with auto-detect sibling repo + -GeneralUpdateSrc parameter - dotnet.yml: remove Hub build from CI (NuGet packages not synced with latest source), ServerSample build only for now Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…stall sample - Add ImDiskQuickInstallSample: scans bundle driver directory and installs via cascading methods (DiInstallDriver -> InstallHinfSection -> PnPUtil) - Bundle ImDisk driver files at src/ImDiskDriver/ for offline install demo - Remove old DrivelutionSample (replaced by the new sample at Index 8) - Drivelution APIs used: GetDriversFromDirectoryAsync, ValidateAsync Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR modernizes the Samples repo by replacing several standalone sample projects with a single “Hub” sample browser, and by swapping the old Drivelution sample for an ImDisk directory-scan quick-install driver demo. It also expands the documentation set (Architecture/Config/Pipeline/Security/FAQ/Packaging) and adjusts server/CI entrypoints to match the new workflow.
Changes:
- Introduce
src/Hub/interactive sample menu plus multiple new in-process samples (update flow, silent update, OSS, diff, compress, Bowl, SignalR push, driver quick-install). - Bundle ImDisk driver assets under
src/ImDiskDriver/and add a new driver install sample that scans/validates via Drivelution and installs via DIFx/SetupAPI/PnPUtil cascade. - Remove legacy standalone sample projects/scripts (Client/Upgrade/Push/OSS/etc.) and refresh docs/CI scripts for the new structure.
Reviewed changes
Copilot reviewed 87 out of 153 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| website/i18n/en/docusaurus-plugin-content-docs/current/guide/Security.md | Add English security guide page |
| website/i18n/en/docusaurus-plugin-content-docs/current/guide/Pipeline.md | Add English pipeline/middleware guide page |
| website/i18n/en/docusaurus-plugin-content-docs/current/guide/Packaging.md | Rewrite English packaging/deployment guide |
| website/i18n/en/docusaurus-plugin-content-docs/current/guide/FAQ.md | Add English FAQ page |
| website/i18n/en/docusaurus-plugin-content-docs/current/guide/Configuration.md | Add English configuration reference page |
| website/i18n/en/docusaurus-plugin-content-docs/current/guide/Architecture.md | Add English architecture overview page |
| website/i18n/en/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.PacketTool.md | Expand English PacketTool docs (simulate update/config generator) |
| website/docs/guide/Packaging.md | Rewrite Chinese packaging/deployment guide |
| website/docs/doc/GeneralUpdate.PacketTool.md | Expand Chinese PacketTool docs (simulate update/config generator) |
| src/Upgrade/UpgradeSample.sln | Remove legacy Upgrade sample solution |
| src/Upgrade/UpgradeSample.csproj | Remove legacy Upgrade sample project |
| src/Upgrade/Program.cs | Remove legacy Upgrade sample program |
| src/Upgrade/build.bat | Remove legacy Upgrade build script |
| src/Upgrade/.vs/UpgradeSample/v17/DocumentLayout.json | Remove editor metadata from repo |
| src/Upgrade/.idea/.idea.UpgradeSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/Upgrade/.idea/.idea.UpgradeSample/.idea/inspectionProfiles/Project_Default.xml | Remove Rider metadata from repo |
| src/Upgrade/.idea/.idea.UpgradeSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/Upgrade/.idea/.idea.UpgradeSample/.idea/avalonia.xml | Remove Rider metadata from repo |
| src/Upgrade/.idea/.idea.UpgradeSample/.idea/.name | Remove Rider metadata from repo |
| src/Upgrade/.idea/.idea.UpgradeSample/.idea/.gitignore | Remove Rider metadata from repo |
| src/start.cmd | Remove legacy “start everything” script |
| src/Server/wwwroot/packages/versions.json | Update sample versions manifest data |
| src/Server/Program.cs | Add /Upgrade/Report endpoint mapping |
| src/Run.ps1 | Add new PowerShell launcher (optional component rebuild) |
| src/Run.cmd | Add Windows cmd wrapper for Run.ps1 |
| src/Push/PushSample.sln | Remove legacy Push sample solution |
| src/Push/PushSample.csproj | Remove legacy Push sample project |
| src/Push/Program.cs | Remove legacy Push sample program |
| src/Push/.idea/.idea.PushSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/Push/.idea/.idea.PushSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/Push/.idea/.idea.PushSample/.idea/encodings.xml | Remove Rider metadata from repo |
| src/Push/.idea/.idea.PushSample/.idea/.name | Remove Rider metadata from repo |
| src/Push/.idea/.idea.PushSample/.idea/.gitignore | Remove Rider metadata from repo |
| src/process.bat | Remove legacy process-kill helper script |
| src/OSS/OSSUpgradeSample/Program.cs | Remove legacy OSS upgrade sample |
| src/OSS/OSSUpgradeSample/OSSUpgradeSample.sln | Remove legacy OSS upgrade solution |
| src/OSS/OSSUpgradeSample/OSSUpgradeSample.csproj | Remove legacy OSS upgrade project |
| src/OSS/OSSUpgradeSample/build.bat | Remove legacy OSS upgrade build script |
| src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/encodings.xml | Remove Rider metadata from repo |
| src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/.gitignore | Remove Rider metadata from repo |
| src/OSS/OSSClientSample/Program.cs | Remove legacy OSS client sample |
| src/OSS/OSSClientSample/OSSClientSample.sln | Remove legacy OSS client solution |
| src/OSS/OSSClientSample/OSSClientSample.csproj | Remove legacy OSS client project |
| src/OSS/OSSClientSample/build.bat | Remove legacy OSS client build script |
| src/OSS/OSSClientSample/.idea/.idea.OSSClientSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/OSS/OSSClientSample/.idea/.idea.OSSClientSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/OSS/OSSClientSample/.idea/.idea.OSSClientSample/.idea/encodings.xml | Remove Rider metadata from repo |
| src/OSS/.idea/.idea.OSSSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/OSS/.idea/.idea.OSSSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/OSS/.idea/.idea.OSSSample/.idea/encodings.xml | Remove Rider metadata from repo |
| src/OSS/.idea/.idea.OSSSample/.idea/.name | Remove Rider metadata from repo |
| src/OSS/.idea/.idea.OSSSample/.idea/.gitignore | Remove Rider metadata from repo |
| src/oss_start.cmd | Remove legacy OSS start script |
| src/ImDiskDriver/uninstall_imdisk.cmd | Add bundled ImDisk uninstall script |
| src/ImDiskDriver/install.cmd | Add bundled ImDisk installer script |
| src/ImDiskDriver/imdisk.inf | Add bundled ImDisk INF for offline install demo |
| src/Hub/Samples/SilentUpdateSample.cs | Add silent background polling sample |
| src/Hub/Samples/PushSample.cs | Add self-hosted SignalR push demo sample |
| src/Hub/Samples/OssSample.cs | Add OSS-mode update sample |
| src/Hub/Samples/ISample.cs | Define Hub sample interface contract |
| src/Hub/Samples/ImDiskQuickInstallSample.cs | Add new ImDisk directory-scan quick-install driver sample |
| src/Hub/Samples/ExtensionSample.cs | Add extension install/management demo sample |
| src/Hub/Samples/DifferentialSample.cs | Add binary diff generation/apply/verify demo sample |
| src/Hub/Samples/CompressSample.cs | Add compress/decompress/verify demo sample |
| src/Hub/Samples/CompleteUpdateSample.cs | Add full update flow demo sample |
| src/Hub/Samples/BowlSample.cs | Add Bowl crash/dump/export demo sample |
| src/Hub/Program.cs | Add Hub interactive menu runner & server lifecycle |
| src/Hub/libs/Applications/Windows/export.bat | Add Windows export helper script under Hub libs |
| src/Hub/libs/Applications/Linux/install.sh | Add Linux install helper script under Hub libs |
| src/Hub/Hub.csproj | Add Hub project file (local-dll vs NuGet toggle) |
| src/Hub/appsettings.json | Add Hub runtime configuration file |
| src/Hub/AppConfig.cs | Add Hub config model |
| src/gen_packages.ps1 | Add quick package generation helper for Hub testing |
| src/Extension/ExtensionSample/ExtensionSample.sln | Remove legacy Extension sample solution |
| src/Extension/ExtensionSample/ExtensionSample.csproj | Remove legacy Extension sample project |
| src/Drivelution/DrivelutionSample/Program.cs | Remove legacy Drivelution sample program |
| src/Drivelution/DrivelutionSample/DrivelutionSample.sln | Remove legacy Drivelution sample solution |
| src/Drivelution/DrivelutionSample/DrivelutionSample.csproj | Remove legacy Drivelution sample project |
| src/dotnet10_scripts/upgrade.cs | Remove legacy dotnet-script upgrade snippet |
| src/Diff/Program.cs | Remove legacy Diff sample program |
| src/Diff/DiffSample.sln | Remove legacy Diff sample solution |
| src/Diff/DiffSample.csproj | Remove legacy Diff sample project |
| src/Diff/.idea/.idea.DiffSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/Diff/.idea/.idea.DiffSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/Diff/.idea/.idea.DiffSample/.idea/encodings.xml | Remove Rider metadata from repo |
| src/Diff/.idea/.idea.DiffSample/.idea/.name | Remove Rider metadata from repo |
| src/Diff/.idea/.idea.DiffSample/.idea/.gitignore | Remove Rider metadata from repo |
| src/content_client/v2.0.0.0/new_feature.dat | Add sample content payload for v2 client package |
| src/content_client/v2.0.0.0/config/settings.ini | Add sample config payload for v2 client package |
| src/content_client/v2.0.0.0/appdata.json | Add sample appdata payload for v2 client package |
| src/content_client/v1.0.0.0/old_feature.dat | Add sample content payload for v1 client package |
| src/content_client/v1.0.0.0/config/settings.ini | Add sample config payload for v1 client package |
| src/content_client/v1.0.0.0/appdata.json | Add sample appdata payload for v1 client package |
| src/Compress/CompressSample/Program.cs | Remove legacy Compress sample program |
| src/Compress/CompressSample/CompressSample.sln | Remove legacy Compress sample solution |
| src/Compress/CompressSample/CompressSample.csproj | Remove legacy Compress sample project |
| src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/encodings.xml | Remove Rider metadata from repo |
| src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/.gitignore | Remove Rider metadata from repo |
| src/Client/Program.cs | Remove legacy Client sample program |
| src/Client/ClientSample.sln | Remove legacy Client sample solution |
| src/Client/ClientSample.csproj | Remove legacy Client sample project |
| src/Client/build.bat | Remove legacy Client build script |
| src/Client/.idea/.idea.ClientSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/Client/.idea/.idea.ClientSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/Client/.idea/.idea.ClientSample/.idea/avalonia.xml | Remove Rider metadata from repo |
| src/Client/.idea/.idea.ClientSample/.idea/.name | Remove Rider metadata from repo |
| src/Client/.idea/.idea.ClientSample/.idea/.gitignore | Remove Rider metadata from repo |
| src/Bowl/BowlSample/Program.cs | Remove legacy Bowl sample program |
| src/Bowl/BowlSample/BowlSample.sln | Remove legacy Bowl sample solution |
| src/Bowl/BowlSample/BowlSample.csproj | Remove legacy Bowl sample project |
| src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/vcs.xml | Remove Rider metadata from repo |
| src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/indexLayout.xml | Remove Rider metadata from repo |
| src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/encodings.xml | Remove Rider metadata from repo |
| src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/.gitignore | Remove Rider metadata from repo |
| global.json | Pin repo to .NET SDK 10 (prerelease allowed) |
| Directory.Build.props | Add common .NET build defaults (nullable/usings/langversion) |
| cmd.txt | Remove legacy Linux/.NET 8 install notes |
| .github/workflows/dotnet.yml | Update CI to build net10 server and modernize actions |
Files not reviewed (41)
- src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/.gitignore: Language not supported
- src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/encodings.xml: Language not supported
- src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/indexLayout.xml: Language not supported
- src/Bowl/BowlSample/.idea/.idea.BowlSample/.idea/vcs.xml: Language not supported
- src/Client/.idea/.idea.ClientSample/.idea/.gitignore: Language not supported
- src/Client/.idea/.idea.ClientSample/.idea/.name: Language not supported
- src/Client/.idea/.idea.ClientSample/.idea/avalonia.xml: Language not supported
- src/Client/.idea/.idea.ClientSample/.idea/indexLayout.xml: Language not supported
- src/Client/.idea/.idea.ClientSample/.idea/vcs.xml: Language not supported
- src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/.gitignore: Language not supported
- src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/encodings.xml: Language not supported
- src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/indexLayout.xml: Language not supported
- src/Compress/CompressSample/.idea/.idea.CompressSample/.idea/vcs.xml: Language not supported
- src/Diff/.idea/.idea.DiffSample/.idea/.gitignore: Language not supported
- src/Diff/.idea/.idea.DiffSample/.idea/.name: Language not supported
- src/Diff/.idea/.idea.DiffSample/.idea/encodings.xml: Language not supported
- src/Diff/.idea/.idea.DiffSample/.idea/indexLayout.xml: Language not supported
- src/Diff/.idea/.idea.DiffSample/.idea/vcs.xml: Language not supported
- src/OSS/.idea/.idea.OSSSample/.idea/.gitignore: Language not supported
- src/OSS/.idea/.idea.OSSSample/.idea/.name: Language not supported
- src/OSS/.idea/.idea.OSSSample/.idea/encodings.xml: Language not supported
- src/OSS/.idea/.idea.OSSSample/.idea/indexLayout.xml: Language not supported
- src/OSS/.idea/.idea.OSSSample/.idea/vcs.xml: Language not supported
- src/OSS/OSSClientSample/.idea/.idea.OSSClientSample/.idea/encodings.xml: Language not supported
- src/OSS/OSSClientSample/.idea/.idea.OSSClientSample/.idea/indexLayout.xml: Language not supported
- src/OSS/OSSClientSample/.idea/.idea.OSSClientSample/.idea/vcs.xml: Language not supported
- src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/.gitignore: Language not supported
- src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/encodings.xml: Language not supported
- src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/indexLayout.xml: Language not supported
- src/OSS/OSSUpgradeSample/.idea/.idea.OSSUpgradeSample/.idea/vcs.xml: Language not supported
- src/Push/.idea/.idea.PushSample/.idea/.gitignore: Language not supported
- src/Push/.idea/.idea.PushSample/.idea/.name: Language not supported
- src/Push/.idea/.idea.PushSample/.idea/encodings.xml: Language not supported
- src/Push/.idea/.idea.PushSample/.idea/indexLayout.xml: Language not supported
- src/Push/.idea/.idea.PushSample/.idea/vcs.xml: Language not supported
- src/Upgrade/.idea/.idea.UpgradeSample/.idea/.gitignore: Language not supported
- src/Upgrade/.idea/.idea.UpgradeSample/.idea/.name: Language not supported
- src/Upgrade/.idea/.idea.UpgradeSample/.idea/avalonia.xml: Language not supported
- src/Upgrade/.idea/.idea.UpgradeSample/.idea/indexLayout.xml: Language not supported
- src/Upgrade/.idea/.idea.UpgradeSample/.idea/inspectionProfiles/Project_Default.xml: Language not supported
- src/Upgrade/.idea/.idea.UpgradeSample/.idea/vcs.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| #!/bin/bash | ||
|
|
||
| # 获取脚本的实际名称 | ||
| SCRIPT_NAME=$(basename "\$0") |
| exit 1 | ||
| fi | ||
|
|
||
| PACKAGE_FILE=\$1 |
| echo. | ||
| if not "%IMDISK_SILENT_SETUP%" == "1" ( | ||
| pause | ||
| start "" "%SystemRoot%\system32\control.exe" ""%SystemRoot%\system32\imdisk.cpl" |
Comment on lines
+110
to
+112
| Console.WriteLine(" [2] InstallHinfSection (SetupAPI)..."); | ||
| installOk = InstallHinfSection(IntPtr.Zero, IntPtr.Zero, $"DefaultInstall 132 {infPath}", 0); | ||
| var err2 = installOk ? 0 : Marshal.GetLastWin32Error(); |
Comment on lines
+69
to
+77
| // 等待后台轮询完成(最多等 60 秒) | ||
| Console.WriteLine(); | ||
| Console.WriteLine("══ 等待后台更新准备完成... ══"); | ||
| var waited = 0; | ||
| while (bootstrap.SilentOrchestrator?.HasPreparedUpdate != true && waited < 60 && !ct.IsCancellationRequested) | ||
| { | ||
| await Task.Delay(500, ct); | ||
| waited++; | ||
| } |
| // Development only: accept self-signed certificates | ||
| public class DevelopmentSslPolicy : ISslValidationPolicy | ||
| { | ||
| public bool ValidateCertificate(...) |
| @echo off | ||
| REM GeneralUpdate 示例浏览器入口 (Windows) | ||
| REM 直接双击或在终端运行即可 | ||
| powershell -ExecutionPolicy Bypass -File "%~dp0Run.ps1" %* |
Comment on lines
+17
to
+25
| - name: Setup .NET 8 | ||
| uses: actions/setup-dotnet@v4 | ||
| with: | ||
| dotnet-version: 8.0.x | ||
|
|
||
| - name: Restore dependencies ServerSample.sln | ||
| run: dotnet restore ./src/Server/ServerSample.sln | ||
|
|
||
| - name: Restore dependencies ClientSample.sln | ||
| run: dotnet restore ./src/Client/ClientSample.sln | ||
| - name: Setup .NET 10 | ||
| uses: actions/setup-dotnet@v4 | ||
| with: | ||
| dotnet-version: 10.0.x |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
src/ImDiskDriver/for offline install demo🤖 Generated with Claude Code