@@ -74,6 +74,7 @@ const ADD_CHANGESET_URL_PLACEHOLDER_REGEXP = /\{\{\s*addChangesetUrl\s*\}\}/
7474const getAbsentMessage = (
7575 commitSha : string ,
7676 addChangesetUrl : string ,
77+ newChangesetTemplateFallback : string ,
7778 releasePlan : ReleasePlan | null ,
7879) => `### ⚠️ No Changeset found
7980
9192[Click here if you're a maintainer who wants to add a changeset to this MR](${ addChangesetUrl } )`
9293}
9394
95+ ${ newChangesetTemplateFallback }
96+
9497__${ generatedByBotNote } __
9598`
9699
97100const getApproveMessage = (
98101 commitSha : string ,
99102 addChangesetUrl : string ,
103+ newChangesetTemplateFallback : string ,
100104 releasePlan : ReleasePlan | null ,
101105) => `### 🦋 Changeset detected
102106
114118[Click here if you're a maintainer who wants to add another changeset to this MR](${ addChangesetUrl } )`
115119}
116120
121+ ${ newChangesetTemplateFallback }
122+
117123__${ generatedByBotNote } __
118124`
119125
120- const getNewChangesetTemplate = ( changedPackages : string [ ] , title : string ) =>
121- encodeURIComponent ( `---
126+ const getNewChangesetTemplate = (
127+ changedPackages : string [ ] ,
128+ title : string ,
129+ ) => `---
122130${ changedPackages . map ( x => `"${ x } ": patch` ) . join ( '\n' ) }
123131---
124132
125133${ title }
126- ` )
134+ `
127135
128136const isMrNote = (
129137 discussionOrNote : DiscussionSchema | MergeRequestNoteSchema ,
@@ -201,7 +209,8 @@ async function getNoteInfo(
201209 }
202210
203211 /**
204- * The `username` used for commenting could be random, if we haven't tested the random `username`, then test it
212+ * The `username` used for commenting could be random, if we haven't tested
213+ * the random `username`, then test it
205214 *
206215 * @see https://docs.gitlab.com/ee/development/internal_users.html
207216 * @see https://github.com/un-ts/changesets-gitlab/issues/145#issuecomment-1860610958
@@ -286,25 +295,44 @@ export const comment = async () => {
286295 } ) ,
287296 ] as const )
288297
289- const addChangesetUrl = `${ env . CI_MERGE_REQUEST_PROJECT_URL } /-/new/ ${ mrBranch } ?file_name=. changeset/${ humanId (
290- {
291- separator : '-' ,
292- capitalize : false ,
293- } ,
294- ) } .md&file= ${ getNewChangesetTemplate (
298+ const newChangesetFileName = `. changeset/${ humanId ( {
299+ separator : '-' ,
300+ capitalize : false ,
301+ } ) } .md`
302+
303+ const newChangesetTemplate = getNewChangesetTemplate (
295304 changedPackages ,
296305 env . CI_MERGE_REQUEST_TITLE ,
297- ) } ${
306+ )
307+
308+ const addChangesetUrl = `${ env . CI_MERGE_REQUEST_PROJECT_URL } /-/new/${ mrBranch } ?file_name=${ newChangesetFileName } &file=${ encodeURIComponent ( newChangesetTemplate ) } ${
298309 commitMessage
299310 ? '&commit_message=' + encodeURIComponent ( commitMessage )
300311 : ''
301312 } `
302313
314+ const newChangesetTemplateFallback = `
315+ If the above link doesn't fill the changeset template file name and content which is [a known regression on GitLab >= 16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/532221), you can copy and paste the following template into ${ newChangesetFileName } instead:
316+
317+ \`\`\`yaml
318+ ${ newChangesetTemplate }
319+ \`\`\`
320+ ` . trim ( )
321+
303322 const prComment =
304323 ( hasChangeset
305- ? getApproveMessage ( latestCommitSha , addChangesetUrl , releasePlan )
306- : getAbsentMessage ( latestCommitSha , addChangesetUrl , releasePlan ) ) +
307- errFromFetchingChangedFiles
324+ ? getApproveMessage (
325+ latestCommitSha ,
326+ addChangesetUrl ,
327+ newChangesetTemplateFallback ,
328+ releasePlan ,
329+ )
330+ : getAbsentMessage (
331+ latestCommitSha ,
332+ addChangesetUrl ,
333+ newChangesetTemplateFallback ,
334+ releasePlan ,
335+ ) ) + errFromFetchingChangedFiles
308336
309337 switch ( commentType ) {
310338 case 'discussion' : {
0 commit comments