diff --git a/packages/frontend/electron/src/main/updater/affine-update-provider.ts b/packages/frontend/electron/src/main/updater/affine-update-provider.ts new file mode 100644 index 0000000000..e4c2678044 --- /dev/null +++ b/packages/frontend/electron/src/main/updater/affine-update-provider.ts @@ -0,0 +1,162 @@ +// credits: migrated from https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/src/providers/GitHubProvider.ts + +import type { CustomPublishOptions } from 'builder-util-runtime'; +import { newError } from 'builder-util-runtime'; +import type { + AppUpdater, + ResolvedUpdateFileInfo, + UpdateFileInfo, + UpdateInfo, +} from 'electron-updater'; +import { CancellationToken, Provider } from 'electron-updater'; +import type { ProviderRuntimeOptions } from 'electron-updater/out/providers/Provider'; +import { + getFileList, + parseUpdateInfo, +} from 'electron-updater/out/providers/Provider'; + +import type { buildType } from '../config'; +import { isSquirrelBuild } from './utils'; + +interface GithubUpdateInfo extends UpdateInfo { + tag: string; +} + +interface GithubRelease { + name: string; + tag_name: string; + published_at: string; + assets: Array<{ + name: string; + url: string; + }>; +} + +interface UpdateProviderOptions { + feedUrl?: string; + channel: typeof buildType; +} + +export class AFFiNEUpdateProvider extends Provider { + static configFeed(options: UpdateProviderOptions): CustomPublishOptions { + return { + provider: 'custom', + feedUrl: 'https://affine.pro/api/worker/releases', + updateProvider: AFFiNEUpdateProvider, + ...options, + }; + } + + constructor( + private readonly options: CustomPublishOptions, + _updater: AppUpdater, + runtimeOptions: ProviderRuntimeOptions + ) { + super(runtimeOptions); + } + + get feedUrl(): URL { + const url = new URL(this.options.feedUrl); + url.searchParams.set('channel', this.options.channel); + url.searchParams.set('minimal', 'true'); + + return url; + } + + async getLatestVersion(): Promise { + const cancellationToken = new CancellationToken(); + + const releasesJsonStr = await this.httpRequest( + this.feedUrl, + { + accept: 'application/json', + 'cache-control': 'no-cache', + }, + cancellationToken + ); + + if (!releasesJsonStr) { + throw new Error( + `Failed to get releases from ${this.feedUrl.toString()}, response is empty` + ); + } + + const releases = JSON.parse(releasesJsonStr); + + if (releases.length === 0) { + throw new Error( + `No published versions in channel ${this.options.channel}` + ); + } + + const latestRelease = releases[0] as GithubRelease; + const tag = latestRelease.tag_name; + + const channelFileName = getChannelFilename(this.getDefaultChannelName()); + const channelFileAsset = latestRelease.assets.find(({ url }) => + url.endsWith(channelFileName) + ); + + if (!channelFileAsset) { + throw newError( + `Cannot find ${channelFileName} in the latest release artifacts.`, + 'ERR_UPDATER_CHANNEL_FILE_NOT_FOUND' + ); + } + + const channelFileUrl = new URL(channelFileAsset.url); + const channelFileContent = await this.httpRequest(channelFileUrl); + + const result = parseUpdateInfo( + channelFileContent, + channelFileName, + channelFileUrl + ); + + const files: UpdateFileInfo[] = []; + + result.files.forEach(file => { + const asset = latestRelease.assets.find(({ name }) => name === file.url); + if (asset) { + file.url = asset.url; + } + + // for windows, we need to determine its installer type (nsis or squirrel) + if (process.platform === 'win32') { + const isSquirrel = isSquirrelBuild(); + if (isSquirrel && file.url.endsWith('.nsis.exe')) { + return; + } + } + + files.push(file); + }); + + if (result.releaseName == null) { + result.releaseName = latestRelease.name; + } + + if (result.releaseNotes == null) { + // TODO(@forehalo): add release notes + result.releaseNotes = ''; + } + + return { + tag: tag, + ...result, + }; + } + + resolveFiles(updateInfo: GithubUpdateInfo): Array { + const files = getFileList(updateInfo); + + return files.map(file => ({ + url: new URL(file.url), + info: file, + })); + } +} + +function getChannelFilename(channel: string): string { + return `${channel}.yml`; +} diff --git a/packages/frontend/electron/src/main/updater/custom-github-provider.ts b/packages/frontend/electron/src/main/updater/custom-github-provider.ts deleted file mode 100644 index 605f308f9c..0000000000 --- a/packages/frontend/electron/src/main/updater/custom-github-provider.ts +++ /dev/null @@ -1,332 +0,0 @@ -// credits: migrated from https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/src/providers/GitHubProvider.ts - -import type { - CustomPublishOptions, - GithubOptions, - ReleaseNoteInfo, - XElement, -} from 'builder-util-runtime'; -import { HttpError, newError, parseXml } from 'builder-util-runtime'; -import type { - AppUpdater, - ResolvedUpdateFileInfo, - UpdateInfo, -} from 'electron-updater'; -import { CancellationToken } from 'electron-updater'; -import { BaseGitHubProvider } from 'electron-updater/out/providers/GitHubProvider'; -import type { ProviderRuntimeOptions } from 'electron-updater/out/providers/Provider'; -import { - parseUpdateInfo, - resolveFiles, -} from 'electron-updater/out/providers/Provider'; -import * as semver from 'semver'; - -import { isSquirrelBuild } from './utils'; - -interface GithubUpdateInfo extends UpdateInfo { - tag: string; -} - -interface GithubRelease { - id: number; - tag_name: string; - target_commitish: string; - name: string; - draft: boolean; - prerelease: boolean; - created_at: string; - published_at: string; -} - -const hrefRegExp = /\/tag\/([^/]+)$/; - -export class CustomGitHubProvider extends BaseGitHubProvider { - constructor( - options: CustomPublishOptions, - private readonly updater: AppUpdater, - runtimeOptions: ProviderRuntimeOptions - ) { - super(options as unknown as GithubOptions, 'github.com', runtimeOptions); - } - - async getLatestVersion(): Promise { - const cancellationToken = new CancellationToken(); - - const feedXml = await this.httpRequest( - newUrlFromBase(`${this.basePath}.atom`, this.baseUrl), - { - accept: 'application/xml, application/atom+xml, text/xml, */*', - }, - cancellationToken - ); - - if (!feedXml) { - throw new Error( - `Cannot find feed in the remote server (${this.baseUrl.href})` - ); - } - - const feed = parseXml(feedXml); - // noinspection TypeScriptValidateJSTypes - let latestRelease = feed.element( - 'entry', - false, - `No published versions on GitHub` - ); - let tag: string | null = null; - try { - const currentChannel = - this.options.channel || - this.updater?.channel || - (semver.prerelease(this.updater.currentVersion)?.[0] as string) || - null; - - if (currentChannel === null) { - throw newError( - `Cannot parse channel from version: ${this.updater.currentVersion}`, - 'ERR_UPDATER_INVALID_VERSION' - ); - } - - const releaseTag = await this.getLatestTagByRelease( - currentChannel, - cancellationToken - ); - for (const element of feed.getElements('entry')) { - // noinspection TypeScriptValidateJSTypes - const hrefElement = hrefRegExp.exec( - element.element('link').attribute('href') - ); - - // If this is null then something is wrong and skip this release - if (hrefElement === null) continue; - - // This Release's Tag - const hrefTag = hrefElement[1]; - // Get Channel from this release's tag - // If it is null, we believe it is stable version - const hrefChannel = - (semver.prerelease(hrefTag)?.[0] as string) || 'stable'; - - let isNextPreRelease = false; - if (releaseTag) { - isNextPreRelease = releaseTag === hrefTag; - } else { - isNextPreRelease = hrefChannel === currentChannel; - } - - if (isNextPreRelease) { - tag = hrefTag; - latestRelease = element; - break; - } - } - } catch (e: any) { - throw newError( - `Cannot parse releases feed: ${ - e.stack || e.message - },\nXML:\n${feedXml}`, - 'ERR_UPDATER_INVALID_RELEASE_FEED' - ); - } - - if (tag === null || tag === undefined) { - throw newError( - `No published versions on GitHub`, - 'ERR_UPDATER_NO_PUBLISHED_VERSIONS' - ); - } - - let rawData: string | null = null; - let channelFile = ''; - let channelFileUrl: any = ''; - const fetchData = async (channelName: string) => { - channelFile = getChannelFilename(channelName); - channelFileUrl = newUrlFromBase( - this.getBaseDownloadPath(String(tag), channelFile), - this.baseUrl - ); - const requestOptions = this.createRequestOptions(channelFileUrl); - try { - return await this.executor.request(requestOptions, cancellationToken); - } catch (e: any) { - if (e instanceof HttpError && e.statusCode === 404) { - throw newError( - `Cannot find ${channelFile} in the latest release artifacts (${channelFileUrl}): ${ - e.stack || e.message - }`, - 'ERR_UPDATER_CHANNEL_FILE_NOT_FOUND' - ); - } - throw e; - } - }; - - try { - const channel = this.updater.allowPrerelease - ? this.getCustomChannelName( - String(semver.prerelease(tag)?.[0] || 'latest') - ) - : this.getDefaultChannelName(); - rawData = await fetchData(channel); - } catch (e: any) { - if (this.updater.allowPrerelease) { - // Allow fallback to `latest.yml` - rawData = await fetchData(this.getDefaultChannelName()); - } else { - throw e; - } - } - - const result = parseUpdateInfo(rawData, channelFile, channelFileUrl); - if (result.releaseName == null) { - result.releaseName = latestRelease.elementValueOrEmpty('title'); - } - - if (result.releaseNotes == null) { - result.releaseNotes = computeReleaseNotes( - this.updater.currentVersion, - this.updater.fullChangelog, - feed, - latestRelease - ); - } - return { - tag: tag, - ...result, - }; - } - - private get basePath(): string { - return `/${this.options.owner}/${this.options.repo}/releases`; - } - - /** - * Use release api to get latest version to filter draft version. - * But this api have low request limit 60-times/1-hour, use this to help, not depend on it - * https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28 - * https://api.github.com/repos/toeverything/affine/releases - * https://docs.github.com/en/rest/rate-limit/rate-limit?apiVersion=2022-11-28#about-rate-limits - */ - private async getLatestTagByRelease( - currentChannel: string, - cancellationToken: CancellationToken - ) { - try { - const releasesStr = await this.httpRequest( - newUrlFromBase(`/repos${this.basePath}`, this.baseApiUrl), - { - accept: 'Accept: application/vnd.github+json', - 'X-GitHub-Api-Version': '2022-11-28', - }, - cancellationToken - ); - - if (!releasesStr) { - return null; - } - - const releases: GithubRelease[] = JSON.parse(releasesStr); - for (const release of releases) { - if (release.draft) { - continue; - } - - const releaseTag = release.tag_name; - const releaseChannel = - (semver.prerelease(releaseTag)?.[0] as string) || 'stable'; - if (releaseChannel === currentChannel) { - return release.tag_name; - } - } - } catch (e: any) { - console.info(`Cannot parse release: ${e.stack || e.message}`); - } - - return null; - } - - resolveFiles(updateInfo: GithubUpdateInfo): Array { - const filteredUpdateInfo = structuredClone(updateInfo); - // for windows, we need to determine its installer type (nsis or squirrel) - if (process.platform === 'win32' && updateInfo.files.length > 1) { - const isSquirrel = isSquirrelBuild(); - // @ts-expect-error we should be able to modify the object - filteredUpdateInfo.files = updateInfo.files.filter(file => { - return isSquirrel - ? !file.url.includes('nsis.exe') - : file.url.includes('nsis.exe'); - }); - } - - // still replace space to - due to backward compatibility - return resolveFiles(filteredUpdateInfo, this.baseUrl, p => - this.getBaseDownloadPath(filteredUpdateInfo.tag, p.replace(/ /g, '-')) - ); - } - - private getBaseDownloadPath(tag: string, fileName: string): string { - return `${this.basePath}/download/${tag}/${fileName}`; - } -} - -export interface CustomGitHubOptions { - channel: string; - repo: string; - owner: string; - releaseType: 'release' | 'prerelease'; -} - -function getNoteValue(parent: XElement): string { - const result = parent.elementValueOrEmpty('content'); - // GitHub reports empty notes as No content. - return result === 'No content.' ? '' : result; -} - -export function computeReleaseNotes( - currentVersion: semver.SemVer, - isFullChangelog: boolean, - feed: XElement, - latestRelease: any -): string | Array | null { - if (!isFullChangelog) { - return getNoteValue(latestRelease); - } - - const releaseNotes: Array = []; - for (const release of feed.getElements('entry')) { - // noinspection TypeScriptValidateJSTypes - const versionRelease = /\/tag\/v?([^/]+)$/.exec( - release.element('link').attribute('href') - )?.[1]; - if (versionRelease && semver.lt(currentVersion, versionRelease)) { - releaseNotes.push({ - version: versionRelease, - note: getNoteValue(release), - }); - } - } - return releaseNotes.sort((a, b) => semver.rcompare(a.version, b.version)); -} - -// addRandomQueryToAvoidCaching is false by default because in most cases URL already contains version number, -// so, it makes sense only for Generic Provider for channel files -function newUrlFromBase( - pathname: string, - baseUrl: URL, - addRandomQueryToAvoidCaching = false -): URL { - const result = new URL(pathname, baseUrl); - // search is not propagated (search is an empty string if not specified) - const search = baseUrl.search; - if (search != null && search.length !== 0) { - result.search = search; - } else if (addRandomQueryToAvoidCaching) { - result.search = `noCache=${Date.now().toString(32)}`; - } - return result; -} - -function getChannelFilename(channel: string): string { - return `${channel}.yml`; -} diff --git a/packages/frontend/electron/src/main/updater/electron-updater.ts b/packages/frontend/electron/src/main/updater/electron-updater.ts index 401132019e..a32d75fbed 100644 --- a/packages/frontend/electron/src/main/updater/electron-updater.ts +++ b/packages/frontend/electron/src/main/updater/electron-updater.ts @@ -3,7 +3,7 @@ import { autoUpdater as defaultAutoUpdater } from 'electron-updater'; import { buildType } from '../config'; import { logger } from '../logger'; -import { CustomGitHubProvider } from './custom-github-provider'; +import { AFFiNEUpdateProvider } from './affine-update-provider'; import { updaterSubjects } from './event'; import { WindowsUpdater } from './windows-updater'; @@ -93,16 +93,9 @@ export const registerUpdater = async () => { autoUpdater.autoInstallOnAppQuit = false; autoUpdater.autoRunAppAfterInstall = true; - const feedUrl: Parameters[0] = { + const feedUrl = AFFiNEUpdateProvider.configFeed({ channel: buildType, - // hack for custom provider - provider: 'custom' as 'github', - repo: buildType !== 'internal' ? 'AFFiNE' : 'AFFiNE-Releases', - owner: 'toeverything', - releaseType: buildType === 'stable' ? 'release' : 'prerelease', - // @ts-expect-error hack for custom provider - updateProvider: CustomGitHubProvider, - }; + }); logger.debug('auto-updater feed config', feedUrl); diff --git a/packages/frontend/electron/test/main/fixtures/candidates/beta.json b/packages/frontend/electron/test/main/fixtures/candidates/beta.json new file mode 100644 index 0000000000..9933b98e69 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/candidates/beta.json @@ -0,0 +1,75 @@ +[ + { + "url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.16.3-beta.2", + "name": "0.16.3-beta.2", + "tag_name": "v0.16.3-beta.2", + "published_at": "2024-08-14T06:56:25Z", + "assets": [ + { + "name": "affine-0.16.3-beta.2-beta-linux-x64.appimage", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-linux-x64.appimage", + "size": 178308288 + }, + { + "name": "affine-0.16.3-beta.2-beta-linux-x64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-linux-x64.zip", + "size": 176402697 + }, + { + "name": "affine-0.16.3-beta.2-beta-macos-arm64.dmg", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-macos-arm64.dmg", + "size": 168063426 + }, + { + "name": "affine-0.16.3-beta.2-beta-macos-arm64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-macos-arm64.zip", + "size": 167528680 + }, + { + "name": "affine-0.16.3-beta.2-beta-macos-x64.dmg", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-macos-x64.dmg", + "size": 175049454 + }, + { + "name": "affine-0.16.3-beta.2-beta-macos-x64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-macos-x64.zip", + "size": 174740492 + }, + { + "name": "affine-0.16.3-beta.2-beta-windows-x64.exe", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-windows-x64.exe", + "size": 177771240 + }, + { + "name": "affine-0.16.3-beta.2-beta-windows-x64.nsis.exe", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/affine-0.16.3-beta.2-beta-windows-x64.nsis.exe", + "size": 130309240 + }, + { + "name": "codecov.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/codecov.yml", + "size": 91 + }, + { + "name": "latest-linux.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/latest-linux.yml", + "size": 561 + }, + { + "name": "latest-mac.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/latest-mac.yml", + "size": 897 + }, + { + "name": "latest.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/latest.yml", + "size": 562 + }, + { + "name": "web-static.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3-beta.2/web-static.zip", + "size": 61990155 + } + ] + } +] diff --git a/packages/frontend/electron/test/main/fixtures/candidates/canary.json b/packages/frontend/electron/test/main/fixtures/candidates/canary.json new file mode 100644 index 0000000000..8f68b59b31 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/candidates/canary.json @@ -0,0 +1,75 @@ +[ + { + "url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.17.0-canary.7", + "name": "0.17.0-canary.7", + "tag_name": "v0.17.0-canary.7", + "published_at": "2024-08-29T08:20:54Z", + "assets": [ + { + "name": "affine-0.17.0-canary.7-canary-linux-x64.appimage", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-linux-x64.appimage", + "size": 181990592 + }, + { + "name": "affine-0.17.0-canary.7-canary-linux-x64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-linux-x64.zip", + "size": 180105256 + }, + { + "name": "affine-0.17.0-canary.7-canary-macos-arm64.dmg", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-macos-arm64.dmg", + "size": 170556866 + }, + { + "name": "affine-0.17.0-canary.7-canary-macos-arm64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-macos-arm64.zip", + "size": 170382513 + }, + { + "name": "affine-0.17.0-canary.7-canary-macos-x64.dmg", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-macos-x64.dmg", + "size": 176815834 + }, + { + "name": "affine-0.17.0-canary.7-canary-macos-x64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-macos-x64.zip", + "size": 176948223 + }, + { + "name": "affine-0.17.0-canary.7-canary-windows-x64.exe", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-windows-x64.exe", + "size": 182557416 + }, + { + "name": "affine-0.17.0-canary.7-canary-windows-x64.nsis.exe", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/affine-0.17.0-canary.7-canary-windows-x64.nsis.exe", + "size": 133493672 + }, + { + "name": "codecov.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/codecov.yml", + "size": 91 + }, + { + "name": "latest-linux.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/latest-linux.yml", + "size": 575 + }, + { + "name": "latest-mac.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/latest-mac.yml", + "size": 919 + }, + { + "name": "latest.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/latest.yml", + "size": 576 + }, + { + "name": "web-static.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.17.0-canary.7/web-static.zip", + "size": 61555023 + } + ] + } +] diff --git a/packages/frontend/electron/test/main/fixtures/candidates/stable.json b/packages/frontend/electron/test/main/fixtures/candidates/stable.json new file mode 100644 index 0000000000..8b5df32feb --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/candidates/stable.json @@ -0,0 +1,75 @@ +[ + { + "url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.16.3", + "name": "0.16.3", + "tag_name": "v0.16.3", + "published_at": "2024-08-14T07:43:22Z", + "assets": [ + { + "name": "affine-0.16.3-stable-linux-x64.appimage", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-linux-x64.appimage", + "size": 178308288 + }, + { + "name": "affine-0.16.3-stable-linux-x64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-linux-x64.zip", + "size": 176405078 + }, + { + "name": "affine-0.16.3-stable-macos-arm64.dmg", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-macos-arm64.dmg", + "size": 168093091 + }, + { + "name": "affine-0.16.3-stable-macos-arm64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-macos-arm64.zip", + "size": 167540517 + }, + { + "name": "affine-0.16.3-stable-macos-x64.dmg", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-macos-x64.dmg", + "size": 175029125 + }, + { + "name": "affine-0.16.3-stable-macos-x64.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-macos-x64.zip", + "size": 174752343 + }, + { + "name": "affine-0.16.3-stable-windows-x64.exe", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-windows-x64.exe", + "size": 177757416 + }, + { + "name": "affine-0.16.3-stable-windows-x64.nsis.exe", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/affine-0.16.3-stable-windows-x64.nsis.exe", + "size": 130302976 + }, + { + "name": "codecov.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/codecov.yml", + "size": 91 + }, + { + "name": "latest-linux.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/latest-linux.yml", + "size": 539 + }, + { + "name": "latest-mac.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/latest-mac.yml", + "size": 865 + }, + { + "name": "latest.yml", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/latest.yml", + "size": 540 + }, + { + "name": "web-static.zip", + "url": "https://github.com/toeverything/AFFiNE/releases/download/v0.16.3/web-static.zip", + "size": 61989498 + } + ] + } +] diff --git a/packages/frontend/electron/test/main/fixtures/feeds.txt b/packages/frontend/electron/test/main/fixtures/feeds.txt deleted file mode 100644 index 479db4e7f4..0000000000 --- a/packages/frontend/electron/test/main/fixtures/feeds.txt +++ /dev/null @@ -1,103 +0,0 @@ - - - tag:github.com,2008:https://github.com/toeverything/AFFiNE/releases - - - Release notes from AFFiNE - 2023-12-28T16:36:36+08:00 - - tag:github.com,2008:Repository/519859998/0.11.0-nightly-202312280901-e11e827 - 2023-12-28T17:23:15+08:00 - - 0.11.0-nightly-202312280901-e11e827 - No content. - - github-actions[bot] - - - - - tag:github.com,2008:Repository/519859998/v0.11.1 - 2023-12-27T19:40:15+08:00 - - 0.11.1 - <p>fix(core): enable page history for beta/stable (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056965718" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5415" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5415/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5415">#5415</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -fix(component): fix font display on safari (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055383919" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5393" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5393/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5393">#5393</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EYHN/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EYHN">@EYHN</a><br> -fix(core): avatars are not aligned (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056136302" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5404" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5404/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5404">#5404</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JimmFly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JimmFly">@JimmFly</a><br> -fix(core): trash page footer display issue (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056129348" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5402" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5402/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5402">#5402</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -fix(electron): set stable base url to app.affine.pro (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056113464" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5401" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5401/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5401">#5401</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joooye34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joooye34">@joooye34</a><br> -fix(core): about setting blink issue (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056090521" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5399" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5399/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5399">#5399</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -fix(core): workpace list blink issue on open (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056096694" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5400" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5400/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5400">#5400</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -chore(core): add background color to questionnaire (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055986563" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5396" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5396/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5396">#5396</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JimmFly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JimmFly">@JimmFly</a><br> -fix(core): correct title of onboarding article-2 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053650286" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5387" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5387/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5387">#5387</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CatsJuice/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CatsJuice">@CatsJuice</a><br> -fix: use prefix in electron to prevent formdata bug (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055616549" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5395" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5395/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5395">#5395</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/darkskygit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/darkskygit">@darkskygit</a><br> -fix(core): fix flickering workspace list (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055363698" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5391" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5391/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5391">#5391</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EYHN/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EYHN">@EYHN</a><br> -fix(workspace): fix svg file with xml header (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053693777" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5388" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5388/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5388">#5388</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EYHN/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EYHN">@EYHN</a><br> -feat: bump blocksuite (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053645163" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5386" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5386/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5386">#5386</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/regischen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/regischen">@regischen</a></p> - - github-actions[bot] - - - - - tag:github.com,2008:Repository/519859998/v0.11.1-beta.1 - 2023-12-27T18:30:52+08:00 - - 0.11.1-beta.1 - <p>fix(core): enable page history for beta/stable (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056965718" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5415" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5415/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5415">#5415</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -fix(component): fix font display on safari (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055383919" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5393" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5393/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5393">#5393</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EYHN/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EYHN">@EYHN</a><br> -fix(core): avatars are not aligned (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056136302" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5404" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5404/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5404">#5404</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JimmFly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JimmFly">@JimmFly</a><br> -fix(core): trash page footer display issue (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056129348" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5402" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5402/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5402">#5402</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -fix(electron): set stable base url to app.affine.pro (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056113464" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5401" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5401/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5401">#5401</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joooye34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joooye34">@joooye34</a><br> -fix(core): about setting blink issue (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056090521" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5399" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5399/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5399">#5399</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -fix(core): workpace list blink issue on open (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056096694" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5400" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5400/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5400">#5400</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a><br> -chore(core): add background color to questionnaire (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055986563" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5396" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5396/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5396">#5396</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JimmFly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JimmFly">@JimmFly</a><br> -fix(core): correct title of onboarding article-2 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053650286" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5387" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5387/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5387">#5387</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CatsJuice/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CatsJuice">@CatsJuice</a><br> -fix: use prefix in electron to prevent formdata bug (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055616549" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5395" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5395/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5395">#5395</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/darkskygit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/darkskygit">@darkskygit</a><br> -fix(core): fix flickering workspace list (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055363698" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5391" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5391/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5391">#5391</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EYHN/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EYHN">@EYHN</a><br> -fix(workspace): fix svg file with xml header (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053693777" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5388" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5388/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5388">#5388</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EYHN/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EYHN">@EYHN</a><br> -feat: bump blocksuite (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053645163" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5386" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5386/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5386">#5386</a>) <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/regischen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/regischen">@regischen</a></p> - - github-actions[bot] - - - - - tag:github.com,2008:Repository/519859998/v0.11.1-canary.2 - 2023-12-28T10:47:52+08:00 - - 0.11.1-canary.2 - No content. - - github-actions[bot] - - - - - tag:github.com,2008:Repository/519859998/v0.11.1-canary.1 - 2023-12-27T10:47:52+08:00 - - 0.11.1-canary.1 - <h2>What's Changed</h2> -<ul> -<li>fix(core): remove plugins settings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2048206391" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5337" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5337/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5337">#5337</a></li> -<li>chore: bump up @vitejs/plugin-vue version to v5 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/renovate/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/renovate">@renovate</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055571407" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5394" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5394/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5394">#5394</a></li> -<li>fix(core): correct title of onboarding article-2 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CatsJuice/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CatsJuice">@CatsJuice</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053650286" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5387" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5387/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5387">#5387</a></li> -<li>chore(core): add background color to questionnaire by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JimmFly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JimmFly">@JimmFly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2055986563" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5396" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5396/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5396">#5396</a></li> -<li>ci: define tag name to fix nightly release failing by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joooye34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joooye34">@joooye34</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056068417" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5397" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5397/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5397">#5397</a></li> -<li>fix(core): workpace list blink issue on open by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056096694" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5400" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5400/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5400">#5400</a></li> -<li>fix(core): about setting blink issue by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056090521" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5399" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5399/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5399">#5399</a></li> -<li>fix(electron): set stable base url to app.affine.pro by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joooye34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joooye34">@joooye34</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056113464" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5401" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5401/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5401">#5401</a></li> -<li>fix(core): trash page footer display issue by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056129348" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5402" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5402/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5402">#5402</a></li> -<li>chore: bump up @types/supertest version to v6 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/renovate/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/renovate">@renovate</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2053226342" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5376" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5376/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5376">#5376</a></li> -<li>chore: bump up react-i18next version to v14 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/renovate/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/renovate">@renovate</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2052675317" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5375" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5375/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5375">#5375</a></li> -<li>fix(core): avatars are not aligned by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JimmFly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JimmFly">@JimmFly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056136302" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5404" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5404/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5404">#5404</a></li> -<li>fix(infra): workaround for self-referencing in storybook by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pengx17/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pengx17">@pengx17</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2056165203" data-permission-text="Title is private" data-url="https://github.com/toeverything/AFFiNE/issues/5406" data-hovercard-type="pull_request" data-hovercard-url="/toeverything/AFFiNE/pull/5406/hovercard" href="https://github.com/toeverything/AFFiNE/pull/5406">#5406</a></li> -</ul> -<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/toeverything/AFFiNE/compare/v0.11.1-canary.0...v0.11.1-canary.1"><tt>v0.11.1-canary.0...v0.11.1-canary.1</tt></a></p> - - github-actions[bot] - - - - diff --git a/packages/frontend/electron/test/main/fixtures/release-list.txt b/packages/frontend/electron/test/main/fixtures/release-list.txt deleted file mode 100644 index 172fd73260..0000000000 --- a/packages/frontend/electron/test/main/fixtures/release-list.txt +++ /dev/null @@ -1,94 +0,0 @@ -[ - { - "url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135252810", - "assets_url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135252810/assets", - "upload_url": "https://uploads.github.com/repos/toeverything/AFFiNE/releases/135252810/assets{?name,label}", - "html_url": "https://github.com/toeverything/AFFiNE/releases/tag/0.11.0-nightly-202312280901-e11e827", - "id": 135252810, - "node_id": "RE_kwDOHvxvHs4ID8tK", - "tag_name": "0.11.0-nightly-202312280901-e11e827", - "target_commitish": "canary", - "name": "0.11.0-nightly-202312280901-e11e827", - "draft": false, - "prerelease": true, - "created_at": "2023-12-28T08:36:36Z", - "published_at": "2023-12-28T09:23:07Z", - "tarball_url": "https://api.github.com/repos/toeverything/AFFiNE/tarball/0.11.0-nightly-202312280901-e11e827", - "zipball_url": "https://api.github.com/repos/toeverything/AFFiNE/zipball/0.11.0-nightly-202312280901-e11e827", - "body": "" - }, - { - "url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135173430", - "assets_url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135173430/assets", - "upload_url": "https://uploads.github.com/repos/toeverything/AFFiNE/releases/135173430/assets{?name,label}", - "html_url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1", - "id": 135173430, - "node_id": "RE_kwDOHvxvHs4IDpU2", - "tag_name": "v0.11.1", - "target_commitish": "canary", - "name": "0.11.1", - "draft": false, - "prerelease": false, - "created_at": "2023-12-27T06:39:59Z", - "published_at": "2023-12-27T11:40:15Z", - "tarball_url": "https://api.github.com/repos/toeverything/AFFiNE/tarball/v0.11.1", - "zipball_url": "https://api.github.com/repos/toeverything/AFFiNE/zipball/v0.11.1", - "mentions_count": 7 - }, - { - "url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135163918", - "assets_url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135163918/assets", - "upload_url": "https://uploads.github.com/repos/toeverything/AFFiNE/releases/135163918/assets{?name,label}", - "html_url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1-beta.1", - "id": 135163918, - "node_id": "RE_kwDOHvxvHs4IDnAO", - "tag_name": "v0.11.1-beta.1", - "target_commitish": "canary", - "name": "0.11.1-beta.1", - "draft": false, - "prerelease": true, - "created_at": "2023-12-27T06:39:59Z", - "published_at": "2023-12-27T10:30:52Z", - "tarball_url": "https://api.github.com/repos/toeverything/AFFiNE/tarball/v0.11.1-beta.1", - "zipball_url": "https://api.github.com/repos/toeverything/AFFiNE/zipball/v0.11.1-beta.1", - "mentions_count": 7 - }, - { - "url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135103520", - "assets_url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135103520/assets", - "upload_url": "https://uploads.github.com/repos/toeverything/AFFiNE/releases/135103520/assets{?name,label}", - "html_url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1-canary.1", - "id": 135103520, - "node_id": "RE_kwDOHvxvHs4IDYQg", - "tag_name": "v0.11.1-canary.2", - "target_commitish": "canary", - "name": "0.11.1-canary.2", - "draft": true, - "prerelease": true, - "created_at": "2023-12-26T12:27:20Z", - "published_at": "2023-12-26T13:24:28Z", - "tarball_url": "https://api.github.com/repos/toeverything/AFFiNE/tarball/v0.11.1-canary.1", - "zipball_url": "https://api.github.com/repos/toeverything/AFFiNE/zipball/v0.11.1-canary.1", - "body": "## What's Changed\r\n* fix(core): remove plugins settings by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5337\r\n* chore: bump up @vitejs/plugin-vue version to v5 by @renovate in https://github.com/toeverything/AFFiNE/pull/5394\r\n* fix(core): correct title of onboarding article-2 by @CatsJuice in https://github.com/toeverything/AFFiNE/pull/5387\r\n* chore(core): add background color to questionnaire by @JimmFly in https://github.com/toeverything/AFFiNE/pull/5396\r\n* ci: define tag name to fix nightly release failing by @joooye34 in https://github.com/toeverything/AFFiNE/pull/5397\r\n* fix(core): workpace list blink issue on open by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5400\r\n* fix(core): about setting blink issue by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5399\r\n* fix(electron): set stable base url to app.affine.pro by @joooye34 in https://github.com/toeverything/AFFiNE/pull/5401\r\n* fix(core): trash page footer display issue by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5402\r\n* chore: bump up @types/supertest version to v6 by @renovate in https://github.com/toeverything/AFFiNE/pull/5376\r\n* chore: bump up react-i18next version to v14 by @renovate in https://github.com/toeverything/AFFiNE/pull/5375\r\n* fix(core): avatars are not aligned by @JimmFly in https://github.com/toeverything/AFFiNE/pull/5404\r\n* fix(infra): workaround for self-referencing in storybook by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5406\r\n\r\n\r\n**Full Changelog**: https://github.com/toeverything/AFFiNE/compare/v0.11.1-canary.0...v0.11.1-canary.1", - "mentions_count": 5 - }, - { - "url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135103520", - "assets_url": "https://api.github.com/repos/toeverything/AFFiNE/releases/135103520/assets", - "upload_url": "https://uploads.github.com/repos/toeverything/AFFiNE/releases/135103520/assets{?name,label}", - "html_url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1-canary.1", - "id": 135103520, - "node_id": "RE_kwDOHvxvHs4IDYQg", - "tag_name": "v0.11.1-canary.1", - "target_commitish": "canary", - "name": "0.11.1-canary.1", - "draft": false, - "prerelease": true, - "created_at": "2023-12-26T12:27:20Z", - "published_at": "2023-12-26T13:24:28Z", - "tarball_url": "https://api.github.com/repos/toeverything/AFFiNE/tarball/v0.11.1-canary.1", - "zipball_url": "https://api.github.com/repos/toeverything/AFFiNE/zipball/v0.11.1-canary.1", - "body": "## What's Changed\r\n* fix(core): remove plugins settings by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5337\r\n* chore: bump up @vitejs/plugin-vue version to v5 by @renovate in https://github.com/toeverything/AFFiNE/pull/5394\r\n* fix(core): correct title of onboarding article-2 by @CatsJuice in https://github.com/toeverything/AFFiNE/pull/5387\r\n* chore(core): add background color to questionnaire by @JimmFly in https://github.com/toeverything/AFFiNE/pull/5396\r\n* ci: define tag name to fix nightly release failing by @joooye34 in https://github.com/toeverything/AFFiNE/pull/5397\r\n* fix(core): workpace list blink issue on open by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5400\r\n* fix(core): about setting blink issue by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5399\r\n* fix(electron): set stable base url to app.affine.pro by @joooye34 in https://github.com/toeverything/AFFiNE/pull/5401\r\n* fix(core): trash page footer display issue by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5402\r\n* chore: bump up @types/supertest version to v6 by @renovate in https://github.com/toeverything/AFFiNE/pull/5376\r\n* chore: bump up react-i18next version to v14 by @renovate in https://github.com/toeverything/AFFiNE/pull/5375\r\n* fix(core): avatars are not aligned by @JimmFly in https://github.com/toeverything/AFFiNE/pull/5404\r\n* fix(infra): workaround for self-referencing in storybook by @pengx17 in https://github.com/toeverything/AFFiNE/pull/5406\r\n\r\n\r\n**Full Changelog**: https://github.com/toeverything/AFFiNE/compare/v0.11.1-canary.0...v0.11.1-canary.1", - "mentions_count": 5 - } -] diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.11.1-beta.1.txt b/packages/frontend/electron/test/main/fixtures/releases/0.11.1-beta.1.txt deleted file mode 100644 index fd9a7434cf..0000000000 --- a/packages/frontend/electron/test/main/fixtures/releases/0.11.1-beta.1.txt +++ /dev/null @@ -1,20 +0,0 @@ -version: 0.11.1-beta.1 -files: - - url: affine-beta-windows-x64.exe - sha512: uQdF7bEZteCMp/bT7vwCjlEcAf6osW9zZ+Q5grEkmbHPpcqCCzLudguXqHIwohO4GGq9pS8H4kJzG0LZc+SmXg== - size: 179515752 - - url: affine-beta-macos-arm64.dmg - sha512: gRsi4XO4+kREQuLX2CnS2V9vvUmBMmoGR6MvoB6TEFm1WiC8k8v69DRKYQ0Vjlom/j9HZlBEYUTqcW7IsMgrpw== - size: 169726061 - - url: affine-beta-macos-arm64.zip - sha512: +aXkjJfQnp2dUz3Y0i5cL6V5Hm1OkYVlwM/KAcZfLlvLoU3zQ0zSZvJ6+H2IlIhOebSq56Ip76H5NP8fe7UnOw== - size: 169007175 - - url: affine-beta-macos-x64.dmg - sha512: i5V95dLx3iWFpNj89wFU40THT3Oeow8g706Z6/mG1zYOIR3kXUkIpp6+wJmlfe9g4iwNmRd0rgI4HAG5LaQagg== - size: 175712730 - - url: affine-beta-macos-x64.zip - sha512: DnRUHcj+4FluII5kTbUuEAQI2CIRufd1Z0P98pwa/uX5hk2iOj1QzMD8WM+MTbFNC6rZvMtMlos8GyVLsZmK0w== - size: 175235583 -path: affine-beta-windows-x64.exe -sha512: uQdF7bEZteCMp/bT7vwCjlEcAf6osW9zZ+Q5grEkmbHPpcqCCzLudguXqHIwohO4GGq9pS8H4kJzG0LZc+SmXg== -releaseDate: 2023-12-27T08:59:31.826Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.11.1-canary.1.txt b/packages/frontend/electron/test/main/fixtures/releases/0.11.1-canary.1.txt deleted file mode 100644 index 36dc8f50c8..0000000000 --- a/packages/frontend/electron/test/main/fixtures/releases/0.11.1-canary.1.txt +++ /dev/null @@ -1,20 +0,0 @@ -version: 0.11.1-canary.1 -files: - - url: affine-canary-windows-x64.exe - sha512: qbK4N6+axVO2dA/iPzfhANWxCZXY1S3ci9qYIT1v/h0oCjc6vqpXU+2KRGL5mplL6wmVgJAOpqrfnq9gHMsfDg== - size: 179526504 - - url: affine-canary-macos-arm64.dmg - sha512: ++LAGuxTmFAVd65k8UpKKfU19iisvXHKDDfPkGlTVC000QP3foeS21BmTgYnM1ZuhEC6KGzSGrqvUDVDNYnRmA== - size: 169903530 - - url: affine-canary-macos-arm64.zip - sha512: IAWbCpVqPPVVzDowGKGnKZzHN2jPgAW40v+bUZR2tdgDrqIAVy4YdamYz8WmEwpg1TXmi0ueSsWgGFPgBIr0iA== - size: 169085665 - - url: affine-canary-macos-x64.dmg - sha512: 4y4/KkmkmFmZ94ntRAN0lSX7aZzgEd4Wg7f85Tff296P3x85sbPF4FFIp++Zx/cgBZBUQwMWe9xeGlefompQ/g== - size: 175920978 - - url: affine-canary-macos-x64.zip - sha512: S1MuMHooMOQ9eJ+coRYmyz6k5lnWIMqHotSrywxGGo7sFXBY+O5F4PeKgNREJtwXjAIxv0GxZVvbe5jc+onw9w== - size: 175315484 -path: affine-canary-windows-x64.exe -sha512: qbK4N6+axVO2dA/iPzfhANWxCZXY1S3ci9qYIT1v/h0oCjc6vqpXU+2KRGL5mplL6wmVgJAOpqrfnq9gHMsfDg== -releaseDate: 2023-12-26T13:24:28.221Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.11.1-canary.2.txt b/packages/frontend/electron/test/main/fixtures/releases/0.11.1-canary.2.txt deleted file mode 100644 index fe8f4de82d..0000000000 --- a/packages/frontend/electron/test/main/fixtures/releases/0.11.1-canary.2.txt +++ /dev/null @@ -1,20 +0,0 @@ -version: 0.11.1-canary.2 -files: - - url: affine-canary-windows-x64.exe - sha512: qbK4N6+axVO2dA/iPzfhANWxCZXY1S3ci9qYIT1v/h0oCjc6vqpXU+2KRGL5mplL6wmVgJAOpqrfnq9gHMsfDg== - size: 179526504 - - url: affine-canary-macos-arm64.dmg - sha512: ++LAGuxTmFAVd65k8UpKKfU19iisvXHKDDfPkGlTVC000QP3foeS21BmTgYnM1ZuhEC6KGzSGrqvUDVDNYnRmA== - size: 169903530 - - url: affine-canary-macos-arm64.zip - sha512: IAWbCpVqPPVVzDowGKGnKZzHN2jPgAW40v+bUZR2tdgDrqIAVy4YdamYz8WmEwpg1TXmi0ueSsWgGFPgBIr0iA== - size: 169085665 - - url: affine-canary-macos-x64.dmg - sha512: 4y4/KkmkmFmZ94ntRAN0lSX7aZzgEd4Wg7f85Tff296P3x85sbPF4FFIp++Zx/cgBZBUQwMWe9xeGlefompQ/g== - size: 175920978 - - url: affine-canary-macos-x64.zip - sha512: S1MuMHooMOQ9eJ+coRYmyz6k5lnWIMqHotSrywxGGo7sFXBY+O5F4PeKgNREJtwXjAIxv0GxZVvbe5jc+onw9w== - size: 175315484 -path: affine-canary-windows-x64.exe -sha512: qbK4N6+axVO2dA/iPzfhANWxCZXY1S3ci9qYIT1v/h0oCjc6vqpXU+2KRGL5mplL6wmVgJAOpqrfnq9gHMsfDg== -releaseDate: 2023-12-26T13:24:28.221Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.11.1.txt b/packages/frontend/electron/test/main/fixtures/releases/0.11.1.txt deleted file mode 100644 index 843b632287..0000000000 --- a/packages/frontend/electron/test/main/fixtures/releases/0.11.1.txt +++ /dev/null @@ -1,20 +0,0 @@ -version: 0.11.1 -files: - - url: affine-stable-windows-x64.exe - sha512: qHRO31Fb8F+Q/hiGiJJ2WH+PpSC5iUIPtWujUoI+XNMz7UfhCGxoVW9U38CTE9LecILS119SZN0rrHkmu+nQiw== - size: 179504488 - - url: affine-stable-macos-arm64.dmg - sha512: uDS7bZusoU5p2t4bi1k/IdvChj3BRIWbOLanbhAfIjwBmf9FM3553wgeUzQLRMRuD5wavsw/aA1BaqFJIbwkyQ== - size: 169793193 - - url: affine-stable-macos-arm64.zip - sha512: n4CrOgNPd70WqPfe0ZEKzmyOdqOlVnFvQqylIlt92eqKrUb8jcxVThQY+GU2Jy3jVjvKqUvubodDbIkQhXQ1xQ== - size: 169014676 - - url: affine-stable-macos-x64.dmg - sha512: xFy1kt1025h1wqBjHt+IoPweC40UqAZvZLI2XD3LIlPG60jZ03+QM75UwaXYuVYEqe3kO9a3WeFcrfGdoj4Hzw== - size: 175720872 - - url: affine-stable-macos-x64.zip - sha512: FfgX22ytleb8fv35odzhDyFsmiUVPdI4XQjTB4uDmkhQ719i+W4yctUnP5TSCpymYC0HgVRFSVg4Jkuuli+8ug== - size: 175244411 -path: affine-stable-windows-x64.exe -sha512: qHRO31Fb8F+Q/hiGiJJ2WH+PpSC5iUIPtWujUoI+XNMz7UfhCGxoVW9U38CTE9LecILS119SZN0rrHkmu+nQiw== -releaseDate: 2023-12-27T11:04:53.014Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest-linux.yml b/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest-linux.yml new file mode 100644 index 0000000000..5c573e1bd3 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest-linux.yml @@ -0,0 +1,11 @@ +version: 0.16.3-beta.2 +files: + - url: affine-0.16.3-beta.2-beta-linux-x64.appimage + sha512: munCzfD0tOky2MRZVVu+/JCCMrQ4C/EcOSxkNXrEVwK0aoeYo3Q0H1Cm/KJ+7mZ2yMfxctdPH0KGfHRL0tNENg== + size: 178308288 + - url: affine-0.16.3-beta.2-beta-linux-x64.zip + sha512: 6emy8f8QrhrAdNxOfHj9PSbWtRXI/LocvpsckrbqrYIi7sU12GmmS0dI2SCxvDBwYTDSoC4mh0erfzUeDSLAEg== + size: 176402697 +path: affine-0.16.3-beta.2-beta-linux-x64.appimage +sha512: munCzfD0tOky2MRZVVu+/JCCMrQ4C/EcOSxkNXrEVwK0aoeYo3Q0H1Cm/KJ+7mZ2yMfxctdPH0KGfHRL0tNENg== +releaseDate: 2024-08-14T06:56:24.609Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest-mac.yml b/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest-mac.yml new file mode 100644 index 0000000000..e236f7ee60 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest-mac.yml @@ -0,0 +1,17 @@ +version: 0.16.3-beta.2 +files: + - url: affine-0.16.3-beta.2-beta-macos-arm64.dmg + sha512: 5sR2TXAV+hgMOvplG2CobW5VSsrGXsAoZmgWqs7uEpf491XoYkUFl5iXQZaL23xi0HpuGkSS33jSZ/b7pwy0Hg== + size: 168063426 + - url: affine-0.16.3-beta.2-beta-macos-arm64.zip + sha512: aI/q3DgyORjCNLxrtsT7W1KoAcuaxUT0AY0QtwnRjtMYiJYV/s4aTQtGFISDEdHcU9Vy+mS8ZcZ6yRVCksdKAg== + size: 167528680 + - url: affine-0.16.3-beta.2-beta-macos-x64.dmg + sha512: P8JoSRP5tu2fpQb/EwdV6OSPNx9lEj1NT8iAZhawgeCVLaWokMMVkcsqyRYi7vX25Hf7eegvxF5LNpYzUsfKQQ== + size: 175049454 + - url: affine-0.16.3-beta.2-beta-macos-x64.zip + sha512: gpzlGq0ucZUeJOZi6h/cIFRpvIhGJ5qYmWkrD6ncMgSJQOVWQapfFOrQrmU7SCwtE92pfRUcrZeH3g9cNrJDSQ== + size: 174740492 +path: affine-0.16.3-beta.2-beta-macos-arm64.dmg +sha512: 5sR2TXAV+hgMOvplG2CobW5VSsrGXsAoZmgWqs7uEpf491XoYkUFl5iXQZaL23xi0HpuGkSS33jSZ/b7pwy0Hg== +releaseDate: 2024-08-14T06:56:23.981Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest.yml b/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest.yml new file mode 100644 index 0000000000..6c460a106a --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.16.3-beta.2/latest.yml @@ -0,0 +1,11 @@ +version: 0.16.3-beta.2 +files: + - url: affine-0.16.3-beta.2-beta-windows-x64.exe + sha512: iHiIF5Swrgz6RfL/Xf9KFZsmFggGFWtSrkj7IUJUt69Z+gxQQp2dO4wrQ4uaZmiqMVr+8Op++oeczMhcjXGPHw== + size: 177771240 + - url: affine-0.16.3-beta.2-beta-windows-x64.nsis.exe + sha512: 5437aZddjbgzwGWsj/nxgepS2jBM/WB561DNz3XXA5sTtqPVafMvEmcbE1KE86JZTpAAJHcJheSwjxdYOL/Lgw== + size: 130309240 +path: affine-0.16.3-beta.2-beta-windows-x64.exe +sha512: iHiIF5Swrgz6RfL/Xf9KFZsmFggGFWtSrkj7IUJUt69Z+gxQQp2dO4wrQ4uaZmiqMVr+8Op++oeczMhcjXGPHw== +releaseDate: 2024-08-14T06:56:22.750Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest-linux.yml b/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest-linux.yml new file mode 100644 index 0000000000..b16b9357a9 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest-linux.yml @@ -0,0 +1,11 @@ +version: 0.16.3 +files: + - url: affine-0.16.3-stable-linux-x64.appimage + sha512: nmID71T7jq9yKCdujVUeL71TLXmwIdaaWZB0ouDX13Np1vahS1+1A5uJbHUzTH0N/sN0W+LKUg9L29wNgi42gw== + size: 178308288 + - url: affine-0.16.3-stable-linux-x64.zip + sha512: fsHTT0fUeU/uLGdlRiuddzSuJWIOcaUTgUj7DB5XSQJ4qA5blAcpij8zOil0ww3Ea7Kwe7qcIe4SSCtNFu31sQ== + size: 176405078 +path: affine-0.16.3-stable-linux-x64.appimage +sha512: nmID71T7jq9yKCdujVUeL71TLXmwIdaaWZB0ouDX13Np1vahS1+1A5uJbHUzTH0N/sN0W+LKUg9L29wNgi42gw== +releaseDate: 2024-08-14T07:11:42.171Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest-mac.yml b/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest-mac.yml new file mode 100644 index 0000000000..2c28db0d7e --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest-mac.yml @@ -0,0 +1,17 @@ +version: 0.16.3 +files: + - url: affine-0.16.3-stable-macos-arm64.dmg + sha512: fmJWpi45gVYYUavb0Cd6Y9DR2nxBc3wMagHOiMF1PPg+4tEyHGmVIhRIwY/QaJ5TAR+3tRAENZwen2gvja0UtQ== + size: 168093091 + - url: affine-0.16.3-stable-macos-arm64.zip + sha512: u1ud8pJ613A5Oqh3fbcnUUOA4hNoURWBdtAMJoeZ6EIAUvZzV0tsDcAqLiEP89LKbitaH0IdrW3D8EFSsZ9kRw== + size: 167540517 + - url: affine-0.16.3-stable-macos-x64.dmg + sha512: Ou1W6/xHyM+ZN9BLYvc+8qCB8wR9F3jLQP5m3oG0uIDDw7wwoR+ny3gcWbDzalfxoOR84CvM74LIfc7BQf69Uw== + size: 175029125 + - url: affine-0.16.3-stable-macos-x64.zip + sha512: oot098M9qqdRbw+znnuLjVedZ1U59p4m+gzSxRtpCuYdfvumvu5/RN1jvY2cHssqstJj/Ybh4eBTlREZMgKyyg== + size: 174752343 +path: affine-0.16.3-stable-macos-arm64.dmg +sha512: fmJWpi45gVYYUavb0Cd6Y9DR2nxBc3wMagHOiMF1PPg+4tEyHGmVIhRIwY/QaJ5TAR+3tRAENZwen2gvja0UtQ== +releaseDate: 2024-08-14T07:11:41.503Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest.yml b/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest.yml new file mode 100644 index 0000000000..2efc8b99e7 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.16.3/latest.yml @@ -0,0 +1,11 @@ +version: 0.16.3 +files: + - url: affine-0.16.3-stable-windows-x64.exe + sha512: 47zaLkAhSxPuWsKq01dSEt8GusXqK1rmSaiOTBLe32lmUiXPhUqYO5JhzbrjJKx7/TFcic4UDJ/Zir3wf9fKRA== + size: 177757416 + - url: affine-0.16.3-stable-windows-x64.nsis.exe + sha512: G3Rxa3onqlJTGQIcz7Rz6ZQ/6rAwjzjYnW/HB5yzXkjN6e5yfW2JBk765+AyiPFV5Mn4Rloj7V6GM6m4q7WfWg== + size: 130302976 +path: affine-0.16.3-stable-windows-x64.exe +sha512: 47zaLkAhSxPuWsKq01dSEt8GusXqK1rmSaiOTBLe32lmUiXPhUqYO5JhzbrjJKx7/TFcic4UDJ/Zir3wf9fKRA== +releaseDate: 2024-08-14T07:11:40.285Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest-linux.yml b/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest-linux.yml new file mode 100644 index 0000000000..05e7e91399 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest-linux.yml @@ -0,0 +1,11 @@ +version: 0.17.0-canary.7 +files: + - url: affine-0.17.0-canary.7-canary-linux-x64.appimage + sha512: qspZkDlItrHu02vSItbjc3I+t4FcOiHOzGt0Ap6IeZEFKal+hoOh4WIcUN16dlS/OoFm+is8yPBHqN/70xhWKA== + size: 181990592 + - url: affine-0.17.0-canary.7-canary-linux-x64.zip + sha512: fom2iuMiPUlnHAGJhQdAnWJwMggK4rloNkiWqH8ZHF1Q09oturgSMGgkUEWZWXsZPpORt545eYNv5Zg9aff8yQ== + size: 180105256 +path: affine-0.17.0-canary.7-canary-linux-x64.appimage +sha512: qspZkDlItrHu02vSItbjc3I+t4FcOiHOzGt0Ap6IeZEFKal+hoOh4WIcUN16dlS/OoFm+is8yPBHqN/70xhWKA== +releaseDate: 2024-08-29T08:20:53.453Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest-mac.yml b/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest-mac.yml new file mode 100644 index 0000000000..c3137c83c1 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest-mac.yml @@ -0,0 +1,17 @@ +version: 0.17.0-canary.7 +files: + - url: affine-0.17.0-canary.7-canary-macos-arm64.dmg + sha512: Tdy7dgrCHP95PjsZBt1evxUk7DUkn+JpseBQj1Gz60MmcsFx+0NtJvofZbUcsLFiS0IC32JM/szHlHiNGEznrQ== + size: 170556866 + - url: affine-0.17.0-canary.7-canary-macos-arm64.zip + sha512: pmYD0B5Z9hrzgjcHmRCKnNawoPJiO5r1RjBBZi+THVL3TyKXzpJBr9HTNQkjYnQYgqHX4q2eoONsDNCIoqTeBA== + size: 170382513 + - url: affine-0.17.0-canary.7-canary-macos-x64.dmg + sha512: k4a4GUmy/6MmSc1xVGJNeNCCtYylWWSRcfDoZA+syUhZFY6x3xrOft972ONsiRrJukXWlKrFmVTwoW68Ywe49A== + size: 176815834 + - url: affine-0.17.0-canary.7-canary-macos-x64.zip + sha512: PL24krtjeiQY53F7OuS+hh8EZP3YpbLle0JboXiddSrulypxzBRquOCCinNW88Kg8ZJbOrfTkxaNOHpOAVfeaQ== + size: 176948223 +path: affine-0.17.0-canary.7-canary-macos-arm64.dmg +sha512: Tdy7dgrCHP95PjsZBt1evxUk7DUkn+JpseBQj1Gz60MmcsFx+0NtJvofZbUcsLFiS0IC32JM/szHlHiNGEznrQ== +releaseDate: 2024-08-29T08:20:52.810Z diff --git a/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest.yml b/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest.yml new file mode 100644 index 0000000000..1353b87472 --- /dev/null +++ b/packages/frontend/electron/test/main/fixtures/releases/0.17.0-canary.7/latest.yml @@ -0,0 +1,11 @@ +version: 0.17.0-canary.7 +files: + - url: affine-0.17.0-canary.7-canary-windows-x64.exe + sha512: cF47Wcu69PXyMVswSzrdNktNO2lqkjsyJ/HQr2qWjFPuIJfcad9QDTfOyCVsMCV6KGUSSeFiTHyObWgKd6z2DQ== + size: 182557416 + - url: affine-0.17.0-canary.7-canary-windows-x64.nsis.exe + sha512: ztugqKwPpxDDSK1OpzUPkGvL8wLXwg9rh985bs9ZvxydY037yKBAZOk96PPtow2qqRb5/9Xn8MuGrWgchqXkVg== + size: 133493672 +path: affine-0.17.0-canary.7-canary-windows-x64.exe +sha512: cF47Wcu69PXyMVswSzrdNktNO2lqkjsyJ/HQr2qWjFPuIJfcad9QDTfOyCVsMCV6KGUSSeFiTHyObWgKd6z2DQ== +releaseDate: 2024-08-29T08:20:51.573Z diff --git a/packages/frontend/electron/test/main/updater.spec.ts b/packages/frontend/electron/test/main/updater.spec.ts index 02e24b9d2b..bd9fd70a00 100644 --- a/packages/frontend/electron/test/main/updater.spec.ts +++ b/packages/frontend/electron/test/main/updater.spec.ts @@ -1,4 +1,4 @@ -import nodePath from 'node:path'; +import path from 'node:path'; import { fileURLToPath } from 'node:url'; import type { UpdateCheckResult } from 'electron-updater'; @@ -16,7 +16,7 @@ import { vi, } from 'vitest'; -import { CustomGitHubProvider } from '../../src/main/updater/custom-github-provider'; +import { AFFiNEUpdateProvider } from '../../src/main/updater/affine-update-provider'; import { MockedAppAdapter, MockedUpdater } from './mocks'; const __dirname = fileURLToPath(new URL('.', import.meta.url)); @@ -39,72 +39,52 @@ const platformTail = (() => { } })(); -function response404() { - return HttpResponse.text('Not Found', { status: 404 }); -} -function response403() { - return HttpResponse.text('403', { status: 403 }); -} - describe('testing for client update', () => { const expectReleaseList = [ - { buildType: 'stable', version: '0.11.1' }, - { buildType: 'beta', version: '0.11.1-beta.1' }, - { buildType: 'canary', version: '0.11.1-canary.1' }, + { buildType: 'stable', version: '0.16.3' }, + { buildType: 'beta', version: '0.16.3-beta.2' }, + { buildType: 'canary', version: '0.17.0-canary.7' }, ]; const basicRequestHandlers = [ - http.get( - 'https://github.com/toeverything/AFFiNE/releases.atom', - async () => { - const buffer = await fs.readFile( - nodePath.join(__dirname, 'fixtures', 'feeds.txt') - ); - const content = buffer.toString(); - return HttpResponse.xml(content); - } - ), + http.get('https://affine.pro/api/worker/releases', async ({ request }) => { + const url = new URL(request.url); + const buffer = await fs.readFile( + path.join( + __dirname, + 'fixtures', + 'candidates', + `${url.searchParams.get('channel')}.json` + ) + ); + const content = buffer.toString(); + return HttpResponse.text(content); + }), ...flatten( - expectReleaseList.map(({ version, buildType }) => { + expectReleaseList.map(({ version }) => { return [ http.get( `https://github.com/toeverything/AFFiNE/releases/download/v${version}/latest${platformTail}.yml`, - async () => { + async req => { const buffer = await fs.readFile( - nodePath.join( + path.join( __dirname, 'fixtures', 'releases', - `${version}.txt` + version, + path.parse(req.request.url).base ) ); const content = buffer.toString(); return HttpResponse.text(content); } ), - http.get( - `https://github.com/toeverything/AFFiNE/releases/download/v${version}/${buildType}${platformTail}.yml`, - response404 - ), ]; }) ), ]; - describe('release api request successfully', () => { - const server = setupServer( - ...basicRequestHandlers, - http.get( - 'https://api.github.com/repos/toeverything/affine/releases', - async () => { - const buffer = await fs.readFile( - nodePath.join(__dirname, 'fixtures', 'release-list.txt') - ); - const content = buffer.toString(); - return HttpResponse.xml(content); - } - ) - ); + const server = setupServer(...basicRequestHandlers); beforeAll(() => server.listen({ onUnhandledRequest: 'error' })); afterAll(() => server.close()); afterEach(() => server.resetHandlers()); @@ -113,80 +93,19 @@ describe('testing for client update', () => { it(`check update for ${buildType} channel successfully`, async () => { const app = new MockedAppAdapter('0.10.0'); const updater = new MockedUpdater(null, app); - updater.allowPrerelease = buildType !== 'stable'; - const feedUrl: Parameters[0] = { - channel: buildType, - // hack for custom provider - provider: 'custom' as 'github', - repo: 'AFFiNE', - owner: 'toeverything', - releaseType: buildType === 'stable' ? 'release' : 'prerelease', - // @ts-expect-error hack for custom provider - updateProvider: CustomGitHubProvider, - }; - - updater.setFeedURL(feedUrl); + updater.setFeedURL( + AFFiNEUpdateProvider.configFeed({ + channel: buildType as any, + }) + ); const info = (await updater.checkForUpdates()) as UpdateCheckResult; expect(info).not.toBe(null); expect(info.updateInfo.releaseName).toBe(version); expect(info.updateInfo.version).toBe(version); - expect(info.updateInfo.releaseNotes?.length).toBeGreaterThan(0); + // expect(info.updateInfo.releaseNotes?.length).toBeGreaterThan(0); }); } }); - - describe('release api request limited', () => { - const server = setupServer( - ...basicRequestHandlers, - http.get( - 'https://api.github.com/repos/toeverything/affine/releases', - response403 - ), - http.get( - `https://github.com/toeverything/AFFiNE/releases/download/v0.11.1-canary.2/canary${platformTail}.yml`, - async () => { - const buffer = await fs.readFile( - nodePath.join( - __dirname, - 'fixtures', - 'releases', - `0.11.1-canary.2.txt` - ) - ); - const content = buffer.toString(); - return HttpResponse.text(content); - } - ) - ); - beforeAll(() => server.listen({ onUnhandledRequest: 'error' })); - afterAll(() => server.close()); - afterEach(() => server.resetHandlers()); - - it('check update for canary channel get v0.11.1-canary.2', async () => { - const app = new MockedAppAdapter('0.10.0'); - const updater = new MockedUpdater(null, app); - updater.allowPrerelease = true; - - const feedUrl: Parameters[0] = { - channel: 'canary', - // hack for custom provider - provider: 'custom' as 'github', - repo: 'AFFiNE', - owner: 'toeverything', - releaseType: 'prerelease', - // @ts-expect-error hack for custom provider - updateProvider: CustomGitHubProvider, - }; - - updater.setFeedURL(feedUrl); - - const info = (await updater.checkForUpdates()) as UpdateCheckResult; - expect(info).not.toBe(null); - expect(info.updateInfo.releaseName).toBe('0.11.1-canary.2'); - expect(info.updateInfo.version).toBe('0.11.1-canary.2'); - expect(info.updateInfo.releaseNotes?.length).toBe(0); - }); - }); });