detached 31fa4a3

fix: drizzle commands

commit
31fa4a38f34062831c689a6491d7e7630f9e80d6
author
Kit · · 2025-02-13 07:44 UTC
parent
5d83be3
signature
SSH UnverifiedSHA256:H91DFuEG4jpk5edzLA4aUKkpv4zv9Q339ipRmkph6Tk The key is unknown
4 files · +399 -2
A drizzle/0001_blushing_jean_grey.sql +11 -0
@@ -0,0 +1,11 @@
1+CREATE TABLE `sessions` (
2+ `id` text PRIMARY KEY NOT NULL,
3+ `user_id` text NOT NULL,
4+ `expires_at` integer NOT NULL,
5+ `created_at` integer NOT NULL,
6+ FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
7+);
8+--> statement-breakpoint
9+DROP INDEX `users_email_unique`;--> statement-breakpoint
10+ALTER TABLE `users` ALTER COLUMN "status" TO "status" text NOT NULL DEFAULT 'offline';--> statement-breakpoint
11+ALTER TABLE `users` DROP COLUMN `email`;⏎̸
@@ -0,0 +1,11 @@
1+CREATE TABLE `sessions` (
2+ `id` text PRIMARY KEY NOT NULL,
3+ `user_id` text NOT NULL,
4+ `expires_at` integer NOT NULL,
5+ `created_at` integer NOT NULL,
6+ FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
7+);
8+--> statement-breakpoint
9+DROP INDEX `users_email_unique`;--> statement-breakpoint
10+ALTER TABLE `users` ALTER COLUMN "status" TO "status" text NOT NULL DEFAULT 'offline';--> statement-breakpoint
11+ALTER TABLE `users` DROP COLUMN `email`;⏎̸
A drizzle/meta/0001_snapshot.json +379 -0
@@ -0,0 +1,379 @@
1+{
2+ "version": "6",
3+ "dialect": "sqlite",
4+ "id": "9090026e-dae4-4b69-8539-471ebf6ec7e6",
5+ "prevId": "16b13426-2b9d-4084-8e17-71f9de0f72d0",
6+ "tables": {
7+ "chat_rooms": {
8+ "name": "chat_rooms",
9+ "columns": {
10+ "id": {
11+ "name": "id",
12+ "type": "text",
13+ "primaryKey": true,
14+ "notNull": true,
15+ "autoincrement": false
16+ },
17+ "name": {
18+ "name": "name",
19+ "type": "text",
20+ "primaryKey": false,
21+ "notNull": false,
22+ "autoincrement": false
23+ },
24+ "type": {
25+ "name": "type",
26+ "type": "text",
27+ "primaryKey": false,
28+ "notNull": true,
29+ "autoincrement": false,
30+ "default": "'direct'"
31+ },
32+ "created_at": {
33+ "name": "created_at",
34+ "type": "integer",
35+ "primaryKey": false,
36+ "notNull": true,
37+ "autoincrement": false
38+ }
39+ },
40+ "indexes": {},
41+ "foreignKeys": {},
42+ "compositePrimaryKeys": {},
43+ "uniqueConstraints": {},
44+ "checkConstraints": {}
45+ },
46+ "messages": {
47+ "name": "messages",
48+ "columns": {
49+ "id": {
50+ "name": "id",
51+ "type": "text",
52+ "primaryKey": true,
53+ "notNull": true,
54+ "autoincrement": false
55+ },
56+ "chat_room_id": {
57+ "name": "chat_room_id",
58+ "type": "text",
59+ "primaryKey": false,
60+ "notNull": true,
61+ "autoincrement": false
62+ },
63+ "sender_id": {
64+ "name": "sender_id",
65+ "type": "text",
66+ "primaryKey": false,
67+ "notNull": true,
68+ "autoincrement": false
69+ },
70+ "content": {
71+ "name": "content",
72+ "type": "text",
73+ "primaryKey": false,
74+ "notNull": true,
75+ "autoincrement": false
76+ },
77+ "type": {
78+ "name": "type",
79+ "type": "text",
80+ "primaryKey": false,
81+ "notNull": true,
82+ "autoincrement": false,
83+ "default": "'chat'"
84+ },
85+ "timestamp": {
86+ "name": "timestamp",
87+ "type": "integer",
88+ "primaryKey": false,
89+ "notNull": true,
90+ "autoincrement": false
91+ }
92+ },
93+ "indexes": {},
94+ "foreignKeys": {
95+ "messages_chat_room_id_chat_rooms_id_fk": {
96+ "name": "messages_chat_room_id_chat_rooms_id_fk",
97+ "tableFrom": "messages",
98+ "tableTo": "chat_rooms",
99+ "columnsFrom": [
100+ "chat_room_id"
101+ ],
102+ "columnsTo": [
103+ "id"
104+ ],
105+ "onDelete": "no action",
106+ "onUpdate": "no action"
107+ },
108+ "messages_sender_id_users_id_fk": {
109+ "name": "messages_sender_id_users_id_fk",
110+ "tableFrom": "messages",
111+ "tableTo": "users",
112+ "columnsFrom": [
113+ "sender_id"
114+ ],
115+ "columnsTo": [
116+ "id"
117+ ],
118+ "onDelete": "no action",
119+ "onUpdate": "no action"
120+ }
121+ },
122+ "compositePrimaryKeys": {},
123+ "uniqueConstraints": {},
124+ "checkConstraints": {}
125+ },
126+ "sessions": {
127+ "name": "sessions",
128+ "columns": {
129+ "id": {
130+ "name": "id",
131+ "type": "text",
132+ "primaryKey": true,
133+ "notNull": true,
134+ "autoincrement": false
135+ },
136+ "user_id": {
137+ "name": "user_id",
138+ "type": "text",
139+ "primaryKey": false,
140+ "notNull": true,
141+ "autoincrement": false
142+ },
143+ "expires_at": {
144+ "name": "expires_at",
145+ "type": "integer",
146+ "primaryKey": false,
147+ "notNull": true,
148+ "autoincrement": false
149+ },
150+ "created_at": {
151+ "name": "created_at",
152+ "type": "integer",
153+ "primaryKey": false,
154+ "notNull": true,
155+ "autoincrement": false
156+ }
157+ },
158+ "indexes": {},
159+ "foreignKeys": {
160+ "sessions_user_id_users_id_fk": {
161+ "name": "sessions_user_id_users_id_fk",
162+ "tableFrom": "sessions",
163+ "tableTo": "users",
164+ "columnsFrom": [
165+ "user_id"
166+ ],
167+ "columnsTo": [
168+ "id"
169+ ],
170+ "onDelete": "no action",
171+ "onUpdate": "no action"
172+ }
173+ },
174+ "compositePrimaryKeys": {},
175+ "uniqueConstraints": {},
176+ "checkConstraints": {}
177+ },
178+ "users": {
179+ "name": "users",
180+ "columns": {
181+ "id": {
182+ "name": "id",
183+ "type": "text",
184+ "primaryKey": true,
185+ "notNull": true,
186+ "autoincrement": false
187+ },
188+ "password": {
189+ "name": "password",
190+ "type": "text",
191+ "primaryKey": false,
192+ "notNull": true,
193+ "autoincrement": false
194+ },
195+ "nickname": {
196+ "name": "nickname",
197+ "type": "text",
198+ "primaryKey": false,
199+ "notNull": true,
200+ "autoincrement": false
201+ },
202+ "status": {
203+ "name": "status",
204+ "type": "text",
205+ "primaryKey": false,
206+ "notNull": true,
207+ "autoincrement": false,
208+ "default": "'offline'"
209+ },
210+ "avatar_url": {
211+ "name": "avatar_url",
212+ "type": "text",
213+ "primaryKey": false,
214+ "notNull": false,
215+ "autoincrement": false
216+ },
217+ "created_at": {
218+ "name": "created_at",
219+ "type": "integer",
220+ "primaryKey": false,
221+ "notNull": true,
222+ "autoincrement": false
223+ },
224+ "last_seen": {
225+ "name": "last_seen",
226+ "type": "integer",
227+ "primaryKey": false,
228+ "notNull": false,
229+ "autoincrement": false
230+ }
231+ },
232+ "indexes": {},
233+ "foreignKeys": {},
234+ "compositePrimaryKeys": {},
235+ "uniqueConstraints": {},
236+ "checkConstraints": {}
237+ }
238+ },
239+ "views": {
240+ "chat_room_view": {
241+ "columns": {
242+ "id": {
243+ "name": "id",
244+ "type": "text",
245+ "primaryKey": true,
246+ "notNull": true,
247+ "autoincrement": false
248+ },
249+ "name": {
250+ "name": "name",
251+ "type": "text",
252+ "primaryKey": false,
253+ "notNull": false,
254+ "autoincrement": false
255+ },
256+ "type": {
257+ "name": "type",
258+ "type": "text",
259+ "primaryKey": false,
260+ "notNull": true,
261+ "autoincrement": false,
262+ "default": "'direct'"
263+ },
264+ "created_at": {
265+ "name": "created_at",
266+ "type": "integer",
267+ "primaryKey": false,
268+ "notNull": true,
269+ "autoincrement": false
270+ }
271+ },
272+ "name": "chat_room_view",
273+ "isExisting": false,
274+ "definition": "select \"id\", \"name\", \"type\", \"created_at\" from \"chat_rooms\""
275+ },
276+ "message_view": {
277+ "columns": {
278+ "id": {
279+ "name": "id",
280+ "type": "text",
281+ "primaryKey": true,
282+ "notNull": true,
283+ "autoincrement": false
284+ },
285+ "content": {
286+ "name": "content",
287+ "type": "text",
288+ "primaryKey": false,
289+ "notNull": true,
290+ "autoincrement": false
291+ },
292+ "type": {
293+ "name": "type",
294+ "type": "text",
295+ "primaryKey": false,
296+ "notNull": true,
297+ "autoincrement": false,
298+ "default": "'chat'"
299+ },
300+ "timestamp": {
301+ "name": "timestamp",
302+ "type": "integer",
303+ "primaryKey": false,
304+ "notNull": true,
305+ "autoincrement": false
306+ },
307+ "nickname": {
308+ "name": "nickname",
309+ "type": "text",
310+ "primaryKey": false,
311+ "notNull": true,
312+ "autoincrement": false
313+ },
314+ "name": {
315+ "name": "name",
316+ "type": "text",
317+ "primaryKey": false,
318+ "notNull": false,
319+ "autoincrement": false
320+ }
321+ },
322+ "name": "message_view",
323+ "isExisting": false,
324+ "definition": "select \"messages\".\"id\", \"messages\".\"content\", \"messages\".\"type\", \"messages\".\"timestamp\", \"users\".\"nickname\", \"chat_rooms\".\"name\" from \"messages\" left join \"users\" on \"messages\".\"sender_id\" = \"users\".\"id\" left join \"chat_rooms\" on \"messages\".\"chat_room_id\" = \"chat_rooms\".\"id\""
325+ },
326+ "user_view": {
327+ "columns": {
328+ "id": {
329+ "name": "id",
330+ "type": "text",
331+ "primaryKey": true,
332+ "notNull": true,
333+ "autoincrement": false
334+ },
335+ "nickname": {
336+ "name": "nickname",
337+ "type": "text",
338+ "primaryKey": false,
339+ "notNull": true,
340+ "autoincrement": false
341+ },
342+ "status": {
343+ "name": "status",
344+ "type": "text",
345+ "primaryKey": false,
346+ "notNull": true,
347+ "autoincrement": false,
348+ "default": "'offline'"
349+ },
350+ "avatar_url": {
351+ "name": "avatar_url",
352+ "type": "text",
353+ "primaryKey": false,
354+ "notNull": false,
355+ "autoincrement": false
356+ },
357+ "last_seen": {
358+ "name": "last_seen",
359+ "type": "integer",
360+ "primaryKey": false,
361+ "notNull": false,
362+ "autoincrement": false
363+ }
364+ },
365+ "name": "user_view",
366+ "isExisting": false,
367+ "definition": "select \"id\", \"nickname\", \"status\", \"avatar_url\", \"last_seen\" from \"users\""
368+ }
369+ },
370+ "enums": {},
371+ "_meta": {
372+ "schemas": {},
373+ "tables": {},
374+ "columns": {}
375+ },
376+ "internal": {
377+ "indexes": {}
378+ }
379+}⏎̸
@@ -0,0 +1,379 @@
1+{
2+ "version": "6",
3+ "dialect": "sqlite",
4+ "id": "9090026e-dae4-4b69-8539-471ebf6ec7e6",
5+ "prevId": "16b13426-2b9d-4084-8e17-71f9de0f72d0",
6+ "tables": {
7+ "chat_rooms": {
8+ "name": "chat_rooms",
9+ "columns": {
10+ "id": {
11+ "name": "id",
12+ "type": "text",
13+ "primaryKey": true,
14+ "notNull": true,
15+ "autoincrement": false
16+ },
17+ "name": {
18+ "name": "name",
19+ "type": "text",
20+ "primaryKey": false,
21+ "notNull": false,
22+ "autoincrement": false
23+ },
24+ "type": {
25+ "name": "type",
26+ "type": "text",
27+ "primaryKey": false,
28+ "notNull": true,
29+ "autoincrement": false,
30+ "default": "'direct'"
31+ },
32+ "created_at": {
33+ "name": "created_at",
34+ "type": "integer",
35+ "primaryKey": false,
36+ "notNull": true,
37+ "autoincrement": false
38+ }
39+ },
40+ "indexes": {},
41+ "foreignKeys": {},
42+ "compositePrimaryKeys": {},
43+ "uniqueConstraints": {},
44+ "checkConstraints": {}
45+ },
46+ "messages": {
47+ "name": "messages",
48+ "columns": {
49+ "id": {
50+ "name": "id",
51+ "type": "text",
52+ "primaryKey": true,
53+ "notNull": true,
54+ "autoincrement": false
55+ },
56+ "chat_room_id": {
57+ "name": "chat_room_id",
58+ "type": "text",
59+ "primaryKey": false,
60+ "notNull": true,
61+ "autoincrement": false
62+ },
63+ "sender_id": {
64+ "name": "sender_id",
65+ "type": "text",
66+ "primaryKey": false,
67+ "notNull": true,
68+ "autoincrement": false
69+ },
70+ "content": {
71+ "name": "content",
72+ "type": "text",
73+ "primaryKey": false,
74+ "notNull": true,
75+ "autoincrement": false
76+ },
77+ "type": {
78+ "name": "type",
79+ "type": "text",
80+ "primaryKey": false,
81+ "notNull": true,
82+ "autoincrement": false,
83+ "default": "'chat'"
84+ },
85+ "timestamp": {
86+ "name": "timestamp",
87+ "type": "integer",
88+ "primaryKey": false,
89+ "notNull": true,
90+ "autoincrement": false
91+ }
92+ },
93+ "indexes": {},
94+ "foreignKeys": {
95+ "messages_chat_room_id_chat_rooms_id_fk": {
96+ "name": "messages_chat_room_id_chat_rooms_id_fk",
97+ "tableFrom": "messages",
98+ "tableTo": "chat_rooms",
99+ "columnsFrom": [
100+ "chat_room_id"
101+ ],
102+ "columnsTo": [
103+ "id"
104+ ],
105+ "onDelete": "no action",
106+ "onUpdate": "no action"
107+ },
108+ "messages_sender_id_users_id_fk": {
109+ "name": "messages_sender_id_users_id_fk",
110+ "tableFrom": "messages",
111+ "tableTo": "users",
112+ "columnsFrom": [
113+ "sender_id"
114+ ],
115+ "columnsTo": [
116+ "id"
117+ ],
118+ "onDelete": "no action",
119+ "onUpdate": "no action"
120+ }
121+ },
122+ "compositePrimaryKeys": {},
123+ "uniqueConstraints": {},
124+ "checkConstraints": {}
125+ },
126+ "sessions": {
127+ "name": "sessions",
128+ "columns": {
129+ "id": {
130+ "name": "id",
131+ "type": "text",
132+ "primaryKey": true,
133+ "notNull": true,
134+ "autoincrement": false
135+ },
136+ "user_id": {
137+ "name": "user_id",
138+ "type": "text",
139+ "primaryKey": false,
140+ "notNull": true,
141+ "autoincrement": false
142+ },
143+ "expires_at": {
144+ "name": "expires_at",
145+ "type": "integer",
146+ "primaryKey": false,
147+ "notNull": true,
148+ "autoincrement": false
149+ },
150+ "created_at": {
151+ "name": "created_at",
152+ "type": "integer",
153+ "primaryKey": false,
154+ "notNull": true,
155+ "autoincrement": false
156+ }
157+ },
158+ "indexes": {},
159+ "foreignKeys": {
160+ "sessions_user_id_users_id_fk": {
161+ "name": "sessions_user_id_users_id_fk",
162+ "tableFrom": "sessions",
163+ "tableTo": "users",
164+ "columnsFrom": [
165+ "user_id"
166+ ],
167+ "columnsTo": [
168+ "id"
169+ ],
170+ "onDelete": "no action",
171+ "onUpdate": "no action"
172+ }
173+ },
174+ "compositePrimaryKeys": {},
175+ "uniqueConstraints": {},
176+ "checkConstraints": {}
177+ },
178+ "users": {
179+ "name": "users",
180+ "columns": {
181+ "id": {
182+ "name": "id",
183+ "type": "text",
184+ "primaryKey": true,
185+ "notNull": true,
186+ "autoincrement": false
187+ },
188+ "password": {
189+ "name": "password",
190+ "type": "text",
191+ "primaryKey": false,
192+ "notNull": true,
193+ "autoincrement": false
194+ },
195+ "nickname": {
196+ "name": "nickname",
197+ "type": "text",
198+ "primaryKey": false,
199+ "notNull": true,
200+ "autoincrement": false
201+ },
202+ "status": {
203+ "name": "status",
204+ "type": "text",
205+ "primaryKey": false,
206+ "notNull": true,
207+ "autoincrement": false,
208+ "default": "'offline'"
209+ },
210+ "avatar_url": {
211+ "name": "avatar_url",
212+ "type": "text",
213+ "primaryKey": false,
214+ "notNull": false,
215+ "autoincrement": false
216+ },
217+ "created_at": {
218+ "name": "created_at",
219+ "type": "integer",
220+ "primaryKey": false,
221+ "notNull": true,
222+ "autoincrement": false
223+ },
224+ "last_seen": {
225+ "name": "last_seen",
226+ "type": "integer",
227+ "primaryKey": false,
228+ "notNull": false,
229+ "autoincrement": false
230+ }
231+ },
232+ "indexes": {},
233+ "foreignKeys": {},
234+ "compositePrimaryKeys": {},
235+ "uniqueConstraints": {},
236+ "checkConstraints": {}
237+ }
238+ },
239+ "views": {
240+ "chat_room_view": {
241+ "columns": {
242+ "id": {
243+ "name": "id",
244+ "type": "text",
245+ "primaryKey": true,
246+ "notNull": true,
247+ "autoincrement": false
248+ },
249+ "name": {
250+ "name": "name",
251+ "type": "text",
252+ "primaryKey": false,
253+ "notNull": false,
254+ "autoincrement": false
255+ },
256+ "type": {
257+ "name": "type",
258+ "type": "text",
259+ "primaryKey": false,
260+ "notNull": true,
261+ "autoincrement": false,
262+ "default": "'direct'"
263+ },
264+ "created_at": {
265+ "name": "created_at",
266+ "type": "integer",
267+ "primaryKey": false,
268+ "notNull": true,
269+ "autoincrement": false
270+ }
271+ },
272+ "name": "chat_room_view",
273+ "isExisting": false,
274+ "definition": "select \"id\", \"name\", \"type\", \"created_at\" from \"chat_rooms\""
275+ },
276+ "message_view": {
277+ "columns": {
278+ "id": {
279+ "name": "id",
280+ "type": "text",
281+ "primaryKey": true,
282+ "notNull": true,
283+ "autoincrement": false
284+ },
285+ "content": {
286+ "name": "content",
287+ "type": "text",
288+ "primaryKey": false,
289+ "notNull": true,
290+ "autoincrement": false
291+ },
292+ "type": {
293+ "name": "type",
294+ "type": "text",
295+ "primaryKey": false,
296+ "notNull": true,
297+ "autoincrement": false,
298+ "default": "'chat'"
299+ },
300+ "timestamp": {
301+ "name": "timestamp",
302+ "type": "integer",
303+ "primaryKey": false,
304+ "notNull": true,
305+ "autoincrement": false
306+ },
307+ "nickname": {
308+ "name": "nickname",
309+ "type": "text",
310+ "primaryKey": false,
311+ "notNull": true,
312+ "autoincrement": false
313+ },
314+ "name": {
315+ "name": "name",
316+ "type": "text",
317+ "primaryKey": false,
318+ "notNull": false,
319+ "autoincrement": false
320+ }
321+ },
322+ "name": "message_view",
323+ "isExisting": false,
324+ "definition": "select \"messages\".\"id\", \"messages\".\"content\", \"messages\".\"type\", \"messages\".\"timestamp\", \"users\".\"nickname\", \"chat_rooms\".\"name\" from \"messages\" left join \"users\" on \"messages\".\"sender_id\" = \"users\".\"id\" left join \"chat_rooms\" on \"messages\".\"chat_room_id\" = \"chat_rooms\".\"id\""
325+ },
326+ "user_view": {
327+ "columns": {
328+ "id": {
329+ "name": "id",
330+ "type": "text",
331+ "primaryKey": true,
332+ "notNull": true,
333+ "autoincrement": false
334+ },
335+ "nickname": {
336+ "name": "nickname",
337+ "type": "text",
338+ "primaryKey": false,
339+ "notNull": true,
340+ "autoincrement": false
341+ },
342+ "status": {
343+ "name": "status",
344+ "type": "text",
345+ "primaryKey": false,
346+ "notNull": true,
347+ "autoincrement": false,
348+ "default": "'offline'"
349+ },
350+ "avatar_url": {
351+ "name": "avatar_url",
352+ "type": "text",
353+ "primaryKey": false,
354+ "notNull": false,
355+ "autoincrement": false
356+ },
357+ "last_seen": {
358+ "name": "last_seen",
359+ "type": "integer",
360+ "primaryKey": false,
361+ "notNull": false,
362+ "autoincrement": false
363+ }
364+ },
365+ "name": "user_view",
366+ "isExisting": false,
367+ "definition": "select \"id\", \"nickname\", \"status\", \"avatar_url\", \"last_seen\" from \"users\""
368+ }
369+ },
370+ "enums": {},
371+ "_meta": {
372+ "schemas": {},
373+ "tables": {},
374+ "columns": {}
375+ },
376+ "internal": {
377+ "indexes": {}
378+ }
379+}⏎̸
M drizzle/meta/_journal.json +7 -0
@@ -8,6 +8,13 @@
88 "when": 1739208055141,
99 "tag": "0000_shallow_ghost_rider",
1010 "breakpoints": true
11+ },
12+ {
13+ "idx": 1,
14+ "version": "6",
15+ "when": 1739432549447,
16+ "tag": "0001_blushing_jean_grey",
17+ "breakpoints": true
1118 }
1219 ]
1320 }⏎̸
@@ -8,6 +8,13 @@
8 "when": 1739208055141,8 "when": 1739208055141,
9 "tag": "0000_shallow_ghost_rider",9 "tag": "0000_shallow_ghost_rider",
10 "breakpoints": true10 "breakpoints": true
11+ },
12+ {
13+ "idx": 1,
14+ "version": "6",
15+ "when": 1739432549447,
16+ "tag": "0001_blushing_jean_grey",
17+ "breakpoints": true
11 }18 }
12 ]19 ]
13 }⏎̸20 }⏎̸
M package.json +2 -2
@@ -17,8 +17,8 @@
1717 "lint": "prettier --check . && eslint .",
1818 "test:unit": "vitest",
1919 "test": "npm run test:unit -- --run",
20- "db:generate": "pnpx drizzle-kit generate",
21- "db:push": "pnpx drizzle-kit push"
20+ "db:generate": "npx drizzle-kit generate",
21+ "db:push": "npx drizzle-kit push"
2222 },
2323 "devDependencies": {
2424 "@eslint/compat": "^1.2.6",
@@ -17,8 +17,8 @@
17 "lint": "prettier --check . && eslint .",17 "lint": "prettier --check . && eslint .",
18 "test:unit": "vitest",18 "test:unit": "vitest",
19 "test": "npm run test:unit -- --run",19 "test": "npm run test:unit -- --run",
20- "db:generate": "pnpx drizzle-kit generate",20+ "db:generate": "npx drizzle-kit generate",
21- "db:push": "pnpx drizzle-kit push"21+ "db:push": "npx drizzle-kit push"
22 },22 },
23 "devDependencies": {23 "devDependencies": {
24 "@eslint/compat": "^1.2.6",24 "@eslint/compat": "^1.2.6",

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 3

Tags 8

↑↓ moveenter openesc close