[Bug]: Nightly AppImages broken after v0.1.2#25175

opened16d agobyVVyrnexis

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/desktop

Steps to reproduce

  1. Download and run any of the nightly T3 code AppImages after v0.1.2 "Latest"
  2. No window showing
  3. Look at the logs and see there is "Backend exited unexpectedly; restart scheduled" and its in a never endning looop, or run the AppImage from a terminal to see output

Expected behavior

Expected the T3 Window to show like it does on V0.1.2 Releaase(Latest)

Actual behavior

Never opens the main window,

Impact

Blocks work completely

Version or commit

T3-Code-0.1.3-nightly.20261025.3669-x86_64.AppImage

Environment

ArchLinux, Desktop

Logs or stack traces

shell
1Running the Appimage fromt he terminal produces
2`❯ ./T3-Code-0.1.3-nightly.20261025.3669-x86_64.AppImage
3[08:48:19.126] INFO (#1): runtime logging configured
4 scope: desktop
5 runId: e43897dea0d8
6 component: desktop-startup
7 logDir: /home/vyrnexis/.t3/userdata/logs
8[08:48:19.127] INFO (#1): linux password store configured
9 scope: desktop
10 runId: e43897dea0d8
11 component: desktop-startup
12 passwordStore: electron-default
13 xdgCurrentDesktop: KDE
14 xdgSessionDesktop: KDE
15[08:48:19.129] INFO (#1): app ready
16 scope: desktop
17 runId: e43897dea0d8
18 component: desktop-startup
19[08:48:19.130] INFO (#1): safe storage ready
20 scope: desktop
21 runId: e43897dea0d8
22 component: desktop-startup
23 backend: kwallet6
24[08:48:19.132] INFO (#1): using update channel
25 scope: desktop
26 runId: e43897dea0d8
27 component: desktop-updater
28 channel: nightly
29 allowPrerelease: true
30 allowDowngrade: true
31 fullChangelog: true
32[08:48:19.140] WARN (#1): icon theme cache refresh failed
33 scope: desktop
34 runId: e43897dea0d8
35 component: desktop-linux-url-handler
36 hicolorDir: /home/vyrnexis/.local/share/icons/hicolor
37 exitCode: 1
38[08:48:19.200] INFO (#1): registered URL scheme handler
39 scope: desktop
40 runId: e43897dea0d8
41 component: desktop-linux-url-handler
42 scheme: t3code
43[08:48:19.200] INFO (#1): bootstrap start
44 scope: desktop
45 runId: e43897dea0d8
46 component: desktop-bootstrap
47[08:48:19.217] INFO (#1): bootstrap ipc handlers registered
48 scope: desktop
49 runId: e43897dea0d8
50 component: desktop-bootstrap
51[08:48:19.231] INFO (#1): selected backend port via sequential scan
52 scope: desktop
53 runId: e43897dea0d8
54 component: desktop-bootstrap
55 port: 3773
56 startPort: 3773
57[08:48:19.232] INFO (#1): bootstrap resolved backend endpoint
58 scope: desktop
59 runId: e43897dea0d8
60 component: desktop-bootstrap
61 baseUrl: http://127.0.0.1:3773/
62[08:48:19.241] INFO (#1): installed t3 launcher
63 scope: desktop
64 runId: e43897dea0d8
65 component: desktop-cli-shim
66 shimPath: /home/vyrnexis/.t3/bin/t3
67[08:48:19.241] INFO (#1): bootstrap backend start requested
68 scope: desktop
69 runId: e43897dea0d8
70 component: desktop-bootstrap
71[08:48:19.258] INFO (#1): desktop app control socket ready
72 scope: desktop
73 runId: e43897dea0d8
74 component: desktop-bootstrap
75[08:48:20.000] ERROR (#187): backend exited unexpectedly; restart scheduled
76 scope: desktop
77 runId: e43897dea0d8
78 component: desktop-backend-instance:primary
79 reason: code=1
80 delayMs: 500
81[08:48:21.188] ERROR (#232): backend exited unexpectedly; restart scheduled
82 scope: desktop
83 runId: e43897dea0d8
84 component: desktop-backend-instance:primary
85 reason: code=1
86 delayMs: 1000
87[08:48:22.885] ERROR (#275): backend exited unexpectedly; restart scheduled
88 scope: desktop
89 runId: e43897dea0d8
90 component: desktop-backend-instance:primary
91 reason: code=1
92 delayMs: 2000
93[08:48:25.578] ERROR (#318): backend exited unexpectedly; restart scheduled
94 scope: desktop
95 runId: e43897dea0d8
96 component: desktop-backend-instance:primary
97 reason: code=1
98 delayMs: 4000
99[08:48:30.269] ERROR (#367): backend exited unexpectedly; restart scheduled
100 scope: desktop
101 runId: e43897dea0d8
102 component: desktop-backend-instance:primary
103 reason: code=1
104 delayMs: 8000
105[08:48:34.133] INFO (#176): checking for updates
106 scope: desktop
107 runId: e43897dea0d8
108 component: desktop-updater
109 reason: startup
110Checking for update
111[08:48:34.134] INFO (#415): looking for updates
112 scope: desktop
113 runId: e43897dea0d8
114 component: desktop-updater
115Found version 0.1.3-nightly.20261025.3692 (url: T3-Code-0.1.3-nightly.20261025.3692-x86_64.AppImage, T3-Code-0.1.3-nightly.20261025.3692-amd64.deb)
116[08:48:34.589] INFO (#416): update available
117 scope: desktop
118 runId: e43897dea0d8
119 component: desktop-updater
120 version: 0.1.3-nightly.20261025.3692
121 releaseNoteGroups: 2
122 omittedReleaseCount: 0
123[08:48:38.957] ERROR (#426): backend exited unexpectedly; restart scheduled
124 scope: desktop
125 runId: e43897dea0d8
126 component: desktop-backend-instance:primary
127 reason: code=1
128 delayMs: 10000
129[08:48:49.652] ERROR (#485): backend exited unexpectedly; restart scheduled
130 scope: desktop
131 runId: e43897dea0d8
132 component: desktop-backend-instance:primary
133 reason: code=1
134 delayMs: 10000
135[08:49:00.345] ERROR (#554): backend exited unexpectedly; restart scheduled
136 scope: desktop
137 runId: e43897dea0d8
138 component: desktop-backend-instance:primary
139 reason: code=1
140 delayMs: 10000
141[08:49:11.035] ERROR (#615): backend exited unexpectedly; restart scheduled
142 scope: desktop
143 runId: e43897dea0d8
144 component: desktop-backend-instance:primary
145 reason: code=1
146 delayMs: 10000
147[08:49:21.725] ERROR (#681): backend exited unexpectedly; restart scheduled
148 scope: desktop
149 runId: e43897dea0d8
150 component: desktop-backend-instance:primary
151 reason: code=1
152 delayMs: 10000
153[08:49:32.422] ERROR (#742): backend exited unexpectedly; restart scheduled
154 scope: desktop
155 runId: e43897dea0d8
156 component: desktop-backend-instance:primary
157 reason: code=1
158 delayMs: 10000
159[08:49:43.121] ERROR (#803): backend exited unexpectedly; restart scheduled
160 scope: desktop
161 runId: e43897dea0d8
162 component: desktop-backend-instance:primary
163 reason: code=1
164 delayMs: 10000
165[08:49:53.821] ERROR (#869): backend exited unexpectedly; restart scheduled
166 scope: desktop
167 runId: e43897dea0d8
168 component: desktop-backend-instance:primary
169 reason: code=1
170 delayMs: 10000
171[08:50:04.513] ERROR (#930): backend exited unexpectedly; restart scheduled
172 scope: desktop
173 runId: e43897dea0d8
174 component: desktop-backend-instance:primary
175 reason: code=1
176 delayMs: 10000
177[08:50:15.200] ERROR (#991): backend exited unexpectedly; restart scheduled
178 scope: desktop
179 runId: e43897dea0d8
180 component: desktop-backend-instance:primary
181 reason: code=1
182 delayMs: 10000
183[08:50:25.895] ERROR (#1059): backend exited unexpectedly; restart scheduled
184 scope: desktop
185 runId: e43897dea0d8
186 component: desktop-backend-instance:primary
187 reason: code=1
188 delayMs: 10000`

Screenshots, recordings, or supporting files

No response

Workaround

No response

I ran the reported 0.1.3-nightly.20261025.3669 AppImage (extracted, via AppRun) on Linux x86_64 under X11/Xvfb with an unlocked libsecret store and --no-sandbox --disable-gpu. It reached backend ready and main window created with both fresh state and a v0.1.2-created database seeded with 10 projects and 100 stopped threads. A desktop build of current main (f88b33a16d) also opened with both fixtures. No backend restart loop appeared during these startup checks. This does not cover Arch/KDE's kwallet6 setup.

The supplied log shows the backend exit code but not its cause. Please include the error entries from ~/.t3/userdata/logs/server.trace.ndjson around the first failed startup, plus any backend stdout/stderr entries in desktop.trace.ndjson at the same time. Redact credentials and private paths. Those entries should distinguish a database migration failure from another backend startup error.

Reproduction transcript · Launch driver · Synthetic fixture seed

Synced from GitHub

@juliusmarminge Thanks for testing. I found the cause in ~/.t3/userdata/logs/server-child.log. Every backend start fails with:

1MigrationError: This database's migration history would skip required schema migrations: 68_ShellStopRequestIndex (recorded: PeerLinks), 69_ThreadMessageSearch (recorded: PeerLinkFence). The migrator skips every id up to the highest recorded id (70), regardless of name. It was probably written by a different build. Start the build that wrote it, or report this migration history so an upgrade path can be added.
2 at assertV2MigrationsCanRun (.../apps/server/dist/binCli-bN-Qw1vL.mjs:134360:25)
3 at runMigrations (.../apps/server/dist/binCli-bN-Qw1vL.mjs:134424:9)
4 at server.runServerCommand (.../apps/server/dist/binCli-bN-Qw1vL.mjs:345194:16)

effect_sql_migrations in statev2.sqlite:

170 WaitingLinkRequestIndex 2026-10-22 12:20:06
269 PeerLinkFence 2026-10-22 12:20:06
368 PeerLinks 2026-10-22 12:20:06
467 WebhookDedupe 2026-10-21 14:01:20
566 RepairClientSettlementTimestamps

068_PeerLinks, 069_PeerLinkFence and 070_WaitingLinkRequestIndex only exist in v0.1.2-preview.20261022.3511 and v0.1.2-preview.20261022.3516. Main later used 68/69 for ShellStopRequestIndex / ThreadMessageSearch and moved PeerLinks to 70–72, which is still the case in v0.1.3-preview.20261026.3702. So this database once ran one of those preview builds.

v0.1.2 starts fine because it stops at 67 and ignores the higher ids. A database created by v0.1.2 won't reproduce it; one migrated by the 0.1.2 preview will.

Could an upgrade path be added for this history (68–70 recorded as the PeerLinks migrations)? I'm staying on v0.1.2 until then and haven't edited the database.

Synced from GitHub

Update: I got the nightly running with this, with T3 Code closed and after backing up statev2.sqlite:

sql
1DELETE FROM effect_sql_migrations
2 WHERE (migration_id, name) IN (VALUES (68,'PeerLinks'), (69,'PeerLinkFence'), (70,'WaitingLinkRequestIndex'));
3DROP INDEX IF EXISTS orchestration_v2_projection_turn_items_waiting_link_idx;
4DROP TABLE IF EXISTS peer_environment_links; -- was empty

That returns the database to the v0.1.2 state (67). 0.1.3-nightly.20261025.3692 then applied 68_ShellStopRequestIndex and 69_ThreadMessageSearch and started normally.

Dropping the PeerLinks leftovers matters because the later 071_PeerLinkFence (ALTER TABLE … ADD COLUMN fenced) and 072_WaitingLinkRequestIndex (CREATE INDEX without IF NOT EXISTS) would otherwise fail once PeerLinks returns as 70–72. This is only safe if peer_environment_links is empty. An automatic version of this in the migrator would cover anyone else who ran the 0.1.2 preview builds.