diff --git a/.github/workflows/validate-5tratsmack-metadata.yml b/.github/workflows/validate-5tratsmack-metadata.yml new file mode 100644 index 0000000..aaedce9 --- /dev/null +++ b/.github/workflows/validate-5tratsmack-metadata.yml @@ -0,0 +1,73 @@ +name: Validate 5tratSmack store metadata + +on: + pull_request: + paths: + - "willitmod-dev-5tratsmack/**" + - ".github/workflows/validate-5tratsmack-metadata.yml" + push: + branches: [main] + paths: + - "willitmod-dev-5tratsmack/**" + - ".github/workflows/validate-5tratsmack-metadata.yml" + +permissions: + contents: read + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Check compatible manifests and versions + run: | + python3 - <<'PY' + from pathlib import Path + import re + + app_dir = Path("willitmod-dev-5tratsmack") + primary = app_dir / "5tratstore-app.yml" + compatibility = app_dir / "umbrel-app.yml" + compose = app_dir / "docker-compose.yml" + + for path in (primary, compatibility, compose): + if not path.is_file() or not path.stat().st_size: + raise SystemExit(f"missing required store file: {path}") + + primary_bytes = primary.read_bytes() + compatibility_bytes = compatibility.read_bytes() + if primary_bytes != compatibility_bytes: + raise SystemExit( + "5tratstore-app.yml and umbrel-app.yml must remain byte-identical" + ) + + manifest_text = primary_bytes.decode("utf-8") + compose_text = compose.read_text(encoding="utf-8") + + def one(pattern: str, text: str, label: str) -> str: + matches = re.findall(pattern, text, flags=re.MULTILINE) + if len(matches) != 1: + raise SystemExit(f"expected one {label}, found {len(matches)}") + return matches[0] + + manifest_version = one( + r'^version:\s*["\']?([^"\'\s]+)', manifest_text, "manifest version" + ) + app_version = one( + r'^\s{6}APP_VERSION:\s*["\']?([^"\'\s]+)', compose_text, "APP_VERSION" + ) + release_tag = one( + r'^\s{6}FIVETRAT_RELEASE_TAG:\s*["\']?([^"\'\s]+)', + compose_text, + "FIVETRAT_RELEASE_TAG", + ) + if len({manifest_version, app_version, release_tag}) != 1: + raise SystemExit( + "store version mismatch: " + f"manifest={manifest_version}, APP_VERSION={app_version}, " + f"FIVETRAT_RELEASE_TAG={release_tag}" + ) + + print(f"5tratSmack store metadata is consistent at {manifest_version}") + PY diff --git a/README.md b/README.md index 0d008a3..03fedb7 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Development/test app store for WillItMod apps. - **AxeDGB** (`willitmod-dev-dgb`) - `0.9.179-dev` - **AxePPC** (`willitmod-dev-ppc`) - `0.2.30-dev` - **AxeXEC** (`willitmod-dev-xec`) - `0.1.14-dev` -- **5tratSmack** (`willitmod-dev-5tratsmack`) - `0.10.22` +- **5tratSmack** (`willitmod-dev-5tratsmack`) - `0.11.10` - **PowPow** (`willitmod-dev-powpow`) - `0.2.31-dev` Use the app manifest in each app directory as the current source of truth for the store-visible version number. diff --git a/willitmod-dev-5tratsmack/umbrel-app.yml b/willitmod-dev-5tratsmack/umbrel-app.yml new file mode 100644 index 0000000..ad00431 --- /dev/null +++ b/willitmod-dev-5tratsmack/umbrel-app.yml @@ -0,0 +1,87 @@ +manifestVersion: 1 +id: willitmod-dev-5tratsmack +category: altcoin +name: 5tratSmack +version: "0.11.10" +tagline: Home-miner 5TRAT node, wallet, solo pool and atomic trade lab +description: >- + Install and synchronize a complete 5TRAT node, create or restore an encrypted + wallet, connect home miners to the bundled solo pool, explore the chain, and + use the experimental atomic trade lab from one 5tratumOS app. + + 5tratSmack is experimental DEV software. Back up both the mining wallet and + trading recovery file before moving funds. The trade book uses the public + Komodo DeFi Framework network through outbound peer connections; every atomic + swap still requires the participating wallets to approve and settle it. + + Your Private Activity and My Trades are read only from this installation's + isolated trading wallet. Global Trades can read completed-swap reports from + configured public relays for market comparison. 5tratSmack does not publish + this wallet's orders, trade history, payment identity or swap receipts to + those relays. + + Miner connection: + - URL: `stratum+tcp://:57557` + - Username: your 5TRAT address plus an optional worker name + - Password: anything +developer: WillItMod +website: https://5trat.com +repo: https://github.com/WillItMod/5tratSmack +support: https://github.com/WillItMod/5tratSmack/issues +dependencies: [] +port: 21226 +icon: https://raw.githubusercontent.com/WillItMod/5tratStore-dev/main/willitmod-dev-5tratsmack/icon.png +gallery: + - https://raw.githubusercontent.com/WillItMod/5tratStore-dev/main/willitmod-dev-5tratsmack/icon.png +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Jackpot and reliability update: Pink and Gold bonuses settle to the previous + block's payout script while the current miner remains output zero; malformed + metadata and invalid payouts fail closed. Restores the transparent 0.11.8 + development contribution, enabled by default at 5%, adjustable or optional, + and paid only as a disclosed coinbase output after any prior-winner jackpot. + Since 0.11.9 did not retain opt-outs, upgrades return to that 5% default. It + never withdraws wallet funds. The dashboard labels last-known fiat values, + excludes them from order pricing, shows rejected candidates, and replays full + retained history. Exact-config restart acknowledgement, live Stratum checks, + cached incremental scans and atomic locked state updates improve reliability + and performance. The 0.11.9 private local/global trade separation remains, + and existing wallets, blockchain, pool and trading data are retained. +widgets: + - id: sync + type: text-with-progress + refresh: 5s + endpoint: 5tratsmack-app:3000/api/widget/sync + link: "" + example: + type: text-with-progress + link: "" + title: 5TRAT sync + text: 83% + progressLabel: In progress + progress: 0.83 + - id: pool + type: three-stats + refresh: 30s + endpoint: 5tratsmack-app:3000/api/widget/pool + link: "" + example: + type: three-stats + link: "" + items: + - title: Hashrate + text: "12.4" + subtext: TH/s + - title: Workers + text: "2" + - title: Best proof + text: "8.2" + subtext: M +backupIgnore: + - data/node/blocks + - data/node/chainstate + - data/node/indexes + - data/node/debug.log +submitter: WillItMod