Skip to content

Commit 78ae3b9

Browse files
Merge branch 'dev' into dev
2 parents 5d9f07a + 9275665 commit 78ae3b9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+6073
-1268
lines changed

.github/workflows/auto-label-tui.yml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
contents: read
1212
issues: write
1313
steps:
14-
- name: Add opentui label
14+
- name: Auto-label and assign issues
1515
uses: actions/github-script@v7
1616
with:
1717
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -20,10 +20,32 @@ jobs:
2020
const title = issue.title;
2121
const description = issue.body || '';
2222
23+
// Check for web/desktop keywords
24+
const webPattern = /\b(web|desktop)\b/i;
25+
const isWebRelated = webPattern.test(title) || webPattern.test(description);
26+
2327
// Check for version patterns like v1.0.x or 1.0.x
2428
const versionPattern = /[v]?1\.0\./i;
29+
const isVersionRelated = versionPattern.test(title) || versionPattern.test(description);
2530
26-
if (versionPattern.test(title) || versionPattern.test(description)) {
31+
if (isWebRelated) {
32+
// Add web label
33+
await github.rest.issues.addLabels({
34+
owner: context.repo.owner,
35+
repo: context.repo.repo,
36+
issue_number: issue.number,
37+
labels: ['web']
38+
});
39+
40+
// Assign to adamdotdevin
41+
await github.rest.issues.addAssignees({
42+
owner: context.repo.owner,
43+
repo: context.repo.repo,
44+
issue_number: issue.number,
45+
assignees: ['adamdotdevin']
46+
});
47+
} else if (isVersionRelated) {
48+
// Only add opentui if NOT web-related
2749
await github.rest.issues.addLabels({
2850
owner: context.repo.owner,
2951
repo: context.repo.repo,

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ playground
1111
tmp
1212
dist
1313
.turbo
14+
**/.serena
15+
.serena/

STATS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,4 @@
129129
| 2025-11-01 | 636,100 (+9,488) | 581,806 (+17,227) | 1,217,906 (+26,715) |
130130
| 2025-11-02 | 644,067 (+7,967) | 590,004 (+8,198) | 1,234,071 (+16,165) |
131131
| 2025-11-03 | 653,130 (+9,063) | 597,139 (+7,135) | 1,250,269 (+16,198) |
132-
| 2025-11-04 | 663,973 (+10,843) | 608,056 (+10,917) | 1,272,029 (+21,760) |
132+
| 2025-11-04 | 663,912 (+10,782) | 608,056 (+10,917) | 1,271,968 (+21,699) |

bun.lock

Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

infra/console.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,13 @@ export const auth = new sst.cloudflare.Worker("AuthApi", {
6161
domain: `auth.${domain}`,
6262
handler: "packages/console/function/src/auth.ts",
6363
url: true,
64-
link: [database, authStorage, GITHUB_CLIENT_ID_CONSOLE, GITHUB_CLIENT_SECRET_CONSOLE, GOOGLE_CLIENT_ID],
64+
link: [
65+
database,
66+
authStorage,
67+
GITHUB_CLIENT_ID_CONSOLE,
68+
GITHUB_CLIENT_SECRET_CONSOLE,
69+
GOOGLE_CLIENT_ID,
70+
],
6571
})
6672

6773
////////////////
@@ -97,7 +103,8 @@ export const stripeWebhook = new stripe.WebhookEndpoint("StripeWebhookEndpoint",
97103
],
98104
})
99105

100-
const ZEN_MODELS = new sst.Secret("ZEN_MODELS")
106+
const ZEN_MODELS1 = new sst.Secret("ZEN_MODELS1")
107+
const ZEN_MODELS2 = new sst.Secret("ZEN_MODELS2")
101108
const STRIPE_SECRET_KEY = new sst.Secret("STRIPE_SECRET_KEY")
102109
const AUTH_API_URL = new sst.Linkable("AUTH_API_URL", {
103110
properties: { value: auth.url.apply((url) => url!) },
@@ -130,7 +137,8 @@ new sst.cloudflare.x.SolidStart("Console", {
130137
AUTH_API_URL,
131138
STRIPE_WEBHOOK_SECRET,
132139
STRIPE_SECRET_KEY,
133-
ZEN_MODELS,
140+
ZEN_MODELS1,
141+
ZEN_MODELS2,
134142
EMAILOCTOPUS_API_KEY,
135143
AWS_SES_ACCESS_KEY_ID,
136144
AWS_SES_SECRET_ACCESS_KEY,

packages/console/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev",
88
"build": "vinxi build && ../../opencode/script/schema.ts ./.output/public/config.json",
99
"start": "vinxi start",
10-
"version": "1.0.15"
10+
"version": "1.0.20"
1111
},
1212
"dependencies": {
1313
"@ibm/plex": "6.4.1",

packages/console/app/src/component/footer.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { createAsync } from "@solidjs/router"
22
import { createMemo } from "solid-js"
33
import { github } from "~/lib/github"
4+
import { config } from "~/config"
45

56
export function Footer() {
67
const githubData = createAsync(() => github())
@@ -10,13 +11,13 @@ export function Footer() {
1011
notation: "compact",
1112
compactDisplay: "short",
1213
}).format(githubData()!.stars!)
13-
: "25K",
14+
: config.github.starsFormatted.compact,
1415
)
1516

1617
return (
1718
<footer data-component="footer">
1819
<div data-slot="cell">
19-
<a href="https://github.com/sst/opencode" target="_blank">
20+
<a href={config.github.repoUrl} target="_blank">
2021
GitHub <span>[{starCount()}]</span>
2122
</a>
2223
</div>
@@ -27,7 +28,7 @@ export function Footer() {
2728
<a href="/discord">Discord</a>
2829
</div>
2930
<div data-slot="cell">
30-
<a href="https://x.com/opencode">X</a>
31+
<a href={config.social.twitter}>X</a>
3132
</div>
3233
</footer>
3334
)

packages/console/app/src/component/header.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { createMemo, Match, Show, Switch } from "solid-js"
1818
import { createStore } from "solid-js/store"
1919
import { github } from "~/lib/github"
2020
import { createEffect, onCleanup } from "solid-js"
21+
import { config } from "~/config"
2122
import "./header-context-menu.css"
2223

2324
const isDarkMode = () => window.matchMedia("(prefers-color-scheme: dark)").matches
@@ -42,7 +43,7 @@ export function Header(props: { zen?: boolean }) {
4243
notation: "compact",
4344
compactDisplay: "short",
4445
}).format(githubData()?.stars!)
45-
: "29K",
46+
: config.github.starsFormatted.compact,
4647
)
4748

4849
const [store, setStore] = createStore({
@@ -148,7 +149,7 @@ export function Header(props: { zen?: boolean }) {
148149
<nav data-component="nav-desktop">
149150
<ul>
150151
<li>
151-
<a href="https://github.com/sst/opencode" target="_blank">
152+
<a href={config.github.repoUrl} target="_blank">
152153
GitHub <span>[{starCount()}]</span>
153154
</a>
154155
</li>
@@ -222,7 +223,7 @@ export function Header(props: { zen?: boolean }) {
222223
<A href="/">Home</A>
223224
</li>
224225
<li>
225-
<a href="https://github.com/sst/opencode" target="_blank">
226+
<a href={config.github.repoUrl} target="_blank">
226227
GitHub <span>[{starCount()}]</span>
227228
</a>
228229
</li>

packages/console/app/src/config.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* Application-wide constants and configuration
3+
*/
4+
export const config = {
5+
// GitHub
6+
github: {
7+
repoUrl: "https://github.com/sst/opencode",
8+
starsFormatted: {
9+
compact: "30K",
10+
full: "30,000",
11+
},
12+
},
13+
14+
// Social links
15+
social: {
16+
twitter: "https://x.com/opencode",
17+
discord: "https://discord.gg/opencode",
18+
},
19+
20+
// Static stats (used on landing page)
21+
stats: {
22+
contributors: "250",
23+
commits: "3,500",
24+
monthlyUsers: "300,000",
25+
},
26+
} as const

packages/console/app/src/lib/github.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
import { query } from "@solidjs/router"
2+
import { config } from "~/config"
23

34
export const github = query(async () => {
45
"use server"
56
const headers = {
67
"User-Agent":
78
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
89
}
10+
const apiBaseUrl = config.github.repoUrl.replace(
11+
"https://github.com/",
12+
"https://api.github.com/repos/",
13+
)
914
try {
1015
const [meta, releases, contributors] = await Promise.all([
11-
fetch("https://api.github.com/repos/sst/opencode", { headers }).then((res) => res.json()),
12-
fetch("https://api.github.com/repos/sst/opencode/releases", { headers }).then((res) => res.json()),
13-
fetch("https://api.github.com/repos/sst/opencode/contributors?per_page=1", { headers }),
16+
fetch(apiBaseUrl, { headers }).then((res) => res.json()),
17+
fetch(`${apiBaseUrl}/releases`, { headers }).then((res) => res.json()),
18+
fetch(`${apiBaseUrl}/contributors?per_page=1`, { headers }),
1419
])
1520
const [release] = releases
1621
const contributorCount = Number.parseInt(

0 commit comments

Comments
 (0)