@molecule/app-ide-react 3.0.2 → 3.0.4
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/README.md +2 -2
- package/dist/components/ChatPanel.d.ts.map +1 -1
- package/dist/components/ChatPanel.js +80 -37
- package/dist/components/ChatPanel.js.map +1 -1
- package/dist/components/TestStatusBar.d.ts +2 -4
- package/dist/components/TestStatusBar.d.ts.map +1 -1
- package/dist/components/TestStatusBar.js.map +1 -1
- package/dist/components/TestsCard.d.ts +3 -6
- package/dist/components/TestsCard.d.ts.map +1 -1
- package/dist/components/TestsCard.js +1 -3
- package/dist/components/TestsCard.js.map +1 -1
- package/dist/components/tests-card-utilities.js +1 -1
- package/dist/components/tests-card-utilities.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-10-
|
|
6
|
+
Generated: 2026-10-30T15:55:58.440Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/app-ide-react
|
|
@@ -886,7 +886,7 @@ interface ChatPanelProps {
|
|
|
886
886
|
onFileChange?: (path: string, content: string) => void
|
|
887
887
|
/** Called when a file is removed from disk (e.g. reverting an untracked file). */
|
|
888
888
|
onFileDeleted?: (path: string) => void
|
|
889
|
-
/** Called after a
|
|
889
|
+
/** Called after a commit or no-op — should refresh file explorer git status. */
|
|
890
890
|
onCommit?: () => void
|
|
891
891
|
/** Called when an inline activity card is clicked — should open the Activity panel filtered to this activity. */
|
|
892
892
|
onActivityClick?: (activity: ActivityFromCard) => void
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2747,7 +2747,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
2747
2747
|
// ── /test (the tests browser) ───────────────────────────────────────────────
|
|
2748
2748
|
// The list and the in-flight run live HERE, not inside TestsCard, for one
|
|
2749
2749
|
// reason: the card is an overlay the user closes. A run that is streaming
|
|
2750
|
-
// (a
|
|
2750
|
+
// (a browser spec can take a minute) must survive that close and still be
|
|
2751
2751
|
// there when they re-open it, and re-running /test must re-list without
|
|
2752
2752
|
// killing it. So the card is presentational and this owns the state.
|
|
2753
2753
|
const [testsList, setTestsList] = useState([]);
|
|
@@ -2765,9 +2765,14 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
2765
2765
|
// Live for the async callbacks, so a list resolving after an unmount, or a
|
|
2766
2766
|
// run event arriving then, never sets state on a dead tree.
|
|
2767
2767
|
const testsMountedRef = useRef(true);
|
|
2768
|
-
useEffect(() =>
|
|
2769
|
-
|
|
2770
|
-
|
|
2768
|
+
useEffect(() => {
|
|
2769
|
+
// React can reconnect effects on the same tree (StrictMode/Suspense).
|
|
2770
|
+
// Cleanup must not permanently silence discovery and run events.
|
|
2771
|
+
testsMountedRef.current = true;
|
|
2772
|
+
return () => {
|
|
2773
|
+
testsMountedRef.current = false;
|
|
2774
|
+
testsRunHandleRef.current?.cancel();
|
|
2775
|
+
};
|
|
2771
2776
|
}, []);
|
|
2772
2777
|
const refreshTests = useCallback(async () => {
|
|
2773
2778
|
// A host that wires no discovery has no tests to show. Say so rather than
|
|
@@ -3324,11 +3329,31 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3324
3329
|
// ── Git status ─────────────────────────────────────────────────────────────
|
|
3325
3330
|
const [gitStatusTick, setGitStatusTick] = useState(0);
|
|
3326
3331
|
const refreshGitStatus = useCallback(() => setGitStatusTick((n) => n + 1), []);
|
|
3332
|
+
const gitScopeRef = useRef(0);
|
|
3333
|
+
useLayoutEffect(() => {
|
|
3334
|
+
gitScopeRef.current++;
|
|
3335
|
+
setPendingFiles(null);
|
|
3336
|
+
setCommitState(null);
|
|
3337
|
+
setCommitCards([]);
|
|
3338
|
+
setCommitBarExpanded(false);
|
|
3339
|
+
return () => {
|
|
3340
|
+
gitScopeRef.current++;
|
|
3341
|
+
};
|
|
3342
|
+
}, [projectId]);
|
|
3343
|
+
const gitStatusRequestRef = useRef(0);
|
|
3327
3344
|
const fetchPendingFiles = useCallback(() => {
|
|
3328
|
-
|
|
3345
|
+
const scope = gitScopeRef.current;
|
|
3346
|
+
const request = ++gitStatusRequestRef.current;
|
|
3347
|
+
return http
|
|
3329
3348
|
.get(`/projects/${projectId}/git-status`)
|
|
3330
|
-
.then((res) =>
|
|
3331
|
-
|
|
3349
|
+
.then((res) => {
|
|
3350
|
+
if (scope === gitScopeRef.current && request === gitStatusRequestRef.current)
|
|
3351
|
+
setPendingFiles(res.data.files.length > 0 ? res.data.files : null);
|
|
3352
|
+
})
|
|
3353
|
+
.catch(() => {
|
|
3354
|
+
if (scope === gitScopeRef.current && request === gitStatusRequestRef.current)
|
|
3355
|
+
setPendingFiles(null);
|
|
3356
|
+
});
|
|
3332
3357
|
}, [http, projectId]);
|
|
3333
3358
|
// Debounced version — coalesces rapid ticks (e.g. save → format, or an AI
|
|
3334
3359
|
// write burst mid-turn) into a single fetch after the last write settles.
|
|
@@ -3357,6 +3382,25 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3357
3382
|
return;
|
|
3358
3383
|
debouncedFetchPendingFiles();
|
|
3359
3384
|
}, [externalGitStatusTick, debouncedFetchPendingFiles]);
|
|
3385
|
+
// Startup repairs, another editor, or another client can commit without a
|
|
3386
|
+
// local file event. Reconcile on return and while the workspace is visible.
|
|
3387
|
+
useEffect(() => {
|
|
3388
|
+
const refresh = () => {
|
|
3389
|
+
if (document.visibilityState !== 'hidden')
|
|
3390
|
+
void fetchPendingFiles();
|
|
3391
|
+
};
|
|
3392
|
+
window.addEventListener('focus', refresh);
|
|
3393
|
+
document.addEventListener('visibilitychange', refresh);
|
|
3394
|
+
const interval = setInterval(refresh, 45_000);
|
|
3395
|
+
return () => {
|
|
3396
|
+
window.removeEventListener('focus', refresh);
|
|
3397
|
+
document.removeEventListener('visibilitychange', refresh);
|
|
3398
|
+
clearInterval(interval);
|
|
3399
|
+
if (gitFetchTimerRef.current)
|
|
3400
|
+
clearTimeout(gitFetchTimerRef.current);
|
|
3401
|
+
gitStatusRequestRef.current++;
|
|
3402
|
+
};
|
|
3403
|
+
}, [fetchPendingFiles]);
|
|
3360
3404
|
// A user-side file mutation (edit/rename/delete) also restarts the auto-commit
|
|
3361
3405
|
// countdown — the parent's externalGitStatusTick is the canonical "files moved"
|
|
3362
3406
|
// signal. Skipped on the initial 0 so opening a project doesn't arm anything.
|
|
@@ -3599,6 +3643,9 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3599
3643
|
}, [userEditedFile, userEditedFileKey, clearQueuedForFile]);
|
|
3600
3644
|
// ── Commit ─────────────────────────────────────────────────────────────────
|
|
3601
3645
|
const handleCommit = useCallback(async () => {
|
|
3646
|
+
const scope = gitScopeRef.current;
|
|
3647
|
+
// An older status response must not restore a pre-commit count.
|
|
3648
|
+
gitStatusRequestRef.current++;
|
|
3602
3649
|
setCommitState({ status: 'committing' });
|
|
3603
3650
|
const cardId = `commit-${Date.now()}`;
|
|
3604
3651
|
setCommitCards((prev) => [
|
|
@@ -3606,8 +3653,11 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3606
3653
|
{ id: cardId, message: '', files: [], timestamp: Date.now(), status: 'running' },
|
|
3607
3654
|
]);
|
|
3608
3655
|
try {
|
|
3609
|
-
const result = await http.post(`/projects/${projectId}/commit
|
|
3656
|
+
const result = await http.post(`/projects/${projectId}/commit`);
|
|
3657
|
+
if (scope !== gitScopeRef.current)
|
|
3658
|
+
return;
|
|
3610
3659
|
if (result.data.committed) {
|
|
3660
|
+
gitStatusRequestRef.current++;
|
|
3611
3661
|
const msg = result.data.message ?? t('ide.chat.committed');
|
|
3612
3662
|
setCommitState({ status: 'committed', message: msg });
|
|
3613
3663
|
setPendingFiles(null);
|
|
@@ -3622,14 +3672,28 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3622
3672
|
}
|
|
3623
3673
|
: c));
|
|
3624
3674
|
onCommit?.();
|
|
3625
|
-
setTimeout(() =>
|
|
3675
|
+
setTimeout(() => {
|
|
3676
|
+
if (scope === gitScopeRef.current)
|
|
3677
|
+
setCommitState(null);
|
|
3678
|
+
}, 3000);
|
|
3626
3679
|
}
|
|
3627
3680
|
else {
|
|
3628
3681
|
setCommitCards((prev) => prev.filter((c) => c.id !== cardId));
|
|
3629
3682
|
setCommitState(null);
|
|
3683
|
+
addSystemCard(result.data.message === 'No changes to commit'
|
|
3684
|
+
? t('ide.chat.commitNoChanges', undefined, { defaultValue: 'No changes to commit.' })
|
|
3685
|
+
: result.data.message === 'A build is in progress'
|
|
3686
|
+
? t('ide.chat.commitBuildInProgress', undefined, {
|
|
3687
|
+
defaultValue: 'Wait for the build to finish before creating a Git commit.',
|
|
3688
|
+
})
|
|
3689
|
+
: t('ide.chat.commitError', undefined, { defaultValue: 'Failed to commit changes.' }));
|
|
3690
|
+
void fetchPendingFiles();
|
|
3691
|
+
onCommit?.();
|
|
3630
3692
|
}
|
|
3631
3693
|
}
|
|
3632
3694
|
catch (error) {
|
|
3695
|
+
if (scope !== gitScopeRef.current)
|
|
3696
|
+
return;
|
|
3633
3697
|
logger.warn('Commit request failed', { error });
|
|
3634
3698
|
setCommitCards((prev) => prev.map((c) => c.id === cardId
|
|
3635
3699
|
? {
|
|
@@ -3639,9 +3703,12 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
3639
3703
|
}
|
|
3640
3704
|
: c));
|
|
3641
3705
|
setCommitState({ status: 'error' });
|
|
3642
|
-
setTimeout(() =>
|
|
3706
|
+
setTimeout(() => {
|
|
3707
|
+
if (scope === gitScopeRef.current)
|
|
3708
|
+
setCommitState(null);
|
|
3709
|
+
}, 3000);
|
|
3643
3710
|
}
|
|
3644
|
-
}, [http, projectId, onCommit]);
|
|
3711
|
+
}, [http, projectId, onCommit, addSystemCard, fetchPendingFiles, t]);
|
|
3645
3712
|
// ── Revert commit ────────────────────────────────────────────────────────
|
|
3646
3713
|
/** Reverts a commit by hash. Returns the new revert commit's hash on success. */
|
|
3647
3714
|
const handleRevertCommit = useCallback(async (hash) => {
|
|
@@ -4498,32 +4565,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4498
4565
|
}
|
|
4499
4566
|
else if (id === 'commit') {
|
|
4500
4567
|
setInputValue('');
|
|
4501
|
-
|
|
4502
|
-
const status = await http.get(`/projects/${projectId}/git-status`);
|
|
4503
|
-
if (!status.data.files.length) {
|
|
4504
|
-
addSystemCard(t('ide.chat.commitNoChanges', undefined, { defaultValue: 'No changes to commit.' }));
|
|
4505
|
-
return;
|
|
4506
|
-
}
|
|
4507
|
-
const res = await http.post(`/projects/${projectId}/commit`);
|
|
4508
|
-
if (res.data.committed) {
|
|
4509
|
-
setCommitCards((prev) => [
|
|
4510
|
-
...prev,
|
|
4511
|
-
{
|
|
4512
|
-
id: crypto.randomUUID(),
|
|
4513
|
-
message: res.data.message ?? '',
|
|
4514
|
-
files: res.data.files ?? [],
|
|
4515
|
-
timestamp: Date.now(),
|
|
4516
|
-
status: 'done',
|
|
4517
|
-
hash: res.data.hash,
|
|
4518
|
-
},
|
|
4519
|
-
]);
|
|
4520
|
-
refreshGitStatus();
|
|
4521
|
-
}
|
|
4522
|
-
}
|
|
4523
|
-
catch (error) {
|
|
4524
|
-
logger.warn('Failed to commit changes via /commit command', { error });
|
|
4525
|
-
addSystemCard(t('ide.chat.commitError', undefined, { defaultValue: 'Failed to commit changes.' }));
|
|
4526
|
-
}
|
|
4568
|
+
await handleCommit();
|
|
4527
4569
|
}
|
|
4528
4570
|
else if (id === 'test') {
|
|
4529
4571
|
setInputValue('');
|
|
@@ -4648,6 +4690,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
|
|
|
4648
4690
|
messages,
|
|
4649
4691
|
sendMessage,
|
|
4650
4692
|
refreshGitStatus,
|
|
4693
|
+
handleCommit,
|
|
4651
4694
|
openPanelOverlay,
|
|
4652
4695
|
extraCommandIds,
|
|
4653
4696
|
canEdit,
|