Organize release structure and documentation

This commit is contained in:
Ray Berezowski
2026-06-02 17:41:12 -04:00
parent e8c0721c39
commit d71c01cbca
6 changed files with 228 additions and 4 deletions

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
bin/ bin/
obj/ obj/
builds/
*.user *.user
*.suo *.suo
*.pdb *.pdb

70
README.md Normal file
View 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.

View File

@@ -8,7 +8,6 @@ param(
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$projectDir = Split-Path -Parent $PSScriptRoot $projectDir = Split-Path -Parent $PSScriptRoot
$workspaceDir = Split-Path -Parent $projectDir
$projectPath = Join-Path $projectDir "TaskbarLauncher.csproj" $projectPath = Join-Path $projectDir "TaskbarLauncher.csproj"
[xml]$projectXml = Get-Content -LiteralPath $projectPath [xml]$projectXml = Get-Content -LiteralPath $projectPath
@@ -18,10 +17,10 @@ if ([string]::IsNullOrWhiteSpace($version)) {
} }
$packageKind = if ($SelfContained) { "self-contained" } else { "small" } $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" $releaseDir = Join-Path $releaseRoot "TaskbarLauncher-v$version-$packageKind"
$zipPath = Join-Path $releaseRoot "TaskbarLauncher-v$version-$packageKind.zip" $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 Get-Process TaskbarLauncher -ErrorAction SilentlyContinue | Stop-Process -Force
@@ -46,7 +45,10 @@ Get-ChildItem -LiteralPath $releaseDir -Filter "*.pdb" -ErrorAction SilentlyCont
Remove-Item -Force Remove-Item -Force
if ($IncludeCurrentConfig) { 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) { if (Test-Path -LiteralPath $configPath) {
Copy-Item -LiteralPath $configPath -Destination (Join-Path $releaseDir "config.json") -Force Copy-Item -LiteralPath $configPath -Destination (Join-Path $releaseDir "config.json") -Force
} }

37
docs/FOLDER-CLEANUP.md Normal file
View 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
View 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
View 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.