From c6eeff8055e9f712a38797808004e31516574dc2 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 8 Sep 2020 06:19:02 -0500 Subject: [PATCH] chore: sync 10-x-y release notes script to master (#25304) * chore: sync 10-x-y release notes script to master * adds the '(Also in N-x-y)' annotations * handle sublists in release notes (#25279) * has prepare-release.js catch thrown exceptions (#24923) * syncs related tests * chore: update cache entries in release notes tests --- script/release/notes/index.js | 64 ++- script/release/notes/notes.js | 447 +++++++++--------- script/release/prepare-release.js | 6 +- ...t-0600420bac25439fc2067d51c6aaa4ee11770577 | 1 + ...t-2955c67c4ea712fa22773ac9113709fc952bfd49 | 1 + ...t-2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98 | 1 + ...t-467409458e716c68b35fa935d556050ca6bed1c4 | 1 + ...t-61dc1c88fd34a3e8fff80c80ed79d0455970e610 | 1 + ...t-89eb309d0b22bd4aec058ffaf983e81e56a5c378 | 1 + ...t-8bc0c92137f4a77dc831ca644a86a3e48b51a11e | 1 + ...t-a6ff42c190cb5caf8f3e217748e49183a951491b | 1 + .../electron-electron-issue-20214-comments | 1 + .../electron-electron-issue-21497-comments | 1 + .../electron-electron-issue-21891-comments | 1 + .../electron-electron-issue-21946-comments | 1 + .../electron-electron-issue-22750-comments | 1 + .../electron-electron-issue-22770-comments | 1 + .../electron-electron-issue-22828-comments | 1 + .../electron-electron-issue-25052-comments | 1 + .../electron-electron-issue-25216-comments | 1 + .../cache/electron-electron-pull-20214 | 1 + .../cache/electron-electron-pull-20620 | 1 + .../cache/electron-electron-pull-21497 | 1 + .../cache/electron-electron-pull-21591 | 1 + .../cache/electron-electron-pull-21891 | 1 + .../cache/electron-electron-pull-21946 | 1 + .../cache/electron-electron-pull-22750 | 1 + .../cache/electron-electron-pull-22770 | 1 + .../cache/electron-electron-pull-22828 | 1 + .../cache/electron-electron-pull-25052 | 1 + .../cache/electron-electron-pull-25216 | 1 + spec-main/package.json | 2 + spec-main/release-notes-spec.ts | 213 +++++++++ spec-main/yarn.lock | 116 +++++ 34 files changed, 620 insertions(+), 256 deletions(-) create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-0600420bac25439fc2067d51c6aaa4ee11770577 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-2955c67c4ea712fa22773ac9113709fc952bfd49 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-467409458e716c68b35fa935d556050ca6bed1c4 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-61dc1c88fd34a3e8fff80c80ed79d0455970e610 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-89eb309d0b22bd4aec058ffaf983e81e56a5c378 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-8bc0c92137f4a77dc831ca644a86a3e48b51a11e create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-commit-a6ff42c190cb5caf8f3e217748e49183a951491b create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-20214-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-21497-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-21891-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-21946-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-22750-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-22770-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-22828-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-25052-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-issue-25216-comments create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-20214 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-20620 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-21497 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-21591 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-21891 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-21946 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-22750 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-22770 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-22828 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-25052 create mode 100644 spec-main/fixtures/release-notes/cache/electron-electron-pull-25216 create mode 100644 spec-main/release-notes-spec.ts diff --git a/script/release/notes/index.js b/script/release/notes/index.js index 7f8f6b2e15faf..8cb7650fae1a6 100755 --- a/script/release/notes/index.js +++ b/script/release/notes/index.js @@ -11,6 +11,7 @@ const notesGenerator = require('./notes.js'); const semverify = version => version.replace(/^origin\//, '').replace(/[xy]/g, '0').replace(/-/g, '.'); const runGit = async (args) => { + console.info(`Running: git ${args.join(' ')}`); const response = await GitProcess.exec(args, ELECTRON_DIR); if (response.exitCode !== 0) { throw new Error(response.stderr.trim()); @@ -19,15 +20,20 @@ const runGit = async (args) => { }; const tagIsSupported = tag => tag && !tag.includes('nightly') && !tag.includes('unsupported'); -const tagIsBeta = tag => tag.includes('beta'); +const tagIsBeta = tag => tag && tag.includes('beta'); const tagIsStable = tag => tagIsSupported(tag) && !tagIsBeta(tag); const getTagsOf = async (point) => { - return (await runGit(['tag', '--merged', point])) - .split('\n') - .map(tag => tag.trim()) - .filter(tag => semver.valid(tag)) - .sort(semver.compare); + try { + const tags = await runGit(['tag', '--merged', point]); + return tags.split('\n') + .map(tag => tag.trim()) + .filter(tag => semver.valid(tag)) + .sort(semver.compare); + } catch (err) { + console.error(`Failed to fetch tags for point ${point}`); + throw err; + } }; const getTagsOnBranch = async (point) => { @@ -41,21 +47,31 @@ const getTagsOnBranch = async (point) => { }; const getBranchOf = async (point) => { - const branches = (await runGit(['branch', '-a', '--contains', point])) - .split('\n') - .map(branch => branch.trim()) - .filter(branch => !!branch); - const current = branches.find(branch => branch.startsWith('* ')); - return current ? current.slice(2) : branches.shift(); + try { + const branches = (await runGit(['branch', '-a', '--contains', point])) + .split('\n') + .map(branch => branch.trim()) + .filter(branch => !!branch); + const current = branches.find(branch => branch.startsWith('* ')); + return current ? current.slice(2) : branches.shift(); + } catch (err) { + console.error(`Failed to fetch branch for ${point}: `, err); + throw err; + } }; const getAllBranches = async () => { - return (await runGit(['branch', '--remote'])) - .split('\n') - .map(branch => branch.trim()) - .filter(branch => !!branch) - .filter(branch => branch !== 'origin/HEAD -> origin/master') - .sort(); + try { + const branches = await runGit(['branch', '--remote']); + return branches.split('\n') + .map(branch => branch.trim()) + .filter(branch => !!branch) + .filter(branch => branch !== 'origin/HEAD -> origin/master') + .sort(); + } catch (err) { + console.error('Failed to fetch all branches'); + throw err; + } }; const getStabilizationBranches = async () => { @@ -120,7 +136,7 @@ const getPreviousPoint = async (point) => { } }; -async function getReleaseNotes (range, newVersion, explicitLinks) { +async function getReleaseNotes (range, newVersion) { const rangeList = range.split('..') || ['HEAD']; const to = rangeList.pop(); const from = rangeList.pop() || (await getPreviousPoint(to)); @@ -129,10 +145,9 @@ async function getReleaseNotes (range, newVersion, explicitLinks) { newVersion = to; } - console.log(`Generating release notes between ${from} and ${to} for version ${newVersion}`); const notes = await notesGenerator.get(from, to, newVersion); const ret = { - text: notesGenerator.render(notes, explicitLinks) + text: notesGenerator.render(notes) }; if (notes.unknown.length) { @@ -144,7 +159,7 @@ async function getReleaseNotes (range, newVersion, explicitLinks) { async function main () { const opts = minimist(process.argv.slice(2), { - boolean: ['explicit-links', 'help'], + boolean: ['help'], string: ['version'] }); opts.range = opts._.shift(); @@ -153,14 +168,13 @@ async function main () { console.log(` easy usage: ${name} version -full usage: ${name} [begin..]end [--version version] [--explicit-links] +full usage: ${name} [begin..]end [--version version] * 'begin' and 'end' are two git references -- tags, branches, etc -- from which the release notes are generated. * if omitted, 'begin' defaults to the previous tag in end's branch. * if omitted, 'version' defaults to 'end'. Specifying a version is useful if you're making notes on a new version that isn't tagged yet. - * 'explicit-links' makes every note's issue, commit, or pull an MD link For example, these invocations are equivalent: ${process.argv[1]} v4.0.1 @@ -169,7 +183,7 @@ For example, these invocations are equivalent: return 0; } - const notes = await getReleaseNotes(opts.range, opts.version, opts['explicit-links']); + const notes = await getReleaseNotes(opts.range, opts.version); console.log(notes.text); if (notes.warning) { throw new Error(notes.warning); diff --git a/script/release/notes/notes.js b/script/release/notes/notes.js index 847918eddc66e..d4ab7c1678913 100644 --- a/script/release/notes/notes.js +++ b/script/release/notes/notes.js @@ -2,25 +2,22 @@ 'use strict'; -const childProcess = require('child_process'); const fs = require('fs'); -const os = require('os'); const path = require('path'); const { GitProcess } = require('dugite'); const octokit = require('@octokit/rest')({ auth: process.env.ELECTRON_GITHUB_TOKEN }); -const semver = require('semver'); -const { ELECTRON_VERSION, SRC_DIR } = require('../../lib/utils'); +const { ELECTRON_DIR } = require('../../lib/utils'); const MAX_FAIL_COUNT = 3; const CHECK_INTERVAL = 5000; -const CACHE_DIR = path.resolve(__dirname, '.cache'); +const TROP_LOGIN = 'trop[bot]'; + const NO_NOTES = 'No notes'; -const FOLLOW_REPOS = ['electron/electron', 'electron/node']; const docTypes = new Set(['doc', 'docs']); const featTypes = new Set(['feat', 'feature']); @@ -28,6 +25,8 @@ const fixTypes = new Set(['fix']); const otherTypes = new Set(['spec', 'build', 'test', 'chore', 'deps', 'refactor', 'tools', 'vendor', 'perf', 'style', 'ci']); const knownTypes = new Set([...docTypes.keys(), ...featTypes.keys(), ...fixTypes.keys(), ...otherTypes.keys()]); +const getCacheDir = () => process.env.NOTES_CACHE_PATH || path.resolve(__dirname, '.cache'); + /** *** **/ @@ -39,6 +38,13 @@ class GHKey { this.repo = repo; this.number = number; } + + static NewFromPull (pull) { + const owner = pull.base.repo.owner.login; + const repo = pull.base.repo.name; + const number = pull.number; + return new GHKey(owner, repo, number); + } } class Commit { @@ -47,10 +53,13 @@ class Commit { this.owner = owner; // string this.repo = repo; // string - this.body = null; // string this.isBreakingChange = false; - this.issueNumber = null; // number this.note = null; // string + + // A set of branches to which this change has been merged. + // '8-x-y' => GHKey { owner: 'electron', repo: 'electron', number: 23714 } + this.trops = new Map(); // Map + this.prKeys = new Set(); // GHKey this.revertHash = null; // string this.semanticType = null; // string @@ -99,65 +108,31 @@ const getNoteFromClerk = async (ghKey) => { return NO_NOTES; } if (comment.body.startsWith(PERSIST_LEAD)) { - return comment.body + let lines = comment.body .slice(PERSIST_LEAD.length).trim() // remove PERSIST_LEAD - .split('\r?\n') // break into lines + .split(/\r?\n/) // split into lines .map(line => line.trim()) .filter(line => line.startsWith(QUOTE_LEAD)) // notes are quoted - .map(line => line.slice(QUOTE_LEAD.length)) // unquote the lines - .join(' ') // join the note lines + .map(line => line.slice(QUOTE_LEAD.length)); // unquote the lines + + const firstLine = lines.shift(); + // indent anything after the first line to ensure that + // multiline notes with their own sub-lists don't get + // parsed in the markdown as part of the top-level list + // (example: https://github.com/electron/electron/pull/25216) + lines = lines.map(line => ' ' + line); + return [firstLine, ...lines] + .join('\n') // join the lines .trim(); } } }; -// copied from https://github.com/electron/clerk/blob/master/src/index.ts#L4-L13 -const OMIT_FROM_RELEASE_NOTES_KEYS = [ - 'no-notes', - 'no notes', - 'no_notes', - 'none', - 'no', - 'nothing', - 'empty', - 'blank' -]; - -const getNoteFromBody = body => { - if (!body) { - return null; - } - - const NOTE_PREFIX = 'Notes: '; - const NOTE_HEADER = '#### Release Notes'; - - let note = body - .split(/\r?\n\r?\n/) // split into paragraphs - .map(paragraph => paragraph.trim()) - .map(paragraph => paragraph.startsWith(NOTE_HEADER) ? paragraph.slice(NOTE_HEADER.length).trim() : paragraph) - .find(paragraph => paragraph.startsWith(NOTE_PREFIX)); - - if (note) { - note = note - .slice(NOTE_PREFIX.length) - .replace(//, '') // '' - .replace(/\r?\n/, ' ') // remove newlines - .trim(); - } - - if (note && OMIT_FROM_RELEASE_NOTES_KEYS.includes(note.toLowerCase())) { - return NO_NOTES; - } - - return note; -}; - /** * Looks for our project's conventions in the commit message: * * 'semantic: some description' -- sets semanticType, subject * 'some description (#99999)' -- sets subject, pr - * 'Fixes #3333' -- sets issueNumber * 'Merge pull request #99999 from ${branchname}' -- sets pr * 'This reverts commit ${sha}' -- sets revertHash * line starting with 'BREAKING CHANGE' in body -- sets isBreakingChange @@ -175,13 +150,6 @@ const parseCommitMessage = (commitMessage, commit) => { subject = subject.slice(0, pos).trim(); } - if (body) { - commit.body = body; - - const note = getNoteFromBody(body); - if (note) { commit.note = note; } - } - // if the subject ends in ' (#dddd)', treat it as a pull request id let match; if ((match = subject.match(/^(.*)\s\(#(\d+)\)$/))) { @@ -213,7 +181,6 @@ const parseCommitMessage = (commitMessage, commit) => { // https://help.github.com/articles/closing-issues-using-keywords/ if ((match = body.match(/\b(?:close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved|for)\s#(\d+)\b/i))) { - commit.issueNumber = parseInt(match[1]); commit.semanticType = commit.semanticType || 'fix'; } @@ -237,32 +204,36 @@ const parseCommitMessage = (commitMessage, commit) => { const parsePullText = (pull, commit) => parseCommitMessage(`${pull.data.title}\n\n${pull.data.body}`, commit); const getLocalCommitHashes = async (dir, ref) => { - const args = ['log', '-z', '--format=%H', ref]; - return (await runGit(dir, args)).split('\0').map(hash => hash.trim()); + const args = ['log', '--format=%H', ref]; + return (await runGit(dir, args)) + .split(/\r?\n/) // split into lines + .map(hash => hash.trim()); }; // return an array of Commits const getLocalCommits = async (module, point1, point2) => { const { owner, repo, dir } = module; - const fieldSep = '||'; - const format = ['%H', '%B'].join(fieldSep); - const args = ['log', '-z', '--cherry-pick', '--right-only', '--first-parent', `--format=${format}`, `${point1}..${point2}`]; - const logs = (await runGit(dir, args)).split('\0').map(field => field.trim()); + const fieldSep = ','; + const format = ['%H', '%s'].join(fieldSep); + const args = ['log', '--cherry-pick', '--right-only', '--first-parent', `--format=${format}`, `${point1}..${point2}`]; + const logs = (await runGit(dir, args)) + .split(/\r?\n/) // split into lines + .map(field => field.trim()); const commits = []; for (const log of logs) { if (!log) { continue; } - const [hash, message] = log.split(fieldSep, 2).map(field => field.trim()); - commits.push(parseCommitMessage(message, new Commit(hash, owner, repo))); + const [hash, subject] = log.split(fieldSep, 2).map(field => field.trim()); + commits.push(parseCommitMessage(subject, new Commit(hash, owner, repo))); } return commits; }; const checkCache = async (name, operation) => { - const filename = path.resolve(CACHE_DIR, name); + const filename = path.resolve(getCacheDir(), name); if (fs.existsSync(filename)) { return JSON.parse(fs.readFileSync(filename, 'utf8')); } @@ -286,12 +257,42 @@ async function runRetryable (fn, maxRetries) { } } // Silently eat 404s. - if (lastError.status !== 404) throw lastError; + // Silently eat 422s, which come from "No commit found for SHA" + if (lastError.status !== 404 && lastError.status !== 422) throw lastError; } +const getPullCacheFilename = ghKey => `${ghKey.owner}-${ghKey.repo}-pull-${ghKey.number}`; + +const getCommitPulls = async (owner, repo, hash) => { + const name = `${owner}-${repo}-commit-${hash}`; + const retryableFunc = () => octokit.repos.listPullRequestsAssociatedWithCommit({ owner, repo, commit_sha: hash }); + let ret = await checkCache(name, () => runRetryable(retryableFunc, MAX_FAIL_COUNT)); + + // only merged pulls belong in release notes + if (ret && ret.data) { + ret.data = ret.data.filter(pull => pull.merged_at); + } + + // cache the pulls + if (ret && ret.data) { + for (const pull of ret.data) { + const cachefile = getPullCacheFilename(GHKey.NewFromPull(pull)); + const payload = { ...ret, data: pull }; + await checkCache(cachefile, () => payload); + } + } + + // ensure the return value has the expected structure, even on failure + if (!ret || !ret.data) { + ret = { data: [] }; + } + + return ret; +}; + const getPullRequest = async (ghKey) => { const { number, owner, repo } = ghKey; - const name = `${owner}-${repo}-pull-${number}`; + const name = getPullCacheFilename(ghKey); const retryableFunc = () => octokit.pulls.get({ pull_number: number, owner, repo }); return checkCache(name, () => runRetryable(retryableFunc, MAX_FAIL_COUNT)); }; @@ -306,10 +307,20 @@ const getComments = async (ghKey) => { const addRepoToPool = async (pool, repo, from, to) => { const commonAncestor = await getCommonAncestor(repo.dir, from, to); - // add the commits - const oldHashes = await getLocalCommitHashes(repo.dir, from); - oldHashes.forEach(hash => { pool.processedHashes.add(hash); }); + // mark the old branch's commits as old news + for (const oldHash of await getLocalCommitHashes(repo.dir, from)) { + pool.processedHashes.add(oldHash); + } + + // get the new branch's commits and the pulls associated with them const commits = await getLocalCommits(repo, commonAncestor, to); + for (const commit of commits) { + const { owner, repo, hash } = commit; + for (const pull of (await getCommitPulls(owner, repo, hash)).data) { + commit.prKeys.add(GHKey.NewFromPull(pull)); + } + } + pool.commits.push(...commits); // add the pulls @@ -317,95 +328,59 @@ const addRepoToPool = async (pool, repo, from, to) => { let prKey; for (prKey of commit.prKeys.values()) { const pull = await getPullRequest(prKey); - if (!pull || !pull.data) break; // couldn't get it - if (pool.pulls[prKey.number]) break; // already have it + if (!pull || !pull.data) continue; // couldn't get it pool.pulls[prKey.number] = pull; parsePullText(pull, commit); } } }; -/*** -**** Other Repos -***/ - -// other repos - gn - -const getDepsVariable = async (ref, key) => { - // get a copy of that reference point's DEPS file - const deps = await runGit(ELECTRON_VERSION, ['show', `${ref}:DEPS`]); - const filename = path.resolve(os.tmpdir(), 'DEPS'); - fs.writeFileSync(filename, deps); - - // query the DEPS file - const response = childProcess.spawnSync( - 'gclient', - ['getdep', '--deps-file', filename, '--var', key], - { encoding: 'utf8' } - ); - - // cleanup - fs.unlinkSync(filename); - return response.stdout.trim(); -}; - -const getDependencyCommitsGN = async (pool, fromRef, toRef) => { - const repos = [{ // just node - owner: 'electron', - repo: 'node', - dir: path.resolve(SRC_DIR, 'third_party', 'electron_node'), - deps_variable_name: 'node_version' - }]; - - for (const repo of repos) { - // the 'DEPS' file holds the dependency reference point - const key = repo.deps_variable_name; - const from = await getDepsVariable(fromRef, key); - const to = await getDepsVariable(toRef, key); - await addRepoToPool(pool, repo, from, to); +// @return Map +// where the key is a branch name (e.g. '7-1-x' or '8-x-y') +// and the value is a GHKey to the PR +async function getMergedTrops (commit, pool) { + const branches = new Map(); + + for (const prKey of commit.prKeys.values()) { + const pull = pool.pulls[prKey.number]; + const mergedBranches = new Set( + ((pull && pull.data && pull.data.labels) ? pull.data.labels : []) + .map(label => ((label && label.name) ? label.name : '').match(/merged\/([0-9]+-[x0-9]-[xy0-9])/)) + .filter(match => match) + .map(match => match[1]) + ); + + if (mergedBranches.size > 0) { + const isTropComment = (comment) => comment && comment.user && comment.user.login === TROP_LOGIN; + + const ghKey = GHKey.NewFromPull(pull.data); + const backportRegex = /backported this PR to "(.*)",\s+please check out #(\d+)/; + const getBranchNameAndPullKey = (comment) => { + const match = ((comment && comment.body) ? comment.body : '').match(backportRegex); + return match ? [match[1], new GHKey(ghKey.owner, ghKey.repo, parseInt(match[2]))] : null; + }; + + const comments = await getComments(ghKey); + ((comments && comments.data) ? comments.data : []) + .filter(isTropComment) + .map(getBranchNameAndPullKey) + .filter(pair => pair) + .filter(([branch]) => mergedBranches.has(branch)) + .forEach(([branch, key]) => branches.set(branch, key)); + } } -}; - -// Changes are interesting if they make a change relative to a previous -// release in the same series. For example if you fix a Y.0.0 bug, that -// should be included in the Y.0.1 notes even if it's also tropped back -// to X.0.1. -// -// The phrase 'previous release' is important: if this is the first -// prerelease or first stable release in a series, we omit previous -// branches' changes. Otherwise we will have an overwhelmingly long -// list of mostly-irrelevant changes. -const shouldIncludeMultibranchChanges = (version) => { - let show = true; - - if (semver.valid(version)) { - const prerelease = semver.prerelease(version); - show = prerelease - ? parseInt(prerelease.pop()) > 1 - : semver.patch(version) > 0; - } - - return show; -}; -function getOldestMajorBranchOfPull (pull) { - return pull.data.labels - .map(label => label.name.match(/merged\/(\d+)-(\d+)-x/) || label.name.match(/merged\/(\d+)-x-y/)) - .filter(label => !!label) - .map(label => parseInt(label[1])) - .filter(major => !!major) - .sort() - .shift(); + return branches; } -function getOldestMajorBranchOfCommit (commit, pool) { - return [ ...commit.prKeys.values() ] - .map(prKey => pool.pulls[prKey.number]) - .filter(pull => !!pull) - .map(pull => getOldestMajorBranchOfPull(pull)) - .filter(major => !!major) - .sort() - .shift(); +// @return the shorthand name of the branch that `ref` is on, +// e.g. a ref of '10.0.0-beta.1' will return '10-x-y' +async function getBranchNameOfRef (ref, dir) { + return (await runGit(dir, ['branch', '--all', '--contains', ref, '--sort', 'version:refname'])) + .split(/\r?\n/) // split into lines + .shift() // we sorted by refname and want the first result + .match(/(?:.*\/)?(.*)/)[1] // 'remote/origins/10-x-y' -> '10-x-y' + .trim(); } /*** @@ -413,26 +388,20 @@ function getOldestMajorBranchOfCommit (commit, pool) { ***/ const getNotes = async (fromRef, toRef, newVersion) => { - if (!fs.existsSync(CACHE_DIR)) { - fs.mkdirSync(CACHE_DIR); + const cacheDir = getCacheDir(); + if (!fs.existsSync(cacheDir)) { + fs.mkdirSync(cacheDir); } const pool = new Pool(); + const toBranch = await getBranchNameOfRef(toRef, ELECTRON_DIR); + + console.log(`Generating release notes between ${fromRef} and ${toRef} for version ${newVersion} in branch ${toBranch}`); // get the electron/electron commits - const electron = { owner: 'electron', repo: 'electron', dir: ELECTRON_VERSION }; + const electron = { owner: 'electron', repo: 'electron', dir: ELECTRON_DIR }; await addRepoToPool(pool, electron, fromRef, toRef); - // Don't include submodules if comparing across major versions; - // there's just too much churn otherwise. - const includeDeps = semver.valid(fromRef) && - semver.valid(toRef) && - semver.major(fromRef) === semver.major(toRef); - - if (includeDeps) { - await getDependencyCommitsGN(pool, fromRef, toRef); - } - // remove any old commits pool.commits = pool.commits.filter(commit => !pool.processedHashes.has(commit.hash)); @@ -457,27 +426,24 @@ const getNotes = async (fromRef, toRef, newVersion) => { // ensure the commit has a note for (const commit of pool.commits) { for (const prKey of commit.prKeys.values()) { - commit.note = commit.note || await getNoteFromClerk(prKey); if (commit.note) { break; } + commit.note = await getNoteFromClerk(prKey); } - // use a fallback note in case someone missed a 'Notes' comment - commit.note = commit.note || commit.subject; } // remove non-user-facing commits pool.commits = pool.commits + .filter(commit => commit && commit.note) .filter(commit => commit.note !== NO_NOTES) - .filter(commit => !((commit.note || commit.subject).match(/^[Bb]ump v\d+\.\d+\.\d+/))); + .filter(commit => commit.note.match(/^[Bb]ump v\d+\.\d+\.\d+/) === null); - if (!shouldIncludeMultibranchChanges(newVersion)) { - const currentMajor = semver.parse(newVersion).major; - pool.commits = pool.commits - .filter(commit => getOldestMajorBranchOfCommit(commit, pool) >= currentMajor); + for (const commit of pool.commits) { + commit.trops = await getMergedTrops(commit, pool); } - pool.commits = removeSupercededChromiumUpdates(pool.commits); + pool.commits = removeSupercededStackUpdates(pool.commits); const notes = { breaking: [], @@ -486,7 +452,8 @@ const getNotes = async (fromRef, toRef, newVersion) => { fix: [], other: [], unknown: [], - name: newVersion + name: newVersion, + toBranch }; pool.commits.forEach(commit => { @@ -511,50 +478,76 @@ const getNotes = async (fromRef, toRef, newVersion) => { return notes; }; -const removeSupercededChromiumUpdates = (commits) => { - const chromiumRegex = /^Updated Chromium to \d+\.\d+\.\d+\.\d+/; - const updates = commits.filter(commit => (commit.note || commit.subject).match(chromiumRegex)); - const keepers = commits.filter(commit => !updates.includes(commit)); +const removeSupercededStackUpdates = (commits) => { + const updateRegex = /^Updated ([a-zA-Z.]+) to v?([\d.]+)/; + const notupdates = []; - // keep the newest update. - if (updates.length) { - const compare = (a, b) => (a.note || a.subject).localeCompare(b.note || b.subject); - keepers.push(updates.sort(compare).pop()); + const newest = {}; + for (const commit of commits) { + const match = (commit.note || commit.subject).match(updateRegex); + if (!match) { + notupdates.push(commit); + continue; + } + const [, dep, version] = match; + if (!newest[dep] || newest[dep].version < version) { + newest[dep] = { commit, version }; + } } - return keepers; + return [...notupdates, ...Object.values(newest).map(o => o.commit)]; }; /*** **** Render ***/ -const renderLink = (commit, explicitLinks) => { - let link; - const { owner, repo } = commit; - const keyIt = commit.prKeys.values().next(); - if (keyIt.done) /* no PRs */ { - const { hash } = commit; - const url = `https://github.com/${owner}/${repo}/commit/${hash}`; - const text = owner === 'electron' && repo === 'electron' - ? `${hash.slice(0, 8)}` - : `${owner}/${repo}@${hash.slice(0, 8)}`; - link = explicitLinks ? `[${text}](${url})` : text; - } else { - const { number } = keyIt.value; - const url = `https://github.com/${owner}/${repo}/pull/${number}`; - const text = owner === 'electron' && repo === 'electron' - ? `#${number}` - : `${owner}/${repo}#${number}`; - link = explicitLinks ? `[${text}](${url})` : text; - } - return link; -}; +// @return the pull request's GitHub URL +const buildPullURL = ghKey => `https://github.com/${ghKey.owner}/${ghKey.repo}/pull/${ghKey.number}`; + +const renderPull = ghKey => `[#${ghKey.number}](${buildPullURL(ghKey)})`; + +// @return the commit's GitHub URL +const buildCommitURL = commit => `https://github.com/${commit.owner}/${commit.repo}/commit/${commit.hash}`; + +const renderCommit = commit => `[${commit.hash.slice(0, 8)}](${buildCommitURL(commit)})`; + +// @return a markdown link to the PR if available; otherwise, the git commit +function renderLink (commit) { + const maybePull = commit.prKeys.values().next(); + return maybePull.value ? renderPull(maybePull.value) : renderCommit(commit); +} -const renderCommit = (commit, explicitLinks) => { - // clean up the note - let note = commit.note || commit.subject; +// @return a terser branch name, +// e.g. '7-2-x' -> '7.2' and '8-x-y' -> '8' +const renderBranchName = name => name.replace(/-[a-zA-Z]/g, '').replace('-', '.'); + +const renderTrop = (branch, ghKey) => `[${renderBranchName(branch)}](${buildPullURL(ghKey)})`; + +// @return markdown-formatted links to other branches' trops, +// e.g. "(Also in 7.2, 8, 9)" +function renderTrops (commit, excludeBranch) { + const body = [...commit.trops.entries()] + .filter(([branch]) => branch !== excludeBranch) + .sort(([branchA], [branchB]) => parseInt(branchA) - parseInt(branchB)) // sort by semver major + .map(([branch, key]) => renderTrop(branch, key)) + .join(', '); + return body ? `(Also in ${body})` : body; +} + +// @return a slightly cleaned-up human-readable change description +function renderDescription (commit) { + let note = commit.note || commit.subject || ''; note = note.trim(); + + // release notes bullet point every change, so if the note author + // manually started the content with a bullet point, that will confuse + // the markdown renderer -- remove the redundant bullet point + // (example: https://github.com/electron/electron/pull/25216) + if (note.startsWith('*')) { + note = note.slice(1).trim(); + } + if (note.length !== 0) { note = note[0].toUpperCase() + note.substr(1); @@ -590,30 +583,24 @@ const renderCommit = (commit, explicitLinks) => { } } - const link = renderLink(commit, explicitLinks); + return note; +} - return { note, link }; -}; +// @return markdown-formatted release note line item, +// e.g. '* Fixed a foo. #12345 (Also in 7.2, 8, 9)' +const renderNote = (commit, excludeBranch) => + `* ${renderDescription(commit)} ${renderLink(commit)} ${renderTrops(commit, excludeBranch)}\n`; -const renderNotes = (notes, explicitLinks) => { +const renderNotes = (notes) => { const rendered = [`# Release Notes for ${notes.name}\n\n`]; const renderSection = (title, commits) => { - if (commits.length === 0) { - return; - } - const notes = new Map(); - for (const note of commits.map(commit => renderCommit(commit, explicitLinks))) { - if (!notes.has(note.note)) { - notes.set(note.note, [note.link]); - } else { - notes.get(note.note).push(note.link); - } + if (commits.length > 0) { + rendered.push( + `## ${title}\n\n`, + ...(commits.map(commit => renderNote(commit, notes.toBranch)).sort()) + ); } - rendered.push(`## ${title}\n\n`); - const lines = []; - notes.forEach((links, key) => lines.push(` * ${key} ${links.map(link => link.toString()).sort().join(', ')}\n`)); - rendered.push(...lines.sort(), '\n'); }; renderSection('Breaking Changes', notes.breaking); @@ -622,7 +609,7 @@ const renderNotes = (notes, explicitLinks) => { renderSection('Other Changes', notes.other); if (notes.docs.length) { - const docs = notes.docs.map(commit => renderLink(commit, explicitLinks)).sort(); + const docs = notes.docs.map(commit => renderLink(commit)).sort(); rendered.push('## Documentation\n\n', ` * Documentation changes: ${docs.join(', ')}\n`, '\n'); } diff --git a/script/release/prepare-release.js b/script/release/prepare-release.js index cc1911d62a9f3..92ff6655ae73c 100755 --- a/script/release/prepare-release.js +++ b/script/release/prepare-release.js @@ -211,4 +211,8 @@ async function prepareRelease (isBeta, notesOnly) { } } -prepareRelease(!args.stable, args.notesOnly); +prepareRelease(!args.stable, args.notesOnly) + .catch((err) => { + console.error(err); + process.exit(1); + }); diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-0600420bac25439fc2067d51c6aaa4ee11770577 b/spec-main/fixtures/release-notes/cache/electron-electron-commit-0600420bac25439fc2067d51c6aaa4ee11770577 new file mode 100644 index 0000000000000..8299cb85bf303 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-0600420bac25439fc2067d51c6aaa4ee11770577 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/0600420bac25439fc2067d51c6aaa4ee11770577/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:42:26 GMT","etag":"W/\"3601649b1f433390bb296fd32be0d785\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"C9A4:6695:0E0D:2D25:5ECD46F2","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4996","x-ratelimit-reset":"1590514322","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/23635","id":419611668,"node_id":"MDExOlB1bGxSZXF1ZXN0NDE5NjExNjY4","html_url":"https://github.com/electron/electron/pull/23635","diff_url":"https://github.com/electron/electron/pull/23635.diff","patch_url":"https://github.com/electron/electron/pull/23635.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/23635","number":23635,"state":"open","locked":false,"title":"fix: nativeImage remote serialization","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #23543\n\nSee that PR for details.\n\n\r\nNotes: Fixed an issue where `nativeImage`s might throw conversion errors in the renderer process.\r\n","created_at":"2020-05-18T16:29:50Z","updated_at":"2020-05-19T00:48:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1e45fdd07a5b54443182641f836cee03ce8faf1c","assignee":null,"assignees":[],"requested_reviewers":[{"login":"codebytere","id":2036040,"node_id":"MDQ6VXNlcjIwMzYwNDA=","avatar_url":"https://avatars2.githubusercontent.com/u/2036040?v=4","gravatar_id":"","url":"https://api.github.com/users/codebytere","html_url":"https://github.com/codebytere","followers_url":"https://api.github.com/users/codebytere/followers","following_url":"https://api.github.com/users/codebytere/following{/other_user}","gists_url":"https://api.github.com/users/codebytere/gists{/gist_id}","starred_url":"https://api.github.com/users/codebytere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codebytere/subscriptions","organizations_url":"https://api.github.com/users/codebytere/orgs","repos_url":"https://api.github.com/users/codebytere/repos","events_url":"https://api.github.com/users/codebytere/events{/privacy}","received_events_url":"https://api.github.com/users/codebytere/received_events","type":"User","site_admin":true}],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/23635/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/23635/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/23635/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/d054631d21e77838d91a34b275c21e52e1f72108","head":{"label":"electron:trop/9-x-y-bp-fix-nativeimage-remote-serialization-1589819384759","ref":"trop/9-x-y-bp-fix-nativeimage-remote-serialization-1589819384759","sha":"d054631d21e77838d91a34b275c21e52e1f72108","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"29af2312ca179201733b709288c1d7a0f1367580","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/23635"},"html":{"href":"https://github.com/electron/electron/pull/23635"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/23635"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/23635/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/23635/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/23635/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/d054631d21e77838d91a34b275c21e52e1f72108"}},"author_association":"CONTRIBUTOR"},{"url":"https://api.github.com/repos/electron/electron/pulls/23773","id":423260522,"node_id":"MDExOlB1bGxSZXF1ZXN0NDIzMjYwNTIy","html_url":"https://github.com/electron/electron/pull/23773","diff_url":"https://github.com/electron/electron/pull/23773.diff","patch_url":"https://github.com/electron/electron/pull/23773.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/23773","number":23773,"state":"open","locked":false,"title":"fix: trigger activate event when app is activated via app switcher","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #23727\n\nSee that PR for details.\n\n\r\nNotes: none\r\n","created_at":"2020-05-26T14:59:15Z","updated_at":"2020-05-26T15:04:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d1bc78f9ef1cd4f367ca9e1ff712767063eb6f96","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/23773/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/23773/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/23773/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/dce3357f4d056f52a9f03fc2ce4742d10853679d","head":{"label":"electron:trop/9-x-y-bp-fix-trigger-activate-event-when-app-is-activated-via-app-switcher-1590505146122","ref":"trop/9-x-y-bp-fix-trigger-activate-event-when-app-is-activated-via-app-switcher-1590505146122","sha":"dce3357f4d056f52a9f03fc2ce4742d10853679d","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"448a645128b7548fdfcd47eb50e846f096c21d7e","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/23773"},"html":{"href":"https://github.com/electron/electron/pull/23773"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/23773"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/23773/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/23773/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/23773/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/dce3357f4d056f52a9f03fc2ce4742d10853679d"}},"author_association":"CONTRIBUTOR"},{"url":"https://api.github.com/repos/electron/electron/pulls/22828","id":393345723,"node_id":"MDExOlB1bGxSZXF1ZXN0MzkzMzQ1NzIz","html_url":"https://github.com/electron/electron/pull/22828","diff_url":"https://github.com/electron/electron/pull/22828.diff","patch_url":"https://github.com/electron/electron/pull/22828.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/22828","number":22828,"state":"closed","locked":false,"title":"fix: don't allow window to go behind menu bar on mac","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #22770\n\nSee that PR for details.\n\n\r\nNotes: don't allow window to go behind menu bar on mac\r\n","created_at":"2020-03-25T02:14:01Z","updated_at":"2020-03-25T15:45:37Z","closed_at":"2020-03-25T15:45:33Z","merged_at":"2020-03-25T15:45:33Z","merge_commit_sha":"0600420bac25439fc2067d51c6aaa4ee11770577","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/22828/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/22828/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/22828/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/5d7b551db68d672816e47da4bf31d7c3cc29b241","head":{"label":"electron:trop/9-x-y-bp-fix-don-t-allow-window-to-go-behind-menu-bar-on-mac-1585102436930","ref":"trop/9-x-y-bp-fix-don-t-allow-window-to-go-behind-menu-bar-on-mac-1585102436930","sha":"5d7b551db68d672816e47da4bf31d7c3cc29b241","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"a6ff42c190cb5caf8f3e217748e49183a951491b","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/22828"},"html":{"href":"https://github.com/electron/electron/pull/22828"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/22828"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/22828/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/22828/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/22828/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/5d7b551db68d672816e47da4bf31d7c3cc29b241"}},"author_association":"CONTRIBUTOR"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-2955c67c4ea712fa22773ac9113709fc952bfd49 b/spec-main/fixtures/release-notes/cache/electron-electron-commit-2955c67c4ea712fa22773ac9113709fc952bfd49 new file mode 100644 index 0000000000000..033981be25b0d --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-2955c67c4ea712fa22773ac9113709fc952bfd49 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/2955c67c4ea712fa22773ac9113709fc952bfd49/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:25:38 GMT","etag":"W/\"7be19eed3b62d434bcbc8ed63e9c6fe9\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"CC2A:2EDB:AF2650:12289C2:5ECD4301","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4975","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/21946","id":368254138,"node_id":"MDExOlB1bGxSZXF1ZXN0MzY4MjU0MTM4","html_url":"https://github.com/electron/electron/pull/21946","diff_url":"https://github.com/electron/electron/pull/21946.diff","patch_url":"https://github.com/electron/electron/pull/21946.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/21946","number":21946,"state":"closed","locked":false,"title":"fix: prevent print crash on bad deviceName","user":{"login":"codebytere","id":2036040,"node_id":"MDQ6VXNlcjIwMzYwNDA=","avatar_url":"https://avatars2.githubusercontent.com/u/2036040?v=4","gravatar_id":"","url":"https://api.github.com/users/codebytere","html_url":"https://github.com/codebytere","followers_url":"https://api.github.com/users/codebytere/followers","following_url":"https://api.github.com/users/codebytere/following{/other_user}","gists_url":"https://api.github.com/users/codebytere/gists{/gist_id}","starred_url":"https://api.github.com/users/codebytere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codebytere/subscriptions","organizations_url":"https://api.github.com/users/codebytere/orgs","repos_url":"https://api.github.com/users/codebytere/repos","events_url":"https://api.github.com/users/codebytere/events{/privacy}","received_events_url":"https://api.github.com/users/codebytere/received_events","type":"User","site_admin":true},"body":"#### Description of Change\r\n\r\nOn [Windows](https://source.chromium.org/chromium/chromium/src/+/master:printing/printing_context_win.cc;l=157?originalUrl=https:%2F%2Fcs.chromium.org%2F) and [macOS](https://source.chromium.org/chromium/chromium/src/+/master:printing/printing_context_mac.mm;l=226?originalUrl=https:%2F%2Fcs.chromium.org%2F), Chromium's printing code will crash if a `deviceName` is provided, but is invalid on the network, i.e does not correspond to a printer that the caller machine is aware of. This bug has been present for a long time, but after playing around a bit I've determined that it's possible to catch faulty `deviceName`s by pulling out some of the printer validation code from Chromium. This PR adds that check for Windows and macOS as well as tests for the same.\r\n\r\nTested with:\r\n```js\r\nwin.webContents.on('did-finish-load', () => {\r\n win.webContents.print({deviceName: 'bad-printer-name'}, (success, reason) => {\r\n console.log(`printing ${success ? 'did' : 'did not'} succeed: ${reason}`)\r\n })\r\n})\r\n```\r\n\r\ncc @ckerr @zcbenz \r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] `npm test` passes\r\n- [x] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [x] relevant documentation is changed or added\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: Fixed a potential crash on faulty `deviceName`s in `webContents.print()`.\r\n","created_at":"2020-01-28T22:02:08Z","updated_at":"2020-05-18T18:15:29Z","closed_at":"2020-01-31T02:49:14Z","merged_at":"2020-01-31T02:49:14Z","merge_commit_sha":"2955c67c4ea712fa22773ac9113709fc952bfd49","assignee":null,"assignees":[],"requested_reviewers":[{"login":"ckerr","id":70381,"node_id":"MDQ6VXNlcjcwMzgx","avatar_url":"https://avatars3.githubusercontent.com/u/70381?v=4","gravatar_id":"","url":"https://api.github.com/users/ckerr","html_url":"https://github.com/ckerr","followers_url":"https://api.github.com/users/ckerr/followers","following_url":"https://api.github.com/users/ckerr/following{/other_user}","gists_url":"https://api.github.com/users/ckerr/gists{/gist_id}","starred_url":"https://api.github.com/users/ckerr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ckerr/subscriptions","organizations_url":"https://api.github.com/users/ckerr/orgs","repos_url":"https://api.github.com/users/ckerr/repos","events_url":"https://api.github.com/users/ckerr/events{/privacy}","received_events_url":"https://api.github.com/users/ckerr/received_events","type":"User","site_admin":true}],"requested_teams":[],"labels":[{"id":1657635084,"node_id":"MDU6TGFiZWwxNjU3NjM1MDg0","url":"https://api.github.com/repos/electron/electron/labels/merged/7-1-x","name":"merged/7-1-x","color":"61a3c6","default":false,"description":"PR was merged to the \"7-1-x\" branch."},{"id":1634462328,"node_id":"MDU6TGFiZWwxNjM0NDYyMzI4","url":"https://api.github.com/repos/electron/electron/labels/merged/8-x-y","name":"merged/8-x-y","color":"61a3c6","default":false,"description":"PR was merged to the \"8-x-y\" branch."}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/21946/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/21946/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/21946/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/858dbc690b159ecf767e6ae55e476f73ead931f6","head":{"label":"electron:sanity-check-devicename","ref":"sanity-check-devicename","sha":"858dbc690b159ecf767e6ae55e476f73ead931f6","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:02:47Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"0979bfc9c1a3ad2d9a8d32eb63db6940d278ff02","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:02:47Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/21946"},"html":{"href":"https://github.com/electron/electron/pull/21946"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/21946"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/21946/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/21946/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/21946/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/858dbc690b159ecf767e6ae55e476f73ead931f6"}},"author_association":"MEMBER"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98 b/spec-main/fixtures/release-notes/cache/electron-electron-commit-2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98 new file mode 100644 index 0000000000000..037f9d5829a60 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:31:06 GMT","etag":"W/\"a02a824c8e984accc4fa3c78f76c0ab3\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"C1E2:5089:126DC:28ABA:5ECD4449","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4971","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/20214","id":316715466,"node_id":"MDExOlB1bGxSZXF1ZXN0MzE2NzE1NDY2","html_url":"https://github.com/electron/electron/pull/20214","diff_url":"https://github.com/electron/electron/pull/20214.diff","patch_url":"https://github.com/electron/electron/pull/20214.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","number":20214,"state":"closed","locked":false,"title":"refactor: use v8 serialization for ipc","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\n\r\nBREAKING CHANGE\r\n\r\nThis changes IPC communication to use v8's [Structured Clone](https://html.spec.whatwg.org/multipage/structured-data.html#safe-passing-of-structured-data) algorithm instead of using the `base::Value` serialization defined in `native_mate_converters/v8_value_converter.cc`. This is be faster, more featureful, and less surprising than the existing logic, since it more-or-less matches the logic that backs `postMessage`.\r\n\r\nThis brings about a 2x performance boost for large buffers and complex objects. Latency for small messages is not significantly affected.\r\n\r\nUser-observable differences from the existing IPC API:\r\n- It's about 2x faster.\r\n- `NaN`, `Infinity`, and `undefined` are transferred as such, rather than being converted to `null`.\r\n- Cyclic objects can be transmitted.\r\n- `Set` and `Map`, `Error`, `RegExp`, `Date` and `BigInt` can be transmitted.\r\n- `Buffer` will be converted to `Uint8Array`.\r\n- Typed arrays (`Float32Array` and friends) will be transmitted as they are, instead of being converted to `Buffer`.\r\n- Sparse arrays will be transferred as sparse arrays, instead of being converted to dense arrays with `null`s.\r\n\r\n> **NOTE**: Objects that aren't serializable with V8's Structured Clone algorithm, such as functions, DOM objects, special Node/Electron objects like `process.env` or `WebContents`, or any objects containing such items will be serialized with the old `base::Value`-based algorithm. However, this behavior is deprecated and will throw an exception beginning with Electron 9.\r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] `npm test` passes\r\n- [x] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [x] relevant documentation is changed or added\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: IPC between main and renderer processes now uses the Structured Clone Algorithm.","created_at":"2019-09-12T03:41:25Z","updated_at":"2020-04-13T15:54:22Z","closed_at":"2019-10-09T17:59:09Z","merged_at":"2019-10-09T17:59:09Z","merge_commit_sha":"2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/20214/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/20214/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/20214/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/55076a368ea11a3408e390067b7cfe420707eb7d","head":{"label":"electron:cloneable-message-ipc","ref":"cloneable-message-ipc","sha":"55076a368ea11a3408e390067b7cfe420707eb7d","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"fe956f87ec6628f93bda11785e7860b97c61b085","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/20214"},"html":{"href":"https://github.com/electron/electron/pull/20214"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/20214"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/20214/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/20214/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/20214/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/55076a368ea11a3408e390067b7cfe420707eb7d"}},"author_association":"MEMBER"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-467409458e716c68b35fa935d556050ca6bed1c4 b/spec-main/fixtures/release-notes/cache/electron-electron-commit-467409458e716c68b35fa935d556050ca6bed1c4 new file mode 100644 index 0000000000000..61d85453ab151 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-467409458e716c68b35fa935d556050ca6bed1c4 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/467409458e716c68b35fa935d556050ca6bed1c4/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 15:50:00 GMT","etag":"W/\"4541690410aaff6d5131f40248d2aa1c\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"BF14:68F2:966D8C:1003C0D:5ECD3AA7","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4991","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/20620","id":329363864,"node_id":"MDExOlB1bGxSZXF1ZXN0MzI5MzYzODY0","html_url":"https://github.com/electron/electron/pull/20620","diff_url":"https://github.com/electron/electron/pull/20620.diff","patch_url":"https://github.com/electron/electron/pull/20620.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/20620","number":20620,"state":"closed","locked":false,"title":"build: add support for automated minor releases","user":{"login":"jkleinsc","id":609052,"node_id":"MDQ6VXNlcjYwOTA1Mg==","avatar_url":"https://avatars0.githubusercontent.com/u/609052?v=4","gravatar_id":"","url":"https://api.github.com/users/jkleinsc","html_url":"https://github.com/jkleinsc","followers_url":"https://api.github.com/users/jkleinsc/followers","following_url":"https://api.github.com/users/jkleinsc/following{/other_user}","gists_url":"https://api.github.com/users/jkleinsc/gists{/gist_id}","starred_url":"https://api.github.com/users/jkleinsc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkleinsc/subscriptions","organizations_url":"https://api.github.com/users/jkleinsc/orgs","repos_url":"https://api.github.com/users/jkleinsc/repos","events_url":"https://api.github.com/users/jkleinsc/events{/privacy}","received_events_url":"https://api.github.com/users/jkleinsc/received_events","type":"User","site_admin":true},"body":"#### Description of Change\r\n\r\nStarting with the 8-x series we are going to switch to having an 8-x-y branch from which we can publish 8-0-x releases as well as (if necessary) 8-x-y releases. This means that if we want to release a minor version we will no longer have to create a new branch for that minor. \r\n\r\nThis PR changes our release scripts to allow for minor bumps. There will need to be corresponding changes made to sudowoodo and trop to support this change.\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: no-notes\r\n","created_at":"2019-10-17T16:54:58Z","updated_at":"2019-10-23T18:07:14Z","closed_at":"2019-10-23T18:07:10Z","merged_at":"2019-10-23T18:07:10Z","merge_commit_sha":"467409458e716c68b35fa935d556050ca6bed1c4","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/20620/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/20620/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/20620/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/3e83f35e702d90667842c15781f84dcb786673a8","head":{"label":"electron:support-n-x-y-branches","ref":"support-n-x-y-branches","sha":"3e83f35e702d90667842c15781f84dcb786673a8","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:39:23Z","pushed_at":"2020-05-26T15:46:58Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82995,"watchers_count":82995,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1223,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1223,"watchers":82995,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"86258c6cff88c60d730c0d1f050bb68c12c41d99","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:39:23Z","pushed_at":"2020-05-26T15:46:58Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82995,"watchers_count":82995,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1223,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1223,"watchers":82995,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/20620"},"html":{"href":"https://github.com/electron/electron/pull/20620"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/20620"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/20620/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/20620/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/20620/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/3e83f35e702d90667842c15781f84dcb786673a8"}},"author_association":"MEMBER"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-61dc1c88fd34a3e8fff80c80ed79d0455970e610 b/spec-main/fixtures/release-notes/cache/electron-electron-commit-61dc1c88fd34a3e8fff80c80ed79d0455970e610 new file mode 100644 index 0000000000000..07f0bc1b56973 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-61dc1c88fd34a3e8fff80c80ed79d0455970e610 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/61dc1c88fd34a3e8fff80c80ed79d0455970e610/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Thu, 03 Sep 2020 14:47:58 GMT","etag":"W/\"1977f5f65af09cfb150e16578b76d768\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"9FBE:1CC8:3B7C0C:BC07CD:5F51021E","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4991","x-ratelimit-reset":"1599146257","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/25275","id":477802988,"node_id":"MDExOlB1bGxSZXF1ZXN0NDc3ODAyOTg4","html_url":"https://github.com/electron/electron/pull/25275","diff_url":"https://github.com/electron/electron/pull/25275.diff","patch_url":"https://github.com/electron/electron/pull/25275.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/25275","number":25275,"state":"open","locked":false,"title":"chore: bump chromium to 85.0.4183.98 (10-x-y)","user":{"login":"electron-bot","id":18403005,"node_id":"MDQ6VXNlcjE4NDAzMDA1","avatar_url":"https://avatars3.githubusercontent.com/u/18403005?v=4","gravatar_id":"","url":"https://api.github.com/users/electron-bot","html_url":"https://github.com/electron-bot","followers_url":"https://api.github.com/users/electron-bot/followers","following_url":"https://api.github.com/users/electron-bot/following{/other_user}","gists_url":"https://api.github.com/users/electron-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/electron-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron-bot/subscriptions","organizations_url":"https://api.github.com/users/electron-bot/orgs","repos_url":"https://api.github.com/users/electron-bot/repos","events_url":"https://api.github.com/users/electron-bot/events{/privacy}","received_events_url":"https://api.github.com/users/electron-bot/received_events","type":"User","site_admin":false},"body":"Updating Chromium to 85.0.4183.98.\n\nSee [all changes in 85.0.4183.94..85.0.4183.98](https://chromium.googlesource.com/chromium/src/+log/85.0.4183.94..85.0.4183.98?n=10000&pretty=fuller)\n\n\n\nNotes: Updated Chromium to 85.0.4183.98.","created_at":"2020-09-02T13:00:09Z","updated_at":"2020-09-03T13:01:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5eab09a2990ea60d7b1690bd205d0f7038eadd37","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[{"name":"wg-upgrades","id":3118509,"node_id":"MDQ6VGVhbTMxMTg1MDk=","slug":"wg-upgrades","description":"Upgrades Working Group","privacy":"closed","url":"https://api.github.com/organizations/13409222/team/3118509","html_url":"https://github.com/orgs/electron/teams/wg-upgrades","members_url":"https://api.github.com/organizations/13409222/team/3118509/members{/member}","repositories_url":"https://api.github.com/organizations/13409222/team/3118509/repos","permission":"pull","parent":{"name":"gov","id":3132543,"node_id":"MDQ6VGVhbTMxMzI1NDM=","slug":"gov","description":"Electron Governance","privacy":"closed","url":"https://api.github.com/organizations/13409222/team/3132543","html_url":"https://github.com/orgs/electron/teams/gov","members_url":"https://api.github.com/organizations/13409222/team/3132543/members{/member}","repositories_url":"https://api.github.com/organizations/13409222/team/3132543/repos","permission":"pull"}}],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/25275/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/25275/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/25275/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/3d5e8c269fd4d044a7223efda11990bf01c1adb5","head":{"label":"electron:roller/chromium/10-x-y","ref":"roller/chromium/10-x-y","sha":"3d5e8c269fd4d044a7223efda11990bf01c1adb5","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"base":{"label":"electron:10-x-y","ref":"10-x-y","sha":"5067b012d406969590c9659438b09483cace1d54","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/25275"},"html":{"href":"https://github.com/electron/electron/pull/25275"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/25275"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/25275/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/25275/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/25275/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/3d5e8c269fd4d044a7223efda11990bf01c1adb5"}},"author_association":"MEMBER","active_lock_reason":null},{"url":"https://api.github.com/repos/electron/electron/pulls/25299","id":478572927,"node_id":"MDExOlB1bGxSZXF1ZXN0NDc4NTcyOTI3","html_url":"https://github.com/electron/electron/pull/25299","diff_url":"https://github.com/electron/electron/pull/25299.diff","patch_url":"https://github.com/electron/electron/pull/25299.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/25299","number":25299,"state":"open","locked":false,"title":"fix: multiple dock icons when calling dock.show/hide","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #25269\n\nSee that PR for details.\n\n\r\nNotes: Fix multiple dock icons being left in system when calling `dock.show`/`hide` on macOS.","created_at":"2020-09-03T11:46:51Z","updated_at":"2020-09-03T11:49:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e5ad2c5890f6f0b7d540dad5750c89969d921bb1","assignee":null,"assignees":[],"requested_reviewers":[{"login":"zcbenz","id":639601,"node_id":"MDQ6VXNlcjYzOTYwMQ==","avatar_url":"https://avatars0.githubusercontent.com/u/639601?v=4","gravatar_id":"","url":"https://api.github.com/users/zcbenz","html_url":"https://github.com/zcbenz","followers_url":"https://api.github.com/users/zcbenz/followers","following_url":"https://api.github.com/users/zcbenz/following{/other_user}","gists_url":"https://api.github.com/users/zcbenz/gists{/gist_id}","starred_url":"https://api.github.com/users/zcbenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcbenz/subscriptions","organizations_url":"https://api.github.com/users/zcbenz/orgs","repos_url":"https://api.github.com/users/zcbenz/repos","events_url":"https://api.github.com/users/zcbenz/events{/privacy}","received_events_url":"https://api.github.com/users/zcbenz/received_events","type":"User","site_admin":true}],"requested_teams":[],"labels":[{"id":1858180153,"node_id":"MDU6TGFiZWwxODU4MTgwMTUz","url":"https://api.github.com/repos/electron/electron/labels/10-x-y","name":"10-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/25299/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/25299/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/25299/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/d7217daf9f1465521e46750c7890ebe27b8e611d","head":{"label":"electron:trop/10-x-y-bp-fix-multiple-dock-icons-when-calling-dock-show-hide-1599133604608","ref":"trop/10-x-y-bp-fix-multiple-dock-icons-when-calling-dock-show-hide-1599133604608","sha":"d7217daf9f1465521e46750c7890ebe27b8e611d","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"base":{"label":"electron:10-x-y","ref":"10-x-y","sha":"5067b012d406969590c9659438b09483cace1d54","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/25299"},"html":{"href":"https://github.com/electron/electron/pull/25299"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/25299"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/25299/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/25299/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/25299/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/d7217daf9f1465521e46750c7890ebe27b8e611d"}},"author_association":"CONTRIBUTOR","active_lock_reason":null},{"url":"https://api.github.com/repos/electron/electron/pulls/25280","id":478006648,"node_id":"MDExOlB1bGxSZXF1ZXN0NDc4MDA2NjQ4","html_url":"https://github.com/electron/electron/pull/25280","diff_url":"https://github.com/electron/electron/pull/25280.diff","patch_url":"https://github.com/electron/electron/pull/25280.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/25280","number":25280,"state":"open","locked":false,"title":"fix: provide asynchronous cleanup hooks in n-api","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #25135\n\nSee that PR for details.\n\n\r\nNotes: none\r\n","created_at":"2020-09-02T17:22:23Z","updated_at":"2020-09-02T17:29:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9abfc4b7d8015d53fabc7b24aa8cd703589eb40f","assignee":null,"assignees":[],"requested_reviewers":[{"login":"codebytere","id":2036040,"node_id":"MDQ6VXNlcjIwMzYwNDA=","avatar_url":"https://avatars2.githubusercontent.com/u/2036040?v=4","gravatar_id":"","url":"https://api.github.com/users/codebytere","html_url":"https://github.com/codebytere","followers_url":"https://api.github.com/users/codebytere/followers","following_url":"https://api.github.com/users/codebytere/following{/other_user}","gists_url":"https://api.github.com/users/codebytere/gists{/gist_id}","starred_url":"https://api.github.com/users/codebytere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codebytere/subscriptions","organizations_url":"https://api.github.com/users/codebytere/orgs","repos_url":"https://api.github.com/users/codebytere/repos","events_url":"https://api.github.com/users/codebytere/events{/privacy}","received_events_url":"https://api.github.com/users/codebytere/received_events","type":"User","site_admin":true}],"requested_teams":[{"name":"wg-upgrades","id":3118509,"node_id":"MDQ6VGVhbTMxMTg1MDk=","slug":"wg-upgrades","description":"Upgrades Working Group","privacy":"closed","url":"https://api.github.com/organizations/13409222/team/3118509","html_url":"https://github.com/orgs/electron/teams/wg-upgrades","members_url":"https://api.github.com/organizations/13409222/team/3118509/members{/member}","repositories_url":"https://api.github.com/organizations/13409222/team/3118509/repos","permission":"pull","parent":{"name":"gov","id":3132543,"node_id":"MDQ6VGVhbTMxMzI1NDM=","slug":"gov","description":"Electron Governance","privacy":"closed","url":"https://api.github.com/organizations/13409222/team/3132543","html_url":"https://github.com/orgs/electron/teams/gov","members_url":"https://api.github.com/organizations/13409222/team/3132543/members{/member}","repositories_url":"https://api.github.com/organizations/13409222/team/3132543/repos","permission":"pull"}}],"labels":[{"id":1858180153,"node_id":"MDU6TGFiZWwxODU4MTgwMTUz","url":"https://api.github.com/repos/electron/electron/labels/10-x-y","name":"10-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/25280/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/25280/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/25280/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/3ec728e23051692285f2d530a563d313c348d93e","head":{"label":"electron:trop/10-x-y-bp-fix-provide-asynchronous-cleanup-hooks-in-n-api-1599067338450","ref":"trop/10-x-y-bp-fix-provide-asynchronous-cleanup-hooks-in-n-api-1599067338450","sha":"3ec728e23051692285f2d530a563d313c348d93e","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"base":{"label":"electron:10-x-y","ref":"10-x-y","sha":"5067b012d406969590c9659438b09483cace1d54","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/25280"},"html":{"href":"https://github.com/electron/electron/pull/25280"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/25280"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/25280/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/25280/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/25280/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/3ec728e23051692285f2d530a563d313c348d93e"}},"author_association":"CONTRIBUTOR","active_lock_reason":null},{"url":"https://api.github.com/repos/electron/electron/pulls/25216","id":476409290,"node_id":"MDExOlB1bGxSZXF1ZXN0NDc2NDA5Mjkw","html_url":"https://github.com/electron/electron/pull/25216","diff_url":"https://github.com/electron/electron/pull/25216.diff","patch_url":"https://github.com/electron/electron/pull/25216.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/25216","number":25216,"state":"closed","locked":false,"title":"fix: client area inset calculation when maximized for framless windows","user":{"login":"deepak1556","id":964386,"node_id":"MDQ6VXNlcjk2NDM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/964386?v=4","gravatar_id":"","url":"https://api.github.com/users/deepak1556","html_url":"https://github.com/deepak1556","followers_url":"https://api.github.com/users/deepak1556/followers","following_url":"https://api.github.com/users/deepak1556/following{/other_user}","gists_url":"https://api.github.com/users/deepak1556/gists{/gist_id}","starred_url":"https://api.github.com/users/deepak1556/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepak1556/subscriptions","organizations_url":"https://api.github.com/users/deepak1556/orgs","repos_url":"https://api.github.com/users/deepak1556/repos","events_url":"https://api.github.com/users/deepak1556/events{/privacy}","received_events_url":"https://api.github.com/users/deepak1556/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\n\r\nBackports https://github.com/electron/electron/pull/25052\r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [ ] `npm test` passes\r\n- [ ] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [ ] relevant documentation is changed or added\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n- [x] This is **NOT A BREAKING CHANGE**. Breaking changes may not be merged to master until 11-x-y is branched.\r\n\r\n#### Release Notes\r\n\r\nNotes:\r\n* Fixes the following issues for frameless when maximized on Windows:\r\n* fix unreachable task bar when auto hidden with position top\r\n* fix 1px extending to secondary monitor\r\n* fix 1px overflowing into taskbar at certain resolutions\r\n* fix white line on top of window under 4k resolutions","created_at":"2020-08-31T16:42:51Z","updated_at":"2020-08-31T20:23:06Z","closed_at":"2020-08-31T20:22:47Z","merged_at":"2020-08-31T20:22:47Z","merge_commit_sha":"61dc1c88fd34a3e8fff80c80ed79d0455970e610","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1858180153,"node_id":"MDU6TGFiZWwxODU4MTgwMTUz","url":"https://api.github.com/repos/electron/electron/labels/10-x-y","name":"10-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/25216/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/25216/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/25216/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/b9a5849e07e0fca6c3ceb66dddac69106d21310a","head":{"label":"electron:robo/bp_25052_10","ref":"robo/bp_25052_10","sha":"b9a5849e07e0fca6c3ceb66dddac69106d21310a","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"base":{"label":"electron:10-x-y","ref":"10-x-y","sha":"615dce32759a5d34797f2445f06622aba1fb6b21","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/25216"},"html":{"href":"https://github.com/electron/electron/pull/25216"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/25216"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/25216/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/25216/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/25216/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/b9a5849e07e0fca6c3ceb66dddac69106d21310a"}},"author_association":"MEMBER","active_lock_reason":null}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-89eb309d0b22bd4aec058ffaf983e81e56a5c378 b/spec-main/fixtures/release-notes/cache/electron-electron-commit-89eb309d0b22bd4aec058ffaf983e81e56a5c378 new file mode 100644 index 0000000000000..752942614da8a --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-89eb309d0b22bd4aec058ffaf983e81e56a5c378 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/89eb309d0b22bd4aec058ffaf983e81e56a5c378/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 04:04:06 GMT","etag":"W/\"442672ace5270531a2ffdc83b3b51f20\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"8118:3989:536BFA:8CED70:5ECC9535","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4999","x-ratelimit-reset":"1590469446","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/21891","id":367058148,"node_id":"MDExOlB1bGxSZXF1ZXN0MzY3MDU4MTQ4","html_url":"https://github.com/electron/electron/pull/21891","diff_url":"https://github.com/electron/electron/pull/21891.diff","patch_url":"https://github.com/electron/electron/pull/21891.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/21891","number":21891,"state":"closed","locked":false,"title":"feat: allow GUID parameter to avoid systray demotion on Windows ","user":{"login":"bitdisaster","id":5191943,"node_id":"MDQ6VXNlcjUxOTE5NDM=","avatar_url":"https://avatars3.githubusercontent.com/u/5191943?v=4","gravatar_id":"","url":"https://api.github.com/users/bitdisaster","html_url":"https://github.com/bitdisaster","followers_url":"https://api.github.com/users/bitdisaster/followers","following_url":"https://api.github.com/users/bitdisaster/following{/other_user}","gists_url":"https://api.github.com/users/bitdisaster/gists{/gist_id}","starred_url":"https://api.github.com/users/bitdisaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitdisaster/subscriptions","organizations_url":"https://api.github.com/users/bitdisaster/orgs","repos_url":"https://api.github.com/users/bitdisaster/repos","events_url":"https://api.github.com/users/bitdisaster/events{/privacy}","received_events_url":"https://api.github.com/users/bitdisaster/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\nEnhances the Tray API on Windows to avoid demotion of the icon position in the system tray. With normal usage of the Windows API https://docs.microsoft.com/en-us/windows/win32/api/shellapi/ns-shellapi-notifyicondataa a user customized position of the icon is linked to the absolute file path of the executable. If the path changes, mostly by updater frameworks such Squirrel.Windows, the position is lost, and the icon will be placed back in the overflow area.\r\nHowever, the combination of a code signed binary and GUID parameter can make the positioning of the icon persistent even if the path to the executable changes.\r\nThe use of the GUID parameter also fixes a behavior where the position of a second or third icon will be lost on each restart of the App. Even if the path has not changed. \r\n\r\nI’m aware of a previous attempt https://github.com/electron/electron/pull/2328 to introduce the GUID parameter. The reason why it failed and had to be rolled back is bases on Microsofts somewhat incomplete/confusing documentation. A couple of gotchas:\r\n\r\n- The GUID is not a replacement/alternative for the uID. The uID parameter is still needed to identify the icon via Hwnd messages. \r\n- The GUID parameter is no global Id for the app that seeks to create icons in the system tray. Each icon needs its own GUID if multiple icons are created.\r\n- The GUID is best used in combination with a code signed binary. Once it is used with code signature, the GUID is permanently bound to it.\r\n- The code signature has to contain CN, OU, O in the subject line. \r\n- The GUID parameter can be used with none code signed binary. However, now the GUID is permanently bound to the path of the binary. If the path changes and the same GUID is used the creation the Tray icon will fail. Since the GUID was statically derived from the AppUserModelId, PR 2328 had to be reverted because it broke all Apps without code signature when they updated and changed there executable path.\r\n\r\nBased on above behaviors of the Windows API its best to make this an opt-in. The developer has to be aware of the behavior/requirements using the GUID parameter. It also allows the mitigation of unexpected problems with the Tray creation by providing a new GUID.\r\n\r\n\r\n\r\n#### Checklist\r\n\r\n\r\n- [X] PR description included and stakeholders cc'd\r\n- [X] `npm test` passes\r\n- [X] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [X] relevant documentation is changed or added\r\n- [X] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: Added GUID parameter to Tray API to avoid system tray icon demotion on Windows \r\n","created_at":"2020-01-24T23:45:33Z","updated_at":"2020-01-31T05:37:07Z","closed_at":"2020-01-31T05:37:04Z","merged_at":"2020-01-31T05:37:04Z","merge_commit_sha":"89eb309d0b22bd4aec058ffaf983e81e56a5c378","assignee":null,"assignees":[],"requested_reviewers":[{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/21891/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/21891/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/21891/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/e72c7ec1aa0d52e4fe5a6d77f1fa558c0dde6e4d","head":{"label":"bitdisaster:fix-systray-demotion-on-windows","ref":"fix-systray-demotion-on-windows","sha":"e72c7ec1aa0d52e4fe5a6d77f1fa558c0dde6e4d","user":{"login":"bitdisaster","id":5191943,"node_id":"MDQ6VXNlcjUxOTE5NDM=","avatar_url":"https://avatars3.githubusercontent.com/u/5191943?v=4","gravatar_id":"","url":"https://api.github.com/users/bitdisaster","html_url":"https://github.com/bitdisaster","followers_url":"https://api.github.com/users/bitdisaster/followers","following_url":"https://api.github.com/users/bitdisaster/following{/other_user}","gists_url":"https://api.github.com/users/bitdisaster/gists{/gist_id}","starred_url":"https://api.github.com/users/bitdisaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitdisaster/subscriptions","organizations_url":"https://api.github.com/users/bitdisaster/orgs","repos_url":"https://api.github.com/users/bitdisaster/repos","events_url":"https://api.github.com/users/bitdisaster/events{/privacy}","received_events_url":"https://api.github.com/users/bitdisaster/received_events","type":"User","site_admin":false},"repo":{"id":216672113,"node_id":"MDEwOlJlcG9zaXRvcnkyMTY2NzIxMTM=","name":"electron","full_name":"bitdisaster/electron","private":false,"owner":{"login":"bitdisaster","id":5191943,"node_id":"MDQ6VXNlcjUxOTE5NDM=","avatar_url":"https://avatars3.githubusercontent.com/u/5191943?v=4","gravatar_id":"","url":"https://api.github.com/users/bitdisaster","html_url":"https://github.com/bitdisaster","followers_url":"https://api.github.com/users/bitdisaster/followers","following_url":"https://api.github.com/users/bitdisaster/following{/other_user}","gists_url":"https://api.github.com/users/bitdisaster/gists{/gist_id}","starred_url":"https://api.github.com/users/bitdisaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitdisaster/subscriptions","organizations_url":"https://api.github.com/users/bitdisaster/orgs","repos_url":"https://api.github.com/users/bitdisaster/repos","events_url":"https://api.github.com/users/bitdisaster/events{/privacy}","received_events_url":"https://api.github.com/users/bitdisaster/received_events","type":"User","site_admin":false},"html_url":"https://github.com/bitdisaster/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":true,"url":"https://api.github.com/repos/bitdisaster/electron","forks_url":"https://api.github.com/repos/bitdisaster/electron/forks","keys_url":"https://api.github.com/repos/bitdisaster/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bitdisaster/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bitdisaster/electron/teams","hooks_url":"https://api.github.com/repos/bitdisaster/electron/hooks","issue_events_url":"https://api.github.com/repos/bitdisaster/electron/issues/events{/number}","events_url":"https://api.github.com/repos/bitdisaster/electron/events","assignees_url":"https://api.github.com/repos/bitdisaster/electron/assignees{/user}","branches_url":"https://api.github.com/repos/bitdisaster/electron/branches{/branch}","tags_url":"https://api.github.com/repos/bitdisaster/electron/tags","blobs_url":"https://api.github.com/repos/bitdisaster/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bitdisaster/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bitdisaster/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/bitdisaster/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bitdisaster/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/bitdisaster/electron/languages","stargazers_url":"https://api.github.com/repos/bitdisaster/electron/stargazers","contributors_url":"https://api.github.com/repos/bitdisaster/electron/contributors","subscribers_url":"https://api.github.com/repos/bitdisaster/electron/subscribers","subscription_url":"https://api.github.com/repos/bitdisaster/electron/subscription","commits_url":"https://api.github.com/repos/bitdisaster/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/bitdisaster/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/bitdisaster/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/bitdisaster/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/bitdisaster/electron/contents/{+path}","compare_url":"https://api.github.com/repos/bitdisaster/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bitdisaster/electron/merges","archive_url":"https://api.github.com/repos/bitdisaster/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bitdisaster/electron/downloads","issues_url":"https://api.github.com/repos/bitdisaster/electron/issues{/number}","pulls_url":"https://api.github.com/repos/bitdisaster/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/bitdisaster/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/bitdisaster/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bitdisaster/electron/labels{/name}","releases_url":"https://api.github.com/repos/bitdisaster/electron/releases{/id}","deployments_url":"https://api.github.com/repos/bitdisaster/electron/deployments","created_at":"2019-10-21T21:53:10Z","updated_at":"2020-01-20T18:30:37Z","pushed_at":"2020-01-28T23:56:20Z","git_url":"git://github.com/bitdisaster/electron.git","ssh_url":"git@github.com:bitdisaster/electron.git","clone_url":"https://github.com/bitdisaster/electron.git","svn_url":"https://github.com/bitdisaster/electron","homepage":"https://electronjs.org","size":68832,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"28fb2b7ed5c96fdae559ea015e99f3acb6b12023","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T03:18:11Z","pushed_at":"2020-05-26T02:52:23Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75421,"stargazers_count":82973,"watchers_count":82973,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11130,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11130,"open_issues":1224,"watchers":82973,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/21891"},"html":{"href":"https://github.com/electron/electron/pull/21891"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/21891"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/21891/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/21891/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/21891/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/e72c7ec1aa0d52e4fe5a6d77f1fa558c0dde6e4d"}},"author_association":"MEMBER"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-8bc0c92137f4a77dc831ca644a86a3e48b51a11e b/spec-main/fixtures/release-notes/cache/electron-electron-commit-8bc0c92137f4a77dc831ca644a86a3e48b51a11e new file mode 100644 index 0000000000000..9439997b1543e --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-8bc0c92137f4a77dc831ca644a86a3e48b51a11e @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/8bc0c92137f4a77dc831ca644a86a3e48b51a11e/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 04:04:13 GMT","etag":"W/\"ec4682709ef52766317ea4b47c247d68\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"811A:6500:2B2B5B:60C764:5ECC9537","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4998","x-ratelimit-reset":"1590469445","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/21591","id":355863062,"node_id":"MDExOlB1bGxSZXF1ZXN0MzU1ODYzMDYy","html_url":"https://github.com/electron/electron/pull/21591","diff_url":"https://github.com/electron/electron/pull/21591.diff","patch_url":"https://github.com/electron/electron/pull/21591.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/21591","number":21591,"state":"closed","locked":false,"title":"feat: [extensions] background pages","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\nThis adds support for lazy background pages when building with ENABLE_ELECTRON_EXTENSIONS. One step closer to a functional React DevTools!\r\n\r\nNB. no release notes because this feature is still behind the ENABLE_ELECTRON_EXTENSIONS flag, which is not enabled in Electron release builds.\r\n\r\nRef #19447\r\n\r\n#### Checklist\r\n\r\n\r\n- [ ] PR description included and stakeholders cc'd\r\n- [ ] `npm test` passes\r\n- [ ] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [ ] relevant documentation is changed or added\r\n- [ ] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [ ] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: none\r\n","created_at":"2019-12-20T19:06:41Z","updated_at":"2020-01-13T22:56:03Z","closed_at":"2020-01-13T22:55:58Z","merged_at":"2020-01-13T22:55:58Z","merge_commit_sha":"8bc0c92137f4a77dc831ca644a86a3e48b51a11e","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/21591/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/21591/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/21591/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/391bf72b0bdad568d8e36300e47c8c3915ab751e","head":{"label":"electron:extensions-background-pages","ref":"extensions-background-pages","sha":"391bf72b0bdad568d8e36300e47c8c3915ab751e","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T03:18:11Z","pushed_at":"2020-05-26T02:52:23Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75421,"stargazers_count":82973,"watchers_count":82973,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11130,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11130,"open_issues":1224,"watchers":82973,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"7161b2f57c8a0da87d8e2d54f240c16f5b2afe4b","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T03:18:11Z","pushed_at":"2020-05-26T02:52:23Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75421,"stargazers_count":82973,"watchers_count":82973,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11130,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11130,"open_issues":1224,"watchers":82973,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/21591"},"html":{"href":"https://github.com/electron/electron/pull/21591"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/21591"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/21591/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/21591/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/21591/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/391bf72b0bdad568d8e36300e47c8c3915ab751e"}},"author_association":"MEMBER"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-commit-a6ff42c190cb5caf8f3e217748e49183a951491b b/spec-main/fixtures/release-notes/cache/electron-electron-commit-a6ff42c190cb5caf8f3e217748e49183a951491b new file mode 100644 index 0000000000000..b2082213efbd0 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-commit-a6ff42c190cb5caf8f3e217748e49183a951491b @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/a6ff42c190cb5caf8f3e217748e49183a951491b/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 17:01:40 GMT","etag":"W/\"0efacfb47a3fe381a80ea2cc1cfc1bab\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"B824:2157:A9EDEF:128DDCF:5ECD4B73","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4992","x-ratelimit-reset":"1590514322","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/pulls/23635","id":419611668,"node_id":"MDExOlB1bGxSZXF1ZXN0NDE5NjExNjY4","html_url":"https://github.com/electron/electron/pull/23635","diff_url":"https://github.com/electron/electron/pull/23635.diff","patch_url":"https://github.com/electron/electron/pull/23635.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/23635","number":23635,"state":"open","locked":false,"title":"fix: nativeImage remote serialization","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #23543\n\nSee that PR for details.\n\n\r\nNotes: Fixed an issue where `nativeImage`s might throw conversion errors in the renderer process.\r\n","created_at":"2020-05-18T16:29:50Z","updated_at":"2020-05-19T00:48:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1e45fdd07a5b54443182641f836cee03ce8faf1c","assignee":null,"assignees":[],"requested_reviewers":[{"login":"codebytere","id":2036040,"node_id":"MDQ6VXNlcjIwMzYwNDA=","avatar_url":"https://avatars2.githubusercontent.com/u/2036040?v=4","gravatar_id":"","url":"https://api.github.com/users/codebytere","html_url":"https://github.com/codebytere","followers_url":"https://api.github.com/users/codebytere/followers","following_url":"https://api.github.com/users/codebytere/following{/other_user}","gists_url":"https://api.github.com/users/codebytere/gists{/gist_id}","starred_url":"https://api.github.com/users/codebytere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codebytere/subscriptions","organizations_url":"https://api.github.com/users/codebytere/orgs","repos_url":"https://api.github.com/users/codebytere/repos","events_url":"https://api.github.com/users/codebytere/events{/privacy}","received_events_url":"https://api.github.com/users/codebytere/received_events","type":"User","site_admin":true}],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/23635/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/23635/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/23635/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/d054631d21e77838d91a34b275c21e52e1f72108","head":{"label":"electron:trop/9-x-y-bp-fix-nativeimage-remote-serialization-1589819384759","ref":"trop/9-x-y-bp-fix-nativeimage-remote-serialization-1589819384759","sha":"d054631d21e77838d91a34b275c21e52e1f72108","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"29af2312ca179201733b709288c1d7a0f1367580","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/23635"},"html":{"href":"https://github.com/electron/electron/pull/23635"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/23635"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/23635/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/23635/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/23635/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/d054631d21e77838d91a34b275c21e52e1f72108"}},"author_association":"CONTRIBUTOR"},{"url":"https://api.github.com/repos/electron/electron/pulls/23773","id":423260522,"node_id":"MDExOlB1bGxSZXF1ZXN0NDIzMjYwNTIy","html_url":"https://github.com/electron/electron/pull/23773","diff_url":"https://github.com/electron/electron/pull/23773.diff","patch_url":"https://github.com/electron/electron/pull/23773.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/23773","number":23773,"state":"open","locked":false,"title":"fix: trigger activate event when app is activated via app switcher","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #23727\n\nSee that PR for details.\n\n\r\nNotes: none\r\n","created_at":"2020-05-26T14:59:15Z","updated_at":"2020-05-26T15:04:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d1bc78f9ef1cd4f367ca9e1ff712767063eb6f96","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/23773/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/23773/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/23773/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/dce3357f4d056f52a9f03fc2ce4742d10853679d","head":{"label":"electron:trop/9-x-y-bp-fix-trigger-activate-event-when-app-is-activated-via-app-switcher-1590505146122","ref":"trop/9-x-y-bp-fix-trigger-activate-event-when-app-is-activated-via-app-switcher-1590505146122","sha":"dce3357f4d056f52a9f03fc2ce4742d10853679d","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"448a645128b7548fdfcd47eb50e846f096c21d7e","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/23773"},"html":{"href":"https://github.com/electron/electron/pull/23773"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/23773"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/23773/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/23773/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/23773/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/dce3357f4d056f52a9f03fc2ce4742d10853679d"}},"author_association":"CONTRIBUTOR"},{"url":"https://api.github.com/repos/electron/electron/pulls/22750","id":390602476,"node_id":"MDExOlB1bGxSZXF1ZXN0MzkwNjAyNDc2","html_url":"https://github.com/electron/electron/pull/22750","diff_url":"https://github.com/electron/electron/pull/22750.diff","patch_url":"https://github.com/electron/electron/pull/22750.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/22750","number":22750,"state":"closed","locked":false,"title":"fix: workaround for hang when preventDefault-ing nativeWindowOpen","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #21497\n\nSee that PR for details.\n\n\r\nNotes: Added workaround for nativeWindowOpen hang.\r\n","created_at":"2020-03-18T18:38:17Z","updated_at":"2020-03-25T01:40:17Z","closed_at":"2020-03-25T01:40:13Z","merged_at":"2020-03-25T01:40:13Z","merge_commit_sha":"a6ff42c190cb5caf8f3e217748e49183a951491b","assignee":null,"assignees":[],"requested_reviewers":[{"login":"loc","id":1815863,"node_id":"MDQ6VXNlcjE4MTU4NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1815863?v=4","gravatar_id":"","url":"https://api.github.com/users/loc","html_url":"https://github.com/loc","followers_url":"https://api.github.com/users/loc/followers","following_url":"https://api.github.com/users/loc/following{/other_user}","gists_url":"https://api.github.com/users/loc/gists{/gist_id}","starred_url":"https://api.github.com/users/loc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/loc/subscriptions","organizations_url":"https://api.github.com/users/loc/orgs","repos_url":"https://api.github.com/users/loc/repos","events_url":"https://api.github.com/users/loc/events{/privacy}","received_events_url":"https://api.github.com/users/loc/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/22750/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/22750/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/22750/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/f24780c35de76aabbc24aa9cb4373380081210d8","head":{"label":"electron:trop/9-x-y-bp-fix-workaround-for-hang-when-preventdefault-ing-nativewindowopen-7-1-x--1584556691390","ref":"trop/9-x-y-bp-fix-workaround-for-hang-when-preventdefault-ing-nativewindowopen-7-1-x--1584556691390","sha":"f24780c35de76aabbc24aa9cb4373380081210d8","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"9b14ae770dd5f4bb5ec4cfdb803c40174a8a555e","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/22750"},"html":{"href":"https://github.com/electron/electron/pull/22750"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/22750"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/22750/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/22750/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/22750/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/f24780c35de76aabbc24aa9cb4373380081210d8"}},"author_association":"CONTRIBUTOR"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-20214-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-20214-comments new file mode 100644 index 0000000000000..c6753b992c4e7 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-20214-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/20214/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:31:14 GMT","etag":"W/\"3a1b7642c1edb42f6a13611136ff55a5\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"C1E4:508A:20B53:39898:5ECD444B","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4970","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/530855479","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-530855479","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":530855479,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMDg1NTQ3OQ==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-12T14:35:55Z","updated_at":"2019-09-12T14:35:55Z","author_association":"MEMBER","body":"I did some preliminary performance testing. The numbers below are the average time taken, in milliseconds, to send a Uint8Array buffer of a given size, across 200 calls to `send()`.\r\n\r\nWith the existing mojo-based `base::Value` serialization:\r\n```\r\n200 x 2k: 0.42\r\n200 x 4k: 0.60\r\n200 x 8k: 0.93\r\n200 x 16k: 1.61\r\n200 x 32k: 2.88\r\n200 x 64k: 5.50\r\n200 x 128k: 10.74\r\n200 x 256k: 21.07\r\n200 x 512k: 42.62\r\n```\r\n\r\nWith this PR, using v8's ValueSerializer:\r\n```\r\n200 x 2k: 0.44\r\n200 x 4k: 0.55\r\n200 x 8k: 0.76\r\n200 x 16k: 1.08\r\n200 x 32k: 1.90\r\n200 x 64k: 3.44\r\n200 x 128k: 6.53\r\n200 x 256k: 12.59\r\n200 x 512k: 23.99\r\n```\r\n\r\n\r\nSo this seems to be a little less than twice as fast for this use case."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/530916907","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-530916907","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":530916907,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMDkxNjkwNw==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-12T17:05:11Z","updated_at":"2019-09-12T17:05:11Z","author_association":"MEMBER","body":"Ref https://github.com/electron/electron/issues/18758"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/530917146","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-530917146","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":530917146,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMDkxNzE0Ng==","user":{"login":"jkleinsc","id":609052,"node_id":"MDQ6VXNlcjYwOTA1Mg==","avatar_url":"https://avatars0.githubusercontent.com/u/609052?v=4","gravatar_id":"","url":"https://api.github.com/users/jkleinsc","html_url":"https://github.com/jkleinsc","followers_url":"https://api.github.com/users/jkleinsc/followers","following_url":"https://api.github.com/users/jkleinsc/following{/other_user}","gists_url":"https://api.github.com/users/jkleinsc/gists{/gist_id}","starred_url":"https://api.github.com/users/jkleinsc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkleinsc/subscriptions","organizations_url":"https://api.github.com/users/jkleinsc/orgs","repos_url":"https://api.github.com/users/jkleinsc/repos","events_url":"https://api.github.com/users/jkleinsc/events{/privacy}","received_events_url":"https://api.github.com/users/jkleinsc/received_events","type":"User","site_admin":true},"created_at":"2019-09-12T17:05:48Z","updated_at":"2019-09-12T17:05:48Z","author_association":"MEMBER","body":"Could we possibly support both the existing serialization and the sca approach at the same time? I'm wondering if we can follow a deprecation path here or if this will have to be all or nothing."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/530925525","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-530925525","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":530925525,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMDkyNTUyNQ==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-12T17:27:54Z","updated_at":"2019-09-12T17:27:54Z","author_association":"MEMBER","body":"Tried this with some larger buffers:\r\n\r\nBefore:\r\n```\r\n10 x 1024k: 93.44\r\n10 x 2048k: 183.62\r\n10 x 4096k: 352.30\r\n10 x 8192k: 727.64\r\n10 x 16384k: 1443.97\r\n10 x 32768k: 2845.11\r\n10 x 65536k: 5565.72\r\n---crashed with buffers of size 128M---\r\n```\r\n\r\nafter:\r\n```\r\n10 x 1024k: 69.51\r\n10 x 2048k: 100.01\r\n10 x 4096k: 194.63\r\n10 x 8192k: 386.91\r\n10 x 16384k: 774.37\r\n10 x 32768k: 1606.11\r\n10 x 65536k: 3262.18\r\n10 x 131072k: 6703.16\r\n10 x 262144k: 13136.74\r\n```"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/530981366","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-530981366","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":530981366,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMDk4MTM2Ng==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-12T19:57:09Z","updated_at":"2019-09-12T19:57:09Z","author_association":"MEMBER","body":"@jkleinsc I'd like to first try to find a way we can make this at least _more_ compatible with the existing structure, if not 1:1. If we can find a way that works for 99% of use cases, then I think we should cut over directly and accept the breakage. If we find fundamental issues that are not paper-over-able, then we should investigate ways we can expose this functionality differently (perhaps a new set of APIs like `ipcRenderer.post()`, or perhaps a deprecation cycle of some sort)."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/531005426","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-531005426","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":531005426,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMTAwNTQyNg==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-12T21:02:15Z","updated_at":"2019-09-12T21:02:15Z","author_association":"MEMBER","body":"I also tried this with complex objects. The numbers below are for NxM objects, where N is the breadth and M is the depth. For example, a 2x3 object is:\r\n```\r\n{'key-0': {'key-0': {'key-0': {'key-0': {}, 'key-1': {}}, 'key-1': {'key-0': {}, 'key-1': {}}}, 'key-1': {'key-0': {'key-0': {}, 'key-1': {}}, 'key-1': {'key-0': {}, 'key-1': {}}}}, 'key-1': {'key-0': {'key-0': {'key-0': {}, 'key-1': {}}, 'key-1': {'key-0': {}, 'key-1': {}}}, 'key-1': {'key-0': {'key-0': {}, 'key-1': {}}, 'key-1': {'key-0': {}, 'key-1': {}}}}}\r\n```\r\n\r\nA NaN represents a renderer crash.\r\n\r\nBefore:\r\n```\r\n10 x 1x1: 3.34\r\n10 x 1x2: 3.34\r\n10 x 1x4: 3.26\r\n10 x 1x8: 3.30\r\n10 x 1x16: 3.35\r\n10 x 2x1: 3.48\r\n10 x 2x2: 3.42\r\n10 x 2x4: 3.77\r\n10 x 2x8: 10.01\r\n10 x 2x16: 1736.84\r\n10 x 4x1: 3.21\r\n10 x 4x2: 3.41\r\n10 x 4x4: 7.92\r\n10 x 4x8: 1142.82\r\n10 x 4x16: NaN\r\n10 x 8x1: 3.52\r\n10 x 8x2: 4.08\r\n10 x 8x4: 64.33\r\n10 x 8x8: NaN\r\n10 x 8x16: NaN\r\n10 x 16x1: 4.52\r\n10 x 16x2: 7.23\r\n10 x 16x4: 1003.91\r\n10 x 16x8: NaN\r\n10 x 16x16: NaN\r\n```\r\nAfter:\r\n```\r\n10 x 1x1: 3.38\r\n10 x 1x2: 4.00\r\n10 x 1x4: 3.37\r\n10 x 1x8: 3.01\r\n10 x 1x16: 3.06\r\n10 x 2x1: 4.38\r\n10 x 2x2: 4.14\r\n10 x 2x4: 3.67\r\n10 x 2x8: 5.41\r\n10 x 2x16: 409.08\r\n10 x 4x1: 3.07\r\n10 x 4x2: 3.65\r\n10 x 4x4: 3.85\r\n10 x 4x8: 234.70\r\n10 x 4x16: NaN\r\n10 x 8x1: 3.51\r\n10 x 8x2: 3.29\r\n10 x 8x4: 15.58\r\n10 x 8x8: 87138.07\r\n10 x 8x16: NaN\r\n10 x 16x1: 3.93\r\n10 x 16x2: 4.05\r\n10 x 16x4: 181.39\r\n10 x 16x8: NaN\r\n10 x 16x16: NaN\r\n```\r\n\r\nSo, quite a bit faster. I think the crashes are when _constructing_ those stupidly large objects, rather than serializing them. And the new code does succeed on the 8x8 case, where the old code crashed."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/533729544","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-533729544","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":533729544,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMzcyOTU0NA==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-20T22:22:22Z","updated_at":"2019-09-25T19:58:17Z","author_association":"MEMBER","body":"Remaining TODOs as of latest commit:\r\n\r\n- [x] Handle errors gracefully & correctly.\r\n- [x] Investigate whether we can discriminate between `Buffer` and `Uint8Array` wisely, and deserialize `Buffer`s as `Buffer`s where we can, and `Uint8Array` where we can't (e.g. in sandboxed renderers).\r\n- [x] Convert the remaining methods to the new serialization algorithm (`webContents.send`, `messageTo`, and `messageHost`).\r\n- [x] Clean up the somewhat hacky delegates in blink_converter.cc"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/534217625","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-534217625","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":534217625,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNDIxNzYyNQ==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-23T18:09:10Z","updated_at":"2019-09-23T18:09:10Z","author_association":"MEMBER","body":"OK, there's a choice to make about how we handle when non-POJO objects are passed to IPC functions (things like DOM objects, `WebContents`, `process.env`, etc.).\r\n\r\n1. Throw an exception.\r\n - This is the safest option, but also the most disruptive. (e.g. many of Electron's internal APIs pass such objects to IPC methods, and will need to be refactored.)\r\n2. JSON.stringify()/JSON.parse() them.\r\n - This is roughly similar to current behavior of the IPC methods, in that it can't handle NaN or Infinity, or cyclic objects. However, it might be somewhat confusing to have some objects work differently based on whether they're referenced from a non-POJO object or not. It's a fairly obscure corner case though, so maybe nobody would notice?\r\n3. Iterate the keys/values of such objects and recurse in the serialization algorithm.\r\n - This gives us cyclic object support and correct handling of Infinity/NaN/etc.\r\n - But most non-trivial non-POJO objects contain unserializable things like functions.\r\n - We can attempt to replace those unserializable things with `undefined`, but it only works one layer deep. i.e. if there's a non-POJO object like `{ fn: () => {} }`, it'll be turned into `{ fn: undefined }`, but if it's like `{ events: { fn: () => {} } }`, then the entire serialization operation must be aborted and an error thrown.\r\n\r\nI'm leaning towards (1), since I don't think it really makes sense to be trying to send `window.location` or a `WebContents` value over IPC, and places where we're doing that are likely error-prone. Thoughts?"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/534692035","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-534692035","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":534692035,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNDY5MjAzNQ==","user":{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false},"created_at":"2019-09-24T18:37:09Z","updated_at":"2019-09-24T18:37:09Z","author_association":"MEMBER","body":"I don't like the idea of existing code throwing errors in an obscure and un-lintable way. i.e. we can't provide a lint rule or other tool to detect invalid usages of `ipc.send` so folks will only find out at runtime when it's too late and hard to spot.\r\n\r\nI'm leaning towards something equivalent to (2) where if the v8 serializer fails we fall back to the old one. Maybe log a console warning that you tried to send an unserializable object and we fell back to a less accurate converter?"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/534705193","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-534705193","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":534705193,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNDcwNTE5Mw==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-24T19:08:48Z","updated_at":"2019-09-24T19:08:48Z","author_association":"MEMBER","body":"Does that leave any path towards eventually eliminating the old converter? I'm disinclined to leave it there forever... but maybe it would make sense as a less-dramatic deprecation strategy? e.g. \"Looks like you sent a non-standard object over IPC. This is probably not what you intended to do, but we obliged and serialized it anyway. Look out, this will throw an exception in Electron 9.\""},{"url":"https://api.github.com/repos/electron/electron/issues/comments/534740833","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-534740833","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":534740833,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNDc0MDgzMw==","user":{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false},"created_at":"2019-09-24T20:46:20Z","updated_at":"2019-09-24T20:46:20Z","author_association":"MEMBER","body":"I'd be down for a **very** long term deprecation strategy here. Like we should support serialization for I'd say 4 versions beyond when this lands (number picked to match the number of versions we used for the native module deprecation).\r\n\r\nThe deprecation log should include the object itself as well if possible 🤔 "},{"url":"https://api.github.com/repos/electron/electron/issues/comments/534770157","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-534770157","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":534770157,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNDc3MDE1Nw==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-24T22:15:23Z","updated_at":"2019-09-24T22:18:48Z","author_association":"MEMBER","body":"@MarshallOfSound I'm not sure that's warranted. 99% of cases where IPC is used, the new version should still work fine. Only in weird cases where it only kind of semi-works currently are problematic.\r\n\r\nFor example. The `new-window` event has as one of its arguments the `options` parameter, which is the options passed to `new BrowserWindow()`. One of these options is `webContents`, which specifies which WebContents will go in the new window. For WebViews, the `new-window` event is proxied over to the host frame. However, during that transmission, the `webContents` key stops being an actual `WebContents`. Is anything depending on that key being there in the webview host? I don't think so. Can anything actually useful be done with it there? Again, I don't think so. The fact that it's there is an accident, and it never really performed any kind of useful function.\r\n\r\nAlso, it's trivial to get something close to the old behavior with the transformation `x => JSON.parse(JSON.stringify(x))`, as long as `x` isn't cyclic (but if it was, the cyclic bit is getting `null`ed out currently anyway).\r\n\r\n**tldr** most people wouldn't need to fix anything if this sort of usage started throwing an error, and for those that do, the fix is easy."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/534778673","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-534778673","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":534778673,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNDc3ODY3Mw==","user":{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false},"created_at":"2019-09-24T22:52:11Z","updated_at":"2019-09-24T22:52:11Z","author_association":"MEMBER","body":"> if this sort of usage started throwing an error\r\n\r\nMy only concern here was that you can't glance at a bit of code and say \"that's gonna cause a problem\". In fact I don't think you could describe the kinds of things that would cause this problem very easily at all. That's the only reason I'm advocating for a deprecation cycle, it will take time for people to find all the edge cases in their app that might do this. Maybe 4 versions was a bit over-eager 🤷‍♂But it should definitely go through a cycle where the old code still works but tells you you're doing something bad."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/535169992","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-535169992","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":535169992,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNTE2OTk5Mg==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-25T19:14:29Z","updated_at":"2019-09-25T19:14:29Z","author_association":"MEMBER","body":"The things which will throw exceptions with structured clone that don't with base::Value serialization:\r\n- DOM objects (`Element`, `Location`, etc.)\r\n- special Node objects like `process.env` or http internals\r\n- special Electron API objects like WebContents\r\n- functions\r\n\r\nI've updated the PR to fall back to the base::Value-based serialization if structured clone fails, and emit a deprecation warning."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/535186584","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-535186584","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":535186584,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNTE4NjU4NA==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-25T19:57:30Z","updated_at":"2019-09-25T19:57:30Z","author_association":"MEMBER","body":"The last remaining tricky thing is that sending a `Buffer` will result in the other side receiving a `Uint8Array`. Without patching V8, I don't see a good way to get around this. Fortunately, you can wrap a `Buffer` around a `Uint8Array` quite easily:\r\n\r\n```\r\nconst uint8Array = await ipcRenderer.invoke('return-a-buffer')\r\nconst buf = Buffer.from(uint8Array.buffer)\r\n```"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/535187110","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-535187110","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":535187110,"node_id":"MDEyOklzc3VlQ29tbWVudDUzNTE4NzExMA==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-09-25T19:58:39Z","updated_at":"2019-09-25T19:58:39Z","author_association":"MEMBER","body":"Taking off the [wip] as I believe this is ready for full review."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/538499039","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-538499039","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":538499039,"node_id":"MDEyOklzc3VlQ29tbWVudDUzODQ5OTAzOQ==","user":{"login":"miniak","id":1281234,"node_id":"MDQ6VXNlcjEyODEyMzQ=","avatar_url":"https://avatars3.githubusercontent.com/u/1281234?v=4","gravatar_id":"","url":"https://api.github.com/users/miniak","html_url":"https://github.com/miniak","followers_url":"https://api.github.com/users/miniak/followers","following_url":"https://api.github.com/users/miniak/following{/other_user}","gists_url":"https://api.github.com/users/miniak/gists{/gist_id}","starred_url":"https://api.github.com/users/miniak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/miniak/subscriptions","organizations_url":"https://api.github.com/users/miniak/orgs","repos_url":"https://api.github.com/users/miniak/repos","events_url":"https://api.github.com/users/miniak/events{/privacy}","received_events_url":"https://api.github.com/users/miniak/received_events","type":"User","site_admin":false},"created_at":"2019-10-04T17:54:45Z","updated_at":"2019-10-04T17:55:03Z","author_association":"MEMBER","body":"this will allow us to simplify the serialization in the `remote` module. #20427"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/540117270","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-540117270","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":540117270,"node_id":"MDEyOklzc3VlQ29tbWVudDU0MDExNzI3MA==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2019-10-09T17:59:11Z","updated_at":"2019-10-09T17:59:11Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> IPC between main and renderer processes now uses the Structured Clone Algorithm."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/540619766","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-540619766","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":540619766,"node_id":"MDEyOklzc3VlQ29tbWVudDU0MDYxOTc2Ng==","user":{"login":"Xylobol","id":40412285,"node_id":"MDQ6VXNlcjQwNDEyMjg1","avatar_url":"https://avatars3.githubusercontent.com/u/40412285?v=4","gravatar_id":"","url":"https://api.github.com/users/Xylobol","html_url":"https://github.com/Xylobol","followers_url":"https://api.github.com/users/Xylobol/followers","following_url":"https://api.github.com/users/Xylobol/following{/other_user}","gists_url":"https://api.github.com/users/Xylobol/gists{/gist_id}","starred_url":"https://api.github.com/users/Xylobol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Xylobol/subscriptions","organizations_url":"https://api.github.com/users/Xylobol/orgs","repos_url":"https://api.github.com/users/Xylobol/repos","events_url":"https://api.github.com/users/Xylobol/events{/privacy}","received_events_url":"https://api.github.com/users/Xylobol/received_events","type":"User","site_admin":false},"created_at":"2019-10-10T14:40:42Z","updated_at":"2019-10-10T14:40:42Z","author_association":"NONE","body":"For anyone else interested, these changes have landed in nightly - https://github.com/electron/nightlies/releases/tag/v8.0.0-nightly.20191009"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/545339910","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-545339910","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":545339910,"node_id":"MDEyOklzc3VlQ29tbWVudDU0NTMzOTkxMA==","user":{"login":"gdavidkov","id":5815794,"node_id":"MDQ6VXNlcjU4MTU3OTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/5815794?v=4","gravatar_id":"","url":"https://api.github.com/users/gdavidkov","html_url":"https://github.com/gdavidkov","followers_url":"https://api.github.com/users/gdavidkov/followers","following_url":"https://api.github.com/users/gdavidkov/following{/other_user}","gists_url":"https://api.github.com/users/gdavidkov/gists{/gist_id}","starred_url":"https://api.github.com/users/gdavidkov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gdavidkov/subscriptions","organizations_url":"https://api.github.com/users/gdavidkov/orgs","repos_url":"https://api.github.com/users/gdavidkov/repos","events_url":"https://api.github.com/users/gdavidkov/events{/privacy}","received_events_url":"https://api.github.com/users/gdavidkov/received_events","type":"User","site_admin":false},"created_at":"2019-10-23T08:50:33Z","updated_at":"2019-10-23T08:50:33Z","author_association":"NONE","body":"Will this be backported to 6.x?"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/545494783","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-545494783","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":545494783,"node_id":"MDEyOklzc3VlQ29tbWVudDU0NTQ5NDc4Mw==","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"created_at":"2019-10-23T15:17:41Z","updated_at":"2019-10-23T15:17:41Z","author_association":"MEMBER","body":"No, since it is a breaking change.\n"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/612301761","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-612301761","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":612301761,"node_id":"MDEyOklzc3VlQ29tbWVudDYxMjMwMTc2MQ==","user":{"login":"Slapbox","id":6835891,"node_id":"MDQ6VXNlcjY4MzU4OTE=","avatar_url":"https://avatars2.githubusercontent.com/u/6835891?v=4","gravatar_id":"","url":"https://api.github.com/users/Slapbox","html_url":"https://github.com/Slapbox","followers_url":"https://api.github.com/users/Slapbox/followers","following_url":"https://api.github.com/users/Slapbox/following{/other_user}","gists_url":"https://api.github.com/users/Slapbox/gists{/gist_id}","starred_url":"https://api.github.com/users/Slapbox/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Slapbox/subscriptions","organizations_url":"https://api.github.com/users/Slapbox/orgs","repos_url":"https://api.github.com/users/Slapbox/repos","events_url":"https://api.github.com/users/Slapbox/events{/privacy}","received_events_url":"https://api.github.com/users/Slapbox/received_events","type":"User","site_admin":false},"created_at":"2020-04-11T02:28:50Z","updated_at":"2020-04-11T02:28:50Z","author_association":"CONTRIBUTOR","body":"This PR is noted as a **_Breaking Changes_** for Electron 8.0.0 & 9.0.0 betas. Is there any difference in the IPC between versions 8 and 9?"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/612959454","html_url":"https://github.com/electron/electron/pull/20214#issuecomment-612959454","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","id":612959454,"node_id":"MDEyOklzc3VlQ29tbWVudDYxMjk1OTQ1NA==","user":{"login":"pushkin-","id":6374473,"node_id":"MDQ6VXNlcjYzNzQ0NzM=","avatar_url":"https://avatars3.githubusercontent.com/u/6374473?v=4","gravatar_id":"","url":"https://api.github.com/users/pushkin-","html_url":"https://github.com/pushkin-","followers_url":"https://api.github.com/users/pushkin-/followers","following_url":"https://api.github.com/users/pushkin-/following{/other_user}","gists_url":"https://api.github.com/users/pushkin-/gists{/gist_id}","starred_url":"https://api.github.com/users/pushkin-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pushkin-/subscriptions","organizations_url":"https://api.github.com/users/pushkin-/orgs","repos_url":"https://api.github.com/users/pushkin-/repos","events_url":"https://api.github.com/users/pushkin-/events{/privacy}","received_events_url":"https://api.github.com/users/pushkin-/received_events","type":"User","site_admin":false},"created_at":"2020-04-13T15:54:22Z","updated_at":"2020-04-13T15:54:22Z","author_association":"NONE","body":"@Slapbox I believe the plan in 8 is to use the new algorithm, but if it fails, emit a warning and fallback to the old algorithm.\r\n\r\nIn Electron 9, they're going remove the fallback and warning and serializing bad data will start throwing exceptions."}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-21497-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-21497-comments new file mode 100644 index 0000000000000..6dfea7e98797c --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-21497-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/21497/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Thu, 03 Sep 2020 14:43:26 GMT","etag":"W/\"31c54a4c2a8fe380adf297472e01eca3\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"BFEA:0AAF:2EC2218:6E05F3A:5F51010E","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4994","x-ratelimit-reset":"1599146257","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/565251264","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-565251264","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":565251264,"node_id":"MDEyOklzc3VlQ29tbWVudDU2NTI1MTI2NA==","user":{"login":"codebytere","id":2036040,"node_id":"MDQ6VXNlcjIwMzYwNDA=","avatar_url":"https://avatars2.githubusercontent.com/u/2036040?v=4","gravatar_id":"","url":"https://api.github.com/users/codebytere","html_url":"https://github.com/codebytere","followers_url":"https://api.github.com/users/codebytere/followers","following_url":"https://api.github.com/users/codebytere/following{/other_user}","gists_url":"https://api.github.com/users/codebytere/gists{/gist_id}","starred_url":"https://api.github.com/users/codebytere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codebytere/subscriptions","organizations_url":"https://api.github.com/users/codebytere/orgs","repos_url":"https://api.github.com/users/codebytere/repos","events_url":"https://api.github.com/users/codebytere/events{/privacy}","received_events_url":"https://api.github.com/users/codebytere/received_events","type":"User","site_admin":true},"created_at":"2019-12-13T00:41:22Z","updated_at":"2019-12-13T00:41:22Z","author_association":"MEMBER","body":"```\r\nwebContents module getAllWebContents() API returns an array of web contents - returns an array of web contents\r\n```\r\nhas died, but will ✅ when green:)","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/565499161","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-565499161","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":565499161,"node_id":"MDEyOklzc3VlQ29tbWVudDU2NTQ5OTE2MQ==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2019-12-13T16:06:15Z","updated_at":"2019-12-13T16:06:15Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> Added workaround for nativeWindowOpen hang.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600784768","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600784768","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600784768,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc4NDc2OA==","user":{"login":"loc","id":1815863,"node_id":"MDQ6VXNlcjE4MTU4NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1815863?v=4","gravatar_id":"","url":"https://api.github.com/users/loc","html_url":"https://github.com/loc","followers_url":"https://api.github.com/users/loc/followers","following_url":"https://api.github.com/users/loc/following{/other_user}","gists_url":"https://api.github.com/users/loc/gists{/gist_id}","starred_url":"https://api.github.com/users/loc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/loc/subscriptions","organizations_url":"https://api.github.com/users/loc/orgs","repos_url":"https://api.github.com/users/loc/repos","events_url":"https://api.github.com/users/loc/events{/privacy}","received_events_url":"https://api.github.com/users/loc/received_events","type":"User","site_admin":false},"created_at":"2020-03-18T18:12:54Z","updated_at":"2020-03-18T18:12:54Z","author_association":"MEMBER","body":"/trop run backport-to 8-x-y","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600784783","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600784783","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600784783,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc4NDc4Mw==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-18T18:12:55Z","updated_at":"2020-03-18T18:12:55Z","author_association":"CONTRIBUTOR","body":"@loc is not authorized to run PR backports.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600796101","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600796101","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600796101,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc5NjEwMQ==","user":{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false},"created_at":"2020-03-18T18:37:32Z","updated_at":"2020-03-18T18:37:32Z","author_association":"MEMBER","body":"/trop run backport-to 8-x-y\r\n\r\n","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600796116","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600796116","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600796116,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc5NjExNg==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-18T18:37:34Z","updated_at":"2020-03-18T18:37:34Z","author_association":"CONTRIBUTOR","body":"The backport process for this PR has been manually initiated -\nsending your commits to \"8-x-y\"!","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600796152","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600796152","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600796152,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc5NjE1Mg==","user":{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false},"created_at":"2020-03-18T18:37:39Z","updated_at":"2020-03-18T18:37:39Z","author_association":"MEMBER","body":"/trop run backport-to 9-x-y\r\n\r\n","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600796163","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600796163","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600796163,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc5NjE2Mw==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-18T18:37:41Z","updated_at":"2020-03-18T18:37:41Z","author_association":"CONTRIBUTOR","body":"The backport process for this PR has been manually initiated -\nsending your commits to \"9-x-y\"!","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600796434","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600796434","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600796434,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc5NjQzNA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-18T18:38:14Z","updated_at":"2020-03-18T18:38:14Z","author_association":"CONTRIBUTOR","body":"I have automatically backported this PR to \"8-x-y\", please check out #22749","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/600796529","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-600796529","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":600796529,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMDc5NjUyOQ==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-18T18:38:24Z","updated_at":"2020-03-18T18:38:24Z","author_association":"CONTRIBUTOR","body":"I have automatically backported this PR to \"9-x-y\", please check out #22750","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/603552760","html_url":"https://github.com/electron/electron/pull/21497#issuecomment-603552760","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","id":603552760,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMzU1Mjc2MA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-24T23:14:27Z","updated_at":"2020-03-24T23:14:27Z","author_association":"CONTRIBUTOR","body":"@loc has manually backported this PR to \"master\", please check out #22825","performed_via_github_app":null}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-21891-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-21891-comments new file mode 100644 index 0000000000000..b1bdd1296b4dd --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-21891-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/21891/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 04:07:22 GMT","etag":"W/\"f3361c5c493edbcc6774be228131a636\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"8F4E:231E:52E8BF:8AF8CD:5ECC95F9","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4997","x-ratelimit-reset":"1590469446","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/579570143","html_url":"https://github.com/electron/electron/pull/21891#issuecomment-579570143","issue_url":"https://api.github.com/repos/electron/electron/issues/21891","id":579570143,"node_id":"MDEyOklzc3VlQ29tbWVudDU3OTU3MDE0Mw==","user":{"login":"bitdisaster","id":5191943,"node_id":"MDQ6VXNlcjUxOTE5NDM=","avatar_url":"https://avatars3.githubusercontent.com/u/5191943?v=4","gravatar_id":"","url":"https://api.github.com/users/bitdisaster","html_url":"https://github.com/bitdisaster","followers_url":"https://api.github.com/users/bitdisaster/followers","following_url":"https://api.github.com/users/bitdisaster/following{/other_user}","gists_url":"https://api.github.com/users/bitdisaster/gists{/gist_id}","starred_url":"https://api.github.com/users/bitdisaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitdisaster/subscriptions","organizations_url":"https://api.github.com/users/bitdisaster/orgs","repos_url":"https://api.github.com/users/bitdisaster/repos","events_url":"https://api.github.com/users/bitdisaster/events{/privacy}","received_events_url":"https://api.github.com/users/bitdisaster/received_events","type":"User","site_admin":false},"created_at":"2020-01-29T02:58:25Z","updated_at":"2020-01-29T02:58:25Z","author_association":"MEMBER","body":"@zcbenz I solved the mac/linux problem a bit differently. @MarshallOfSound recommended the use of converter to me and I like the approach. Does the typedef via conditional compiling work for you to?"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/580589854","html_url":"https://github.com/electron/electron/pull/21891#issuecomment-580589854","issue_url":"https://api.github.com/repos/electron/electron/issues/21891","id":580589854,"node_id":"MDEyOklzc3VlQ29tbWVudDU4MDU4OTg1NA==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-01-31T05:37:07Z","updated_at":"2020-01-31T05:37:07Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> Added GUID parameter to Tray API to avoid system tray icon demotion on Windows "}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-21946-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-21946-comments new file mode 100644 index 0000000000000..48b02fd97a311 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-21946-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/21946/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:25:45 GMT","etag":"W/\"39d435c37eaa842b37a0eda92327599c\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"CC2C:4CE8:C1843:2309CE:5ECD4303","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4974","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/580558534","html_url":"https://github.com/electron/electron/pull/21946#issuecomment-580558534","issue_url":"https://api.github.com/repos/electron/electron/issues/21946","id":580558534,"node_id":"MDEyOklzc3VlQ29tbWVudDU4MDU1ODUzNA==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-01-31T02:49:17Z","updated_at":"2020-01-31T02:49:17Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> Fixed a potential crash on faulty `deviceName`s in `webContents.print()`."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/580558572","html_url":"https://github.com/electron/electron/pull/21946#issuecomment-580558572","issue_url":"https://api.github.com/repos/electron/electron/issues/21946","id":580558572,"node_id":"MDEyOklzc3VlQ29tbWVudDU4MDU1ODU3Mg==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-01-31T02:49:31Z","updated_at":"2020-01-31T02:49:31Z","author_association":"CONTRIBUTOR","body":"I was unable to backport this PR to \"7-1-x\" cleanly;\n you will need to perform this backport manually."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/580558582","html_url":"https://github.com/electron/electron/pull/21946#issuecomment-580558582","issue_url":"https://api.github.com/repos/electron/electron/issues/21946","id":580558582,"node_id":"MDEyOklzc3VlQ29tbWVudDU4MDU1ODU4Mg==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-01-31T02:49:34Z","updated_at":"2020-01-31T02:49:34Z","author_association":"CONTRIBUTOR","body":"I was unable to backport this PR to \"6-1-x\" cleanly;\n you will need to perform this backport manually."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/580558614","html_url":"https://github.com/electron/electron/pull/21946#issuecomment-580558614","issue_url":"https://api.github.com/repos/electron/electron/issues/21946","id":580558614,"node_id":"MDEyOklzc3VlQ29tbWVudDU4MDU1ODYxNA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-01-31T02:49:43Z","updated_at":"2020-01-31T02:49:43Z","author_association":"CONTRIBUTOR","body":"I have automatically backported this PR to \"8-x-y\", please check out #21982"},{"url":"https://api.github.com/repos/electron/electron/issues/comments/581509606","html_url":"https://github.com/electron/electron/pull/21946#issuecomment-581509606","issue_url":"https://api.github.com/repos/electron/electron/issues/21946","id":581509606,"node_id":"MDEyOklzc3VlQ29tbWVudDU4MTUwOTYwNg==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-02-03T16:52:05Z","updated_at":"2020-02-03T16:52:05Z","author_association":"CONTRIBUTOR","body":"@codebytere has manually backported this PR to \"7-1-x\", please check out #22012"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-22750-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-22750-comments new file mode 100644 index 0000000000000..7b4ad427575d9 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-22750-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/22750/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 17:01:55 GMT","etag":"W/\"89f9bf1ce7fb984e50e64f9d80c482cb\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"B828:443A:D1E7FE:149D73A:5ECD4B7D","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4990","x-ratelimit-reset":"1590514321","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/602930802","html_url":"https://github.com/electron/electron/pull/22750#issuecomment-602930802","issue_url":"https://api.github.com/repos/electron/electron/issues/22750","id":602930802,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMjkzMDgwMg==","user":{"login":"loc","id":1815863,"node_id":"MDQ6VXNlcjE4MTU4NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1815863?v=4","gravatar_id":"","url":"https://api.github.com/users/loc","html_url":"https://github.com/loc","followers_url":"https://api.github.com/users/loc/followers","following_url":"https://api.github.com/users/loc/following{/other_user}","gists_url":"https://api.github.com/users/loc/gists{/gist_id}","starred_url":"https://api.github.com/users/loc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/loc/subscriptions","organizations_url":"https://api.github.com/users/loc/orgs","repos_url":"https://api.github.com/users/loc/repos","events_url":"https://api.github.com/users/loc/events{/privacy}","received_events_url":"https://api.github.com/users/loc/received_events","type":"User","site_admin":false},"created_at":"2020-03-24T00:23:09Z","updated_at":"2020-03-24T00:23:09Z","author_association":"MEMBER","body":"@zcbenz okay, I believe this is good to go."},{"url":"https://api.github.com/repos/electron/electron/issues/comments/603592578","html_url":"https://github.com/electron/electron/pull/22750#issuecomment-603592578","issue_url":"https://api.github.com/repos/electron/electron/issues/22750","id":603592578,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMzU5MjU3OA==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-25T01:40:16Z","updated_at":"2020-03-25T01:40:16Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> Added workaround for nativeWindowOpen hang."}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-22770-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-22770-comments new file mode 100644 index 0000000000000..77234233aad9e --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-22770-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/22770/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Thu, 03 Sep 2020 14:43:34 GMT","etag":"W/\"bfb3660eda8a4e7c2308b04c26ae9ce8\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"BFEC:2180:5ED7F48:9C0DADA:5F51010F","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4993","x-ratelimit-reset":"1599146257","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/602947315","html_url":"https://github.com/electron/electron/pull/22770#issuecomment-602947315","issue_url":"https://api.github.com/repos/electron/electron/issues/22770","id":602947315,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMjk0NzMxNQ==","user":{"login":"zcbenz","id":639601,"node_id":"MDQ6VXNlcjYzOTYwMQ==","avatar_url":"https://avatars0.githubusercontent.com/u/639601?v=4","gravatar_id":"","url":"https://api.github.com/users/zcbenz","html_url":"https://github.com/zcbenz","followers_url":"https://api.github.com/users/zcbenz/followers","following_url":"https://api.github.com/users/zcbenz/following{/other_user}","gists_url":"https://api.github.com/users/zcbenz/gists{/gist_id}","starred_url":"https://api.github.com/users/zcbenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcbenz/subscriptions","organizations_url":"https://api.github.com/users/zcbenz/orgs","repos_url":"https://api.github.com/users/zcbenz/repos","events_url":"https://api.github.com/users/zcbenz/events{/privacy}","received_events_url":"https://api.github.com/users/zcbenz/received_events","type":"User","site_admin":true},"created_at":"2020-03-24T01:15:16Z","updated_at":"2020-03-24T01:15:16Z","author_association":"MEMBER","body":"Do you mind rebasing this PR on master? We now require semicolon in JS files.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/603185839","html_url":"https://github.com/electron/electron/pull/22770#issuecomment-603185839","issue_url":"https://api.github.com/repos/electron/electron/issues/22770","id":603185839,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMzE4NTgzOQ==","user":{"login":"CezaryKulakowski","id":50166166,"node_id":"MDQ6VXNlcjUwMTY2MTY2","avatar_url":"https://avatars2.githubusercontent.com/u/50166166?v=4","gravatar_id":"","url":"https://api.github.com/users/CezaryKulakowski","html_url":"https://github.com/CezaryKulakowski","followers_url":"https://api.github.com/users/CezaryKulakowski/followers","following_url":"https://api.github.com/users/CezaryKulakowski/following{/other_user}","gists_url":"https://api.github.com/users/CezaryKulakowski/gists{/gist_id}","starred_url":"https://api.github.com/users/CezaryKulakowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CezaryKulakowski/subscriptions","organizations_url":"https://api.github.com/users/CezaryKulakowski/orgs","repos_url":"https://api.github.com/users/CezaryKulakowski/repos","events_url":"https://api.github.com/users/CezaryKulakowski/events{/privacy}","received_events_url":"https://api.github.com/users/CezaryKulakowski/received_events","type":"User","site_admin":false},"created_at":"2020-03-24T11:30:17Z","updated_at":"2020-03-24T11:30:17Z","author_association":"CONTRIBUTOR","body":"@zcbenz I've made a rebase to the newest master. I've also squashed two commits into one.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/603601083","html_url":"https://github.com/electron/electron/pull/22770#issuecomment-603601083","issue_url":"https://api.github.com/repos/electron/electron/issues/22770","id":603601083,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMzYwMTA4Mw==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-25T02:13:47Z","updated_at":"2020-03-25T02:13:47Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> don't allow window to go behind menu bar on mac","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/603601148","html_url":"https://github.com/electron/electron/pull/22770#issuecomment-603601148","issue_url":"https://api.github.com/repos/electron/electron/issues/22770","id":603601148,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMzYwMTE0OA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-25T02:14:04Z","updated_at":"2020-03-25T02:14:04Z","author_association":"CONTRIBUTOR","body":"I have automatically backported this PR to \"9-x-y\", please check out #22828","performed_via_github_app":null}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-22828-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-22828-comments new file mode 100644 index 0000000000000..9ec6e14a6fba0 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-22828-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/22828/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:42:42 GMT","etag":"W/\"9da63627de4ed4f8b7929f66f9b6aa2b\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"C9A8:3A3F:B1FB:13DF6:5ECD46FB","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4994","x-ratelimit-reset":"1590514322","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/603916187","html_url":"https://github.com/electron/electron/pull/22828#issuecomment-603916187","issue_url":"https://api.github.com/repos/electron/electron/issues/22828","id":603916187,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMzkxNjE4Nw==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-03-25T15:45:36Z","updated_at":"2020-03-25T15:45:36Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> don't allow window to go behind menu bar on mac"}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-25052-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-25052-comments new file mode 100644 index 0000000000000..7bf3b0b83cb0a --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-25052-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/25052/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Thu, 03 Sep 2020 14:47:59 GMT","etag":"W/\"86c96edda270ca498d8b3c3fd7c079b0\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"9FC2:2243:30C9D86:6C4F6A0:5F51021F","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4989","x-ratelimit-reset":"1599146257","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/676831184","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-676831184","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":676831184,"node_id":"MDEyOklzc3VlQ29tbWVudDY3NjgzMTE4NA==","user":{"login":"deepak1556","id":964386,"node_id":"MDQ6VXNlcjk2NDM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/964386?v=4","gravatar_id":"","url":"https://api.github.com/users/deepak1556","html_url":"https://github.com/deepak1556","followers_url":"https://api.github.com/users/deepak1556/followers","following_url":"https://api.github.com/users/deepak1556/following{/other_user}","gists_url":"https://api.github.com/users/deepak1556/gists{/gist_id}","starred_url":"https://api.github.com/users/deepak1556/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepak1556/subscriptions","organizations_url":"https://api.github.com/users/deepak1556/orgs","repos_url":"https://api.github.com/users/deepak1556/repos","events_url":"https://api.github.com/users/deepak1556/events{/privacy}","received_events_url":"https://api.github.com/users/deepak1556/received_events","type":"User","site_admin":false},"created_at":"2020-08-20T00:41:18Z","updated_at":"2020-08-20T00:41:18Z","author_association":"MEMBER","body":"From spy++\r\n\r\n**Before**\r\n\r\nRectangle - (-8, -8)-(2568, 1408), 2576x1416 (Maximized)\r\nRestored Rect - (880, 400)-(1680, 1000), 800x600\r\nClient Rect - (7, 7)-(2569, 1409), 2562x1402\r\n\r\n**After**\r\n\r\nRectangle - (-8, -8)-(2568, 1408), 2576x1416 (Maximized)\r\nRestored Rect - (880, 400)-(1680, 1000), 800x600\r\nClient Rect - (8, 0)-(2568, 1408), 2560x1408","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/677938407","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-677938407","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":677938407,"node_id":"MDEyOklzc3VlQ29tbWVudDY3NzkzODQwNw==","user":{"login":"deepak1556","id":964386,"node_id":"MDQ6VXNlcjk2NDM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/964386?v=4","gravatar_id":"","url":"https://api.github.com/users/deepak1556","html_url":"https://github.com/deepak1556","followers_url":"https://api.github.com/users/deepak1556/followers","following_url":"https://api.github.com/users/deepak1556/following{/other_user}","gists_url":"https://api.github.com/users/deepak1556/gists{/gist_id}","starred_url":"https://api.github.com/users/deepak1556/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepak1556/subscriptions","organizations_url":"https://api.github.com/users/deepak1556/orgs","repos_url":"https://api.github.com/users/deepak1556/repos","events_url":"https://api.github.com/users/deepak1556/events{/privacy}","received_events_url":"https://api.github.com/users/deepak1556/received_events","type":"User","site_admin":false},"created_at":"2020-08-20T22:27:46Z","updated_at":"2020-08-20T22:27:46Z","author_association":"MEMBER","body":"@zcbenz this is ready for review. Thanks!","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683626788","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683626788","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683626788,"node_id":"MDEyOklzc3VlQ29tbWVudDY4MzYyNjc4OA==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T07:55:53Z","updated_at":"2020-08-31T07:55:53Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> Fixes the following issues for frameless when maximized on Windows","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683626883","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683626883","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683626883,"node_id":"MDEyOklzc3VlQ29tbWVudDY4MzYyNjg4Mw==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T07:56:07Z","updated_at":"2020-08-31T07:56:07Z","author_association":"CONTRIBUTOR","body":"I was unable to backport this PR to \"10-x-y\" cleanly;\n you will need to perform this backport manually.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683626908","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683626908","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683626908,"node_id":"MDEyOklzc3VlQ29tbWVudDY4MzYyNjkwOA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T07:56:10Z","updated_at":"2020-08-31T07:56:10Z","author_association":"CONTRIBUTOR","body":"I was unable to backport this PR to \"11-x-y\" cleanly;\n you will need to perform this backport manually.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683626930","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683626930","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683626930,"node_id":"MDEyOklzc3VlQ29tbWVudDY4MzYyNjkzMA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T07:56:13Z","updated_at":"2020-08-31T07:56:13Z","author_association":"CONTRIBUTOR","body":"I was unable to backport this PR to \"8-x-y\" cleanly;\n you will need to perform this backport manually.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683626954","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683626954","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683626954,"node_id":"MDEyOklzc3VlQ29tbWVudDY4MzYyNjk1NA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T07:56:16Z","updated_at":"2020-08-31T07:56:16Z","author_association":"CONTRIBUTOR","body":"I was unable to backport this PR to \"9-x-y\" cleanly;\n you will need to perform this backport manually.","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683895142","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683895142","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683895142,"node_id":"MDEyOklzc3VlQ29tbWVudDY4Mzg5NTE0Mg==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T16:42:53Z","updated_at":"2020-08-31T16:42:53Z","author_association":"CONTRIBUTOR","body":"@deepak1556 has manually backported this PR to \"10-x-y\", please check out #25216","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683896065","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683896065","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683896065,"node_id":"MDEyOklzc3VlQ29tbWVudDY4Mzg5NjA2NQ==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T16:44:28Z","updated_at":"2020-08-31T16:44:28Z","author_association":"CONTRIBUTOR","body":"@deepak1556 has manually backported this PR to \"11-x-y\", please check out #25217","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683897246","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683897246","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683897246,"node_id":"MDEyOklzc3VlQ29tbWVudDY4Mzg5NzI0Ng==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T16:46:21Z","updated_at":"2020-08-31T16:46:21Z","author_association":"CONTRIBUTOR","body":"@deepak1556 has manually backported this PR to \"9-x-y\", please check out #25218","performed_via_github_app":null},{"url":"https://api.github.com/repos/electron/electron/issues/comments/683898368","html_url":"https://github.com/electron/electron/pull/25052#issuecomment-683898368","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","id":683898368,"node_id":"MDEyOklzc3VlQ29tbWVudDY4Mzg5ODM2OA==","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T16:48:17Z","updated_at":"2020-08-31T16:48:17Z","author_association":"CONTRIBUTOR","body":"@deepak1556 has manually backported this PR to \"8-x-y\", please check out #25219","performed_via_github_app":null}]} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-issue-25216-comments b/spec-main/fixtures/release-notes/cache/electron-electron-issue-25216-comments new file mode 100644 index 0000000000000..6ae0c1bed21de --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-issue-25216-comments @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/issues/25216/comments?per_page=100","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Wed, 02 Sep 2020 15:55:20 GMT","etag":"W/\"dc98adeb828ec1f60e0be31a73a31f30\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"E876:6741:2819ABF:5CAD2C6:5F4FC068","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4943","x-ratelimit-reset":"1599063118","x-xss-protection":"1; mode=block"},"data":[{"url":"https://api.github.com/repos/electron/electron/issues/comments/684017257","html_url":"https://github.com/electron/electron/pull/25216#issuecomment-684017257","issue_url":"https://api.github.com/repos/electron/electron/issues/25216","id":684017257,"node_id":"MDEyOklzc3VlQ29tbWVudDY4NDAxNzI1Nw==","user":{"login":"release-clerk[bot]","id":42386326,"node_id":"MDM6Qm90NDIzODYzMjY=","avatar_url":"https://avatars0.githubusercontent.com/in/16104?v=4","gravatar_id":"","url":"https://api.github.com/users/release-clerk%5Bbot%5D","html_url":"https://github.com/apps/release-clerk","followers_url":"https://api.github.com/users/release-clerk%5Bbot%5D/followers","following_url":"https://api.github.com/users/release-clerk%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/release-clerk%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/release-clerk%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/release-clerk%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/release-clerk%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/release-clerk%5Bbot%5D/repos","events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/release-clerk%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2020-08-31T20:22:50Z","updated_at":"2020-08-31T20:22:50Z","author_association":"NONE","body":"**Release Notes Persisted**\n\n> * Fixes the following issues for frameless when maximized on Windows:\r\n> * fix unreachable task bar when auto hidden with position top\r\n> * fix 1px extending to secondary monitor\r\n> * fix 1px overflowing into taskbar at certain resolutions\r\n> * fix white line on top of window under 4k resolutions","performed_via_github_app":null}]} diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-20214 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-20214 new file mode 100644 index 0000000000000..23821b6599472 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-20214 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:31:06 GMT","etag":"W/\"a02a824c8e984accc4fa3c78f76c0ab3\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"C1E2:5089:126DC:28ABA:5ECD4449","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4971","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/20214","id":316715466,"node_id":"MDExOlB1bGxSZXF1ZXN0MzE2NzE1NDY2","html_url":"https://github.com/electron/electron/pull/20214","diff_url":"https://github.com/electron/electron/pull/20214.diff","patch_url":"https://github.com/electron/electron/pull/20214.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/20214","number":20214,"state":"closed","locked":false,"title":"refactor: use v8 serialization for ipc","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\n\r\nBREAKING CHANGE\r\n\r\nThis changes IPC communication to use v8's [Structured Clone](https://html.spec.whatwg.org/multipage/structured-data.html#safe-passing-of-structured-data) algorithm instead of using the `base::Value` serialization defined in `native_mate_converters/v8_value_converter.cc`. This is be faster, more featureful, and less surprising than the existing logic, since it more-or-less matches the logic that backs `postMessage`.\r\n\r\nThis brings about a 2x performance boost for large buffers and complex objects. Latency for small messages is not significantly affected.\r\n\r\nUser-observable differences from the existing IPC API:\r\n- It's about 2x faster.\r\n- `NaN`, `Infinity`, and `undefined` are transferred as such, rather than being converted to `null`.\r\n- Cyclic objects can be transmitted.\r\n- `Set` and `Map`, `Error`, `RegExp`, `Date` and `BigInt` can be transmitted.\r\n- `Buffer` will be converted to `Uint8Array`.\r\n- Typed arrays (`Float32Array` and friends) will be transmitted as they are, instead of being converted to `Buffer`.\r\n- Sparse arrays will be transferred as sparse arrays, instead of being converted to dense arrays with `null`s.\r\n\r\n> **NOTE**: Objects that aren't serializable with V8's Structured Clone algorithm, such as functions, DOM objects, special Node/Electron objects like `process.env` or `WebContents`, or any objects containing such items will be serialized with the old `base::Value`-based algorithm. However, this behavior is deprecated and will throw an exception beginning with Electron 9.\r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] `npm test` passes\r\n- [x] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [x] relevant documentation is changed or added\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: IPC between main and renderer processes now uses the Structured Clone Algorithm.","created_at":"2019-09-12T03:41:25Z","updated_at":"2020-04-13T15:54:22Z","closed_at":"2019-10-09T17:59:09Z","merged_at":"2019-10-09T17:59:09Z","merge_commit_sha":"2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/20214/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/20214/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/20214/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/55076a368ea11a3408e390067b7cfe420707eb7d","head":{"label":"electron:cloneable-message-ipc","ref":"cloneable-message-ipc","sha":"55076a368ea11a3408e390067b7cfe420707eb7d","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"fe956f87ec6628f93bda11785e7860b97c61b085","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/20214"},"html":{"href":"https://github.com/electron/electron/pull/20214"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/20214"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/20214/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/20214/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/20214/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/55076a368ea11a3408e390067b7cfe420707eb7d"}},"author_association":"MEMBER"}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-20620 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-20620 new file mode 100644 index 0000000000000..f03b5894dd354 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-20620 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/467409458e716c68b35fa935d556050ca6bed1c4/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 15:50:00 GMT","etag":"W/\"4541690410aaff6d5131f40248d2aa1c\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"BF14:68F2:966D8C:1003C0D:5ECD3AA7","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4991","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/20620","id":329363864,"node_id":"MDExOlB1bGxSZXF1ZXN0MzI5MzYzODY0","html_url":"https://github.com/electron/electron/pull/20620","diff_url":"https://github.com/electron/electron/pull/20620.diff","patch_url":"https://github.com/electron/electron/pull/20620.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/20620","number":20620,"state":"closed","locked":false,"title":"build: add support for automated minor releases","user":{"login":"jkleinsc","id":609052,"node_id":"MDQ6VXNlcjYwOTA1Mg==","avatar_url":"https://avatars0.githubusercontent.com/u/609052?v=4","gravatar_id":"","url":"https://api.github.com/users/jkleinsc","html_url":"https://github.com/jkleinsc","followers_url":"https://api.github.com/users/jkleinsc/followers","following_url":"https://api.github.com/users/jkleinsc/following{/other_user}","gists_url":"https://api.github.com/users/jkleinsc/gists{/gist_id}","starred_url":"https://api.github.com/users/jkleinsc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkleinsc/subscriptions","organizations_url":"https://api.github.com/users/jkleinsc/orgs","repos_url":"https://api.github.com/users/jkleinsc/repos","events_url":"https://api.github.com/users/jkleinsc/events{/privacy}","received_events_url":"https://api.github.com/users/jkleinsc/received_events","type":"User","site_admin":true},"body":"#### Description of Change\r\n\r\nStarting with the 8-x series we are going to switch to having an 8-x-y branch from which we can publish 8-0-x releases as well as (if necessary) 8-x-y releases. This means that if we want to release a minor version we will no longer have to create a new branch for that minor. \r\n\r\nThis PR changes our release scripts to allow for minor bumps. There will need to be corresponding changes made to sudowoodo and trop to support this change.\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: no-notes\r\n","created_at":"2019-10-17T16:54:58Z","updated_at":"2019-10-23T18:07:14Z","closed_at":"2019-10-23T18:07:10Z","merged_at":"2019-10-23T18:07:10Z","merge_commit_sha":"467409458e716c68b35fa935d556050ca6bed1c4","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/20620/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/20620/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/20620/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/3e83f35e702d90667842c15781f84dcb786673a8","head":{"label":"electron:support-n-x-y-branches","ref":"support-n-x-y-branches","sha":"3e83f35e702d90667842c15781f84dcb786673a8","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:39:23Z","pushed_at":"2020-05-26T15:46:58Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82995,"watchers_count":82995,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1223,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1223,"watchers":82995,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"86258c6cff88c60d730c0d1f050bb68c12c41d99","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:39:23Z","pushed_at":"2020-05-26T15:46:58Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82995,"watchers_count":82995,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1223,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1223,"watchers":82995,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/20620"},"html":{"href":"https://github.com/electron/electron/pull/20620"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/20620"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/20620/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/20620/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/20620/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/3e83f35e702d90667842c15781f84dcb786673a8"}},"author_association":"MEMBER"}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-21497 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21497 new file mode 100644 index 0000000000000..d4cd0ac4b9ea8 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21497 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/pulls/21497","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 17:01:48 GMT","etag":"W/\"66ad2a5e4202abfacd060a1036483261\"","last-modified":"Mon, 13 Apr 2020 15:37:46 GMT","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"B826:7ED8:A60D75:11C4A36:5ECD4B75","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4991","x-ratelimit-reset":"1590514322","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/21497","id":352640324,"node_id":"MDExOlB1bGxSZXF1ZXN0MzUyNjQwMzI0","html_url":"https://github.com/electron/electron/pull/21497","diff_url":"https://github.com/electron/electron/pull/21497.diff","patch_url":"https://github.com/electron/electron/pull/21497.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/21497","number":21497,"state":"closed","locked":false,"title":"fix: workaround for hang when preventDefault-ing nativeWindowOpen (7-1-x)","user":{"login":"loc","id":1815863,"node_id":"MDQ6VXNlcjE4MTU4NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1815863?v=4","gravatar_id":"","url":"https://api.github.com/users/loc","html_url":"https://github.com/loc","followers_url":"https://api.github.com/users/loc/followers","following_url":"https://api.github.com/users/loc/following{/other_user}","gists_url":"https://api.github.com/users/loc/gists{/gist_id}","starred_url":"https://api.github.com/users/loc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/loc/subscriptions","organizations_url":"https://api.github.com/users/loc/orgs","repos_url":"https://api.github.com/users/loc/repos","events_url":"https://api.github.com/users/loc/events{/privacy}","received_events_url":"https://api.github.com/users/loc/received_events","type":"User","site_admin":false},"body":"### Description of Change\r\nAddresses the same issues as #21236, except without replacing the current API and cleaning up the involved code paths. Briefly, the issue is that canceling a `nativeWindowOpen`-ed window in the `new-window` event causes a hang because the WebContents is already initializing. This change adds a hook earlier, so we can cancel before it starts loading.\r\n\r\n#21236 is the \"right way\", this change is because we need the workaround sooner than time allows. We'd prefer not to rush the addition of a new API!\r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] `npm test` passes\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: Added workaround for nativeWindowOpen hang.\r\n","created_at":"2019-12-12T22:31:07Z","updated_at":"2020-04-13T15:37:46Z","closed_at":"2019-12-13T16:06:12Z","merged_at":"2019-12-13T16:06:12Z","merge_commit_sha":"1edfffae2552818daa163294450d16f093a16a6f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1283062224,"node_id":"MDU6TGFiZWwxMjgzMDYyMjI0","url":"https://api.github.com/repos/electron/electron/labels/fast-track%20%F0%9F%9A%85","name":"fast-track 🚅","color":"ed0707","default":false,"description":"Indicates that this PR is intended to bypass the 24 hour rule. Needs approval from Releases"},{"id":1634462328,"node_id":"MDU6TGFiZWwxNjM0NDYyMzI4","url":"https://api.github.com/repos/electron/electron/labels/merged/8-x-y","name":"merged/8-x-y","color":"61a3c6","default":false,"description":"PR was merged to the \"8-x-y\" branch."},{"id":1831709348,"node_id":"MDU6TGFiZWwxODMxNzA5MzQ4","url":"https://api.github.com/repos/electron/electron/labels/merged/9-x-y","name":"merged/9-x-y","color":"61a3c6","default":false,"description":""},{"id":1982961443,"node_id":"MDU6TGFiZWwxOTgyOTYxNDQz","url":"https://api.github.com/repos/electron/electron/labels/merged/master","name":"merged/master","color":"61a3c6","default":false,"description":""}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/21497/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/21497/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/21497/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/525ce7926585df7a5dc7895bcf9e426317e4c31d","head":{"label":"electron:loc/native-window-open-hang-7-1-x","ref":"loc/native-window-open-hang-7-1-x","sha":"525ce7926585df7a5dc7895bcf9e426317e4c31d","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:7-1-x","ref":"7-1-x","sha":"8f728af13ae8a8481ba1ada6679c507895913a67","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/21497"},"html":{"href":"https://github.com/electron/electron/pull/21497"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/21497"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/21497/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/21497/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/21497/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/525ce7926585df7a5dc7895bcf9e426317e4c31d"}},"author_association":"MEMBER","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false},"comments":11,"review_comments":2,"maintainer_can_modify":false,"commits":3,"additions":54,"deletions":0,"changed_files":3}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-21591 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21591 new file mode 100644 index 0000000000000..f37b3e71ee9b2 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21591 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/8bc0c92137f4a77dc831ca644a86a3e48b51a11e/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 04:04:13 GMT","etag":"W/\"ec4682709ef52766317ea4b47c247d68\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"811A:6500:2B2B5B:60C764:5ECC9537","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4998","x-ratelimit-reset":"1590469445","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/21591","id":355863062,"node_id":"MDExOlB1bGxSZXF1ZXN0MzU1ODYzMDYy","html_url":"https://github.com/electron/electron/pull/21591","diff_url":"https://github.com/electron/electron/pull/21591.diff","patch_url":"https://github.com/electron/electron/pull/21591.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/21591","number":21591,"state":"closed","locked":false,"title":"feat: [extensions] background pages","user":{"login":"nornagon","id":172800,"node_id":"MDQ6VXNlcjE3MjgwMA==","avatar_url":"https://avatars2.githubusercontent.com/u/172800?v=4","gravatar_id":"","url":"https://api.github.com/users/nornagon","html_url":"https://github.com/nornagon","followers_url":"https://api.github.com/users/nornagon/followers","following_url":"https://api.github.com/users/nornagon/following{/other_user}","gists_url":"https://api.github.com/users/nornagon/gists{/gist_id}","starred_url":"https://api.github.com/users/nornagon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nornagon/subscriptions","organizations_url":"https://api.github.com/users/nornagon/orgs","repos_url":"https://api.github.com/users/nornagon/repos","events_url":"https://api.github.com/users/nornagon/events{/privacy}","received_events_url":"https://api.github.com/users/nornagon/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\nThis adds support for lazy background pages when building with ENABLE_ELECTRON_EXTENSIONS. One step closer to a functional React DevTools!\r\n\r\nNB. no release notes because this feature is still behind the ENABLE_ELECTRON_EXTENSIONS flag, which is not enabled in Electron release builds.\r\n\r\nRef #19447\r\n\r\n#### Checklist\r\n\r\n\r\n- [ ] PR description included and stakeholders cc'd\r\n- [ ] `npm test` passes\r\n- [ ] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [ ] relevant documentation is changed or added\r\n- [ ] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [ ] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: none\r\n","created_at":"2019-12-20T19:06:41Z","updated_at":"2020-01-13T22:56:03Z","closed_at":"2020-01-13T22:55:58Z","merged_at":"2020-01-13T22:55:58Z","merge_commit_sha":"8bc0c92137f4a77dc831ca644a86a3e48b51a11e","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/21591/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/21591/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/21591/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/391bf72b0bdad568d8e36300e47c8c3915ab751e","head":{"label":"electron:extensions-background-pages","ref":"extensions-background-pages","sha":"391bf72b0bdad568d8e36300e47c8c3915ab751e","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T03:18:11Z","pushed_at":"2020-05-26T02:52:23Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75421,"stargazers_count":82973,"watchers_count":82973,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11130,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11130,"open_issues":1224,"watchers":82973,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"7161b2f57c8a0da87d8e2d54f240c16f5b2afe4b","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T03:18:11Z","pushed_at":"2020-05-26T02:52:23Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75421,"stargazers_count":82973,"watchers_count":82973,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11130,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11130,"open_issues":1224,"watchers":82973,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/21591"},"html":{"href":"https://github.com/electron/electron/pull/21591"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/21591"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/21591/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/21591/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/21591/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/391bf72b0bdad568d8e36300e47c8c3915ab751e"}},"author_association":"MEMBER"}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-21891 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21891 new file mode 100644 index 0000000000000..384d986ab8e28 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21891 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/89eb309d0b22bd4aec058ffaf983e81e56a5c378/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 04:04:06 GMT","etag":"W/\"442672ace5270531a2ffdc83b3b51f20\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"8118:3989:536BFA:8CED70:5ECC9535","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4999","x-ratelimit-reset":"1590469446","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/21891","id":367058148,"node_id":"MDExOlB1bGxSZXF1ZXN0MzY3MDU4MTQ4","html_url":"https://github.com/electron/electron/pull/21891","diff_url":"https://github.com/electron/electron/pull/21891.diff","patch_url":"https://github.com/electron/electron/pull/21891.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/21891","number":21891,"state":"closed","locked":false,"title":"feat: allow GUID parameter to avoid systray demotion on Windows ","user":{"login":"bitdisaster","id":5191943,"node_id":"MDQ6VXNlcjUxOTE5NDM=","avatar_url":"https://avatars3.githubusercontent.com/u/5191943?v=4","gravatar_id":"","url":"https://api.github.com/users/bitdisaster","html_url":"https://github.com/bitdisaster","followers_url":"https://api.github.com/users/bitdisaster/followers","following_url":"https://api.github.com/users/bitdisaster/following{/other_user}","gists_url":"https://api.github.com/users/bitdisaster/gists{/gist_id}","starred_url":"https://api.github.com/users/bitdisaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitdisaster/subscriptions","organizations_url":"https://api.github.com/users/bitdisaster/orgs","repos_url":"https://api.github.com/users/bitdisaster/repos","events_url":"https://api.github.com/users/bitdisaster/events{/privacy}","received_events_url":"https://api.github.com/users/bitdisaster/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\nEnhances the Tray API on Windows to avoid demotion of the icon position in the system tray. With normal usage of the Windows API https://docs.microsoft.com/en-us/windows/win32/api/shellapi/ns-shellapi-notifyicondataa a user customized position of the icon is linked to the absolute file path of the executable. If the path changes, mostly by updater frameworks such Squirrel.Windows, the position is lost, and the icon will be placed back in the overflow area.\r\nHowever, the combination of a code signed binary and GUID parameter can make the positioning of the icon persistent even if the path to the executable changes.\r\nThe use of the GUID parameter also fixes a behavior where the position of a second or third icon will be lost on each restart of the App. Even if the path has not changed. \r\n\r\nI’m aware of a previous attempt https://github.com/electron/electron/pull/2328 to introduce the GUID parameter. The reason why it failed and had to be rolled back is bases on Microsofts somewhat incomplete/confusing documentation. A couple of gotchas:\r\n\r\n- The GUID is not a replacement/alternative for the uID. The uID parameter is still needed to identify the icon via Hwnd messages. \r\n- The GUID parameter is no global Id for the app that seeks to create icons in the system tray. Each icon needs its own GUID if multiple icons are created.\r\n- The GUID is best used in combination with a code signed binary. Once it is used with code signature, the GUID is permanently bound to it.\r\n- The code signature has to contain CN, OU, O in the subject line. \r\n- The GUID parameter can be used with none code signed binary. However, now the GUID is permanently bound to the path of the binary. If the path changes and the same GUID is used the creation the Tray icon will fail. Since the GUID was statically derived from the AppUserModelId, PR 2328 had to be reverted because it broke all Apps without code signature when they updated and changed there executable path.\r\n\r\nBased on above behaviors of the Windows API its best to make this an opt-in. The developer has to be aware of the behavior/requirements using the GUID parameter. It also allows the mitigation of unexpected problems with the Tray creation by providing a new GUID.\r\n\r\n\r\n\r\n#### Checklist\r\n\r\n\r\n- [X] PR description included and stakeholders cc'd\r\n- [X] `npm test` passes\r\n- [X] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [X] relevant documentation is changed or added\r\n- [X] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: Added GUID parameter to Tray API to avoid system tray icon demotion on Windows \r\n","created_at":"2020-01-24T23:45:33Z","updated_at":"2020-01-31T05:37:07Z","closed_at":"2020-01-31T05:37:04Z","merged_at":"2020-01-31T05:37:04Z","merge_commit_sha":"89eb309d0b22bd4aec058ffaf983e81e56a5c378","assignee":null,"assignees":[],"requested_reviewers":[{"login":"MarshallOfSound","id":6634592,"node_id":"MDQ6VXNlcjY2MzQ1OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/6634592?v=4","gravatar_id":"","url":"https://api.github.com/users/MarshallOfSound","html_url":"https://github.com/MarshallOfSound","followers_url":"https://api.github.com/users/MarshallOfSound/followers","following_url":"https://api.github.com/users/MarshallOfSound/following{/other_user}","gists_url":"https://api.github.com/users/MarshallOfSound/gists{/gist_id}","starred_url":"https://api.github.com/users/MarshallOfSound/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarshallOfSound/subscriptions","organizations_url":"https://api.github.com/users/MarshallOfSound/orgs","repos_url":"https://api.github.com/users/MarshallOfSound/repos","events_url":"https://api.github.com/users/MarshallOfSound/events{/privacy}","received_events_url":"https://api.github.com/users/MarshallOfSound/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/21891/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/21891/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/21891/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/e72c7ec1aa0d52e4fe5a6d77f1fa558c0dde6e4d","head":{"label":"bitdisaster:fix-systray-demotion-on-windows","ref":"fix-systray-demotion-on-windows","sha":"e72c7ec1aa0d52e4fe5a6d77f1fa558c0dde6e4d","user":{"login":"bitdisaster","id":5191943,"node_id":"MDQ6VXNlcjUxOTE5NDM=","avatar_url":"https://avatars3.githubusercontent.com/u/5191943?v=4","gravatar_id":"","url":"https://api.github.com/users/bitdisaster","html_url":"https://github.com/bitdisaster","followers_url":"https://api.github.com/users/bitdisaster/followers","following_url":"https://api.github.com/users/bitdisaster/following{/other_user}","gists_url":"https://api.github.com/users/bitdisaster/gists{/gist_id}","starred_url":"https://api.github.com/users/bitdisaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitdisaster/subscriptions","organizations_url":"https://api.github.com/users/bitdisaster/orgs","repos_url":"https://api.github.com/users/bitdisaster/repos","events_url":"https://api.github.com/users/bitdisaster/events{/privacy}","received_events_url":"https://api.github.com/users/bitdisaster/received_events","type":"User","site_admin":false},"repo":{"id":216672113,"node_id":"MDEwOlJlcG9zaXRvcnkyMTY2NzIxMTM=","name":"electron","full_name":"bitdisaster/electron","private":false,"owner":{"login":"bitdisaster","id":5191943,"node_id":"MDQ6VXNlcjUxOTE5NDM=","avatar_url":"https://avatars3.githubusercontent.com/u/5191943?v=4","gravatar_id":"","url":"https://api.github.com/users/bitdisaster","html_url":"https://github.com/bitdisaster","followers_url":"https://api.github.com/users/bitdisaster/followers","following_url":"https://api.github.com/users/bitdisaster/following{/other_user}","gists_url":"https://api.github.com/users/bitdisaster/gists{/gist_id}","starred_url":"https://api.github.com/users/bitdisaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitdisaster/subscriptions","organizations_url":"https://api.github.com/users/bitdisaster/orgs","repos_url":"https://api.github.com/users/bitdisaster/repos","events_url":"https://api.github.com/users/bitdisaster/events{/privacy}","received_events_url":"https://api.github.com/users/bitdisaster/received_events","type":"User","site_admin":false},"html_url":"https://github.com/bitdisaster/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":true,"url":"https://api.github.com/repos/bitdisaster/electron","forks_url":"https://api.github.com/repos/bitdisaster/electron/forks","keys_url":"https://api.github.com/repos/bitdisaster/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bitdisaster/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bitdisaster/electron/teams","hooks_url":"https://api.github.com/repos/bitdisaster/electron/hooks","issue_events_url":"https://api.github.com/repos/bitdisaster/electron/issues/events{/number}","events_url":"https://api.github.com/repos/bitdisaster/electron/events","assignees_url":"https://api.github.com/repos/bitdisaster/electron/assignees{/user}","branches_url":"https://api.github.com/repos/bitdisaster/electron/branches{/branch}","tags_url":"https://api.github.com/repos/bitdisaster/electron/tags","blobs_url":"https://api.github.com/repos/bitdisaster/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bitdisaster/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bitdisaster/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/bitdisaster/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bitdisaster/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/bitdisaster/electron/languages","stargazers_url":"https://api.github.com/repos/bitdisaster/electron/stargazers","contributors_url":"https://api.github.com/repos/bitdisaster/electron/contributors","subscribers_url":"https://api.github.com/repos/bitdisaster/electron/subscribers","subscription_url":"https://api.github.com/repos/bitdisaster/electron/subscription","commits_url":"https://api.github.com/repos/bitdisaster/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/bitdisaster/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/bitdisaster/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/bitdisaster/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/bitdisaster/electron/contents/{+path}","compare_url":"https://api.github.com/repos/bitdisaster/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bitdisaster/electron/merges","archive_url":"https://api.github.com/repos/bitdisaster/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bitdisaster/electron/downloads","issues_url":"https://api.github.com/repos/bitdisaster/electron/issues{/number}","pulls_url":"https://api.github.com/repos/bitdisaster/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/bitdisaster/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/bitdisaster/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bitdisaster/electron/labels{/name}","releases_url":"https://api.github.com/repos/bitdisaster/electron/releases{/id}","deployments_url":"https://api.github.com/repos/bitdisaster/electron/deployments","created_at":"2019-10-21T21:53:10Z","updated_at":"2020-01-20T18:30:37Z","pushed_at":"2020-01-28T23:56:20Z","git_url":"git://github.com/bitdisaster/electron.git","ssh_url":"git@github.com:bitdisaster/electron.git","clone_url":"https://github.com/bitdisaster/electron.git","svn_url":"https://github.com/bitdisaster/electron","homepage":"https://electronjs.org","size":68832,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"28fb2b7ed5c96fdae559ea015e99f3acb6b12023","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T03:18:11Z","pushed_at":"2020-05-26T02:52:23Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75421,"stargazers_count":82973,"watchers_count":82973,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11130,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11130,"open_issues":1224,"watchers":82973,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/21891"},"html":{"href":"https://github.com/electron/electron/pull/21891"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/21891"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/21891/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/21891/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/21891/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/e72c7ec1aa0d52e4fe5a6d77f1fa558c0dde6e4d"}},"author_association":"MEMBER"}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-21946 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21946 new file mode 100644 index 0000000000000..4682985773e96 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-21946 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/2955c67c4ea712fa22773ac9113709fc952bfd49/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:25:38 GMT","etag":"W/\"7be19eed3b62d434bcbc8ed63e9c6fe9\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"CC2A:2EDB:AF2650:12289C2:5ECD4301","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4975","x-ratelimit-reset":"1590510696","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/21946","id":368254138,"node_id":"MDExOlB1bGxSZXF1ZXN0MzY4MjU0MTM4","html_url":"https://github.com/electron/electron/pull/21946","diff_url":"https://github.com/electron/electron/pull/21946.diff","patch_url":"https://github.com/electron/electron/pull/21946.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/21946","number":21946,"state":"closed","locked":false,"title":"fix: prevent print crash on bad deviceName","user":{"login":"codebytere","id":2036040,"node_id":"MDQ6VXNlcjIwMzYwNDA=","avatar_url":"https://avatars2.githubusercontent.com/u/2036040?v=4","gravatar_id":"","url":"https://api.github.com/users/codebytere","html_url":"https://github.com/codebytere","followers_url":"https://api.github.com/users/codebytere/followers","following_url":"https://api.github.com/users/codebytere/following{/other_user}","gists_url":"https://api.github.com/users/codebytere/gists{/gist_id}","starred_url":"https://api.github.com/users/codebytere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codebytere/subscriptions","organizations_url":"https://api.github.com/users/codebytere/orgs","repos_url":"https://api.github.com/users/codebytere/repos","events_url":"https://api.github.com/users/codebytere/events{/privacy}","received_events_url":"https://api.github.com/users/codebytere/received_events","type":"User","site_admin":true},"body":"#### Description of Change\r\n\r\nOn [Windows](https://source.chromium.org/chromium/chromium/src/+/master:printing/printing_context_win.cc;l=157?originalUrl=https:%2F%2Fcs.chromium.org%2F) and [macOS](https://source.chromium.org/chromium/chromium/src/+/master:printing/printing_context_mac.mm;l=226?originalUrl=https:%2F%2Fcs.chromium.org%2F), Chromium's printing code will crash if a `deviceName` is provided, but is invalid on the network, i.e does not correspond to a printer that the caller machine is aware of. This bug has been present for a long time, but after playing around a bit I've determined that it's possible to catch faulty `deviceName`s by pulling out some of the printer validation code from Chromium. This PR adds that check for Windows and macOS as well as tests for the same.\r\n\r\nTested with:\r\n```js\r\nwin.webContents.on('did-finish-load', () => {\r\n win.webContents.print({deviceName: 'bad-printer-name'}, (success, reason) => {\r\n console.log(`printing ${success ? 'did' : 'did not'} succeed: ${reason}`)\r\n })\r\n})\r\n```\r\n\r\ncc @ckerr @zcbenz \r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] `npm test` passes\r\n- [x] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [x] relevant documentation is changed or added\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n\r\n#### Release Notes\r\n\r\nNotes: Fixed a potential crash on faulty `deviceName`s in `webContents.print()`.\r\n","created_at":"2020-01-28T22:02:08Z","updated_at":"2020-05-18T18:15:29Z","closed_at":"2020-01-31T02:49:14Z","merged_at":"2020-01-31T02:49:14Z","merge_commit_sha":"2955c67c4ea712fa22773ac9113709fc952bfd49","assignee":null,"assignees":[],"requested_reviewers":[{"login":"ckerr","id":70381,"node_id":"MDQ6VXNlcjcwMzgx","avatar_url":"https://avatars3.githubusercontent.com/u/70381?v=4","gravatar_id":"","url":"https://api.github.com/users/ckerr","html_url":"https://github.com/ckerr","followers_url":"https://api.github.com/users/ckerr/followers","following_url":"https://api.github.com/users/ckerr/following{/other_user}","gists_url":"https://api.github.com/users/ckerr/gists{/gist_id}","starred_url":"https://api.github.com/users/ckerr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ckerr/subscriptions","organizations_url":"https://api.github.com/users/ckerr/orgs","repos_url":"https://api.github.com/users/ckerr/repos","events_url":"https://api.github.com/users/ckerr/events{/privacy}","received_events_url":"https://api.github.com/users/ckerr/received_events","type":"User","site_admin":true}],"requested_teams":[],"labels":[{"id":1657635084,"node_id":"MDU6TGFiZWwxNjU3NjM1MDg0","url":"https://api.github.com/repos/electron/electron/labels/merged/7-1-x","name":"merged/7-1-x","color":"61a3c6","default":false,"description":"PR was merged to the \"7-1-x\" branch."},{"id":1634462328,"node_id":"MDU6TGFiZWwxNjM0NDYyMzI4","url":"https://api.github.com/repos/electron/electron/labels/merged/8-x-y","name":"merged/8-x-y","color":"61a3c6","default":false,"description":"PR was merged to the \"8-x-y\" branch."}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/21946/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/21946/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/21946/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/858dbc690b159ecf767e6ae55e476f73ead931f6","head":{"label":"electron:sanity-check-devicename","ref":"sanity-check-devicename","sha":"858dbc690b159ecf767e6ae55e476f73ead931f6","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:02:47Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"0979bfc9c1a3ad2d9a8d32eb63db6940d278ff02","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:02:47Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75428,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/21946"},"html":{"href":"https://github.com/electron/electron/pull/21946"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/21946"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/21946/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/21946/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/21946/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/858dbc690b159ecf767e6ae55e476f73ead931f6"}},"author_association":"MEMBER"}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-22750 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-22750 new file mode 100644 index 0000000000000..034f2dadb8fb6 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-22750 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/a6ff42c190cb5caf8f3e217748e49183a951491b/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 17:01:40 GMT","etag":"W/\"0efacfb47a3fe381a80ea2cc1cfc1bab\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"B824:2157:A9EDEF:128DDCF:5ECD4B73","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4992","x-ratelimit-reset":"1590514322","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/22750","id":390602476,"node_id":"MDExOlB1bGxSZXF1ZXN0MzkwNjAyNDc2","html_url":"https://github.com/electron/electron/pull/22750","diff_url":"https://github.com/electron/electron/pull/22750.diff","patch_url":"https://github.com/electron/electron/pull/22750.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/22750","number":22750,"state":"closed","locked":false,"title":"fix: workaround for hang when preventDefault-ing nativeWindowOpen","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #21497\n\nSee that PR for details.\n\n\r\nNotes: Added workaround for nativeWindowOpen hang.\r\n","created_at":"2020-03-18T18:38:17Z","updated_at":"2020-03-25T01:40:17Z","closed_at":"2020-03-25T01:40:13Z","merged_at":"2020-03-25T01:40:13Z","merge_commit_sha":"a6ff42c190cb5caf8f3e217748e49183a951491b","assignee":null,"assignees":[],"requested_reviewers":[{"login":"loc","id":1815863,"node_id":"MDQ6VXNlcjE4MTU4NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1815863?v=4","gravatar_id":"","url":"https://api.github.com/users/loc","html_url":"https://github.com/loc","followers_url":"https://api.github.com/users/loc/followers","following_url":"https://api.github.com/users/loc/following{/other_user}","gists_url":"https://api.github.com/users/loc/gists{/gist_id}","starred_url":"https://api.github.com/users/loc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/loc/subscriptions","organizations_url":"https://api.github.com/users/loc/orgs","repos_url":"https://api.github.com/users/loc/repos","events_url":"https://api.github.com/users/loc/events{/privacy}","received_events_url":"https://api.github.com/users/loc/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/22750/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/22750/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/22750/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/f24780c35de76aabbc24aa9cb4373380081210d8","head":{"label":"electron:trop/9-x-y-bp-fix-workaround-for-hang-when-preventdefault-ing-nativewindowopen-7-1-x--1584556691390","ref":"trop/9-x-y-bp-fix-workaround-for-hang-when-preventdefault-ing-nativewindowopen-7-1-x--1584556691390","sha":"f24780c35de76aabbc24aa9cb4373380081210d8","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"9b14ae770dd5f4bb5ec4cfdb803c40174a8a555e","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/22750"},"html":{"href":"https://github.com/electron/electron/pull/22750"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/22750"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/22750/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/22750/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/22750/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/f24780c35de76aabbc24aa9cb4373380081210d8"}},"author_association":"CONTRIBUTOR"}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-22770 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-22770 new file mode 100644 index 0000000000000..0aba211fa62d9 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-22770 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/pulls/22770","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:42:34 GMT","etag":"W/\"553fb65b1bf6e194fd38605f19e8041f\"","last-modified":"Mon, 04 May 2020 15:46:25 GMT","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"C9A6:34CF:A72E:121AD:5ECD46F3","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4995","x-ratelimit-reset":"1590514322","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/22770","id":391093520,"node_id":"MDExOlB1bGxSZXF1ZXN0MzkxMDkzNTIw","html_url":"https://github.com/electron/electron/pull/22770","diff_url":"https://github.com/electron/electron/pull/22770.diff","patch_url":"https://github.com/electron/electron/pull/22770.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/22770","number":22770,"state":"closed","locked":false,"title":"fix: don't allow window to go behind menu bar on mac","user":{"login":"CezaryKulakowski","id":50166166,"node_id":"MDQ6VXNlcjUwMTY2MTY2","avatar_url":"https://avatars2.githubusercontent.com/u/50166166?v=4","gravatar_id":"","url":"https://api.github.com/users/CezaryKulakowski","html_url":"https://github.com/CezaryKulakowski","followers_url":"https://api.github.com/users/CezaryKulakowski/followers","following_url":"https://api.github.com/users/CezaryKulakowski/following{/other_user}","gists_url":"https://api.github.com/users/CezaryKulakowski/gists{/gist_id}","starred_url":"https://api.github.com/users/CezaryKulakowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CezaryKulakowski/subscriptions","organizations_url":"https://api.github.com/users/CezaryKulakowski/orgs","repos_url":"https://api.github.com/users/CezaryKulakowski/repos","events_url":"https://api.github.com/users/CezaryKulakowski/events{/privacy}","received_events_url":"https://api.github.com/users/CezaryKulakowski/received_events","type":"User","site_admin":false},"body":"This change fixes #22667.\r\n\r\nNotes: don't allow window to go behind menu bar on mac\r\n","created_at":"2020-03-19T16:05:51Z","updated_at":"2020-03-25T15:45:36Z","closed_at":"2020-03-25T02:13:44Z","merged_at":"2020-03-25T02:13:44Z","merge_commit_sha":"bdef77bad89f762ecb755c028bb2d166493b9f14","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1831709348,"node_id":"MDU6TGFiZWwxODMxNzA5MzQ4","url":"https://api.github.com/repos/electron/electron/labels/merged/9-x-y","name":"merged/9-x-y","color":"61a3c6","default":false,"description":""}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/22770/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/22770/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/22770/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/2b35fc0874c5aa14dc3d2f9948a0c4e936f0d5db","head":{"label":"CezaryKulakowski:issue_22667","ref":"issue_22667","sha":"2b35fc0874c5aa14dc3d2f9948a0c4e936f0d5db","user":{"login":"CezaryKulakowski","id":50166166,"node_id":"MDQ6VXNlcjUwMTY2MTY2","avatar_url":"https://avatars2.githubusercontent.com/u/50166166?v=4","gravatar_id":"","url":"https://api.github.com/users/CezaryKulakowski","html_url":"https://github.com/CezaryKulakowski","followers_url":"https://api.github.com/users/CezaryKulakowski/followers","following_url":"https://api.github.com/users/CezaryKulakowski/following{/other_user}","gists_url":"https://api.github.com/users/CezaryKulakowski/gists{/gist_id}","starred_url":"https://api.github.com/users/CezaryKulakowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CezaryKulakowski/subscriptions","organizations_url":"https://api.github.com/users/CezaryKulakowski/orgs","repos_url":"https://api.github.com/users/CezaryKulakowski/repos","events_url":"https://api.github.com/users/CezaryKulakowski/events{/privacy}","received_events_url":"https://api.github.com/users/CezaryKulakowski/received_events","type":"User","site_admin":false},"repo":{"id":198434535,"node_id":"MDEwOlJlcG9zaXRvcnkxOTg0MzQ1MzU=","name":"electron","full_name":"CezaryKulakowski/electron","private":false,"owner":{"login":"CezaryKulakowski","id":50166166,"node_id":"MDQ6VXNlcjUwMTY2MTY2","avatar_url":"https://avatars2.githubusercontent.com/u/50166166?v=4","gravatar_id":"","url":"https://api.github.com/users/CezaryKulakowski","html_url":"https://github.com/CezaryKulakowski","followers_url":"https://api.github.com/users/CezaryKulakowski/followers","following_url":"https://api.github.com/users/CezaryKulakowski/following{/other_user}","gists_url":"https://api.github.com/users/CezaryKulakowski/gists{/gist_id}","starred_url":"https://api.github.com/users/CezaryKulakowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CezaryKulakowski/subscriptions","organizations_url":"https://api.github.com/users/CezaryKulakowski/orgs","repos_url":"https://api.github.com/users/CezaryKulakowski/repos","events_url":"https://api.github.com/users/CezaryKulakowski/events{/privacy}","received_events_url":"https://api.github.com/users/CezaryKulakowski/received_events","type":"User","site_admin":false},"html_url":"https://github.com/CezaryKulakowski/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":true,"url":"https://api.github.com/repos/CezaryKulakowski/electron","forks_url":"https://api.github.com/repos/CezaryKulakowski/electron/forks","keys_url":"https://api.github.com/repos/CezaryKulakowski/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CezaryKulakowski/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CezaryKulakowski/electron/teams","hooks_url":"https://api.github.com/repos/CezaryKulakowski/electron/hooks","issue_events_url":"https://api.github.com/repos/CezaryKulakowski/electron/issues/events{/number}","events_url":"https://api.github.com/repos/CezaryKulakowski/electron/events","assignees_url":"https://api.github.com/repos/CezaryKulakowski/electron/assignees{/user}","branches_url":"https://api.github.com/repos/CezaryKulakowski/electron/branches{/branch}","tags_url":"https://api.github.com/repos/CezaryKulakowski/electron/tags","blobs_url":"https://api.github.com/repos/CezaryKulakowski/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CezaryKulakowski/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CezaryKulakowski/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/CezaryKulakowski/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CezaryKulakowski/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/CezaryKulakowski/electron/languages","stargazers_url":"https://api.github.com/repos/CezaryKulakowski/electron/stargazers","contributors_url":"https://api.github.com/repos/CezaryKulakowski/electron/contributors","subscribers_url":"https://api.github.com/repos/CezaryKulakowski/electron/subscribers","subscription_url":"https://api.github.com/repos/CezaryKulakowski/electron/subscription","commits_url":"https://api.github.com/repos/CezaryKulakowski/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/CezaryKulakowski/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/CezaryKulakowski/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/CezaryKulakowski/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/CezaryKulakowski/electron/contents/{+path}","compare_url":"https://api.github.com/repos/CezaryKulakowski/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CezaryKulakowski/electron/merges","archive_url":"https://api.github.com/repos/CezaryKulakowski/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CezaryKulakowski/electron/downloads","issues_url":"https://api.github.com/repos/CezaryKulakowski/electron/issues{/number}","pulls_url":"https://api.github.com/repos/CezaryKulakowski/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/CezaryKulakowski/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/CezaryKulakowski/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CezaryKulakowski/electron/labels{/name}","releases_url":"https://api.github.com/repos/CezaryKulakowski/electron/releases{/id}","deployments_url":"https://api.github.com/repos/CezaryKulakowski/electron/deployments","created_at":"2019-07-23T13:18:19Z","updated_at":"2019-07-23T13:18:27Z","pushed_at":"2020-05-05T12:05:26Z","git_url":"git://github.com/CezaryKulakowski/electron.git","ssh_url":"git@github.com:CezaryKulakowski/electron.git","clone_url":"https://github.com/CezaryKulakowski/electron.git","svn_url":"https://github.com/CezaryKulakowski/electron","homepage":"https://electronjs.org","size":70669,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"4b0d445f7402e241b5b566760bddc905ad4f4a79","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/22770"},"html":{"href":"https://github.com/electron/electron/pull/22770"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/22770"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/22770/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/22770/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/22770/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/2b35fc0874c5aa14dc3d2f9948a0c4e936f0d5db"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"zcbenz","id":639601,"node_id":"MDQ6VXNlcjYzOTYwMQ==","avatar_url":"https://avatars0.githubusercontent.com/u/639601?v=4","gravatar_id":"","url":"https://api.github.com/users/zcbenz","html_url":"https://github.com/zcbenz","followers_url":"https://api.github.com/users/zcbenz/followers","following_url":"https://api.github.com/users/zcbenz/following{/other_user}","gists_url":"https://api.github.com/users/zcbenz/gists{/gist_id}","starred_url":"https://api.github.com/users/zcbenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcbenz/subscriptions","organizations_url":"https://api.github.com/users/zcbenz/orgs","repos_url":"https://api.github.com/users/zcbenz/repos","events_url":"https://api.github.com/users/zcbenz/events{/privacy}","received_events_url":"https://api.github.com/users/zcbenz/received_events","type":"User","site_admin":true},"comments":4,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":10,"deletions":4,"changed_files":2}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-22828 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-22828 new file mode 100644 index 0000000000000..53460d27d60bf --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-22828 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/0600420bac25439fc2067d51c6aaa4ee11770577/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Tue, 26 May 2020 16:42:26 GMT","etag":"W/\"3601649b1f433390bb296fd32be0d785\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"C9A4:6695:0E0D:2D25:5ECD46F2","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4996","x-ratelimit-reset":"1590514322","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/22828","id":393345723,"node_id":"MDExOlB1bGxSZXF1ZXN0MzkzMzQ1NzIz","html_url":"https://github.com/electron/electron/pull/22828","diff_url":"https://github.com/electron/electron/pull/22828.diff","patch_url":"https://github.com/electron/electron/pull/22828.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/22828","number":22828,"state":"closed","locked":false,"title":"fix: don't allow window to go behind menu bar on mac","user":{"login":"trop[bot]","id":37223003,"node_id":"MDM6Qm90MzcyMjMwMDM=","avatar_url":"https://avatars1.githubusercontent.com/in/9879?v=4","gravatar_id":"","url":"https://api.github.com/users/trop%5Bbot%5D","html_url":"https://github.com/apps/trop","followers_url":"https://api.github.com/users/trop%5Bbot%5D/followers","following_url":"https://api.github.com/users/trop%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/trop%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/trop%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trop%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/trop%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/trop%5Bbot%5D/repos","events_url":"https://api.github.com/users/trop%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/trop%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"Backport of #22770\n\nSee that PR for details.\n\n\r\nNotes: don't allow window to go behind menu bar on mac\r\n","created_at":"2020-03-25T02:14:01Z","updated_at":"2020-03-25T15:45:37Z","closed_at":"2020-03-25T15:45:33Z","merged_at":"2020-03-25T15:45:33Z","merge_commit_sha":"0600420bac25439fc2067d51c6aaa4ee11770577","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1780693018,"node_id":"MDU6TGFiZWwxNzgwNjkzMDE4","url":"https://api.github.com/repos/electron/electron/labels/9-x-y","name":"9-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/22828/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/22828/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/22828/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/5d7b551db68d672816e47da4bf31d7c3cc29b241","head":{"label":"electron:trop/9-x-y-bp-fix-don-t-allow-window-to-go-behind-menu-bar-on-mac-1585102436930","ref":"trop/9-x-y-bp-fix-don-t-allow-window-to-go-behind-menu-bar-on-mac-1585102436930","sha":"5d7b551db68d672816e47da4bf31d7c3cc29b241","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"base":{"label":"electron:9-x-y","ref":"9-x-y","sha":"a6ff42c190cb5caf8f3e217748e49183a951491b","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-05-26T15:59:03Z","pushed_at":"2020-05-26T16:28:49Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":75430,"stargazers_count":82996,"watchers_count":82996,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11129,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1224,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11129,"open_issues":1224,"watchers":82996,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/22828"},"html":{"href":"https://github.com/electron/electron/pull/22828"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/22828"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/22828/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/22828/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/22828/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/5d7b551db68d672816e47da4bf31d7c3cc29b241"}},"author_association":"CONTRIBUTOR"}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-25052 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-25052 new file mode 100644 index 0000000000000..1ca67ee2b3664 --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-25052 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/pulls/25052","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Thu, 03 Sep 2020 14:47:59 GMT","etag":"W/\"a2fdea15768b99b83fe612f2baef65c6\"","last-modified":"Thu, 03 Sep 2020 02:38:46 GMT","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.v3; format=json","x-github-request-id":"9FC0:206B:184357A:3E90749:5F51021F","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4990","x-ratelimit-reset":"1599146257","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/25052","id":470529819,"node_id":"MDExOlB1bGxSZXF1ZXN0NDcwNTI5ODE5","html_url":"https://github.com/electron/electron/pull/25052","diff_url":"https://github.com/electron/electron/pull/25052.diff","patch_url":"https://github.com/electron/electron/pull/25052.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/25052","number":25052,"state":"closed","locked":false,"title":"fix: client area inset calculation when maximized for framless windows","user":{"login":"deepak1556","id":964386,"node_id":"MDQ6VXNlcjk2NDM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/964386?v=4","gravatar_id":"","url":"https://api.github.com/users/deepak1556","html_url":"https://github.com/deepak1556","followers_url":"https://api.github.com/users/deepak1556/followers","following_url":"https://api.github.com/users/deepak1556/following{/other_user}","gists_url":"https://api.github.com/users/deepak1556/gists{/gist_id}","starred_url":"https://api.github.com/users/deepak1556/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepak1556/subscriptions","organizations_url":"https://api.github.com/users/deepak1556/orgs","repos_url":"https://api.github.com/users/deepak1556/repos","events_url":"https://api.github.com/users/deepak1556/events{/privacy}","received_events_url":"https://api.github.com/users/deepak1556/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\n\r\nFixes the following regressions introduced by https://github.com/electron/electron/pull/21164\r\n\r\nRefs\r\n\r\nhttps://github.com/microsoft/vscode/issues/86260\r\nhttps://github.com/microsoft/vscode/issues/85310\r\nhttps://github.com/microsoft/vscode/issues/85592\r\nhttps://github.com/microsoft/vscode/issues/85655\r\n\r\nAlso fixes a side effect of this bug that caused increased usage of GPU under certain conditions which was identified by teams app.\r\n\r\nGist: https://gist.github.com/deepak1556/6e672eea191d3e5f50e429d312a56446\r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [x] `npm test` passes\r\n- [ ] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [ ] relevant documentation is changed or added\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n- [x] This is **NOT A BREAKING CHANGE**. Breaking changes may not be merged to master until 11-x-y is branched.\r\n\r\n#### Release Notes\r\n\r\nNotes: Fixes the following issues for frameless when maximized on Windows\r\n* fix unreachable task bar when auto hidden with position top\r\n* fix 1px extending to secondary monitor\r\n* fix 1px overflowing into taskbar at certain resolutions\r\n* fix white line on top of window under 4k resolutions","created_at":"2020-08-20T00:34:52Z","updated_at":"2020-08-31T20:51:23Z","closed_at":"2020-08-31T07:55:51Z","merged_at":"2020-08-31T07:55:50Z","merge_commit_sha":"068b464e13f5fd881bd72c9e5acf11c391173ea1","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":2079356337,"node_id":"MDU6TGFiZWwyMDc5MzU2MzM3","url":"https://api.github.com/repos/electron/electron/labels/merged/10-x-y","name":"merged/10-x-y","color":"61a3c6","default":false,"description":""},{"id":2306506266,"node_id":"MDU6TGFiZWwyMzA2NTA2MjY2","url":"https://api.github.com/repos/electron/electron/labels/merged/11-x-y","name":"merged/11-x-y","color":"ededed","default":false,"description":null},{"id":1634462328,"node_id":"MDU6TGFiZWwxNjM0NDYyMzI4","url":"https://api.github.com/repos/electron/electron/labels/merged/8-x-y","name":"merged/8-x-y","color":"61a3c6","default":false,"description":"PR was merged to the \"8-x-y\" branch."},{"id":1831709348,"node_id":"MDU6TGFiZWwxODMxNzA5MzQ4","url":"https://api.github.com/repos/electron/electron/labels/merged/9-x-y","name":"merged/9-x-y","color":"61a3c6","default":false,"description":""}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/25052/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/25052/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/25052/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/b75aad39f587d13ae4930be1a341abe3a292da75","head":{"label":"electron:robo/fix_inset_calc","ref":"robo/fix_inset_calc","sha":"b75aad39f587d13ae4930be1a341abe3a292da75","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"base":{"label":"electron:master","ref":"master","sha":"e8ef1ef252e8f2fb00f13c42d8b1fb08dc99602c","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-03T14:45:36Z","pushed_at":"2020-09-03T14:32:07Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79496,"stargazers_count":85542,"watchers_count":85542,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11447,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1385,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11447,"open_issues":1385,"watchers":85542,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/25052"},"html":{"href":"https://github.com/electron/electron/pull/25052"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/25052"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/25052/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/25052/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/25052/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/b75aad39f587d13ae4930be1a341abe3a292da75"}},"author_association":"MEMBER","active_lock_reason":null,"merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"zcbenz","id":639601,"node_id":"MDQ6VXNlcjYzOTYwMQ==","avatar_url":"https://avatars0.githubusercontent.com/u/639601?v=4","gravatar_id":"","url":"https://api.github.com/users/zcbenz","html_url":"https://github.com/zcbenz","followers_url":"https://api.github.com/users/zcbenz/followers","following_url":"https://api.github.com/users/zcbenz/following{/other_user}","gists_url":"https://api.github.com/users/zcbenz/gists{/gist_id}","starred_url":"https://api.github.com/users/zcbenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcbenz/subscriptions","organizations_url":"https://api.github.com/users/zcbenz/orgs","repos_url":"https://api.github.com/users/zcbenz/repos","events_url":"https://api.github.com/users/zcbenz/events{/privacy}","received_events_url":"https://api.github.com/users/zcbenz/received_events","type":"User","site_admin":true},"comments":11,"review_comments":3,"maintainer_can_modify":false,"commits":6,"additions":74,"deletions":6,"changed_files":4}} \ No newline at end of file diff --git a/spec-main/fixtures/release-notes/cache/electron-electron-pull-25216 b/spec-main/fixtures/release-notes/cache/electron-electron-pull-25216 new file mode 100644 index 0000000000000..062b88803633a --- /dev/null +++ b/spec-main/fixtures/release-notes/cache/electron-electron-pull-25216 @@ -0,0 +1 @@ +{"status":200,"url":"https://api.github.com/repos/electron/electron/commits/61dc1c88fd34a3e8fff80c80ed79d0455970e610/pulls","headers":{"access-control-allow-origin":"*","access-control-expose-headers":"ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset","cache-control":"private, max-age=60, s-maxage=60","connection":"close","content-encoding":"gzip","content-security-policy":"default-src 'none'","content-type":"application/json; charset=utf-8","date":"Wed, 02 Sep 2020 15:55:14 GMT","etag":"W/\"97953e969b52b99e9d7cca09c5420ae7\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"GitHub.com","status":"200 OK","strict-transport-security":"max-age=31536000; includeSubdomains; preload","transfer-encoding":"chunked","vary":"Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With","x-accepted-oauth-scopes":"","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-media-type":"github.groot-preview; format=json","x-github-request-id":"C1A6:5710:29341EE:5EA9384:5F4FC062","x-oauth-scopes":"repo","x-ratelimit-limit":"5000","x-ratelimit-remaining":"4955","x-ratelimit-reset":"1599063118","x-xss-protection":"1; mode=block"},"data":{"url":"https://api.github.com/repos/electron/electron/pulls/25216","id":476409290,"node_id":"MDExOlB1bGxSZXF1ZXN0NDc2NDA5Mjkw","html_url":"https://github.com/electron/electron/pull/25216","diff_url":"https://github.com/electron/electron/pull/25216.diff","patch_url":"https://github.com/electron/electron/pull/25216.patch","issue_url":"https://api.github.com/repos/electron/electron/issues/25216","number":25216,"state":"closed","locked":false,"title":"fix: client area inset calculation when maximized for framless windows","user":{"login":"deepak1556","id":964386,"node_id":"MDQ6VXNlcjk2NDM4Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/964386?v=4","gravatar_id":"","url":"https://api.github.com/users/deepak1556","html_url":"https://github.com/deepak1556","followers_url":"https://api.github.com/users/deepak1556/followers","following_url":"https://api.github.com/users/deepak1556/following{/other_user}","gists_url":"https://api.github.com/users/deepak1556/gists{/gist_id}","starred_url":"https://api.github.com/users/deepak1556/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deepak1556/subscriptions","organizations_url":"https://api.github.com/users/deepak1556/orgs","repos_url":"https://api.github.com/users/deepak1556/repos","events_url":"https://api.github.com/users/deepak1556/events{/privacy}","received_events_url":"https://api.github.com/users/deepak1556/received_events","type":"User","site_admin":false},"body":"#### Description of Change\r\n\r\nBackports https://github.com/electron/electron/pull/25052\r\n\r\n#### Checklist\r\n\r\n\r\n- [x] PR description included and stakeholders cc'd\r\n- [ ] `npm test` passes\r\n- [ ] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)\r\n- [ ] relevant documentation is changed or added\r\n- [x] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)\r\n- [x] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).\r\n- [x] This is **NOT A BREAKING CHANGE**. Breaking changes may not be merged to master until 11-x-y is branched.\r\n\r\n#### Release Notes\r\n\r\nNotes:\r\n* Fixes the following issues for frameless when maximized on Windows:\r\n* fix unreachable task bar when auto hidden with position top\r\n* fix 1px extending to secondary monitor\r\n* fix 1px overflowing into taskbar at certain resolutions\r\n* fix white line on top of window under 4k resolutions","created_at":"2020-08-31T16:42:51Z","updated_at":"2020-08-31T20:23:06Z","closed_at":"2020-08-31T20:22:47Z","merged_at":"2020-08-31T20:22:47Z","merge_commit_sha":"61dc1c88fd34a3e8fff80c80ed79d0455970e610","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1858180153,"node_id":"MDU6TGFiZWwxODU4MTgwMTUz","url":"https://api.github.com/repos/electron/electron/labels/10-x-y","name":"10-x-y","color":"8d9ee8","default":false,"description":""},{"id":865096932,"node_id":"MDU6TGFiZWw4NjUwOTY5MzI=","url":"https://api.github.com/repos/electron/electron/labels/backport","name":"backport","color":"ddddde","default":false,"description":"This is a backport PR"}],"milestone":null,"draft":false,"commits_url":"https://api.github.com/repos/electron/electron/pulls/25216/commits","review_comments_url":"https://api.github.com/repos/electron/electron/pulls/25216/comments","review_comment_url":"https://api.github.com/repos/electron/electron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/electron/electron/issues/25216/comments","statuses_url":"https://api.github.com/repos/electron/electron/statuses/b9a5849e07e0fca6c3ceb66dddac69106d21310a","head":{"label":"electron:robo/bp_25052_10","ref":"robo/bp_25052_10","sha":"b9a5849e07e0fca6c3ceb66dddac69106d21310a","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-02T14:32:43Z","pushed_at":"2020-09-02T15:14:26Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79448,"stargazers_count":85509,"watchers_count":85509,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11445,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1386,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11445,"open_issues":1386,"watchers":85509,"default_branch":"master"}},"base":{"label":"electron:10-x-y","ref":"10-x-y","sha":"615dce32759a5d34797f2445f06622aba1fb6b21","user":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"repo":{"id":9384267,"node_id":"MDEwOlJlcG9zaXRvcnk5Mzg0MjY3","name":"electron","full_name":"electron/electron","private":false,"owner":{"login":"electron","id":13409222,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNDA5MjIy","avatar_url":"https://avatars1.githubusercontent.com/u/13409222?v=4","gravatar_id":"","url":"https://api.github.com/users/electron","html_url":"https://github.com/electron","followers_url":"https://api.github.com/users/electron/followers","following_url":"https://api.github.com/users/electron/following{/other_user}","gists_url":"https://api.github.com/users/electron/gists{/gist_id}","starred_url":"https://api.github.com/users/electron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/electron/subscriptions","organizations_url":"https://api.github.com/users/electron/orgs","repos_url":"https://api.github.com/users/electron/repos","events_url":"https://api.github.com/users/electron/events{/privacy}","received_events_url":"https://api.github.com/users/electron/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/electron/electron","description":":electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS","fork":false,"url":"https://api.github.com/repos/electron/electron","forks_url":"https://api.github.com/repos/electron/electron/forks","keys_url":"https://api.github.com/repos/electron/electron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/electron/electron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/electron/electron/teams","hooks_url":"https://api.github.com/repos/electron/electron/hooks","issue_events_url":"https://api.github.com/repos/electron/electron/issues/events{/number}","events_url":"https://api.github.com/repos/electron/electron/events","assignees_url":"https://api.github.com/repos/electron/electron/assignees{/user}","branches_url":"https://api.github.com/repos/electron/electron/branches{/branch}","tags_url":"https://api.github.com/repos/electron/electron/tags","blobs_url":"https://api.github.com/repos/electron/electron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/electron/electron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/electron/electron/git/refs{/sha}","trees_url":"https://api.github.com/repos/electron/electron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/electron/electron/statuses/{sha}","languages_url":"https://api.github.com/repos/electron/electron/languages","stargazers_url":"https://api.github.com/repos/electron/electron/stargazers","contributors_url":"https://api.github.com/repos/electron/electron/contributors","subscribers_url":"https://api.github.com/repos/electron/electron/subscribers","subscription_url":"https://api.github.com/repos/electron/electron/subscription","commits_url":"https://api.github.com/repos/electron/electron/commits{/sha}","git_commits_url":"https://api.github.com/repos/electron/electron/git/commits{/sha}","comments_url":"https://api.github.com/repos/electron/electron/comments{/number}","issue_comment_url":"https://api.github.com/repos/electron/electron/issues/comments{/number}","contents_url":"https://api.github.com/repos/electron/electron/contents/{+path}","compare_url":"https://api.github.com/repos/electron/electron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/electron/electron/merges","archive_url":"https://api.github.com/repos/electron/electron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/electron/electron/downloads","issues_url":"https://api.github.com/repos/electron/electron/issues{/number}","pulls_url":"https://api.github.com/repos/electron/electron/pulls{/number}","milestones_url":"https://api.github.com/repos/electron/electron/milestones{/number}","notifications_url":"https://api.github.com/repos/electron/electron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/electron/electron/labels{/name}","releases_url":"https://api.github.com/repos/electron/electron/releases{/id}","deployments_url":"https://api.github.com/repos/electron/electron/deployments","created_at":"2013-04-12T01:47:36Z","updated_at":"2020-09-02T14:32:43Z","pushed_at":"2020-09-02T15:14:26Z","git_url":"git://github.com/electron/electron.git","ssh_url":"git@github.com:electron/electron.git","clone_url":"https://github.com/electron/electron.git","svn_url":"https://github.com/electron/electron","homepage":"https://electronjs.org","size":79448,"stargazers_count":85509,"watchers_count":85509,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11445,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1386,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11445,"open_issues":1386,"watchers":85509,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/electron/electron/pulls/25216"},"html":{"href":"https://github.com/electron/electron/pull/25216"},"issue":{"href":"https://api.github.com/repos/electron/electron/issues/25216"},"comments":{"href":"https://api.github.com/repos/electron/electron/issues/25216/comments"},"review_comments":{"href":"https://api.github.com/repos/electron/electron/pulls/25216/comments"},"review_comment":{"href":"https://api.github.com/repos/electron/electron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/electron/electron/pulls/25216/commits"},"statuses":{"href":"https://api.github.com/repos/electron/electron/statuses/b9a5849e07e0fca6c3ceb66dddac69106d21310a"}},"author_association":"MEMBER","active_lock_reason":null}} \ No newline at end of file diff --git a/spec-main/package.json b/spec-main/package.json index 042bc9b30b609..40b3aa76a8591 100644 --- a/spec-main/package.json +++ b/spec-main/package.json @@ -4,10 +4,12 @@ "main": "index.js", "version": "0.1.0", "devDependencies": { + "@types/sinon": "^9.0.4", "@types/ws": "^7.2.0", "busboy": "^0.3.1", "echo": "file:fixtures/native-addon/echo", "q": "^1.5.1", + "sinon": "^9.0.1", "ws": "^7.2.1" }, "dependencies": { diff --git a/spec-main/release-notes-spec.ts b/spec-main/release-notes-spec.ts new file mode 100644 index 0000000000000..b61c48d49446b --- /dev/null +++ b/spec-main/release-notes-spec.ts @@ -0,0 +1,213 @@ +import { GitProcess, IGitExecutionOptions, IGitResult } from 'dugite'; +import { expect } from 'chai'; +import * as notes from '../script/release/notes/notes.js'; +import * as path from 'path'; +import * as sinon from 'sinon'; + +/* Fake a Dugite GitProcess that only returns the specific + commits that we want to test */ + +class Commit { + sha1: string; + subject: string; + constructor (sha1: string, subject: string) { + this.sha1 = sha1; + this.subject = subject; + } +} + +class GitFake { + branches: { + [key: string]: Commit[], + }; + + constructor () { + this.branches = {}; + } + + setBranch (name: string, commits: Array): void { + this.branches[name] = commits; + } + + // find the newest shared commit between branches a and b + mergeBase (a: string, b:string): string { + for (const commit of [...this.branches[a].reverse()]) { + if (this.branches[b].map((commit: Commit) => commit.sha1).includes(commit.sha1)) { + return commit.sha1; + } + } + console.error('test error: branches not related'); + return ''; + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + exec (args: string[], path: string, options?: IGitExecutionOptions | undefined): Promise { + let stdout = ''; + const stderr = ''; + const exitCode = 0; + + if (args.length === 3 && args[0] === 'merge-base') { + // expected form: `git merge-base branchName1 branchName2` + const a: string = args[1]!; + const b: string = args[2]!; + stdout = this.mergeBase(a, b); + } else if (args.length === 3 && args[0] === 'log' && args[1] === '--format=%H') { + // exepcted form: `git log --format=%H branchName + const branch: string = args[2]!; + stdout = this.branches[branch].map((commit: Commit) => commit.sha1).join('\n'); + } else if (args.length > 1 && args[0] === 'log' && args.includes('--format=%H,%s')) { + // expected form: `git log --format=%H,%s sha1..branchName + const [start, branch] = args[args.length - 1].split('..'); + const lines : string[] = []; + let started = false; + for (const commit of this.branches[branch]) { + started = started || commit.sha1 === start; + if (started) { + lines.push(`${commit.sha1},${commit.subject}` /* %H,%s */); + } + } + stdout = lines.join('\n'); + } else if (args.length === 6 && + args[0] === 'branch' && + args[1] === '--all' && + args[2] === '--contains' && + args[3].endsWith('-x-y')) { + // "what branch is this tag in?" + // git branch --all --contains ${ref} --sort version:refname + stdout = args[3]; + } else { + console.error('unhandled GitProcess.exec():', args); + } + + return Promise.resolve({ exitCode, stdout, stderr }); + } +} + +describe('release notes', () => { + const sandbox = sinon.createSandbox(); + const gitFake = new GitFake(); + + const oldBranch = '8-x-y'; + const newBranch = '9-x-y'; + + // commits shared by both oldBranch and newBranch + const sharedHistory = [ + new Commit('2abea22b4bffa1626a521711bacec7cd51425818', "fix: explicitly cancel redirects when mode is 'error' (#20686)"), + new Commit('467409458e716c68b35fa935d556050ca6bed1c4', 'build: add support for automated minor releases (#20620)') // merge-base + ]; + + // these commits came after newBranch was created + const newBreaking = new Commit('2fad53e66b1a2cb6f7dad88fe9bb62d7a461fe98', 'refactor: use v8 serialization for ipc (#20214)'); + const newFeat = new Commit('89eb309d0b22bd4aec058ffaf983e81e56a5c378', 'feat: allow GUID parameter to avoid systray demotion on Windows (#21891)'); + const newFix = new Commit('0600420bac25439fc2067d51c6aaa4ee11770577', "fix: don't allow window to go behind menu bar on mac (#22828)"); + const oldFix = new Commit('f77bd19a70ac2d708d17ddbe4dc12745ca3a8577', 'fix: prevent menu gc during popup (#20785)'); + + // a bug that's fixed in both branches by separate PRs + const newTropFix = new Commit('a6ff42c190cb5caf8f3e217748e49183a951491b', 'fix: workaround for hang when preventDefault-ing nativeWindowOpen (#22750)'); + const oldTropFix = new Commit('8751f485c5a6c8c78990bfd55a4350700f81f8cd', 'fix: workaround for hang when preventDefault-ing nativeWindowOpen (#22749)'); + + // a PR that has unusual note formatting + const sublist = new Commit('61dc1c88fd34a3e8fff80c80ed79d0455970e610', 'fix: client area inset calculation when maximized for framless windows (#25052) (#25216)'); + + before(() => { + // location of relase-notes' octokit reply cache + const fixtureDir = path.resolve(__dirname, 'fixtures', 'release-notes'); + process.env.NOTES_CACHE_PATH = path.resolve(fixtureDir, 'cache'); + }); + + beforeEach(() => { + const wrapper = (args: string[], path: string, options?: IGitExecutionOptions | undefined) => gitFake.exec(args, path, options); + sandbox.replace(GitProcess, 'exec', wrapper); + + gitFake.setBranch(oldBranch, [...sharedHistory, oldFix]); + }); + + afterEach(() => { + sandbox.restore(); + }); + + describe('trop annotations', () => { + it('shows sibling branches', async function () { + const version = 'v9.0.0'; + gitFake.setBranch(oldBranch, [...sharedHistory, oldTropFix]); + gitFake.setBranch(newBranch, [...sharedHistory, newTropFix]); + const results: any = await notes.get(oldBranch, newBranch, version); + expect(results.fix).to.have.lengthOf(1); + expect(results.fix[0].trops).to.have.keys('8-x-y', '9-x-y'); + }); + }); + + // use case: A malicious contributor could edit the text of their 'Notes:' + // in the PR body after a PR's been merged and the maintainers have moved on. + // So instead always use the release-clerk PR comment + it('uses the release-clerk text', async function () { + // realText source: ${fixtureDir}/electron-electron-issue-21891-comments + const realText = 'Added GUID parameter to Tray API to avoid system tray icon demotion on Windows'; + const testCommit = new Commit('89eb309d0b22bd4aec058ffaf983e81e56a5c378', 'feat: lole u got troled hard (#21891)'); + const version = 'v9.0.0'; + + gitFake.setBranch(newBranch, [...sharedHistory, testCommit]); + const results: any = await notes.get(oldBranch, newBranch, version); + expect(results.feat).to.have.lengthOf(1); + expect(results.feat[0].hash).to.equal(testCommit.sha1); + expect(results.feat[0].note).to.equal(realText); + }); + + describe('rendering', () => { + it('removes redundant bullet points', async function () { + const testCommit = sublist; + const version = 'v10.1.1'; + + gitFake.setBranch(newBranch, [...sharedHistory, testCommit]); + const results: any = await notes.get(oldBranch, newBranch, version); + const rendered: any = await notes.render(results); + + expect(rendered).to.not.include('* *'); + }); + + it('indents sublists', async function () { + const testCommit = sublist; + const version = 'v10.1.1'; + + gitFake.setBranch(newBranch, [...sharedHistory, testCommit]); + const results: any = await notes.get(oldBranch, newBranch, version); + const rendered: any = await notes.render(results); + + expect(rendered).to.include([ + '* Fixed the following issues for frameless when maximized on Windows:', + ' * fix unreachable task bar when auto hidden with position top', + ' * fix 1px extending to secondary monitor', + ' * fix 1px overflowing into taskbar at certain resolutions', + ' * fix white line on top of window under 4k resolutions. [#25216]'].join('\n')); + }); + }); + // test that when you feed in different semantic commit types, + // the parser returns them in the results' correct category + describe('semantic commit', () => { + const version = 'v9.0.0'; + + it("honors 'feat' type", async function () { + const testCommit = newFeat; + gitFake.setBranch(newBranch, [...sharedHistory, testCommit]); + const results: any = await notes.get(oldBranch, newBranch, version); + expect(results.feat).to.have.lengthOf(1); + expect(results.feat[0].hash).to.equal(testCommit.sha1); + }); + + it("honors 'fix' type", async function () { + const testCommit = newFix; + gitFake.setBranch(newBranch, [...sharedHistory, testCommit]); + const results: any = await notes.get(oldBranch, newBranch, version); + expect(results.fix).to.have.lengthOf(1); + expect(results.fix[0].hash).to.equal(testCommit.sha1); + }); + + it("honors 'BREAKING CHANGE' message", async function () { + const testCommit = newBreaking; + gitFake.setBranch(newBranch, [...sharedHistory, testCommit]); + const results: any = await notes.get(oldBranch, newBranch, version); + expect(results.breaking).to.have.lengthOf(1); + expect(results.breaking[0].hash).to.equal(testCommit.sha1); + }); + }); +}); diff --git a/spec-main/yarn.lock b/spec-main/yarn.lock index 0d89278219b31..47042403fc491 100644 --- a/spec-main/yarn.lock +++ b/spec-main/yarn.lock @@ -2,11 +2,59 @@ # yarn lockfile v1 +"@sinonjs/commons@^1", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.7.2": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" + integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/formatio@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-5.0.1.tgz#f13e713cb3313b1ab965901b01b0828ea6b77089" + integrity sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ== + dependencies: + "@sinonjs/commons" "^1" + "@sinonjs/samsam" "^5.0.2" + +"@sinonjs/samsam@^5.0.2", "@sinonjs/samsam@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.1.0.tgz#3afe719232b541bb6cf3411a4c399a188de21ec0" + integrity sha512-42nyaQOVunX5Pm6GRJobmzbS7iLI+fhERITnETXzzwDZh+TtDr/Au3yAvXVjFmZ4wEUaE4Y3NFZfKv0bV0cbtg== + dependencies: + "@sinonjs/commons" "^1.6.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/text-encoding@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" + integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== + "@types/node@*": version "13.7.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.0.tgz#b417deda18cf8400f278733499ad5547ed1abec4" integrity sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ== +"@types/sinon@^9.0.4": + version "9.0.5" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.5.tgz#56b2a12662dd8c7d081cdc511af5f872cb37377f" + integrity sha512-4CnkGdM/5/FXDGqL32JQ1ttVrGvhOoesLLF7VnTh4KdjK5N5VQOtxaylFqqTjnHx55MnD9O02Nbk5c1ELC8wlQ== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" + integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== + "@types/ws@^7.2.0": version "7.2.1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.1.tgz#b800f2b8aee694e2b581113643e20d79dd3b8556" @@ -60,6 +108,11 @@ dicer@0.3.0: dependencies: streamsearch "0.1.2" +diff@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + dirty-chai@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/dirty-chai/-/dirty-chai-2.0.1.tgz#6b2162ef17f7943589da840abc96e75bda01aff3" @@ -83,6 +136,16 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -95,6 +158,11 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +just-extend@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.0.tgz#7278a4027d889601640ee0ce0e5a00b992467da4" + integrity sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA== + loader-utils@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" @@ -104,16 +172,39 @@ loader-utils@^1.0.0: emojis-list "^2.0.0" json5 "^1.0.1" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +nise@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/nise/-/nise-4.0.4.tgz#d73dea3e5731e6561992b8f570be9e363c4512dd" + integrity sha512-bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@sinonjs/fake-timers" "^6.0.0" + "@sinonjs/text-encoding" "^0.7.1" + just-extend "^4.0.2" + path-to-regexp "^1.7.0" + node-ensure@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz#ecae764150de99861ec5c810fd5d096b183932a7" integrity sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc= +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + pdfjs-dist@^2.2.228: version "2.2.228" resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-2.2.228.tgz#777b068a0a16c96418433303807c183058b47aaa" @@ -140,11 +231,36 @@ schema-utils@^0.4.0: ajv "^6.1.0" ajv-keywords "^3.1.0" +sinon@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.0.3.tgz#bffc3ec28c936332cd2a41833547b9eed201ecff" + integrity sha512-IKo9MIM111+smz9JGwLmw5U1075n1YXeAq8YeSFlndCLhAL5KGn6bLgu7b/4AYHTV/LcEMcRm2wU2YiL55/6Pg== + dependencies: + "@sinonjs/commons" "^1.7.2" + "@sinonjs/fake-timers" "^6.0.1" + "@sinonjs/formatio" "^5.0.1" + "@sinonjs/samsam" "^5.1.0" + diff "^4.0.2" + nise "^4.0.4" + supports-color "^7.1.0" + streamsearch@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +type-detect@4.0.8, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"