@sascha384/tic 4.9.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/dist/auth/gitlab.js +12 -5
- package/dist/auth/gitlab.js.map +1 -1
- package/dist/commands.d.ts +28 -1
- package/dist/commands.js +677 -5
- package/dist/commands.js.map +1 -1
- package/dist/components/BranchList.js +326 -168
- package/dist/components/BranchList.js.map +1 -1
- package/dist/components/ColorPill.js +3 -3
- package/dist/components/ColorPill.js.map +1 -1
- package/dist/components/DetailPanel.js +2 -2
- package/dist/components/DetailPanel.js.map +1 -1
- package/dist/components/Header.js +6 -2
- package/dist/components/Header.js.map +1 -1
- package/dist/components/HelpScreen.d.ts +1 -9
- package/dist/components/HelpScreen.js +32 -227
- package/dist/components/HelpScreen.js.map +1 -1
- package/dist/components/IterationPicker.js +3 -2
- package/dist/components/IterationPicker.js.map +1 -1
- package/dist/components/PullRequestList.js +56 -16
- package/dist/components/PullRequestList.js.map +1 -1
- package/dist/components/Settings.js +36 -26
- package/dist/components/Settings.js.map +1 -1
- package/dist/components/StatusScreen.js +32 -20
- package/dist/components/StatusScreen.js.map +1 -1
- package/dist/components/WorkItemForm.js +20 -14
- package/dist/components/WorkItemForm.js.map +1 -1
- package/dist/components/WorkItemList.d.ts +0 -1
- package/dist/components/WorkItemList.js +97 -101
- package/dist/components/WorkItemList.js.map +1 -1
- package/dist/implement.js +7 -3
- package/dist/implement.js.map +1 -1
- package/dist/storage/index.js +14 -11
- package/dist/storage/index.js.map +1 -1
- package/dist/stores/backendDataStore.d.ts +1 -0
- package/dist/stores/backendDataStore.js +23 -1
- package/dist/stores/backendDataStore.js.map +1 -1
- package/dist/stores/uiStore.d.ts +12 -0
- package/dist/stores/uiStore.js.map +1 -1
- package/drizzle/meta/_journal.json +1 -1
- package/package.json +1 -1
package/dist/auth/gitlab.js
CHANGED
|
@@ -33,6 +33,11 @@ export function clearGitLabTokens() {
|
|
|
33
33
|
function isTokenError(response) {
|
|
34
34
|
return 'error' in response;
|
|
35
35
|
}
|
|
36
|
+
function urlEncode(params) {
|
|
37
|
+
return Object.entries(params)
|
|
38
|
+
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
|
|
39
|
+
.join('&');
|
|
40
|
+
}
|
|
36
41
|
function sleep(ms) {
|
|
37
42
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
38
43
|
}
|
|
@@ -58,9 +63,9 @@ export async function authenticateGitLab(options) {
|
|
|
58
63
|
method: 'POST',
|
|
59
64
|
headers: {
|
|
60
65
|
Accept: 'application/json',
|
|
61
|
-
'Content-Type': 'application/
|
|
66
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
62
67
|
},
|
|
63
|
-
body:
|
|
68
|
+
body: urlEncode({
|
|
64
69
|
client_id: clientId,
|
|
65
70
|
scope: 'api',
|
|
66
71
|
}),
|
|
@@ -84,7 +89,8 @@ export async function authenticateGitLab(options) {
|
|
|
84
89
|
options?.onCode?.(deviceCode.user_code, deviceCode.verification_uri);
|
|
85
90
|
// Step 3: Poll for access token
|
|
86
91
|
let interval = deviceCode.interval * 1000; // Convert to ms
|
|
87
|
-
|
|
92
|
+
const deadline = Date.now() + deviceCode.expires_in * 1000;
|
|
93
|
+
while (Date.now() < deadline) {
|
|
88
94
|
await sleep(interval);
|
|
89
95
|
const tokenController = new AbortController();
|
|
90
96
|
const tokenTimeout = setTimeout(() => tokenController.abort(), DEFAULT_TIMEOUT_MS);
|
|
@@ -94,9 +100,9 @@ export async function authenticateGitLab(options) {
|
|
|
94
100
|
method: 'POST',
|
|
95
101
|
headers: {
|
|
96
102
|
Accept: 'application/json',
|
|
97
|
-
'Content-Type': 'application/
|
|
103
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
98
104
|
},
|
|
99
|
-
body:
|
|
105
|
+
body: urlEncode({
|
|
100
106
|
client_id: clientId,
|
|
101
107
|
device_code: deviceCode.device_code,
|
|
102
108
|
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
@@ -138,5 +144,6 @@ export async function authenticateGitLab(options) {
|
|
|
138
144
|
setToken(GITLAB_ACCOUNT, data.access_token);
|
|
139
145
|
return data.access_token;
|
|
140
146
|
}
|
|
147
|
+
throw new Error('Device code has expired. Please restart the authentication flow.');
|
|
141
148
|
}
|
|
142
149
|
//# sourceMappingURL=gitlab.js.map
|
package/dist/auth/gitlab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/auth/gitlab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,MAAM,CAAC,MAAM,wBAAwB,GACnC,kEAAkE,CAAC;AAErE;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,WAAW,CAAC,cAAc,CAAC,CAAC;IAC5B,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAClC,CAAC;AA4BD,SAAS,YAAY,CACnB,QAA2B;IAE3B,OAAO,OAAO,IAAI,QAAQ,CAAC;AAC7B,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAmC;IAEnC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,wBAAwB,CAAC;IAE/D,8BAA8B;IAC9B,MAAM,cAAc,GAAG,IAAI,eAAe,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,UAAU,CAC5B,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,EAC5B,kBAAkB,CACnB,CAAC;IAEF,IAAI,YAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,KAAK,CAAC,2CAA2C,EAAE;YACtE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/auth/gitlab.ts"],"names":[],"mappings":"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"}
|
package/dist/commands.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { BackendCapabilities } from './backends/types.js';
|
|
2
2
|
import type { Screen } from './app.js';
|
|
3
|
+
export type KeyDescriptor = string | {
|
|
4
|
+
special: string;
|
|
5
|
+
modifier?: 'shift';
|
|
6
|
+
};
|
|
3
7
|
export declare const CATEGORIES: readonly ["Actions", "Navigation", "Bulk", "Switching", "Other"];
|
|
4
8
|
export type CommandCategory = (typeof CATEGORIES)[number];
|
|
5
9
|
export interface CommandContext {
|
|
@@ -13,13 +17,23 @@ export interface CommandContext {
|
|
|
13
17
|
gitAvailable: boolean;
|
|
14
18
|
hasActiveFilters: boolean;
|
|
15
19
|
hasSavedViews: boolean;
|
|
20
|
+
hasSelectedBranch: boolean;
|
|
21
|
+
isCurrentBranch: boolean;
|
|
22
|
+
hasWorktree: boolean;
|
|
23
|
+
hasPrCreateCapability: boolean;
|
|
24
|
+
hasSelectedPr: boolean;
|
|
16
25
|
}
|
|
17
26
|
export interface Command {
|
|
18
27
|
id: string;
|
|
19
28
|
label: string;
|
|
20
29
|
category: CommandCategory;
|
|
21
30
|
shortcut?: string;
|
|
22
|
-
|
|
31
|
+
keys?: KeyDescriptor[];
|
|
32
|
+
screen: Screen | Screen[] | 'global';
|
|
33
|
+
helpGroup?: string;
|
|
34
|
+
footer?: boolean;
|
|
35
|
+
footerLabel?: string;
|
|
36
|
+
when?: (ctx: CommandContext) => boolean;
|
|
23
37
|
}
|
|
24
38
|
export interface CommandGroup {
|
|
25
39
|
category: string;
|
|
@@ -28,3 +42,16 @@ export interface CommandGroup {
|
|
|
28
42
|
export declare function filterCommands(commands: Command[], query: string): Command[];
|
|
29
43
|
export declare function groupCommandsByCategory(commands: Command[]): CommandGroup[];
|
|
30
44
|
export declare function getVisibleCommands(ctx: CommandContext): Command[];
|
|
45
|
+
export declare function findCommand(id: string): Command | undefined;
|
|
46
|
+
export declare function getCommandsForScreen(screen: Screen, ctx: CommandContext): Command[];
|
|
47
|
+
export declare function getFooterCommands(screen: Screen, ctx: CommandContext): Command[];
|
|
48
|
+
export declare function buildFooterHints(screen: Screen, ctx: CommandContext, availableWidth: number): string;
|
|
49
|
+
export declare function matchesCommand(id: string, input: string, key: Record<string, boolean>): boolean;
|
|
50
|
+
export interface ShortcutGroup {
|
|
51
|
+
label: string;
|
|
52
|
+
shortcuts: {
|
|
53
|
+
key: string;
|
|
54
|
+
description: string;
|
|
55
|
+
}[];
|
|
56
|
+
}
|
|
57
|
+
export declare function groupByHelpGroup(commands: Command[]): ShortcutGroup[];
|