Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 28 additions & 11 deletions .github/workflows/dotnet-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,7 @@ env:

# Configuring Dotnet Build Commands
PUBLISH_OUTPUT_FOLDER: Publish
PUBLISH_SELF_CONTAINED: true
PUBLISH_SINGLE_FILE: true
PUBLISH_READY_TO_RUN: false
PUBLISH_AOT: false # currently only Console App Supported
PUBLISH_TRIMMED: true
PUBLISH_TRIM_MODE: partial # or full

# Configuring GitHub Release
IS_PRE_RELEASE: false
Expand All @@ -45,6 +40,7 @@ jobs:
strategy:
matrix:
platform: [x64, x86, arm64]
publish_flavor: [Portable, Slim]

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -81,20 +77,20 @@ jobs:
# Building with configured commands
- run: |
$runtimeIdentifier = "${{ matrix.platform }}"
dotnet publish ${{ env.PROJECT_PATH }} -c Release -r win-$($runtimeIdentifier.ToLower()) /p:GITHUB_ACTIONS=true -p:Platform=${{ matrix.platform }} --self-contained ${{ env.PUBLISH_SELF_CONTAINED }} -p:PublishSingleFile=${{ env.PUBLISH_SINGLE_FILE }} -p:PublishReadyToRun=${{ env.PUBLISH_READY_TO_RUN }} -p:PublishTrimmed=${{ env.PUBLISH_TRIMMED }} -p:TrimMode=${{ env.PUBLISH_TRIM_MODE }} -p:PublishAot=${{ env.PUBLISH_AOT }} --output ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}
dotnet publish ${{ env.PROJECT_PATH }} -c Release -r win-$($runtimeIdentifier.ToLower()) /p:GITHUB_ACTIONS=true -p:Platform=${{ matrix.platform }} -p:PublishFlavor=${{ matrix.publish_flavor }} -p:PublishAot=${{ env.PUBLISH_AOT }} --output ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}/${{ matrix.publish_flavor }}

# Zipping folder and all files
- uses: vimtor/action-zip@v1.2
with:
files: ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}
files: ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}/${{ matrix.publish_flavor }}
recursive: true
dest: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.assembly-version }}-${{ matrix.platform }}.zip
dest: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.assembly-version }}-${{ matrix.platform }}-${{ matrix.publish_flavor }}.zip

# Uploading all zip files to access them in the 'release' job
- uses: actions/upload-artifact@v4
with:
name: artifacts-${{ matrix.platform }}
path: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.assembly-version }}-${{ matrix.platform }}.zip
name: artifacts-${{ matrix.platform }}-${{ matrix.publish_flavor }}
path: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.assembly-version }}-${{ matrix.platform }}-${{ matrix.publish_flavor }}.zip

# Checking version suffix for words like [alpha, beta, preview, and experiment]. Marking the release as a pre-release if any exists.
- run: |
Expand Down Expand Up @@ -154,12 +150,33 @@ jobs:
# Installing a package for generating a changelog file
- run: npm install -g auto-changelog
- run: auto-changelog --tag-pattern .+ --commit-limit false --starting-version v${{ env.APP_VERSION }} --ending-version v${{ env.APP_VERSION }} --hide-credit

# Compose bilingual release notes with flavor explanation + changelog
- run: |
cat > RELEASE_BODY.md <<'EOF'
## Package Flavors / 安装包版本说明

- **Portable**: Self-contained package. No preinstalled .NET runtime required. Larger size.
- **Slim**: Framework-dependent package. Smaller size, but requires runtime dependencies on target machine.

- **Portable(便携版)**:自包含版本,通常不需要预装 .NET 运行时,体积较大。
- **Slim(轻量版)**:依赖运行时版本,体积更小,但目标机器需满足运行时依赖。

### Artifact Naming / 产物命名

- `SimpleList-vVERSION-PLATFORM-Portable.zip`
- `SimpleList-vVERSION-PLATFORM-Slim.zip`

---

EOF
cat CHANGELOG.md >> RELEASE_BODY.md

# Creating a Release in GitHub
- uses: ncipollo/release-action@v1
with:
artifacts: "${{ env.APP_NAME }}-v${{ env.APP_VERSION }}-*.zip"
bodyFile: "CHANGELOG.md"
bodyFile: "RELEASE_BODY.md"
name: v${{ env.APP_VERSION }}
tag: v${{ env.APP_VERSION }}
prerelease: ${{ env.IS_PRE_RELEASE }}
Expand Down
39 changes: 28 additions & 11 deletions .github/workflows/dotnet-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,7 @@ env:

# Configuring Dotnet Build Commands
PUBLISH_OUTPUT_FOLDER: Publish
PUBLISH_SELF_CONTAINED: false
PUBLISH_SINGLE_FILE: false
PUBLISH_READY_TO_RUN: false
PUBLISH_AOT: false # currently only Console App Supported
PUBLISH_TRIMMED: false
PUBLISH_TRIM_MODE: partial # or full

# Configuring GitHub Release
IS_PRE_RELEASE: false
Expand All @@ -44,6 +39,7 @@ jobs:
strategy:
matrix:
platform: [x64, x86, arm64] # Change platform if you want to build only a specific platform
publish_flavor: [Portable, Slim]

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -80,20 +76,20 @@ jobs:
# Building with configured commands
- run: |
$runtimeIdentifier = "${{ matrix.platform }}"
dotnet publish ${{ env.PROJECT_PATH }} -c Release -r win-$($runtimeIdentifier.ToLower()) /p:GITHUB_ACTIONS=true -p:Platform=${{ matrix.platform }} --self-contained ${{ env.PUBLISH_SELF_CONTAINED }} -p:PublishSingleFile=${{ env.PUBLISH_SINGLE_FILE }} -p:PublishReadyToRun=${{ env.PUBLISH_READY_TO_RUN }} -p:PublishTrimmed=${{ env.PUBLISH_TRIMMED }} -p:TrimMode=${{ env.PUBLISH_TRIM_MODE }} -p:PublishAot=${{ env.PUBLISH_AOT }} --output ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}
dotnet publish ${{ env.PROJECT_PATH }} -c Release -r win-$($runtimeIdentifier.ToLower()) /p:GITHUB_ACTIONS=true -p:Platform=${{ matrix.platform }} -p:PublishFlavor=${{ matrix.publish_flavor }} -p:PublishAot=${{ env.PUBLISH_AOT }} --output ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}/${{ matrix.publish_flavor }}

# Zipping folder and all files
- uses: vimtor/action-zip@v1.2
with:
files: ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}
files: ${{ env.PUBLISH_OUTPUT_FOLDER }}/${{ matrix.platform }}/${{ matrix.publish_flavor }}
recursive: true
dest: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.version }}-${{ matrix.platform }}.zip
dest: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.version }}-${{ matrix.platform }}-${{ matrix.publish_flavor }}.zip

# Uploading all zip files to access them in the 'release' job
- uses: actions/upload-artifact@v4
with:
name: artifacts-${{ matrix.platform }}
path: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.version }}-${{ matrix.platform }}.zip
name: artifacts-${{ matrix.platform }}-${{ matrix.publish_flavor }}
path: ${{ env.APP_NAME }}-v${{ steps.get-version.outputs.version }}-${{ matrix.platform }}-${{ matrix.publish_flavor }}.zip

# Checking version suffix for words like [alpha, beta, preview, and experiment]. Marking the release as a pre-release if any exists.
- run: |
Expand Down Expand Up @@ -153,12 +149,33 @@ jobs:
# Installing a package for generating a changelog file
- run: npm install -g auto-changelog
- run: auto-changelog --tag-pattern .+ --commit-limit false --starting-version v${{ env.APP_VERSION }} --ending-version v${{ env.APP_VERSION }} --hide-credit

# Compose bilingual release notes with flavor explanation + changelog
- run: |
cat > RELEASE_BODY.md <<'EOF'
## Package Flavors / 安装包版本说明

- **Portable**: Self-contained package. No preinstalled .NET runtime required. Larger size.
- **Slim**: Framework-dependent package. Smaller size, but requires runtime dependencies on target machine.

- **Portable(便携版)**:自包含版本,通常不需要预装 .NET 运行时,体积较大。
- **Slim(轻量版)**:依赖运行时版本,体积更小,但目标机器需满足运行时依赖。

### Artifact Naming / 产物命名

- `YOUR_APP_NAME-vVERSION-PLATFORM-Portable.zip`
- `YOUR_APP_NAME-vVERSION-PLATFORM-Slim.zip`

---

EOF
cat CHANGELOG.md >> RELEASE_BODY.md

# Creating a Release in GitHub
- uses: ncipollo/release-action@v1
with:
artifacts: "${{ env.APP_NAME }}-v${{ env.APP_VERSION }}-*.zip"
bodyFile: "CHANGELOG.md"
bodyFile: "RELEASE_BODY.md"
name: v${{ env.APP_VERSION }}
tag: v${{ env.APP_VERSION }}
prerelease: ${{ env.IS_PRE_RELEASE }}
Expand Down
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"preLaunchTask": "build",
// if target frameworks was changed, update program path.
"program":
"${workspaceFolder}/SimpleList/bin/x64/Debug/net9.0-windows10.0.19041.0/win-x64/SimpleList.exe",
"${workspaceFolder}/SimpleList/bin/x64/Debug/net10.0-windows10.0.19041.0/win-x64/SimpleList.exe",
"args": [],
"cwd": "${workspaceFolder}/SimpleList",
// 'console' field https://aka.ms/VSCode-CS-LaunchJson-Console
Expand Down
60 changes: 60 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,66 @@ SimpleList is a OneDrive files index application developed using WinUI3.

Unzip and then double click

# Release Flavors

Two package flavors are provided in GitHub Releases.

| Flavor | Description | Typical size | Best for |
| --- | --- | --- | --- |
| Portable | Self-contained package. No preinstalled .NET runtime required. | Larger | End users who want zero setup |
| Slim | Framework-dependent package. Requires matching .NET runtime/Windows App SDK runtime on target machine. | Smaller | Users who care about download size |

GitHub Releases now publish both flavors for each platform:

- `SimpleList-vVERSION-x64-Portable.zip`
- `SimpleList-vVERSION-x64-Slim.zip`

For Chinese documentation, see [README_zh_CN.md](./README_zh_CN.md).

## Local Publish Examples

Portable (self-contained):

```powershell
dotnet publish .\SimpleList\SimpleList.csproj -c Release -r win-x64 -p:PublishFlavor=Portable
```

Slim (framework-dependent):

```powershell
dotnet publish .\SimpleList\SimpleList.csproj -c Release -r win-x64 -p:PublishFlavor=Slim
```

## Validate CI Locally (Without Running on GitHub)

You can validate workflow logic locally before pushing.

### 1) Validate workflow YAML and action usage

Use [actionlint](https://github.com/rhysd/actionlint):

```powershell
docker run --rm -v "${PWD}:/repo" -w /repo rhysd/actionlint:latest
```

### 2) Simulate the publish matrix locally

Run all flavors and platforms with a local script:

```powershell
$platforms = @("x64", "x86", "arm64")
$flavors = @("Portable", "Slim")
foreach ($p in $platforms) {
foreach ($f in $flavors) {
dotnet publish .\SimpleList\SimpleList.csproj -c Release -r "win-$($p.ToLower())" -p:Platform=$p -p:PublishFlavor=$f
}
}
```

### 3) Verify release notes content generation locally

The workflow generates `RELEASE_BODY.md` and appends `CHANGELOG.md`. You can execute the same shell snippet locally (Git Bash/WSL) and inspect the output file before pushing.

# Settings

Modify `SimpleList/appsettings.json` to customize the configuration.
Expand Down
106 changes: 79 additions & 27 deletions README_zh_CN.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,96 @@
# SimpleList

[English](./README.md) | ��������
[English](./README.md) | 简体中文

![simplelist](https://socialify.git.ci/aiguoli/simplelist/image?description=1&font=Raleway&language=1&name=1&stargazers=1&theme=Light)

OneDrive�б�����ʹ��WinUI3����
SimpleList 是一个使用 WinUI3 开发的 OneDrive 文件索引应用。

# ʹ�÷���
# 使用

��ѹ��˫����
解压后双击运行。

# ����
# 发布版本说明

�޸�`SimpleList/appsettings.json`�����Զ���ClientID�����á�
GitHub Release 提供两种安装包:

# ����
| 版本 | 说明 | 典型体积 | 适用场景 |
| --- | --- | --- | --- |
| Portable | 自包含版本(self-contained),目标机器通常不需要预装 .NET 运行时。 | 较大 | 希望开箱即用的用户 |
| Slim | 依赖运行时版本(framework-dependent),目标机器需要满足 .NET/Windows App SDK 运行时依赖。 | 较小 | 更在意下载体积的用户 |

- [x] �б�
- [x] ����
- [x] ����
- [x] Ԥ��
- [x] ���ؽ���
- [x] �ϴ�
- [ ] �Զ�ͬ��
- [x] ������
- [x] ɾ��
- [x] ����
- [x] ������
- [x] ת��ΪPDF�ļ�
- [ ] ��tab��
- [ ] �Զ�������
- [x] ���˻�
- [x] ������
- [x] ����ҳ
每个平台都会产出两类压缩包:

# ����ѡ��
- `SimpleList-vVERSION-x64-Portable.zip`
- `SimpleList-vVERSION-x64-Slim.zip`

WinForms��WPF̫���ˣ�Avalonia��̫�����ò����ף�HTML+CSS+JS�Ŀ����̫��Iced��Slint��̬��֪���������������֣���ѡ��WinUI3������д������ˬ���ĵ�Ҳ�Ƚ���������һ��д����˺�WinUI3��Ȩ��������Ŀ�ˡ�
## 本地发布命令示例

# ��ͼ�����ܲ������°汾��
Portable(自包含):

```powershell
dotnet publish .\SimpleList\SimpleList.csproj -c Release -r win-x64 -p:PublishFlavor=Portable
```

Slim(轻量):

```powershell
dotnet publish .\SimpleList\SimpleList.csproj -c Release -r win-x64 -p:PublishFlavor=Slim
```

# 不上线验证 CI 的方法

你可以在本地先验证 workflow,再决定是否推送。

## 1) 校验 workflow 语法与 Action 用法

使用 actionlint:

```powershell
docker run --rm -v "${PWD}:/repo" -w /repo rhysd/actionlint:latest
```

## 2) 本地模拟 CI 的发布矩阵

```powershell
$platforms = @("x64", "x86", "arm64")
$flavors = @("Portable", "Slim")
foreach ($p in $platforms) {
foreach ($f in $flavors) {
dotnet publish .\SimpleList\SimpleList.csproj -c Release -r "win-$($p.ToLower())" -p:Platform=$p -p:PublishFlavor=$f
}
}
```

## 3) 本地检查 Release 描述文件

workflow 会生成 `RELEASE_BODY.md` 并追加 `CHANGELOG.md`。可在本地执行同样的脚本片段(Git Bash/WSL)并检查该文件内容,确认中英说明与变更日志符合预期。

# 设置

修改 `SimpleList/appsettings.json` 可自定义配置。

# 功能

- [x] 列表
- [x] 下载
- [x] 分享
- [x] 预览
- [x] 下载进度
- [x] 上传
- [ ] 自动同步
- [x] 重命名
- [x] 删除
- [x] 属性
- [x] 总容量信息
- [x] 转换为 PDF
- [ ] 新标签页打开
- [ ] 自定义主题
- [x] 多账号
- [x] 国际化
- [x] 工具页

# 截图(可能不是最新版本)

![HomePage](./ScreenShots/HomePage.png)
![CloudPage](./ScreenShots/CloudPage.png)
Expand Down
Loading