mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-22 18:13:41 +08:00
review: address P1/P2 bot feedback on shortId derivation
- Use last-8 chars of transcript UUID instead of first-8, matching getSessionIdShort()'s .slice(-8) convention. Same session now produces the same filename whether shortId comes from CLAUDE_SESSION_ID or transcript_path, so existing .tmp files are not orphaned on upgrade. - Normalize extracted hex prefix to lowercase to avoid case-driven filename divergence from sanitizeSessionId()'s lowercase output. - Explicitly clear CLAUDE_SESSION_ID in the first regression test so the env leak from parent test runs cannot hide the fallback path. - Add regression tests for the lowercase-normalization path and for the case where CLAUDE_SESSION_ID and transcript_path refer to the same UUID (backward compat guarantee). Refs #1494
This commit is contained in:
@@ -190,14 +190,19 @@ async function main() {
|
||||
|
||||
const sessionsDir = getSessionsDir();
|
||||
const today = getDateString();
|
||||
// Prefer the real session UUID (first 8 chars) from transcript_path when available.
|
||||
// Derive shortId from transcript_path UUID when available, using the SAME
|
||||
// last-8-chars convention as getSessionIdShort(sessionId.slice(-8)). This keeps
|
||||
// backward compatibility for normal sessions (the derived shortId matches what
|
||||
// getSessionIdShort() would have produced from the same UUID), while making
|
||||
// every session map to a unique filename based on its own transcript UUID.
|
||||
//
|
||||
// Without this, a parent session and any `claude -p ...` subprocess spawned by
|
||||
// another Stop-hook share the project-name fallback filename, and the subprocess
|
||||
// another Stop hook share the project-name fallback filename, and the subprocess
|
||||
// overwrites the parent's summary. See issue #1494 for full repro details.
|
||||
let shortId = null;
|
||||
if (transcriptPath) {
|
||||
const m = path.basename(transcriptPath).match(/([0-9a-f]{8})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.jsonl$/i);
|
||||
if (m) { shortId = m[1]; }
|
||||
const m = path.basename(transcriptPath).match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i);
|
||||
if (m) { shortId = m[1].slice(-8).toLowerCase(); }
|
||||
}
|
||||
if (!shortId) { shortId = getSessionIdShort(); }
|
||||
const sessionFile = path.join(sessionsDir, `${today}-${shortId}-session.tmp`);
|
||||
|
||||
Reference in New Issue
Block a user