diff --git a/src/generateCommitMessageFromGitDiff.ts b/src/generateCommitMessageFromGitDiff.ts index 01f04a67..f46d6e53 100644 --- a/src/generateCommitMessageFromGitDiff.ts +++ b/src/generateCommitMessageFromGitDiff.ts @@ -168,6 +168,15 @@ export const generateCommitMessageByDiff = async ( const commitMessages = await Promise.all(commitMessagePromises); + // When OCO_ONE_LINE_COMMIT is enabled, combine the first line of each + // split-diff message into a single line instead of joining with '\n\n'. + if (config.OCO_ONE_LINE_COMMIT) { + return commitMessages + .filter(Boolean) + .map((msg) => msg!.split('\n')[0].trim()) + .join('; '); + } + return commitMessages.join('\n\n'); } diff --git a/src/prompts.ts b/src/prompts.ts index 0f2f7281..9dd55ec0 100644 --- a/src/prompts.ts +++ b/src/prompts.ts @@ -240,7 +240,17 @@ export const getMainCommitPrompt = async ( } // Replace example prompt with a prompt that's generated by OpenAI for the commitlint config. - const commitLintConfig = await utils.getCommitlintLLMConfig(); + let commitLintConfig = await utils.getCommitlintLLMConfig(); + + // Guard against outdated or corrupted config files that are missing the + // prompts field (e.g. generated by an older version of opencommit). + if (!Array.isArray(commitLintConfig.prompts)) { + note( + 'Commitlint LLM config is missing prompts, regenerating...' + ); + await configureCommitlintIntegration(true); + commitLintConfig = await utils.getCommitlintLLMConfig(); + } return [ commitlintPrompts.INIT_MAIN_PROMPT(