Mi az a tárház

A Clink nyilvános GitHub-tárházakból olvas csomagokat. Te hozzáadsz egyet a nevével, a Clink beolvassa a legfrissebb kiadását, és minden fájlt ellenőriz a telepítés előtt. Semmi nem töltődik fel, és semmi, ami a tiéd, nem fut kiszolgálón.

Add meg owner/repository, github.com/owner/repository formában vagy a teljes HTTPS-URL-t. A Clink minden kiadási jegyzéket és fájlt ellenőriz, mielőtt bármit letöltene.

Válassz fajtát

Minden csomagfajtának saját fájlkiterjesztése és saját gyűjteményneve van a jegyzékben, és a Clink mindegyikre a maga méretkorlátját alkalmazza. Válaszd ki a sort, amit publikálsz, és maradj is annál: a panelek közé iktatott témát a rendszer egyszerűen nem olvassa be.

FajtaFájlGyűjteményLegnagyobb fájl, bájtbanHivatalos tárház
Témák.clinkthemethemes128 000anti-ltd/clink-themes
Elrendezések.clinklayoutlayouts512 000anti-ltd/clink-layouts
Profilok.clinkprofileprofiles256 000anti-ltd/clink-profiles
Hangok.clinkpacksounds512 000anti-ltd/clink-sounds
Betűtípusok.otf .ttffonts32 000 000anti-ltd/clink-fonts
Panelek.clinkpanelpanels50 000anti-ltd/clink-panels
Műveletek.clinkextactions48 000anti-ltd/clink-actions
Bővítmények.clinkpluginplugins66 000anti-ltd/clink-plugins

A nyelvi csomagok a kivétel. Ott egy csomag nem egyetlen dokumentum, hanem szótár- és modellfájlok együttese, és a hivatalos tárház hozza magával az eszközláncot, amely felépíti őket. Kezdd az ottani README fájllal, ne ezzel az oldallal.

Indulj a hivatalos tárházból

A leggyorsabb út egy fork. Már összedrótozva érkezik a csomagmappa, a jegyzéképítő és a kiadási munkafolyamat, ráadásul működő példákkal, amiket lemásolhatsz.

# Everything a repository needs is already wired together in the official one.
gh repo fork anti-ltd/clink-panels --clone
cd clink-panels

# Your packs replace the examples. Keep tools/ and .github/.
rm Panels/*.clinkpanel
cp ~/Downloads/my-panel.clinkpanel Panels/kaomoji-plus.clinkpanel

Tartsd meg a tools/ és a .github/workflows/ mappát. Ez a kettő az, ami egy pushból a Clink által olvasható kiadást csinál, és a nélkülük készült fork semmit sem tesz közzé.

Vagy építsd fel három fájlból

Egy tárházban semmi különös nincs. Kell bele egy mappa a csomagoknak, egy szkript, amely megírja a jegyzéket, és egy munkafolyamat, amely kiadja a kiadást.

my-panels/
├── Panels/
   └── kaomoji.clinkpanel        # one file per pack, the name is the id
├── tools/
   └── build-manifest.py         # writes manifest.json from that folder
└── .github/workflows/
    └── release.yml               # turns a push into a release

A munkafolyamat három dolgot tesz: újraépíti a jegyzéket, törli az előző kiadást, és közzétesz egy újat latest címkével, a csomagfájlokkal és a jegyzékkel együtt. Ennyi az egész.

name: Release panels
on:
  push:
    branches: [main]
    paths: ["Panels/**", "tools/**", ".github/workflows/release.yml"]
permissions: { contents: write }
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: python3 tools/build-manifest.py
      - run: gh release delete latest --yes || true
        env: { GH_TOKEN: "${{ github.token }}" }
      - run: gh release create latest Panels/*.clinkpanel manifest.json --title "Latest panels" --latest
        env: { GH_TOKEN: "${{ github.token }}" }
.github/workflows/release.yml

Az építő végigmegy a mappán, és fájlonként ír egy bejegyzést. Egyedül innen származik a kivonat és a bájtszám, és éppen ezért fut a munkafolyamatban, nem kézzel.

#!/usr/bin/env python3
import hashlib, json, os, pathlib

root = pathlib.Path(__file__).resolve().parents[1]
repository = os.environ.get("GITHUB_REPOSITORY", "<owner>/<repository>")
packs = []
for path in sorted((root / "Panels").glob("*.clinkpanel")):
    data = path.read_bytes()
    pack = json.loads(data)
    packs.append({
        "id": path.stem,
        "name": pack["name"],
        "version": "latest",
        "asset": {
            "path": path.name,
            "url": f"https://github.com/{repository}/releases/download/latest/{path.name}",
            "sha256": hashlib.sha256(data).hexdigest(),
            "byteCount": len(data),
        },
    })
(root / "manifest.json").write_text(json.dumps({"version": "latest", "panels": packs}, indent=2))
tools/build-manifest.py. Más fajtához írd át a mappát, a kiterjesztést és a gyűjtemény nevét a választott sorra.

A jegyzék

Minden kiadás közzétesz egy manifest.json fájlt a csomagfájlok mellett, és a Clink ezt a legfrissebb kiadásból olvassa innen: https://github.com/<owner>/<repository>/releases/latest/download/manifest.json. Minden bejegyzés megnevezi a fájlt, a címét ugyanazon a kiadáson belül, a SHA-256 kivonatát és a pontos bájtszámát.

{
  "version": "latest",
  "panels": [
    {
      "id": "kaomoji",
      "name": "Kaomoji",
      "version": "latest",
      "asset": {
        "path": "kaomoji.clinkpanel",
        "url": "https://github.com/<owner>/<repository>/releases/download/latest/kaomoji.clinkpanel",
        "sha256": "8f14e45fce…",
        "byteCount": 2048
      }
    }
  ]
}
Egy bejegyzés egy paneltárház jegyzékéből.

A gyűjtemény nevének illeszkednie kell a fajtához. A panelek a panels alá kerülnek, a témák a themes alá, és így tovább a fenti táblázat szerint.

Próbáld ki, mielőtt közzéteszed

A tárházban lévő csomag ugyanaz a fájl, amit kézzel is megnyithatsz, úgyhogy először a rövid úton próbáld ki: AirDroppal küldd át a telefonodra, vagy tedd a Fájlok közé, és nyisd meg a Clinkkel. Aztán nézd meg a jegyzéket, amit a szkripted ír.

python3 tools/build-manifest.py
cat manifest.json
  1. Futtasd az építőt. A manifest.json fájlt abból írja újra, ami éppen a mappában van.
  2. Olvasd el, amit írt. Minden bejegyzésnek olyan fájlt kell megneveznie, amely tényleg ott van, a hozzá tartozó bájtszámmal.
  3. Nyisd meg magát a csomagfájlt a Clinkben, és használd. A panel vagy a művelet a saját szerkesztőjében landol, ahol futtathatod.

Közzététel

git add Panels manifest.json
git commit -m "Add my first panel"
git push

Küldd fel a main ágra, a többit a munkafolyamat intézi. A latest kiadást lecseréli, nem pedig kiegészíti, így mindig a legutóbbi push az, amit mások megkapnak.

Nyisd meg ezt a lapot, miután a tárház közzétett egy kiadást.

Add hozzá a Clinkben

  1. Nyisd meg az Általános, majd a Tárházak részt, és add hozzá a tulajdonos/tárház nevet.
  2. Nyisd meg a fajtádhoz tartozó lapot, és húzd le a frissítéshez. A csomagjaid azon a néven jelennek meg, amit a jegyzék adott nekik.
  3. Koppints egyre a letöltéshez. A Clink ellenőrzi, majd úgy telepíti, mint bármelyik másik csomagot.

Egy tároló hozzáadása elég az adatcsomagokhoz: témák, elrendezések, profilok, hangok, betűtípusok és nyelvek. A panelek, műveletek és bővítmények logikát hordoznak, ezért minden tárolónak saját kapcsoló kell, mielőtt a Clink bármelyiket telepítené, és az app első alkalommal rákérdez.

A panelek korlátozott interaktív logikát tartalmaznak. Csak megbízható tárolókat engedélyezz.

Mit ellenőriz a Clink

  1. A cím HTTPS a következőn: github.com, az általad hozzáadott tárház kiadásain belül.
  2. A letöltés pontosan annyi bájt, amennyit a jegyzék mond, és a 64 karakteres SHA-256 kivonata egyezik.
  3. A fájl a megfelelő kiterjesztést viseli, és annak a csomagtípusnak felel meg, aminek mondja magát.
  4. A panelek, műveletek és bővítmények tárolás előtt átmennek a forrásszabályzaton.

Ha egy letöltést elutasít, az ez az öt ok valamelyike. Az appban megjelenő üzenet szándékosan rövid, ezért nézd végig őket sorban.

EllenőrzésElutasítva, ha
github.comA cím nem HTTPS a github.com címen, az általad hozzáadott tárház kiadásai alatt. A jegyzék nem mutathat máshová, még egy másik saját tárházadra sem.
byteCountA fájl nem pontosan akkora, amekkorát a jegyzék állít, vagy túllépi a fajtájára szabott korlátot. A jegyzék újraépítése minden szerkesztés után a legtöbb ilyen esetet megoldja.
sha256A kivonat nem illik a bájtokhoz. Többnyire azért, mert a jegyzék a fájl utolsó módosítása előtt készült.
pathA fájlnév nem a fajta által megkövetelt kiterjesztésre végződik, vagy két ponttal próbál kimászni a kiadásból.
sourceEgy panel, művelet vagy bővítmény nem ment át a forrásszabályzaton: túl hosszú, vagy olyan részletet tartalmaz, amelyet a szabályzat elutasít.

Frissítés, és a visszavonás

Az azonosító a fájl neve kiterjesztés nélkül, és ez teszi a frissítést frissítéssé. Tartsd meg a nevet, és az új kiadás lecseréli azt a példányt, ami már megvan az embereknek. Nevezd át a fájlt, és máris egy második csomagot tettél közzé az első mellé.

Ha kiveszel egy csomagot a tárházból, az megállítja az új letöltéseket. Azokhoz a telefonokhoz nem ér el, amelyeken már fent van, ezért egy elrontott kiadást inkább cserélni érdemes, nem törölni.

Hivatalos tárházak

Forkold bármelyiket a kezdéshez. Mindegyik felépíti a saját jegyzékét, és a GitHub Actionsszel teszi közzé magát.

Letöltés az App Store-ból