claudeup 1.1.0 → 1.2.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/dist/services/version-check.d.ts +20 -0
- package/dist/services/version-check.d.ts.map +1 -0
- package/dist/services/version-check.js +98 -0
- package/dist/services/version-check.js.map +1 -0
- package/dist/ui/InkApp.d.ts +1 -1
- package/dist/ui/InkApp.d.ts.map +1 -1
- package/dist/ui/InkApp.js +15 -4
- package/dist/ui/InkApp.js.map +1 -1
- package/dist/ui/state/DimensionsContext.d.ts +3 -1
- package/dist/ui/state/DimensionsContext.d.ts.map +1 -1
- package/dist/ui/state/DimensionsContext.js +10 -8
- package/dist/ui/state/DimensionsContext.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface VersionCheckResult {
|
|
2
|
+
currentVersion: string;
|
|
3
|
+
latestVersion: string;
|
|
4
|
+
updateAvailable: boolean;
|
|
5
|
+
updateType?: 'major' | 'minor' | 'patch';
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Get the current version from package.json
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCurrentVersion(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Check if a new version is available
|
|
13
|
+
* Returns cached result if already checked this session
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkForUpdates(): Promise<VersionCheckResult>;
|
|
16
|
+
/**
|
|
17
|
+
* Format update message for display
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatUpdateMessage(result: VersionCheckResult): string;
|
|
20
|
+
//# sourceMappingURL=version-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/services/version-check.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAgDD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA6BnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAKtE"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
// Cache the result for the session
|
|
5
|
+
let cachedResult = null;
|
|
6
|
+
/**
|
|
7
|
+
* Get the current version from package.json
|
|
8
|
+
*/
|
|
9
|
+
export function getCurrentVersion() {
|
|
10
|
+
try {
|
|
11
|
+
const pkg = require('../../package.json');
|
|
12
|
+
return pkg.version;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return '0.0.0';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Fetch the latest version from npm registry
|
|
20
|
+
* Uses a short timeout to avoid blocking startup
|
|
21
|
+
*/
|
|
22
|
+
async function fetchLatestVersion() {
|
|
23
|
+
try {
|
|
24
|
+
const controller = new AbortController();
|
|
25
|
+
const timeout = setTimeout(() => controller.abort(), 3000); // 3s timeout
|
|
26
|
+
const response = await fetch('https://registry.npmjs.org/claudeup/latest', {
|
|
27
|
+
signal: controller.signal,
|
|
28
|
+
headers: {
|
|
29
|
+
'Accept': 'application/json',
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
clearTimeout(timeout);
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const data = await response.json();
|
|
37
|
+
return data.version || null;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Network error, timeout, or parse error - silently fail
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Determine the type of update (major, minor, patch)
|
|
46
|
+
*/
|
|
47
|
+
function getUpdateType(current, latest) {
|
|
48
|
+
const currentParsed = semver.parse(current);
|
|
49
|
+
const latestParsed = semver.parse(latest);
|
|
50
|
+
if (!currentParsed || !latestParsed)
|
|
51
|
+
return undefined;
|
|
52
|
+
if (latestParsed.major > currentParsed.major)
|
|
53
|
+
return 'major';
|
|
54
|
+
if (latestParsed.minor > currentParsed.minor)
|
|
55
|
+
return 'minor';
|
|
56
|
+
if (latestParsed.patch > currentParsed.patch)
|
|
57
|
+
return 'patch';
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a new version is available
|
|
62
|
+
* Returns cached result if already checked this session
|
|
63
|
+
*/
|
|
64
|
+
export async function checkForUpdates() {
|
|
65
|
+
// Return cached result if available
|
|
66
|
+
if (cachedResult) {
|
|
67
|
+
return cachedResult;
|
|
68
|
+
}
|
|
69
|
+
const currentVersion = getCurrentVersion();
|
|
70
|
+
const latestVersion = await fetchLatestVersion();
|
|
71
|
+
if (!latestVersion) {
|
|
72
|
+
// Couldn't fetch, assume no update
|
|
73
|
+
cachedResult = {
|
|
74
|
+
currentVersion,
|
|
75
|
+
latestVersion: currentVersion,
|
|
76
|
+
updateAvailable: false,
|
|
77
|
+
};
|
|
78
|
+
return cachedResult;
|
|
79
|
+
}
|
|
80
|
+
const updateAvailable = semver.gt(latestVersion, currentVersion);
|
|
81
|
+
cachedResult = {
|
|
82
|
+
currentVersion,
|
|
83
|
+
latestVersion,
|
|
84
|
+
updateAvailable,
|
|
85
|
+
updateType: updateAvailable ? getUpdateType(currentVersion, latestVersion) : undefined,
|
|
86
|
+
};
|
|
87
|
+
return cachedResult;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Format update message for display
|
|
91
|
+
*/
|
|
92
|
+
export function formatUpdateMessage(result) {
|
|
93
|
+
if (!result.updateAvailable)
|
|
94
|
+
return '';
|
|
95
|
+
const typeLabel = result.updateType ? ` (${result.updateType})` : '';
|
|
96
|
+
return `Update available: v${result.currentVersion} → v${result.latestVersion}${typeLabel}. Run: npm i -g claudeup`;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/services/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,mCAAmC;AACnC,IAAI,YAAY,GAA8B,IAAI,CAAC;AASnD;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;QAEzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,4CAA4C,EAAE;YACzE,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,QAAQ,EAAE,kBAAkB;aAC7B;SACF,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAAe,EAAE,MAAc;IACpD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1C,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEtD,IAAI,YAAY,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC7D,IAAI,YAAY,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC7D,IAAI,YAAY,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAE7D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,oCAAoC;IACpC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,mCAAmC;QACnC,YAAY,GAAG;YACb,cAAc;YACd,aAAa,EAAE,cAAc;YAC7B,eAAe,EAAE,KAAK;SACvB,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAEjE,YAAY,GAAG;QACb,cAAc;QACd,aAAa;QACb,eAAe;QACf,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;KACvF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA0B;IAC5D,IAAI,CAAC,MAAM,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,OAAO,sBAAsB,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,aAAa,GAAG,SAAS,0BAA0B,CAAC;AACtH,CAAC"}
|
package/dist/ui/InkApp.d.ts
CHANGED
package/dist/ui/InkApp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InkApp.d.ts","sourceRoot":"","sources":["../../src/ui/InkApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"InkApp.d.ts","sourceRoot":"","sources":["../../src/ui/InkApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAmBnD,eAAO,MAAM,OAAO,QAAsB,CAAC;AAyP3C,wBAAgB,GAAG,IAAI,KAAK,CAAC,YAAY,CAMxC;AAED,eAAe,GAAG,CAAC"}
|
package/dist/ui/InkApp.js
CHANGED
|
@@ -8,7 +8,8 @@ import { DimensionsProvider, useDimensions } from './state/DimensionsContext.js'
|
|
|
8
8
|
import { ModalContainer } from './components/modals/index.js';
|
|
9
9
|
import { PluginsScreen, McpScreen, McpRegistryScreen, StatusLineScreen, EnvVarsScreen, CliToolsScreen, } from './screens/index.js';
|
|
10
10
|
import { refreshLocalMarketplaces } from '../services/local-marketplace.js';
|
|
11
|
-
|
|
11
|
+
import { checkForUpdates, getCurrentVersion } from '../services/version-check.js';
|
|
12
|
+
export const VERSION = getCurrentVersion();
|
|
12
13
|
function Router() {
|
|
13
14
|
const { state } = useApp();
|
|
14
15
|
const { currentRoute } = state;
|
|
@@ -136,7 +137,12 @@ function ProgressIndicator({ message, current, total }) {
|
|
|
136
137
|
}
|
|
137
138
|
return (_jsxs(Box, { paddingX: 1, children: [_jsx(Text, { color: "cyan", children: "\u27F3 " }), _jsx(Text, { children: progressText })] }));
|
|
138
139
|
}
|
|
139
|
-
function
|
|
140
|
+
function UpdateBanner({ result }) {
|
|
141
|
+
if (!result.updateAvailable)
|
|
142
|
+
return null;
|
|
143
|
+
return (_jsxs(Box, { paddingX: 1, marginBottom: 0, children: [_jsxs(Text, { backgroundColor: "yellow", color: "black", bold: true, children: [' ', "UPDATE", ' '] }), _jsxs(Text, { color: "yellow", children: [' ', "v", result.currentVersion, " \u2192 v", result.latestVersion] }), _jsxs(Text, { color: "gray", children: [' ', "Run: "] }), _jsx(Text, { color: "cyan", children: "npm i -g claudeup" })] }));
|
|
144
|
+
}
|
|
145
|
+
function AppContentInner({ showDebug, onDebugToggle, updateInfo }) {
|
|
140
146
|
const { state, dispatch } = useApp();
|
|
141
147
|
const { progress } = state;
|
|
142
148
|
const dimensions = useDimensions();
|
|
@@ -160,13 +166,18 @@ function AppContentInner({ showDebug, onDebugToggle }) {
|
|
|
160
166
|
dispatch({ type: 'HIDE_PROGRESS' });
|
|
161
167
|
});
|
|
162
168
|
}, [dispatch]);
|
|
163
|
-
return (_jsxs(Box, { flexDirection: "column", height: dimensions.terminalHeight, children: [showDebug && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "yellow", dimColor: true, children: ["DEBUG: ", dimensions.terminalWidth, "x", dimensions.terminalHeight, " | content=", dimensions.contentHeight, " | screen=", state.currentRoute.screen] }) })), progress && _jsx(ProgressIndicator, { ...progress }), _jsx(Box, { flexDirection: "column", height: dimensions.contentHeight, paddingX: 1, overflow: "hidden", children: _jsx(Router, {}) }), _jsx(GlobalKeyHandler, { onDebugToggle: onDebugToggle }), _jsx(ModalContainer, {})] }));
|
|
169
|
+
return (_jsxs(Box, { flexDirection: "column", height: dimensions.terminalHeight, children: [updateInfo?.updateAvailable && _jsx(UpdateBanner, { result: updateInfo }), showDebug && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "yellow", dimColor: true, children: ["DEBUG: ", dimensions.terminalWidth, "x", dimensions.terminalHeight, " | content=", dimensions.contentHeight, " | screen=", state.currentRoute.screen] }) })), progress && _jsx(ProgressIndicator, { ...progress }), _jsx(Box, { flexDirection: "column", height: dimensions.contentHeight, paddingX: 1, overflow: "hidden", children: _jsx(Router, {}) }), _jsx(GlobalKeyHandler, { onDebugToggle: onDebugToggle }), _jsx(ModalContainer, {})] }));
|
|
164
170
|
}
|
|
165
171
|
function AppContent() {
|
|
166
172
|
const { state } = useApp();
|
|
167
173
|
const { progress } = state;
|
|
168
174
|
const [showDebug, setShowDebug] = useState(false);
|
|
169
|
-
|
|
175
|
+
const [updateInfo, setUpdateInfo] = useState(null);
|
|
176
|
+
// Check for updates on startup (non-blocking)
|
|
177
|
+
useEffect(() => {
|
|
178
|
+
checkForUpdates().then(setUpdateInfo).catch(() => { });
|
|
179
|
+
}, []);
|
|
180
|
+
return (_jsx(DimensionsProvider, { showProgress: !!progress, showDebug: showDebug, showUpdateBanner: !!updateInfo?.updateAvailable, children: _jsx(AppContentInner, { showDebug: showDebug, onDebugToggle: () => setShowDebug(s => !s), updateInfo: updateInfo }) }));
|
|
170
181
|
}
|
|
171
182
|
export function App() {
|
|
172
183
|
return (_jsx(AppProvider, { children: _jsx(AppContent, {}) }));
|
package/dist/ui/InkApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InkApp.js","sourceRoot":"","sources":["../../src/ui/InkApp.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACjF,mCAAmC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"InkApp.js","sourceRoot":"","sources":["../../src/ui/InkApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,10 @@ interface DimensionsProviderProps {
|
|
|
18
18
|
showProgress?: boolean;
|
|
19
19
|
/** Whether debug bar is visible */
|
|
20
20
|
showDebug?: boolean;
|
|
21
|
+
/** Whether update banner is visible */
|
|
22
|
+
showUpdateBanner?: boolean;
|
|
21
23
|
}
|
|
22
|
-
export declare function DimensionsProvider({ children, showProgress, showDebug, }: DimensionsProviderProps): React.ReactElement;
|
|
24
|
+
export declare function DimensionsProvider({ children, showProgress, showDebug, showUpdateBanner, }: DimensionsProviderProps): React.ReactElement;
|
|
23
25
|
export declare function useDimensions(): Dimensions;
|
|
24
26
|
export default DimensionsContext;
|
|
25
27
|
//# sourceMappingURL=DimensionsContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DimensionsContext.d.ts","sourceRoot":"","sources":["../../../src/ui/state/DimensionsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAG9E,UAAU,UAAU;IAClB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,iBAAiB,kCAAyC,CAAC;AAQjE,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DimensionsContext.d.ts","sourceRoot":"","sources":["../../../src/ui/state/DimensionsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAG9E,UAAU,UAAU;IAClB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,iBAAiB,kCAAyC,CAAC;AAQjE,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAoCD,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,YAAoB,EACpB,SAAiB,EACjB,gBAAwB,GACzB,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CAmD9C;AAED,wBAAgB,aAAa,IAAI,UAAU,CAa1C;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -7,7 +7,7 @@ const SCREEN_HEADER_HEIGHT = 4; // ScreenLayout: border + title row + status/sea
|
|
|
7
7
|
const SCREEN_FOOTER_HEIGHT = 2; // ScreenLayout: border-top + footer content
|
|
8
8
|
const APP_MARGINS = 1; // buffer for margins/padding
|
|
9
9
|
const PROGRESS_HEIGHT = 1; // when visible
|
|
10
|
-
function calculateDimensions(columns, rows, showProgress, showDebug) {
|
|
10
|
+
function calculateDimensions(columns, rows, showProgress, showDebug, showUpdateBanner) {
|
|
11
11
|
const terminalWidth = columns;
|
|
12
12
|
const terminalHeight = rows;
|
|
13
13
|
// Calculate total available height for ScreenLayout (includes its header, panels, footer)
|
|
@@ -16,6 +16,8 @@ function calculateDimensions(columns, rows, showProgress, showDebug) {
|
|
|
16
16
|
contentHeight -= PROGRESS_HEIGHT;
|
|
17
17
|
if (showDebug)
|
|
18
18
|
contentHeight -= 1;
|
|
19
|
+
if (showUpdateBanner)
|
|
20
|
+
contentHeight -= 1;
|
|
19
21
|
contentHeight = Math.max(10, contentHeight); // Minimum 10 lines for full layout
|
|
20
22
|
// Calculate available content width (accounting for padding)
|
|
21
23
|
const contentWidth = Math.max(40, terminalWidth - 4);
|
|
@@ -31,23 +33,23 @@ function calculateDimensions(columns, rows, showProgress, showDebug) {
|
|
|
31
33
|
listPanelHeight,
|
|
32
34
|
};
|
|
33
35
|
}
|
|
34
|
-
export function DimensionsProvider({ children, showProgress = false, showDebug = false, }) {
|
|
36
|
+
export function DimensionsProvider({ children, showProgress = false, showDebug = false, showUpdateBanner = false, }) {
|
|
35
37
|
const { stdout } = useStdout();
|
|
36
|
-
const [dimensions, setDimensions] = useState(() => calculateDimensions(stdout?.columns ?? 80, stdout?.rows ?? 24, showProgress, showDebug));
|
|
38
|
+
const [dimensions, setDimensions] = useState(() => calculateDimensions(stdout?.columns ?? 80, stdout?.rows ?? 24, showProgress, showDebug, showUpdateBanner));
|
|
37
39
|
// Handle terminal resize
|
|
38
40
|
useEffect(() => {
|
|
39
41
|
const handleResize = () => {
|
|
40
|
-
setDimensions(calculateDimensions(stdout?.columns ?? 80, stdout?.rows ?? 24, showProgress, showDebug));
|
|
42
|
+
setDimensions(calculateDimensions(stdout?.columns ?? 80, stdout?.rows ?? 24, showProgress, showDebug, showUpdateBanner));
|
|
41
43
|
};
|
|
42
44
|
stdout?.on('resize', handleResize);
|
|
43
45
|
return () => {
|
|
44
46
|
stdout?.off('resize', handleResize);
|
|
45
47
|
};
|
|
46
|
-
}, [stdout, showProgress, showDebug]);
|
|
47
|
-
// Update when showProgress/showDebug changes
|
|
48
|
+
}, [stdout, showProgress, showDebug, showUpdateBanner]);
|
|
49
|
+
// Update when showProgress/showDebug/showUpdateBanner changes
|
|
48
50
|
useEffect(() => {
|
|
49
|
-
setDimensions(calculateDimensions(stdout?.columns ?? 80, stdout?.rows ?? 24, showProgress, showDebug));
|
|
50
|
-
}, [stdout?.columns, stdout?.rows, showProgress, showDebug]);
|
|
51
|
+
setDimensions(calculateDimensions(stdout?.columns ?? 80, stdout?.rows ?? 24, showProgress, showDebug, showUpdateBanner));
|
|
52
|
+
}, [stdout?.columns, stdout?.rows, showProgress, showDebug, showUpdateBanner]);
|
|
51
53
|
return (_jsx(DimensionsContext.Provider, { value: dimensions, children: children }));
|
|
52
54
|
}
|
|
53
55
|
export function useDimensions() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DimensionsContext.js","sourceRoot":"","sources":["../../../src/ui/state/DimensionsContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAehC,MAAM,iBAAiB,GAAG,aAAa,CAAoB,IAAI,CAAC,CAAC;AAEjE,oCAAoC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,gEAAgE;AAChG,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,4CAA4C;AAC5E,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,6BAA6B;AACpD,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"DimensionsContext.js","sourceRoot":"","sources":["../../../src/ui/state/DimensionsContext.tsx"],"names":[],"mappings":"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"}
|