# Publishing HSCompare to Your Gitea & Dalamud Installer This guide covers pushing the plugin to your self-hosted Gitea and making it installable via Dalamud’s plugin installer (custom repository). --- ## 1. Set Your Repo URL (optional but recommended) Edit `HSCompare/HSCompare.json` and set `RepoUrl` to your Gitea repo (e.g. `https://gitea.example.com/yourname/HSCompare`). This is used in the installer and in the plugin master. --- ## 2. Push the Project to Gitea 1. **Create a new repository** on your Gitea instance (e.g. `HSCompare`). 2. **Initialize git** in the plugin folder (if not already): ```bash cd "/path/to/HSCompare" git init git add . git commit -m "Initial commit" ``` 3. **Add the Gitea remote and push**: ```bash git remote add origin https://gitea.example.com/yourname/HSCompare.git git branch -M main git push -u origin main ``` --- ## 3. Build the Release Zip From the plugin solution directory: ```bash cd "/path/to/HSCompare" dotnet build -c Release ``` The installer-ready zip is produced at: - **Path:** `HSCompare/bin/Release/HSCompare/latest.zip` - **Contents:** `HSCompare.dll`, `HSCompare.json`, and any deps the SDK includes. Use this file for every release (e.g. rename to `HSCompare-1.0.2.zip` or keep as `latest.zip`). --- ## 4. Publish a Release on Gitea 1. In your Gitea repo, open **Releases** → **Create new release**. 2. **Tag:** e.g. `v1.0.2` (match your plugin version). 3. **Title:** e.g. `v1.0.2` or “HSCompare 1.0.2”. 4. **Attach the zip:** upload `HSCompare/bin/Release/HSCompare/latest.zip`. 5. Save the release. **Download URL** will look like: ```text https://gitea.example.com/yourname/HSCompare/releases/download/v1.0.2/latest.zip ``` (Replace `gitea.example.com`, `yourname`, tag and filename if you use another tag or filename.) --- ## 5. Host the Plugin Master (so Dalamud can see it) The installer needs a **single JSON file** (plugin master) that lists your plugin and points to the zip. 1. In the repo root there is a **`pluginmaster.json`** file (see below). 2. **Edit it** once per release: - Set `DownloadLinkInstall` and `DownloadLinkUpdate` to the **release zip URL** from step 4. - Set `LastUpdate` to the current **Unix timestamp** (e.g. `date +%s` on Linux/Mac). - Optionally set `AssemblyVersion` (and `TestingAssemblyVersion` if you have a testing build). 3. Commit and push `pluginmaster.json`: ```bash git add pluginmaster.json git commit -m "Update pluginmaster for v1.0.2" git push ``` **Raw URL** to the file (for Dalamud) will be something like: ```text https://gitea.example.com/yourname/HSCompare/raw/branch/main/pluginmaster.json ``` Use `main` or the branch where you store `pluginmaster.json`. --- ## 6. Add the Custom Repo in Dalamud 1. In-game, run **`/xlsettings`** (or open Dalamud settings). 2. Open the **Experimental** tab. 3. Under **Custom Plugin Repositories**, click **Add**. 4. Paste the **raw plugin master URL** from step 5, e.g.: ```text https://gitea.example.com/yourname/HSCompare/raw/main/pluginmaster.json ``` 5. Save. Your repo will be in the list. After that, **HSCompare** should appear in the plugin installer (search or list). Users can install and update from this repo as long as you keep `pluginmaster.json` and the release zip URL correct. --- ## 7. When You Release a New Version 1. Bump **version** in `HSCompare/HSCompare.csproj` (e.g. `1.0.3`). 2. Update **CHANGELOG.md**. 3. **Build:** `dotnet build -c Release` 4. Create a **new Gitea release** (e.g. tag `v1.0.3`) and attach the new `latest.zip` from `HSCompare/bin/Release/HSCompare/`. 5. In **`pluginmaster.json`** update: - `DownloadLinkInstall` and `DownloadLinkUpdate` → new zip URL. - `AssemblyVersion` → e.g. `1.0.3.0`. - `LastUpdate` → current Unix timestamp. 6. Commit and push the updated `pluginmaster.json`. Users who have your repo added will see the update in the installer. --- ## Summary | What | Where | |------|--------| | Source code | Your Gitea repo (e.g. `HSCompare`) | | Release zip | Gitea Release attachment (e.g. `latest.zip`) | | Plugin list for installer | `pluginmaster.json` in repo, served via raw URL | | Custom repo URL (in Dalamud) | Raw URL to `pluginmaster.json` | If your Gitea uses a different URL shape for releases or raw files, adjust the URLs in `pluginmaster.json` and in this guide to match.