Skip to content

Commit f938c1d

Browse files
committed
Repo: professionalize structure, docs, and release standards
1 parent 9c7c71b commit f938c1d

26 files changed

Lines changed: 210 additions & 47 deletions

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
blank_issues_enabled: false
22
contact_links:
3-
- name: Discussions
4-
url: https://github.com/Awetspoon/Photo-Cutter/discussions
5-
about: Ask questions and share workflows with the community.
3+
- name: Security report
4+
url: https://github.com/Awetspoon/Photo-Cutter/security/policy
5+
about: Report vulnerabilities through the security policy process.
6+
- name: Releases
7+
url: https://github.com/Awetspoon/Photo-Cutter/releases
8+
about: Download the latest app release.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## Summary
2+
3+
Describe the change and why it is needed.
4+
5+
## Type of change
6+
7+
- [ ] Bug fix
8+
- [ ] New feature
9+
- [ ] UI/UX change
10+
- [ ] Documentation
11+
- [ ] Build/CI/release
12+
13+
## Verification
14+
15+
- [ ] `dotnet build .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj -c Release` passes
16+
- [ ] Manual run tested
17+
- [ ] Screenshots attached (if UI changed)
18+
19+
## Checklist
20+
21+
- [ ] I kept changes focused
22+
- [ ] I updated docs if needed
23+
- [ ] I did not commit generated binaries/build output

.github/dependabot.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "nuget"
4+
directory: "/solution/ImageUiSlicer"
5+
schedule:
6+
interval: "weekly"
7+
open-pull-requests-limit: 5
8+
9+
- package-ecosystem: "github-actions"
10+
directory: "/"
11+
schedule:
12+
interval: "weekly"
13+
open-pull-requests-limit: 5

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,4 @@ Desktop.ini
4444
publish/
4545
artifacts/
4646
dist/
47+
release-assets/

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented in this file.
4+
5+
The format is based on Keep a Changelog and this project follows Semantic Versioning.
6+
7+
## [Unreleased]
8+
9+
### Added
10+
- Professional GitHub workflows for CI and release publishing
11+
- Public project documentation and community templates
12+
13+
### Changed
14+
- Release pipeline now publishes a single executable asset: `PhotoCutter.exe`
15+
- Repository structure cleaned for a public app-facing layout
16+
17+
## [1.0.1] - 2026-03-11
18+
19+
### Changed
20+
- Release pipeline updated to upload only `PhotoCutter.exe`
21+
22+
## [1.0.0] - 2026-03-11
23+
24+
### Added
25+
- Initial public release
26+
- Core cutout workflow with select/lasso/polygon/shapes
27+
- Saved shape reuse, gallery, inspector, and export pipeline

CODE_OF_CONDUCT.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Code of Conduct
2+
3+
## Our commitment
4+
5+
We are committed to making participation in this project a respectful, harassment-free experience for everyone.
6+
7+
## Expected behavior
8+
9+
- Be respectful and constructive.
10+
- Assume positive intent.
11+
- Focus feedback on code and behavior, not people.
12+
- Help keep discussions welcoming and practical.
13+
14+
## Unacceptable behavior
15+
16+
- Harassment, insults, or personal attacks
17+
- Discriminatory or exclusionary language
18+
- Deliberate intimidation or trolling
19+
- Publishing private information without consent
20+
21+
## Enforcement
22+
23+
Project maintainers may remove, edit, or reject comments, commits, issues, and pull requests that violate this Code of Conduct.
24+
25+
## Reporting
26+
27+
Report concerns privately to:
28+
29+
- `mratcliff1995@gmail.com`

CONTRIBUTING.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Contributing to Photo Cutter
2+
3+
Thanks for improving Photo Cutter.
4+
5+
## Development setup
6+
7+
1. Install .NET SDK 8.x.
8+
2. Restore packages:
9+
```powershell
10+
dotnet restore .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj
11+
```
12+
3. Run locally:
13+
```powershell
14+
dotnet run --project .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj
15+
```
16+
17+
## Pull request guidelines
18+
19+
- Keep changes focused and small.
20+
- Preserve existing behavior unless the change is intentional and documented.
21+
- Include UI screenshots when changing visuals.
22+
- Update docs for any user-facing workflow changes.
23+
- Ensure build passes before pushing:
24+
```powershell
25+
dotnet build .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj -c Release
26+
```
27+
28+
## Commit style
29+
30+
Use clear commit messages, for example:
31+
32+
- `UI: fix shape toolbar overlap`
33+
- `Export: keep single-file release output`
34+
- `Docs: update release instructions`
35+
36+
## Release process
37+
38+
See [RELEASE.md](RELEASE.md).

README.md

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,39 @@
55
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
66
[![Platform](https://img.shields.io/badge/Platform-Windows%2010%2F11-0078D6)](https://github.com/Awetspoon/Photo-Cutter/releases/latest)
77

8-
Photo Cutter is a Windows desktop app for turning full mockups and screenshots into clean transparent PNG cutouts for app, UI, and game asset workflows.
8+
Windows desktop app for cutting transparent PNG assets from UI mockups and screenshots.
9+
10+
![Photo Cutter Wordmark](brand/ImageUiSlicer_Wordmark_Transparent.png)
911

1012
## Download
1113

12-
- Latest release: [Download Photo Cutter](https://github.com/Awetspoon/Photo-Cutter/releases/latest)
13-
- Single-file download: `PhotoCutter.exe`
14+
- Latest release: [PhotoCutter.exe](https://github.com/Awetspoon/Photo-Cutter/releases/latest)
15+
- Distribution format: single-file Windows executable (`PhotoCutter.exe`)
1416

15-
## Features
17+
## Core Features
1618

17-
- Manual cutout tools: `Select`, `Lasso`, `Polygon`, `Shapes`
18-
- Reusable custom shapes (save, apply, duplicate, paste)
19-
- Brush refinement for active selection/cutout
19+
- Selection tools: `Select`, `Lasso`, `Polygon`, `Shapes`
20+
- Reusable custom shapes: save, apply, duplicate, paste
21+
- Brush refinement (`Brush +` / `Brush -`) on active selections and cutouts
2022
- Inspector preview with optional split compare
21-
- Cutout Gallery window for quick review
22-
- Export presets, naming controls, edge/outline options
23-
- Project save/load (`.iusproj`)
23+
- Cutout Gallery for fast visual review
24+
- Export presets, naming options, edge/outline controls
25+
- Project save/load support (`.iusproj`)
2426

2527
## Quick Start
2628

2729
1. Open an image.
28-
2. Draw a selection using `Shapes`, `Lasso`, or `Polygon`.
30+
2. Draw a selection with `Shapes`, `Lasso`, or `Polygon`.
2931
3. Click `Commit Cutout`.
30-
4. Optional: save a cutout as a reusable shape.
32+
4. Optional: save selection as reusable shape.
3133
5. Export selected/all cutouts as PNG.
3234

3335
## Build From Source
3436

3537
### Requirements
3638

3739
- Windows 10/11
38-
- .NET SDK `8.0.124` or compatible (see `global.json`)
40+
- .NET SDK 8.0.124+ (see `global.json`)
3941

4042
### Restore
4143

@@ -49,39 +51,41 @@ dotnet restore .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj
4951
dotnet run --project .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj
5052
```
5153

52-
### Release Publish (single EXE)
54+
### Build
5355

5456
```powershell
55-
dotnet publish .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeAllContentForSelfExtract=true /p:EnableCompressionInSingleFile=true
57+
dotnet build .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj -c Release
5658
```
5759

5860
## Releasing
5961

60-
- Tag format: `vX.Y.Z` (example: `v1.0.0`)
61-
- Pushing a version tag triggers GitHub Actions to:
62-
- Build Release for Windows x64
63-
- Produce single-file `PhotoCutter.exe`
64-
- Upload release asset to GitHub Releases
62+
Tag and push a semantic version to publish a GitHub Release:
63+
64+
```powershell
65+
git tag v1.0.2
66+
git push origin v1.0.2
67+
```
68+
69+
Release workflow uploads one asset: `PhotoCutter.exe`.
6570

66-
Full process: see [RELEASE.md](RELEASE.md).
71+
Detailed process: [RELEASE.md](RELEASE.md)
6772

68-
## Folder Structure
73+
## Repository Structure
6974

7075
```text
7176
solution/ImageUiSlicer/ # WPF app source
72-
solution/ImageUiSlicer/Views # XAML views
73-
solution/ImageUiSlicer/ViewModels
74-
solution/ImageUiSlicer/Services
75-
solution/ImageUiSlicer/Models
76-
solution/ImageUiSlicer/CanvasEngine
7777
brand/ # branding assets
7878
png/ # icon ladder PNGs
79-
specs/ # project/spec docs
79+
docs/specs/ # product and technical specs
80+
docs/archive/ # archived legacy docs
8081
```
8182

82-
## Screenshots
83+
## Project Standards
8384

84-
Add product screenshots or GIF demos in this section.
85+
- Contributing: [CONTRIBUTING.md](CONTRIBUTING.md)
86+
- Security: [SECURITY.md](SECURITY.md)
87+
- Changelog: [CHANGELOG.md](CHANGELOG.md)
88+
- Code of conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
8589

8690
## License
8791

RELEASE.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
11
# Release Guide
22

3-
This repo is set up to publish Photo Cutter through GitHub Releases.
3+
This repository publishes Photo Cutter through GitHub Releases.
44

5-
## Automated release path (recommended)
5+
## Automated release flow (recommended)
6+
7+
1. Ensure `main` contains your final release commit.
8+
2. Create and push a semantic version tag:
69

7-
1. Commit your changes on `main`.
8-
2. Create and push a version tag:
910
```powershell
10-
git tag v1.0.0
11-
git push origin v1.0.0
11+
git tag v1.0.2
12+
git push origin v1.0.2
1213
```
14+
1315
3. GitHub Actions workflow `Release Windows App` will:
14-
- Build the app in Release mode
15-
- Publish single-file `PhotoCutter.exe`
16-
- Upload release assets to GitHub Releases
16+
- Restore and build the project
17+
- Publish a single-file Windows executable
18+
- Create/update a GitHub Release
19+
- Upload one asset: `PhotoCutter.exe`
1720

18-
## Manual trigger path
21+
## Manual release flow
1922

20-
1. Open Actions -> `Release Windows App`.
23+
1. Open GitHub Actions -> `Release Windows App`.
2124
2. Click `Run workflow`.
22-
3. Enter tag (for example `v1.0.1`).
23-
4. Run and wait for release assets to upload.
25+
3. Enter a valid version tag (example `v1.0.2`).
26+
4. Run workflow and confirm release asset upload.
2427

2528
## Local publish command
2629

2730
```powershell
2831
dotnet publish .\\solution\\ImageUiSlicer\\ImageUiSlicer.csproj -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeAllContentForSelfExtract=true /p:EnableCompressionInSingleFile=true /p:DebugType=None /p:DebugSymbols=false
2932
```
3033

31-
Output binary:
34+
Published binary output:
3235

3336
```text
3437
solution/ImageUiSlicer/bin/Release/net8.0-windows/win-x64/publish/ImageUiSlicer.exe

SECURITY.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Security Policy
2+
3+
## Supported versions
4+
5+
Photo Cutter currently supports the latest release on the `main` branch and latest tagged release.
6+
7+
## Reporting a vulnerability
8+
9+
Please do not open public issues for security vulnerabilities.
10+
11+
Report privately by email:
12+
13+
- `mratcliff1995@gmail.com`
14+
15+
Include:
16+
17+
- A short summary of the issue
18+
- Steps to reproduce
19+
- Potential impact
20+
- Optional proof-of-concept
21+
22+
We will acknowledge receipt and provide an update as soon as possible.

0 commit comments

Comments
 (0)