Add release pipeline, custom repo manifest, and pre-push linter

First release-ready cycle for Forgeimizer. Bumps the version to 0.1.0,
introduces the Hellion Forge custom repo distribution path, and wires
up the HellionChat-style pre-push lint gate.

Version:
- csproj <Version> 2.9.1.1 → 0.1.0. Forgeimizer adopts its own SemVer
  line starting at 0.1.0; the upstream Craftimizer 2.9.1.1 base is
  documented in the manifest description, CHANGELOG, README, and
  NOTICE for each release.

Release pipeline (.gitea/workflows/):
- build.yml on push/PR/dispatch: downloads Dalamud staging, dotnet
  restore + build of Craftimizer/Craftimizer.csproj. Fails the workflow
  if the plugin no longer compiles against current SDK 15.
- release.yml on v*-tag + dispatch: builds Release, locates the
  packager-produced latest.zip under Craftimizer/bin/x64/Release/,
  extracts the matching ## vX.Y.Z block from CHANGELOG.md via awk,
  appends .gitea/release-footer.md, and attaches everything to the
  Gitea release via gitea.com/actions/release-action.
- release-footer.md: install path with the custom-repo URL, conflict
  notice, attribution to Asriel Camora, MIT licence reference,
  Hellion Forge footer.
- security.yml: references the shared
  JonKazama-Hellion/security-workflows/security-scan.yml@main
  workflow (Semgrep + Trivy) on push/PR + weekly Monday schedule +
  dispatch.

Custom Dalamud repo manifest:
- repo.json at the repo root. AssemblyVersion 0.1.0.0,
  TestingAssemblyVersion 0.1.0.0, all three DownloadLink* pointing
  at releases/download/v0.1.0/latest.zip, embedded Changelog block,
  full description, tag list, icon and image URLs hosted off the
  Hellion Gitea. Subscribers add the raw URL of this file to
  Dalamud's Custom Plugin Repositories list.

Linter tooling:
- dotnet-tools.json with csharpier 1.2.6 as a local tool.
- .markdownlint.json copied from HellionChat (atx headers, dash
  bullets, underscore italics, asterisk strong) with MD060 disabled
  for our long-cell tables.
- renovate.json adapted from HellionChat: weekly schedule, grouped
  minor/patch updates per ecosystem, major updates get their own
  breaking-change PR, weekly lock file refresh, OSV vulnerability
  alerts.

Pre-push lint gate (.githooks/ + scripts/):
- .githooks/pre-push runs scripts/preflight.sh.
- preflight.sh: 4 blocks A (version consistency), B (dotnet build),
  C (dotnet csharpier check Craftimizer/), D (markdownlint via npx).
- verify-version-consistency.sh: csproj <Version> matches
  repo.json AssemblyVersion + TestingAssemblyVersion + a vX.Y.Z
  tag string is present in all three DownloadLink* URLs. Block A
  fails loud with a Fix: hint if anything drifts.
- setup-hooks.sh: sets core.hooksPath to .githooks, chmod +x the
  scripts. Run once after cloning.

CHANGELOG:
- New CHANGELOG.md at the repo root. First entry is v0.1.0 with the
  Hellion-style block (date, summary, bullet list, upstream-base
  attribution, full-history link). The release workflow extracts
  this entry verbatim as the Gitea release body.

Docs:
- README header updated with the new version badge, a release badge,
  and a build badge. New CHANGELOG reference, slash-command table,
  install section with both custom-repo and dev-install paths,
  conflict notice paragraph.

Plugin Version 0.1.0 stays in line with the verify-version-consistency
check; tag v0.1.0 is intentionally NOT pushed in this commit. Once the
user enables Gitea Actions on the repo, push the tag separately to
trigger the first release build.
This commit is contained in:
2026-05-26 20:21:54 +02:00
parent b598c03e9e
commit 614e97abf7
15 changed files with 534 additions and 44 deletions
+49
View File
@@ -0,0 +1,49 @@
[
{
"Author": "Asriel Camora (original); Jon Kazama / Hellion Forge (fork)",
"Name": "Forgeimizer",
"InternalName": "Forgeimizer",
"AssemblyVersion": "0.1.0.0",
"Description": "A Hellion Forge plugin — maintenance fork of Craftimizer by Asriel Camora, brought back to life on Dalamud SDK 15 for FFXIV 7.5+.\n\nSimulate crafts, create computer-assisted macros, and get mid-craft suggestions from the comfort of your own game. Open your crafting log to get started.\n\nAll features come from upstream Craftimizer, unchanged in this fork:\n- Crafting simulator with full action state tracking\n- Macro solver (Raphael Rust crate, bundled)\n- Recipe note overlay\n- Synthesis helper window\n- Macro editor and macro list\n\nThis fork:\n- Refuses to load if upstream Craftimizer is active (no parallel hooks)\n- No features added, no design changes vs upstream\n- Will archive if Asriel ships an official SDK 15 update upstream\n\nBased on Craftimizer 2.9.1.1 (upstream WorkingRobot/Craftimizer, MIT).\nSource: https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer",
"ApplicableVersion": "any",
"RepoUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer",
"Tags": [
"crafting",
"doh",
"craft",
"macro",
"solver",
"generator",
"generate",
"simulate",
"sim",
"simulator",
"hellion",
"forge"
],
"DalamudApiLevel": 15,
"LoadRequiredState": 0,
"LoadSync": false,
"CanUnloadAsync": false,
"LoadPriority": 0,
"Punchline": "A Hellion Forge plugin. Crafting simulator and macro solver for FFXIV, maintenance fork of Asriel Camora's Craftimizer kept current for Dalamud API 15+.",
"Changelog": "**v0.1.0 — First Hellion fork release (2026-05-26)**\n\nInitial Hellion Forge maintenance release of the Craftimizer fork. Combines the Dalamud SDK 15 migration, the rebrand to Forgeimizer, and the conflict detector into one shippable plugin.\n\n- Dalamud SDK 14 → 15 for FFXIV 7.5+ compatibility. Migrates the call sites the SDK 15 compiler refused (ValueType → AtkValueType, local IEndObject interface, typed ImRaii disposables, ImRaii.TabItem ref-bool lifetime fix).\n- Rebrand to Forgeimizer. Assembly name, plugin manifest, WindowSystem name, About-tab header, MacroMate default, and a new /forgeimizer slash command alias all use the new name. The plugin installs into its own pluginConfigs/Forgeimizer/ slot.\n- Conflict detector. Forgeimizer refuses to load if upstream Craftimizer is active in the same Dalamud instance.\n- Hellion Forge custom repo distribution.\n\nInternal namespaces (Craftimizer.*) intentionally left alone. Crafting logic, solver, simulator, recipe data layer, synthesis hooks, macro engine, and all UI windows are unchanged from upstream Craftimizer 2.9.1.1.\n\nBased on Craftimizer 2.9.1.1 (upstream WorkingRobot/Craftimizer, MIT).",
"AcceptsFeedback": true,
"DownloadLinkInstall": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer/releases/download/v0.1.0/latest.zip",
"DownloadLinkUpdate": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer/releases/download/v0.1.0/latest.zip",
"DownloadLinkTesting": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer/releases/download/v0.1.0/latest.zip",
"TestingAssemblyVersion": "0.1.0.0",
"IconUrl": "https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer/raw/branch/main/icon.png",
"ImageUrls": [
"https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer/raw/branch/main/Images/RecipeNote.png",
"https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer/raw/branch/main/Images/SynthHelper.png",
"https://gitea.hellion-forge.cloud/JonKazama-Hellion/Craftimizer/raw/branch/main/Images/MacroEditor.png"
],
"DownloadCount": 0,
"IsHide": false,
"IsTestingExclusive": false,
"CategoryTags": [
"jobs"
]
}
]