Organize release structure and documentation
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
bin/
|
||||
obj/
|
||||
builds/
|
||||
*.user
|
||||
*.suo
|
||||
*.pdb
|
||||
|
||||
70
README.md
Normal file
70
README.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Taskbar Launcher
|
||||
|
||||
Taskbar Launcher is a small Windows tray launcher for folders, applications, scripts, files, and nested menus.
|
||||
|
||||
## Features
|
||||
|
||||
- System tray launcher
|
||||
- Global hotkey, default `Ctrl+Alt+Space`
|
||||
- Search/filter in the launcher popup
|
||||
- Nested menus and drag/drop ordering in Settings
|
||||
- Per-item icon and display mode
|
||||
- Automatic icon selection from app/folder targets
|
||||
- Portable `config.json`
|
||||
- Backup/restore config
|
||||
- Optional Start with Windows shortcut
|
||||
- Windows light/dark theme support
|
||||
|
||||
## Project Layout
|
||||
|
||||
```text
|
||||
TaskbarLauncher/
|
||||
App.xaml
|
||||
MainWindow.xaml
|
||||
Models/
|
||||
Services/
|
||||
Views/
|
||||
Tools/
|
||||
docs/
|
||||
builds/ generated locally, ignored by Git
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
Requires the .NET 10 SDK on the developer machine.
|
||||
|
||||
```powershell
|
||||
dotnet build
|
||||
```
|
||||
|
||||
## Release
|
||||
|
||||
Create the small framework-dependent release package:
|
||||
|
||||
```powershell
|
||||
.\Tools\New-TaskbarLauncherRelease.ps1
|
||||
```
|
||||
|
||||
Create a self-contained package that does not require users to install .NET:
|
||||
|
||||
```powershell
|
||||
.\Tools\New-TaskbarLauncherRelease.ps1 -SelfContained
|
||||
```
|
||||
|
||||
Release zips are written to:
|
||||
|
||||
```text
|
||||
builds/releases/
|
||||
```
|
||||
|
||||
## Versioning
|
||||
|
||||
The app version is controlled in `TaskbarLauncher.csproj`.
|
||||
|
||||
Recommended release flow:
|
||||
|
||||
1. Update `<Version>` in `TaskbarLauncher.csproj`.
|
||||
2. Commit the change.
|
||||
3. Run `.\Tools\New-TaskbarLauncherRelease.ps1`.
|
||||
4. Tag the release, for example `v1.0.1`.
|
||||
5. Upload the generated zip to Gitea Releases.
|
||||
@@ -8,7 +8,6 @@ param(
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$projectDir = Split-Path -Parent $PSScriptRoot
|
||||
$workspaceDir = Split-Path -Parent $projectDir
|
||||
$projectPath = Join-Path $projectDir "TaskbarLauncher.csproj"
|
||||
|
||||
[xml]$projectXml = Get-Content -LiteralPath $projectPath
|
||||
@@ -18,10 +17,10 @@ if ([string]::IsNullOrWhiteSpace($version)) {
|
||||
}
|
||||
|
||||
$packageKind = if ($SelfContained) { "self-contained" } else { "small" }
|
||||
$releaseRoot = Join-Path $workspaceDir "TaskbarLauncher-releases"
|
||||
$releaseRoot = Join-Path $projectDir "builds\releases"
|
||||
$releaseDir = Join-Path $releaseRoot "TaskbarLauncher-v$version-$packageKind"
|
||||
$zipPath = Join-Path $releaseRoot "TaskbarLauncher-v$version-$packageKind.zip"
|
||||
$buildDir = Join-Path $workspaceDir "TaskbarLauncher-build-release-$packageKind"
|
||||
$buildDir = Join-Path $projectDir "builds\intermediate\$packageKind"
|
||||
|
||||
Get-Process TaskbarLauncher -ErrorAction SilentlyContinue | Stop-Process -Force
|
||||
|
||||
@@ -46,7 +45,10 @@ Get-ChildItem -LiteralPath $releaseDir -Filter "*.pdb" -ErrorAction SilentlyCont
|
||||
Remove-Item -Force
|
||||
|
||||
if ($IncludeCurrentConfig) {
|
||||
$configPath = Join-Path $workspaceDir "TaskbarLauncher-editor-publish\config.json"
|
||||
$configPath = Join-Path $projectDir "builds\local-self-contained\config.json"
|
||||
if (!(Test-Path -LiteralPath $configPath)) {
|
||||
$configPath = Join-Path (Split-Path -Parent $projectDir) "TaskbarLauncher-editor-publish\config.json"
|
||||
}
|
||||
if (Test-Path -LiteralPath $configPath) {
|
||||
Copy-Item -LiteralPath $configPath -Destination (Join-Path $releaseDir "config.json") -Force
|
||||
}
|
||||
|
||||
37
docs/FOLDER-CLEANUP.md
Normal file
37
docs/FOLDER-CLEANUP.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# Folder Cleanup Notes
|
||||
|
||||
The source of truth is:
|
||||
|
||||
```text
|
||||
demo_projects/TaskbarLauncher
|
||||
```
|
||||
|
||||
The following sibling folders were created during early prototype/testing and are no longer the preferred release output:
|
||||
|
||||
```text
|
||||
TaskbarLauncher-build
|
||||
TaskbarLauncher-build-handout
|
||||
TaskbarLauncher-build-preview
|
||||
TaskbarLauncher-build-release-small
|
||||
TaskbarLauncher-build-small
|
||||
TaskbarLauncher-editor-publish
|
||||
TaskbarLauncher-preview-publish
|
||||
TaskbarLauncher-releases
|
||||
TaskbarLauncher-small-handout
|
||||
TaskbarLauncher-small-publish
|
||||
TaskbarLauncher-small-handout.zip
|
||||
```
|
||||
|
||||
Do not delete them until you confirm there is nothing in their `config.json` files or backups that you want to keep.
|
||||
|
||||
Going forward, release output should be generated by:
|
||||
|
||||
```powershell
|
||||
.\Tools\New-TaskbarLauncherRelease.ps1
|
||||
```
|
||||
|
||||
The new release output location is:
|
||||
|
||||
```text
|
||||
TaskbarLauncher/builds/releases
|
||||
```
|
||||
47
docs/INSTALL.md
Normal file
47
docs/INSTALL.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Install and Use Taskbar Launcher
|
||||
|
||||
## Small Package
|
||||
|
||||
The small package requires:
|
||||
|
||||
- Windows x64
|
||||
- Microsoft .NET 10 Desktop Runtime x64
|
||||
|
||||
Download .NET 10 Desktop Runtime:
|
||||
|
||||
https://dotnet.microsoft.com/en-us/download/dotnet/10.0
|
||||
|
||||
Install the **.NET Desktop Runtime** for **Windows x64**.
|
||||
|
||||
## Install
|
||||
|
||||
1. Extract the Taskbar Launcher zip to a folder.
|
||||
2. Run `TaskbarLauncher.exe`.
|
||||
3. The app appears in the system tray.
|
||||
4. Press `Ctrl+Alt+Space` to open the launcher.
|
||||
|
||||
## Configure
|
||||
|
||||
Open the tray menu and choose **Settings**.
|
||||
|
||||
From Settings you can:
|
||||
|
||||
- Add top-level menus
|
||||
- Add submenus
|
||||
- Add folders, apps, files, and websites
|
||||
- Drag/drop items to reorder
|
||||
- Set per-item icon sizes
|
||||
- Back up and restore `config.json`
|
||||
- Enable Start with Windows
|
||||
|
||||
## Portable Settings
|
||||
|
||||
The app stores settings in:
|
||||
|
||||
```text
|
||||
config.json
|
||||
```
|
||||
|
||||
Keep `config.json` beside `TaskbarLauncher.exe`.
|
||||
|
||||
If `config.json` is missing, the app creates a clean starter config on first run.
|
||||
67
docs/RELEASE.md
Normal file
67
docs/RELEASE.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Release Process
|
||||
|
||||
## Branches
|
||||
|
||||
Recommended Gitea layout:
|
||||
|
||||
- `main`: stable released source code
|
||||
- `dev`: active development work
|
||||
|
||||
Release builds should come from `main`.
|
||||
|
||||
## Version Numbers
|
||||
|
||||
Use semantic versioning:
|
||||
|
||||
```text
|
||||
MAJOR.MINOR.PATCH
|
||||
```
|
||||
|
||||
Examples:
|
||||
|
||||
- `1.0.0`: first stable release
|
||||
- `1.0.1`: bug fix
|
||||
- `1.1.0`: new feature
|
||||
|
||||
Update version fields in:
|
||||
|
||||
```text
|
||||
TaskbarLauncher.csproj
|
||||
```
|
||||
|
||||
## Build Release Zip
|
||||
|
||||
Small package:
|
||||
|
||||
```powershell
|
||||
.\Tools\New-TaskbarLauncherRelease.ps1
|
||||
```
|
||||
|
||||
Self-contained package:
|
||||
|
||||
```powershell
|
||||
.\Tools\New-TaskbarLauncherRelease.ps1 -SelfContained
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```text
|
||||
builds/releases/TaskbarLauncher-vVERSION-small.zip
|
||||
```
|
||||
|
||||
## Publish to Gitea
|
||||
|
||||
1. Commit all source changes.
|
||||
2. Merge `dev` into `main`.
|
||||
3. Tag the release:
|
||||
|
||||
```powershell
|
||||
git tag v1.0.0
|
||||
git push origin main
|
||||
git push origin v1.0.0
|
||||
```
|
||||
|
||||
4. In Gitea, create a release from the tag.
|
||||
5. Upload the zip from `builds/releases`.
|
||||
|
||||
Older releases stay available through Gitea Releases and Git tags.
|
||||
Reference in New Issue
Block a user