Skip to content

Commit 5753ab4

Browse files
ResoDrive 0.3.0
0 parents  commit 5753ab4

191 files changed

Lines changed: 26481 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
9+
[*.{cs,csproj,props,targets}]
10+
indent_style = space
11+
indent_size = 4
12+
13+
[*.{xaml,xml,wxs,wixproj,yml,yaml,json,md}]
14+
indent_style = space
15+
indent_size = 2
16+
17+
[*.ps1]
18+
indent_style = space
19+
indent_size = 4

.gitattributes

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
* text=auto eol=lf
2+
3+
*.png binary
4+
*.ico binary
5+
*.zip binary
6+
*.msi binary
7+
*.dll binary
8+
*.exe binary
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Bug report
2+
description: Tell us what went wrong and how to reproduce it
3+
title: "[Bug]: "
4+
labels: [bug]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: Thanks for taking the time to report this. Before posting, remove passwords, private keys, private server addresses, and other sensitive details from logs or configuration files.
9+
- type: input
10+
id: version
11+
attributes:
12+
label: ResoDrive version
13+
placeholder: Shown in Settings or About
14+
validations:
15+
required: true
16+
- type: dropdown
17+
id: windows
18+
attributes:
19+
label: Windows version
20+
options:
21+
- Windows 11
22+
- Windows 10
23+
validations:
24+
required: true
25+
- type: textarea
26+
id: description
27+
attributes:
28+
label: What happened?
29+
description: What did you do, what did you expect, and what happened instead?
30+
validations:
31+
required: true
32+
- type: textarea
33+
id: logs
34+
attributes:
35+
label: Relevant redacted logs
36+
description: Paste only the part that helps explain the problem, with sensitive details removed.
37+
render: text

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
blank_issues_enabled: false
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Feature request
2+
description: Suggest a change that would make ResoDrive more useful
3+
title: "[Feature]: "
4+
labels: [enhancement]
5+
body:
6+
- type: textarea
7+
id: problem
8+
attributes:
9+
label: Problem or use case
10+
description: What are you trying to do, and what gets in the way today?
11+
validations:
12+
required: true
13+
- type: textarea
14+
id: proposal
15+
attributes:
16+
label: Proposed behavior
17+
description: How would you like ResoDrive to handle it?
18+
validations:
19+
required: true

.github/dependabot.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: /
5+
schedule:
6+
interval: weekly
7+
- package-ecosystem: nuget
8+
directory: /
9+
schedule:
10+
interval: weekly

.github/workflows/ci.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
permissions:
10+
contents: read
11+
12+
concurrency:
13+
group: ci-${{ github.ref }}
14+
cancel-in-progress: true
15+
16+
jobs:
17+
test:
18+
runs-on: windows-latest
19+
steps:
20+
- name: Check out source
21+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
22+
with:
23+
persist-credentials: false
24+
- name: Install .NET SDK
25+
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
26+
with:
27+
global-json-file: global.json
28+
- name: Restore locked dependencies
29+
run: dotnet restore resodrive.slnx --locked-mode
30+
- name: Test
31+
run: dotnet test resodrive.slnx --configuration Release --no-restore
32+
- name: Publish process smoke output
33+
run: >-
34+
dotnet publish src/ResoDrive.App/ResoDrive.App.csproj
35+
--configuration Release
36+
--no-restore
37+
--runtime win-x64
38+
--self-contained false
39+
-p:PublishSingleFile=false
40+
--output "${{ runner.temp }}\resodrive-process-smoke"
41+
- name: Process smoke
42+
shell: pwsh
43+
timeout-minutes: 4
44+
run: >-
45+
./tests/process-smoke.ps1
46+
-AppPath "${{ runner.temp }}\resodrive-process-smoke\resodrive.exe"

.github/workflows/release.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags: ['v*']
6+
7+
permissions:
8+
contents: write
9+
10+
jobs:
11+
release:
12+
runs-on: windows-latest
13+
steps:
14+
- name: Check out tagged source
15+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
16+
with:
17+
persist-credentials: false
18+
- name: Install .NET SDK
19+
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
20+
with:
21+
global-json-file: global.json
22+
- name: Verify tag matches package version
23+
shell: pwsh
24+
env:
25+
RELEASE_TAG: ${{ github.ref_name }}
26+
run: |
27+
$project = [xml](Get-Content -LiteralPath Directory.Build.props -Raw)
28+
$version = $project.Project.PropertyGroup.VersionPrefix | Select-Object -First 1
29+
if ($env:RELEASE_TAG -ne "v$version") {
30+
throw "Tag '$env:RELEASE_TAG' does not match VersionPrefix '$version'."
31+
}
32+
- name: Build and verify release
33+
shell: pwsh
34+
run: .\build.ps1 -Configuration Release -BuildMsi $true
35+
- name: Preserve release artifacts
36+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
37+
with:
38+
name: resodrive-${{ github.ref_name }}
39+
path: |
40+
artifacts/win-x64/*.zip
41+
artifacts/win-x64/*.zip.sha256
42+
artifacts/win-x64/*.msi
43+
artifacts/win-x64/*.msi.sha256
44+
artifacts/win-x64/*.exe
45+
artifacts/win-x64/*.exe.sha256
46+
if-no-files-found: error
47+
- name: Publish GitHub release
48+
shell: pwsh
49+
env:
50+
GH_TOKEN: ${{ github.token }}
51+
RELEASE_TAG: ${{ github.ref_name }}
52+
run: |
53+
$releaseDirectory = 'artifacts\win-x64'
54+
$versionedSetup = Get-ChildItem -LiteralPath $releaseDirectory -File -Filter 'resodrive-win-x64-*-setup.exe'
55+
if (@($versionedSetup).Count -ne 1) {
56+
throw "Expected one versioned setup bundle, found $(@($versionedSetup).Count)."
57+
}
58+
$stableSetup = Join-Path $releaseDirectory 'ResoDrive-Setup.exe'
59+
$stableChecksum = "$stableSetup.sha256"
60+
Copy-Item -LiteralPath $versionedSetup.FullName -Destination $stableSetup
61+
$hash = (Get-FileHash -LiteralPath $stableSetup -Algorithm SHA256).Hash.ToLowerInvariant()
62+
Set-Content -LiteralPath $stableChecksum -Value "$hash ResoDrive-Setup.exe" -Encoding ascii
63+
$assets = Get-ChildItem -LiteralPath $releaseDirectory -File |
64+
Where-Object Name -Match '\.(zip|msi|exe)(\.sha256)?$' |
65+
Sort-Object Name
66+
if ($assets.Count -ne 8) {
67+
throw "Expected eight release files, found $($assets.Count)."
68+
}
69+
gh release create $env:RELEASE_TAG $assets.FullName `
70+
--verify-tag --notes-file RELEASE_NOTES.md --title "ResoDrive $env:RELEASE_TAG"
71+
if ($LASTEXITCODE -ne 0) {
72+
throw "GitHub release creation failed with exit code $LASTEXITCODE."
73+
}

.gitignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
**/bin/
2+
**/obj/
3+
.vs/
4+
.idea/
5+
*.user
6+
*.suo
7+
artifacts/
8+
.dotnet/
9+
TestResults/
10+
coverage/
11+
*.trx
12+
*.coverage
13+
*.coveragexml
14+
.vscode/
15+
*.DotSettings.user
16+
/profiles.json

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Changelog
2+
3+
## [0.3.0] - 2026-08-28
4+
5+
First public preview of the cleaned ResoDrive codebase.
6+
7+
- Mount Nextcloud, WebDAV, and SFTP storage as Windows drives.
8+
- Run copy and mirror jobs independently of mounted drive availability.
9+
- Keep active work in a per-user background host when the window is closed.
10+
- Start promptly at sign-in through Windows Task Scheduler when enabled.
11+
- Retry interrupted mounts with bounded backoff for unreliable links.
12+
- Resume application and rclone downloads after transient connection failures.
13+
- Encrypt managed rclone credentials with Windows CurrentUser DPAPI.
14+
- Install through a small setup bundle that downloads the .NET Desktop Runtime
15+
only when it is missing.
16+
17+
[0.3.0]: https://github.com/alphasixtyfive/resodrive/releases/tag/v0.3.0

0 commit comments

Comments
 (0)