# Release Checklist for Modrinth

Use this checklist before uploading a new release to Modrinth.

## Pre-Release Verification

### Build & Code Quality
- [ ] Code compiles without errors (`mvn clean package`)
- [ ] No critical warnings in compiler output
- [ ] All tests pass (if applicable)
- [ ] Plugin JAR is created in `target/communitymarket-x.x.x.jar`

### Functional Testing
- [ ] Plugin loads without errors on a fresh Paper 1.21+ server
- [ ] Economy detection works:
  - [ ] Scenario A: Vault + EssentialsX → Uses Vault
  - [ ] Scenario B: Vault only (no economy) → Clear error message, plugin disables
  - [ ] Scenario C: EssentialsX only (no Vault) → Uses EssentialsX directly
  - [ ] Scenario D: Neither installed → Clear error message, plugin disables
- [ ] `/market` command opens the main menu
- [ ] `/cmarket` alias works

### Feature Testing
- [ ] **Listings**: Create, browse, purchase, cancel, expire
- [ ] **Auctions**: Create, bid, buyout, anti-snipe extension, expire
- [ ] **Claim Storage**: Items delivered correctly, claim GUI works
- [ ] **Earnings**: Earnings accumulate, withdraw works
- [ ] **Admin**: View all, remove listings, cancel auctions, reload config

### Configuration
- [ ] Default config.yml has safe values
- [ ] Language files (en_US.yml, pt_PT.yml) are complete
- [ ] Config reload (`/market admin` → reload) works

### Documentation
- [ ] README.md is up to date
- [ ] CHANGELOG.md has current version entry
- [ ] LICENSE file is present

---

## Modrinth Upload Checklist

### Project Information
- [ ] Project name: `CommunityMarket`
- [ ] Summary: "A GUI-only marketplace plugin for fixed-price listings and auctions"
- [ ] Description: Use content from README.md
- [ ] Categories: Economy, Miscellaneous
- [ ] Client-side: No (Server-side only)
- [ ] Server-side: Required
- [ ] License: MIT

### Version Details
- [ ] Version number matches pom.xml and CHANGELOG.md
- [ ] Version type: Release (or Alpha/Beta if applicable)
- [ ] Game versions: 1.21, 1.21.1 (add newer as supported)
- [ ] Loaders: Paper, Purpur
- [ ] Changelog: Copy from CHANGELOG.md

### Files
- [ ] Upload primary JAR: `communitymarket-x.x.x.jar`
- [ ] Do NOT upload `original-communitymarket-x.x.x.jar` (doesn't include shaded dependencies)

### Dependencies (Modrinth)
- [ ] Mark Vault as optional dependency (if available on Modrinth)
- [ ] Mark EssentialsX as optional dependency (if available on Modrinth)

### Gallery (Optional)
- [ ] Screenshot of main menu
- [ ] Screenshot of browse listings
- [ ] Screenshot of create listing flow

---

## Post-Release

- [ ] Verify download works correctly
- [ ] Test downloaded JAR on a clean server
- [ ] Announce release (if applicable)
- [ ] Tag release in Git: `git tag -a v1.0.0 -m "Release 1.0.0"`
- [ ] Push tag: `git push origin v1.0.0`

---

## Version Naming Convention

- **Major.Minor.Patch** (e.g., 1.0.0)
  - Major: Breaking changes or major feature additions
  - Minor: New features, backwards compatible
  - Patch: Bug fixes, small improvements

---

## Quick Commands

```bash
# Clean build
mvn clean package

# Run local test server (if configured)
# Place JAR in test-server/plugins/

# Create Git tag
git tag -a v1.0.0 -m "Release 1.0.0"
git push origin v1.0.0
```

