Skip to content

Commit b15945c

Browse files
committed
chore(release): configure pearcecodes fork releases
1 parent 4f0f24f commit b15945c

12 files changed

Lines changed: 145 additions & 413 deletions

File tree

.github/workflows/release.yml

Lines changed: 7 additions & 336 deletions
Large diffs are not rendered by default.

apps/desktop/scripts/electron-launcher.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { fileURLToPath } from "node:url";
1818

1919
const isDevelopment = Boolean(process.env.VITE_DEV_SERVER_URL);
2020
const APP_DISPLAY_NAME = isDevelopment ? "T3 Code (Dev)" : "T3 Code (Alpha)";
21-
const APP_BUNDLE_ID = isDevelopment ? "com.t3tools.t3code.dev" : "com.t3tools.t3code";
21+
const APP_BUNDLE_ID = isDevelopment ? "com.pearcecodes.t3code.dev" : "com.pearcecodes.t3code";
2222
const LAUNCHER_VERSION = 2;
2323

2424
const __dirname = dirname(fileURLToPath(import.meta.url));

apps/desktop/src/app/DesktopEnvironment.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ describe("DesktopEnvironment", () => {
6565
assert.equal(environment.appRoot, "/repo");
6666
assert.equal(environment.backendEntryPath, "/repo/apps/server/dist/bin.mjs");
6767
assert.equal(environment.backendCwd, "/repo");
68-
assert.equal(environment.appUserModelId, "com.t3tools.t3code.dev");
68+
assert.equal(environment.appUserModelId, "com.pearcecodes.t3code.dev");
6969
assert.equal(environment.linuxWmClass, "t3code-dev");
7070
assert.deepEqual(
7171
Option.map(environment.devServerUrl, (url) => url.href),

apps/desktop/src/app/DesktopEnvironment.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ const makeDesktopEnvironment = Effect.fn("desktop.environment.make")(function* (
199199
otlpExportIntervalMs: config.otlpExportIntervalMs,
200200
branding,
201201
displayName,
202-
appUserModelId: isDevelopment ? "com.t3tools.t3code.dev" : "com.t3tools.t3code",
202+
appUserModelId: isDevelopment ? "com.pearcecodes.t3code.dev" : "com.pearcecodes.t3code",
203203
linuxDesktopEntryName: isDevelopment ? "t3code-dev.desktop" : "t3code.desktop",
204204
linuxWmClass: isDevelopment ? "t3code-dev" : "t3code",
205205
userDataDirName,

apps/server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
"license": "MIT",
55
"repository": {
66
"type": "git",
7-
"url": "https://github.com/pingdotgg/t3code",
7+
"url": "https://github.com/Pearcekieser/t3code",
88
"directory": "apps/server"
99
},
1010
"bin": {
11-
"t3": "./dist/bin.mjs"
11+
"t3code": "./dist/bin.mjs"
1212
},
1313
"files": [
1414
"dist"

apps/server/scripts/cli.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { fromJsonStringPretty } from "@t3tools/shared/schemaJson";
2020
import rootPackageJson from "../../../package.json" with { type: "json" };
2121
import serverPackageJson from "../package.json" with { type: "json" };
2222

23+
const PublishedPackageName = "@pearcecodes/t3code";
24+
2325
interface PackageJson {
2426
name: string;
2527
repository: {
@@ -216,7 +218,7 @@ const publishCmd = Command.make(
216218
Effect.gen(function* () {
217219
const version = Option.getOrElse(config.appVersion, () => serverPackageJson.version);
218220
const pkg: PackageJson = {
219-
name: serverPackageJson.name,
221+
name: PublishedPackageName,
220222
repository: serverPackageJson.repository,
221223
bin: serverPackageJson.bin,
222224
type: serverPackageJson.type,

apps/server/src/bin.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ it.layer(NodeServices.layer)("bin cli parsing", (it) => {
248248
if (error._tag !== "ShowHelp") {
249249
assert.fail(`Expected ShowHelp, got ${error._tag}`);
250250
}
251-
assert.deepEqual(error.commandPath, ["t3", "auth", "pairing", "create"]);
251+
assert.deepEqual(error.commandPath, ["t3code", "auth", "pairing", "create"]);
252252
const ttlError = error.errors[0] as CliError.CliError | undefined;
253253
if (!ttlError || ttlError._tag !== "InvalidValue") {
254254
assert.fail(`Expected InvalidValue, got ${String(ttlError?._tag)}`);
@@ -351,7 +351,7 @@ it.layer(NodeServices.layer)("bin cli parsing", (it) => {
351351
if (error._tag !== "ShowHelp") {
352352
assert.fail(`Expected ShowHelp, got ${error._tag}`);
353353
}
354-
assert.deepEqual(error.commandPath, ["t3", "project", "add"]);
354+
assert.deepEqual(error.commandPath, ["t3code", "project", "add"]);
355355
const optionError = error.errors[0] as CliError.CliError | undefined;
356356
if (!optionError || optionError._tag !== "UnrecognizedOption") {
357357
assert.fail(`Expected UnrecognizedOption, got ${String(optionError?._tag)}`);

apps/server/src/bin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { runServerCommand, serveCommand, startCommand } from "./cli/server.ts";
1313

1414
const CliRuntimeLayer = Layer.mergeAll(NodeServices.layer, NetService.layer);
1515

16-
export const cli = Command.make("t3", { ...sharedServerCommandFlags }).pipe(
16+
export const cli = Command.make("t3code", { ...sharedServerCommandFlags }).pipe(
1717
Command.withDescription("Run the T3 Code server."),
1818
Command.withHandler((flags) => runServerCommand(flags)),
1919
Command.withSubcommands([startCommand, serveCommand, authCommand, projectCommand]),

bun.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Pearcecodes Fork Release Setup
2+
3+
This fork is configured for public GitHub Releases, Blacksmith runners, macOS
4+
signing when Apple credentials are present, and npm publishing under the
5+
`pearcecodes` npm organization.
6+
7+
## P1 release setup
8+
9+
### GitHub
10+
11+
- Repository: `Pearcekieser/t3code`
12+
- Keep the repository public so GitHub Releases can be used directly by
13+
`electron-updater`.
14+
- Enable GitHub Actions for the fork.
15+
- Install the Blacksmith GitHub app for this repository.
16+
- In repository Actions settings, allow workflows to create and approve pull
17+
requests if needed, and set workflow permissions to allow read/write tokens.
18+
19+
The release workflow uses the built-in `GITHUB_TOKEN` for GitHub Releases and
20+
stable-version bump commits. It does not require a custom release GitHub App.
21+
22+
### npm
23+
24+
- Package: `@pearcecodes/t3code`
25+
- Binary: `t3code`
26+
- Access: public
27+
- Dist-tags:
28+
- stable releases publish `latest`
29+
- nightly releases publish `nightly`
30+
31+
The internal workspace package remains named `t3` so Effect deterministic
32+
service keys keep matching source paths. The release publish script rewrites the
33+
published package name to `@pearcecodes/t3code` immediately before `npm publish`.
34+
35+
Configure npm trusted publishing for `@pearcecodes/t3code`:
36+
37+
- Provider: GitHub Actions
38+
- Repository: `Pearcekieser/t3code`
39+
- Workflow file: `.github/workflows/release.yml`
40+
41+
The npm publish job intentionally uses a GitHub-hosted runner, because npm
42+
trusted publishing does not currently support self-hosted runners. Keep the
43+
desktop build jobs on Blacksmith, but keep `publish_cli` on `ubuntu-24.04`
44+
unless this npm restriction changes.
45+
46+
### Apple signing and notarization
47+
48+
Add these GitHub Actions secrets after enrolling in the Apple Developer Program:
49+
50+
- `CSC_LINK`: base64-encoded `.p12` export of the Developer ID Application
51+
certificate and private key
52+
- `CSC_KEY_PASSWORD`: password for the `.p12`
53+
- `APPLE_API_KEY`: raw App Store Connect API key `.p8` contents
54+
- `APPLE_API_KEY_ID`: App Store Connect API key ID
55+
- `APPLE_API_ISSUER`: App Store Connect issuer ID
56+
57+
If any of these are missing, macOS release artifacts are built unsigned.
58+
59+
## P2 hosted web app
60+
61+
The Vercel deployment is intentionally deferred. Planned domains:
62+
63+
- router: `https://code.pearcecodes.com`
64+
- stable: `latest.code.pearcecodes.com`
65+
- nightly: `nightly.code.pearcecodes.com`
66+
67+
Before enabling the Vercel job, make `apps/web/vercel.ts` use environment-driven
68+
hostnames instead of hardcoded `app.t3.codes` origins.

0 commit comments

Comments
 (0)