Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
f24251f
sync
fwang Jan 13, 2026
8ae10f1
sync
fwang Jan 13, 2026
b7a1d8f
Update Nix flake.lock and x86_64-linux hash
actions-user Jan 13, 2026
f3d4dd5
Update aarch64-darwin hash
actions-user Jan 13, 2026
bee4b68
fix(TUI): make tui work when OPENCODE_SERVER_PASSWORD is set (#8179)
LeonMueller-OneAndOnly Jan 13, 2026
7aa7dd3
chore: generate
actions-user Jan 13, 2026
eaf18d9
wip: black
fwang Jan 13, 2026
2f7b2cf
docs: Update plan mode restrictions (#8290)
Eduard-Voiculescu Jan 13, 2026
b8828f2
docs: add 302ai provider (#8142)
mthezi Jan 13, 2026
73d5cac
fix: add missing metadata() and ask() defintions to ToolContext type …
danielmbrasil Jan 13, 2026
1ff46c7
fix(tui): track all timeouts in Footer to prevent memory leak (#8255)
sauerdaniel Jan 14, 2026
562f067
fix: deduplicate file refs in sent prompts (#8303)
felixzsh Jan 14, 2026
f242541
chore: generate
actions-user Jan 14, 2026
45fa4ed
wip: black
fwang Jan 14, 2026
82319bb
wip: black
fwang Jan 14, 2026
aa522aa
release: v1.1.17
Jan 13, 2026
4368053
add fullscreen view to permission prompt
thdxr Jan 13, 2026
15e80fc
chore: generate
actions-user Jan 13, 2026
a761f66
fix(desktop): correct health check endpoint URL to /global/health (#8…
usvimal Jan 13, 2026
3c9d80d
feat(desktop): Adding Provider Icons (#8215)
dbpolito Jan 13, 2026
fcaa041
chore: generate
actions-user Jan 13, 2026
bc557e8
console: reduce desktop download cache ttl to 5 minutes
Brendonovich Jan 13, 2026
5b699a0
fix(github): add persist-credentials: false to workflow templates (#8…
LeonMueller-OneAndOnly Jan 13, 2026
c67b0a9
release: v1.1.18
Jan 13, 2026
dc654c9
fix(desktop): Revert provider icon on select model dialog (#8245)
dbpolito Jan 13, 2026
e37104c
feat: add Undertale and Deltarune built-in themes (#8240)
cmdr-chara Jan 13, 2026
f642a6c
chore: generate
actions-user Jan 13, 2026
dfa59dd
feat(desktop): Ask Question Tool Support (#8232)
dbpolito Jan 13, 2026
4dc7266
fix(mcp): close existing client before reassignment to prevent leaks …
sauerdaniel Jan 13, 2026
9b76337
fix(state): delete key from recordsByKey on instance disposal (#8252)
sauerdaniel Jan 13, 2026
a184714
docs: document ~/.claude/CLAUDE.md compatibility behavior (#8268)
zeke Jan 13, 2026
a520c4f
feat: Add GitLab Duo Agentic Chat Provider Support (#7333)
vglafirov Jan 13, 2026
0ddf8e6
fix(cli): mcp auth duplicate radio button icon (#8273)
dmmulroy Jan 13, 2026
d831432
Update Nix flake.lock and x86_64-linux hash
actions-user Jan 13, 2026
d99d131
Update aarch64-darwin hash
actions-user Jan 13, 2026
7599396
tweak: ensure external dir and bash tool invocations render workdir d…
rekram1-node Jan 13, 2026
4eb6b57
tweak: external dir permission rendering in tui
rekram1-node Jan 13, 2026
16b2bfa
add family to gpt 5.2 codex in codex plugin
rekram1-node Jan 13, 2026
1fccb3b
fix(prompt-input): handle Shift+Enter before IME check to prevent stu…
josephbharrison Jan 13, 2026
3997d3f
feat: add plan mode with enter/exit tools (#8281)
thdxr Jan 13, 2026
29703ae
chore: generate
actions-user Jan 13, 2026
cd6e073
test: fix plan agent test path from .opencode/plan/* to .opencode/pla…
thdxr Jan 13, 2026
4c37e17
remove plan
thdxr Jan 13, 2026
73adf7e
fix: update User-Agent string to latest Chrome version in webfetch (#…
AlanThiec Jan 13, 2026
905226c
fix: Add Plugin Mocks to Provider Tests (#8276)
vglafirov Jan 13, 2026
874e22a
chore: generate
actions-user Jan 13, 2026
bcdaf7e
tweak: prompt for explore agent better
rekram1-node Jan 13, 2026
0026bc5
do not allow agent to ask custom-less questions
thdxr Jan 13, 2026
16d516d
release: v1.1.19
Jan 13, 2026
90eaf9b
fix(TUI): make tui work when OPENCODE_SERVER_PASSWORD is set (#8179)
LeonMueller-OneAndOnly Jan 13, 2026
a160a35
chore: generate
actions-user Jan 13, 2026
f4a28b2
docs: Update plan mode restrictions (#8290)
Eduard-Voiculescu Jan 13, 2026
adcc661
docs: add 302ai provider (#8142)
mthezi Jan 13, 2026
86900d7
fix: add missing metadata() and ask() defintions to ToolContext type …
danielmbrasil Jan 13, 2026
8917dfd
fix(tui): track all timeouts in Footer to prevent memory leak (#8255)
sauerdaniel Jan 14, 2026
e2ac588
fix: deduplicate file refs in sent prompts (#8303)
felixzsh Jan 14, 2026
2aed4d2
chore: generate
actions-user Jan 14, 2026
6fe265e
Merge branch 'zen-black' into dev
fwang Jan 14, 2026
3839d70
chore: generate
actions-user Jan 14, 2026
9b2d595
Update Nix flake.lock and x86_64-linux hash
actions-user Jan 14, 2026
ff669d4
Update aarch64-darwin hash
actions-user Jan 14, 2026
f9fcdea
fix(session): skip duplicate system prompt for Codex OAuth sessions (…
zerone0x Jan 14, 2026
a57c866
feat: show connected providers in /connect dialog (#8351)
AksharP5 Jan 14, 2026
45a770c
fix(opencode): fix docker image after sst rename in tips (#8376)
goniz Jan 14, 2026
76b10d8
chore: generate
actions-user Jan 14, 2026
4347a77
ignore: update download stats 2026-01-14
actions-user Jan 14, 2026
e95e10d
docs(prd): mark codex token refresh PR task as complete
shuv1337 Jan 14, 2026
29da1af
test(auth): verify backwards compatibility for OAuth metadata fields
shuv1337 Jan 14, 2026
dd7799f
chore(prd): mark extractUserInfo tasks as complete
shuv1337 Jan 14, 2026
d2684cd
chore(prd): mark OAuth callback integration tasks as complete
shuv1337 Jan 14, 2026
ee6ca10
fix(app): file listing (#8309)
neriousy Jan 14, 2026
fb784b6
chore(prd): mark normalizePlanType tasks as complete
shuv1337 Jan 14, 2026
81ef334
feat(server): add GET /auth/info/:providerID endpoint for account met…
shuv1337 Jan 14, 2026
bde53e0
chore(prd): mark PR merge and SDK tasks as complete
shuv1337 Jan 14, 2026
e2fecb2
chore(prd): mark legacy codex cleanup task as complete
shuv1337 Jan 14, 2026
3d285aa
chore: mark session complete
shuv1337 Jan 14, 2026
c035e5e
chore(prd): mark background task implementation as complete
shuv1337 Jan 14, 2026
50e3409
chore(prd): mark manifest.ts creation as complete
shuv1337 Jan 14, 2026
1a7cd51
chore(prd): mark skill index and installer files as complete
shuv1337 Jan 14, 2026
fcc561e
fix plan mode when not in git worktree
thdxr Jan 14, 2026
f406bb0
chore(prd): mark github fetcher as complete
shuv1337 Jan 14, 2026
5c830c0
chore(prd): mark clawdhub and url fetchers as complete
shuv1337 Jan 14, 2026
05cbb11
fix(ui): layout-bottom icons (#8330)
ajzbc Jan 14, 2026
077ca44
fix(desktop): "load more" button behavior in desktop sidebar (#8430)
shanebishop1 Jan 14, 2026
2256362
chore: generate
actions-user Jan 14, 2026
09ff3b9
release: v1.1.20
Jan 14, 2026
070e41e
sync: merge upstream v1.1.20 into integration
shuv1337 Jan 14, 2026
247a019
sync: record last synced tag v1.1.20
shuv1337 Jan 14, 2026
d346384
fix: suppress TS2589 type recursion error in server route chain
shuv1337 Jan 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/last-synced-tag
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.1.19
v1.1.20
Empty file added .ralph-done
Empty file.
1 change: 1 addition & 0 deletions STATS.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,4 @@
| 2026-01-11 | 2,836,394 (+204,371) | 1,530,479 (+26,809) | 4,366,873 (+231,180) |
| 2026-01-12 | 3,053,594 (+217,200) | 1,553,671 (+23,192) | 4,607,265 (+240,392) |
| 2026-01-13 | 3,297,078 (+243,484) | 1,595,062 (+41,391) | 4,892,140 (+284,875) |
| 2026-01-14 | 3,568,928 (+271,850) | 1,645,362 (+50,300) | 5,214,290 (+322,150) |
6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions infra/console.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ const ZEN_MODELS = [
]
const ZEN_BLACK = new sst.Secret("ZEN_BLACK")
const STRIPE_SECRET_KEY = new sst.Secret("STRIPE_SECRET_KEY")
const STRIPE_PUBLISHABLE_KEY = new sst.Secret("STRIPE_PUBLISHABLE_KEY")
const AUTH_API_URL = new sst.Linkable("AUTH_API_URL", {
properties: { value: auth.url.apply((url) => url!) },
})
Expand Down Expand Up @@ -177,6 +178,7 @@ new sst.cloudflare.x.SolidStart("Console", {
//VITE_DOCS_URL: web.url.apply((url) => url!),
//VITE_API_URL: gateway.url.apply((url) => url!),
VITE_AUTH_URL: auth.url.apply((url) => url!),
VITE_STRIPE_PUBLISHABLE_KEY: STRIPE_PUBLISHABLE_KEY.value,
},
transform: {
server: {
Expand Down
4 changes: 2 additions & 2 deletions nix/hashes.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"nodeModules": {
"x86_64-linux": "sha256-x6A/XT1i3bjakfAj0A1wV4n2s9rpflMDceTeppdP6tE=",
"aarch64-darwin": "sha256-RkamQYbpjJqpHHf76em9lPgeI9k4/kaCf7T+4xHaizY="
"x86_64-linux": "sha256-wENwhwRVfgoVyA9YNGcG+fAfu46JxK4xvNgiPbRt//s=",
"aarch64-darwin": "sha256-vm1DYl1erlbaqz5NHHlnZEMuFmidr/UkS84nIqLJ96Q="
}
}
2 changes: 1 addition & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/app",
"version": "1.1.19",
"version": "1.1.20",
"description": "",
"type": "module",
"exports": {
Expand Down
12 changes: 9 additions & 3 deletions packages/app/src/context/global-sync.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ type State = {
config: Config
path: Path
session: Session[]
sessionTotal: number
session_status: {
[sessionID: string]: SessionStatus
}
Expand Down Expand Up @@ -110,6 +111,7 @@ function createGlobalSync() {
agent: [],
command: [],
session: [],
sessionTotal: 0,
session_status: {},
session_diff: {},
todo: {},
Expand All @@ -131,8 +133,10 @@ function createGlobalSync() {

async function loadSessions(directory: string) {
const [store, setStore] = child(directory)
globalSDK.client.session
.list({ directory })
const limit = store.limit

return globalSDK.client.session
.list({ directory, roots: true })
.then((x) => {
const fourHoursAgo = Date.now() - 4 * 60 * 60 * 1000
const data = Array.isArray(x.data) ? x.data : []
Expand All @@ -143,10 +147,12 @@ function createGlobalSync() {
.sort((a, b) => a.id.localeCompare(b.id))
// Include up to the limit, plus any updated in the last 4 hours
const sessions = nonArchived.filter((s, i) => {
if (i < store.limit) return true
if (i < limit) return true
const updated = new Date(s.time?.updated ?? s.time?.created).getTime()
return updated > fourHoursAgo
})
// Store total session count (used for "load more" pagination)
setStore("sessionTotal", nonArchived.length)
setStore("session", reconcile(sessions, { key: "id" }))
})
.catch((err) => {
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/pages/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -955,7 +955,7 @@ export default function Layout(props: ParentProps) {
.toSorted(sortSessions),
)
const rootSessions = createMemo(() => sessions().filter((s) => !s.parentID))
const hasMoreSessions = createMemo(() => store.session.length >= store.limit)
const hasMoreSessions = createMemo(() => store.sessionTotal > store.session.length)
const loadMoreSessions = async () => {
setProjectStore("limit", (limit) => limit + 5)
await globalSync.project.loadSessions(props.project.worktree)
Expand Down
6 changes: 4 additions & 2 deletions packages/console/app/package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"name": "@opencode-ai/console-app",
"version": "1.1.19",
"version": "1.1.20",
"type": "module",
"license": "MIT",
"scripts": {
"typecheck": "tsgo --noEmit",
"dev": "vite dev --host 0.0.0.0",
"dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev",
"dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai VITE_STRIPE_PUBLISHABLE_KEY=pk_test_51RtuLNE7fOCwHSD4mewwzFejyytjdGoSDK7CAvhbffwaZnPbNb2rwJICw6LTOXCmWO320fSNXvb5NzI08RZVkAxd00syfqrW7t bun sst shell --stage=dev bun dev",
"build": "./script/generate-sitemap.ts && vite build && ../../opencode/script/schema.ts ./.output/public/config.json",
"start": "vite start"
},
Expand All @@ -23,10 +23,12 @@
"@solidjs/meta": "catalog:",
"@solidjs/router": "catalog:",
"@solidjs/start": "catalog:",
"@stripe/stripe-js": "8.6.1",
"chart.js": "4.5.1",
"nitro": "3.0.1-alpha.1",
"solid-js": "catalog:",
"solid-list": "0.3.0",
"solid-stripe": "0.8.1",
"vite": "catalog:",
"zod": "catalog:"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { useAuthSession } from "~/context/auth"

export async function GET(input: APIEvent) {
const url = new URL(input.request.url)

try {
const code = url.searchParams.get("code")
if (!code) throw new Error("No code found")
Expand All @@ -27,7 +28,7 @@ export async function GET(input: APIEvent) {
current: id,
}
})
return redirect("/auth")
return redirect(url.pathname === "/auth/callback" ? "/auth" : url.pathname.replace("/auth/callback", ""))
} catch (e: any) {
return new Response(
JSON.stringify({
Expand Down
5 changes: 4 additions & 1 deletion packages/console/app/src/routes/auth/authorize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ import type { APIEvent } from "@solidjs/start/server"
import { AuthClient } from "~/context/auth"

export async function GET(input: APIEvent) {
const result = await AuthClient.authorize(new URL("./callback", input.request.url).toString(), "code")
const url = new URL(input.request.url)
const cont = url.searchParams.get("continue") ?? ""
const callbackUrl = new URL(`./callback${cont}`, input.request.url)
const result = await AuthClient.authorize(callbackUrl.toString(), "code")
return Response.redirect(result.url, 302)
}
Loading