X Tutup
Skip to content

Commit b5aeea7

Browse files
committed
modernizing more docs
1 parent 0f02d51 commit b5aeea7

File tree

6 files changed

+71
-44
lines changed

6 files changed

+71
-44
lines changed

README.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,11 @@ repository](https://github.com/itchio/itch-docs).
1919

2020
This book is built using [Honkit](https://github.com/honkit/honkit).
2121

22-
Deployment happens automatically via GitLab CI when pushed to the GitLab
23-
mirror. Each ref (branch or tag) is deployed to Google Cloud Storage under
24-
`https://docs.itch.zone/itch/REF`, e.g. `master` or `v0.14.0`. It's recommended
25-
to push tags when there are significant changes to the book so that older
26-
versions may be referenced.
22+
Deployment happens automatically via GitHub Actions (`.github/workflows/docs.yml`) when pushed to the `master` branch. The docs are deployed to GitHub Pages.
2723

2824
The primary docs displayed at `https://itch.io/docs/itch/` are proxied from
29-
the `master` deployment on Google Cloud Storage. To update the these docs push
30-
to GitLab's master branch.
25+
the GitHub Pages deployment. To update, push to the `master` branch.
3126

32-
The `master` branch is also deployed to GitHub Pages for preview. Create tags
33-
for substantial versions of the app and book to preserve older versions for
34-
reference.
27+
Create tags for substantial versions of the app and book to preserve older
28+
versions for reference.
3529

developing/continuous-deployment.md

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,66 +8,91 @@ The main repository for itch is hosted on GitHub:
88

99
* [https://github.com/itchio/itch](https://github.com/itchio/itch)
1010

11-
For final deployment, we maintain a GitLab remote where builds are executed on our own self-hosted runners. These runners handle code signing for executables and publishing releases to itch.io using [butler](https://itch.io/docs/butler/).
11+
Builds, code signing, and publishing are all handled by GitHub Actions. The CI
12+
workflow runs multi-platform builds, signs executables (Azure Code Signing for
13+
Windows, Apple notarization for macOS), and publishes releases to itch.io using
14+
[butler](https://itch.io/docs/butler/). Releases are also published as GitHub
15+
Releases.
1216

1317
## Build scripts
1418

15-
GitLab CI uses a YAML configuration file. Its format is detailed in the [GitLab CI](https://docs.gitlab.com/ee/ci/) documentation.
19+
GitHub Actions uses a YAML workflow configuration file. Its format is detailed in the [GitHub Actions](https://docs.github.com/en/actions) documentation.
1620

17-
itch's [CI config](https://github.com/itchio/itch/blob/master/.gitlab-ci.yml) is relatively straight-forward, most of the complexity lives in individual shell scripts in the `release/` directory.
21+
itch's [CI workflow](https://github.com/itchio/itch/blob/master/.github/workflows/build.yml) is relatively straight-forward, most of the complexity lives in individual shell scripts in the `release/` directory.
1822

19-
### Unit tests & linting
23+
### Testing
2024

21-
The codebase is covered by a certain amount of unit tests, in `src/tests`.
22-
23-
On every commit, the CI executes all unit tests, and runs the TypeScript compiler in check mode to make sure that there are no compile errors.
25+
* **Type checking**: CI runs the TypeScript compiler in check mode on every commit to catch compile errors
26+
* **Integration tests**: Go-based integration tests run against the packaged binary after each build
2427

2528
### Building
2629

27-
The building scripts run some common steps on every platform:
30+
TypeScript is compiled via [esbuild](https://esbuild.github.io/) into two bundles, one for the main process and one for the renderer.
2831

29-
* Compiling [TypeScript](https://www.typescriptlang.org/) code to ES2017, into several bundles
30-
* Bundling static asset files
32+
Static assets are copied to the build output and a minimal `package.json` is generated with the correct app name and version.
3133

3234
### Packaging
3335

36+
All platforms use [`@electron/packager`](https://www.npmjs.com/package/@electron/packager) to produce a portable Electron application directory. The app is not archived into an ASAR.
37+
3438
#### Windows
3539

36-
.exe + resources is built with [electron-packager](https://www.npmjs.com/package/electron-packager), then [electron-winstaller](https://github.com/electron/windows-installer) generates `-full.nupkg`, `-delta.nupkg`, and `RELEASES`, needed for Squirrel.Windows update.
40+
`@electron/packager` produces an `.exe` with resources. The executable is signed in a separate CI job using Azure Code Signing.
3741

38-
#### macOS / OS X
42+
#### macOS
3943

40-
.zip is built with `7za` \(7-zip command-line\), .dmg is built with [node-appdmg](https://www.npmjs.com/package/appdmg), with a custom background made in GIMP.
44+
`@electron/packager` produces `.app` bundles for both x64 and arm64 architectures. A separate CI job signs the bundles with `@electron/osx-sign` and notarizes them with `@electron/notarize`.
4145

4246
#### Linux
4347

44-
The .desktop file is generated via `release/X.desktop.in` files + `sed`. All locale files are parsed for translations of the app's name and description.
45-
46-
deb & rpm packages are generated thanks to [fpm](https://github.com/jordansissel/fpm).
48+
`@electron/packager` produces an application directory, tarballed to preserve file permissions.
4749

4850
### Publishing releases
4951

50-
All release artifacts are signed on our self-hosted GitLab runners and then published directly to itch.io using [butler](https://itch.io/docs/butler/). Butler handles uploading, diffing, and serving updates to users.
52+
* **On every push/PR**: The workflow builds and type-checks on all three platforms, but does not upload artifacts, sign, or publish. This validates that the code compiles and packages correctly.
53+
* **On `workflow_dispatch`**: The full pipeline runs -- build, code signing (separate jobs for Windows and macOS), and artifact upload. If the dispatch is triggered on a git tag, two additional jobs run:
54+
* **GitHub Release**: Creates a release (marked as prerelease if the tag contains "canary") with `.tar.gz` archives for all platforms
55+
* **itch.io deployment**: Downloads all signed artifacts, validates macOS bundle structure, and uses butler to push to the appropriate itch.io channel (`itchio/itch` or `itchio/kitch`)
5156

5257
Downloads are available at:
5358

5459
* [https://itchio.itch.io/itch-setup](https://itchio.itch.io/itch-setup)
5560
* [https://itchio.itch.io/itch](https://itchio.itch.io/itch)
56-
* [https://itchio.itch.io/kitch-setup](https://itchio.itch.io/kitch-setup)
5761
* [https://itchio.itch.io/kitch](https://itchio.itch.io/kitch)
62+
* [https://itchio.itch.io/install-itch](https://itchio.itch.io/install-itch)
63+
* [https://itchio.itch.io/install-kitch](https://itchio.itch.io/install-kitch)
5864

5965
## The canary channel
6066

6167
When making large structural changes, it is sometimes useful to have a completely separate version of the app with no expectations of stability.
6268

63-
`kitch` is exactly that. It is meant to be installed in parallel of the stable app, and has a distinct branding \(blue instead of itch.io hot pink\), uses different folders \(`%APPDATA%/kitch`, `~/.config/kitch`, `~/Library/Application
69+
`kitch` is exactly that. It is meant to be installed in parallel of the stable app, and has a distinct branding \(blue instead of itch.io hot pink\), uses different folders \(`%APPDATA%/kitch`, `~/.config/kitch`, `~/Library/Application
6470
Support/kitch`\).
6571

6672
![](itch-canary.png)
6773

74+
### Differences between itch and kitch
75+
76+
| Feature | itch (Stable) | kitch (Canary) |
77+
|---------|---------------|----------------|
78+
| **URL Protocols** | `itchio://`, `itch://` | `kitchio://`, `kitch://` |
79+
| **Broth Channels** | Standard format (e.g. `darwin-amd64`) | `-head` suffix (e.g. `darwin-amd64-head`) |
80+
| **Version Constraints** | butler `^15.20.0`, itch-setup `^1.8.0` | None -- always fetches latest |
81+
| **macOS Bundle ID** | `io.itch.mac` | `io.kitch.mac` |
82+
| **Icons/Assets** | `src/static/images/tray/itch.png` | `src/static/images/tray/kitch.png` |
83+
| **Binary Name** | `itch` | `kitch` |
84+
85+
### How variants are determined
86+
87+
**At build time:** The variant is selected based on git tags. A tag containing the `-canary` suffix produces a kitch build, while all other tags produce itch. The default `package.json` name is `"kitch"`, so local development always runs as kitch.
88+
89+
**At runtime:** The app calls `app.getName()` to read the package.json name field, which sets `env.isCanary`, `env.appName`, and `env.channel` accordingly.
90+
91+
### Downloads
92+
6893
It can be downloaded from itch.io:
6994

70-
* [https://itchio.itch.io/kitch-setup](https://itchio.itch.io/kitch-setup)
95+
* [https://itchio.itch.io/install-kitch](https://itchio.itch.io/install-kitch)
7196
* [https://itchio.itch.io/kitch](https://itchio.itch.io/kitch)
7297

7398
Additionally:

developing/getting-started.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,6 @@ Most of the CSS styles in the app are handled by
136136

137137
This lets us handle theme switching, namespace and compose our styles easily.
138138

139-
Some text editor plug-ins, like [styled-components for Visual Studio
140-
Code](https://marketplace.visualstudio.com/items?itemName=jpoissonnier.vscode-styled-components)
141-
provide syntax highlighting for css blocks.
142-
143139
## Testing
144140

145141
We check the quality of the app's code by two kinds of tests:

installing/canary.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,15 @@ channel](../developing/continuous-deployment.md#the-canary-channel).
77

88
It's a bleeding-edge, often-updated version of the app with *no guarantee of
99
stability* that you can install in parallel with the stable app.
10+
11+
## What's different
12+
13+
The canary version (`kitch`) runs as a fully separate application from the stable `itch` app:
14+
15+
* **Branding** -- blue instead of itch.io hot pink
16+
* **Binary name** -- `kitch` instead of `itch`
17+
* **URL protocols** -- `kitch://` and `kitchio://` instead of `itch://` and `itchio://`
18+
* **Data folders** -- `%APPDATA%/kitch`, `~/.config/kitch`, `~/Library/Application Support/kitch`
19+
* **No version pinning** -- canary always fetches the latest versions of components like butler and itch-setup, rather than pinning to specific versions
20+
21+
For a full technical breakdown, see the [canary channel](../developing/continuous-deployment.md#the-canary-channel) section in the developer docs.

installing/dependencies.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ itch uses a few external tools to download & manage content.
44

55
It installs and keeps them up-to-date automatically, which means you should never have to worry about them. However, in the interest of you knowing what runs on your computer, they're documented here.
66

7-
Everything is downloaded from our download server at `https://dl.itch.zone`.
8-
97
Third-party programs are built from source. Home-grown programs are continuously built on our CI servers.
108

119
## Directories
@@ -20,19 +18,21 @@ All dependencies are downloaded and extracted into the following folders:
2018

2119
### butler
2220

23-
butler is a homemade \(itch.io-made\) command-line tool, distributed under the MIT license.
21+
butler is a homemade command-line tool written in Go, distributed under the MIT license.
22+
23+
It runs as a daemon process (butlerd) that communicates with the itch app via JSON-RPC 2.0 over TCP. butler handles downloading, installing, updating, and launching games, and maintains a SQLite database to track installation data.
2424

25-
Its source code is available here, for you to audit, debug, and improve at will:
25+
Its source code is available for you to audit, debug, and improve at will:
2626

2727
* [https://github.com/itchio/butler](https://github.com/itchio/butler)
2828

29-
Building your own version is as simple as running:
29+
### itch-setup
30+
31+
itch-setup is a Go program that handles the initial installation of the itch app on all platforms. It also manages self-update checks and restarts the app when a new version is available.
3032

31-
```
32-
go get -v github.com/itchio/butler
33-
```
33+
Its source code is available here:
3434

35-
\(assuming you have Go 1.9+ installed on your system\)
35+
* [https://github.com/itchio/itch-setup](https://github.com/itchio/itch-setup)
3636

3737
## Implementation
3838

integrating/manifest/validating-your-manifest.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ The [butler](https://itch.io/docs/butler) command-line tool can be used to valid
55
It's a good way to make sure your software will be opened correctly by the itch.io app before you even push a build to itch.io.
66

77
> The validate command returns a non-zero exit code if it detects serious problems.
8-
> It's a good idea to integrate it into your Continuous Deployment pipeline \(Travis CI, Gitlab CI etc.\)!
8+
> It's a good idea to integrate it into your Continuous Deployment pipeline \(GitHub Actions, etc.\)!
99
1010
## Validating build folders
1111

0 commit comments

Comments
 (0)
X Tutup