fix(electron): app updater (#8043)

This commit is contained in:
forehalo
2024-09-02 07:53:17 +00:00
parent a802dc4fd6
commit d9cedf89e1
22 changed files with 537 additions and 730 deletions

View File

@@ -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<GithubUpdateInfo> {
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<GithubUpdateInfo> {
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<ResolvedUpdateFileInfo> {
const files = getFileList(updateInfo);
return files.map(file => ({
url: new URL(file.url),
info: file,
}));
}
}
function getChannelFilename(channel: string): string {
return `${channel}.yml`;
}

View File

@@ -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<GithubUpdateInfo> {
constructor(
options: CustomPublishOptions,
private readonly updater: AppUpdater,
runtimeOptions: ProviderRuntimeOptions
) {
super(options as unknown as GithubOptions, 'github.com', runtimeOptions);
}
async getLatestVersion(): Promise<GithubUpdateInfo> {
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<ResolvedUpdateFileInfo> {
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 <content>No content.</content>
return result === 'No content.' ? '' : result;
}
export function computeReleaseNotes(
currentVersion: semver.SemVer,
isFullChangelog: boolean,
feed: XElement,
latestRelease: any
): string | Array<ReleaseNoteInfo> | null {
if (!isFullChangelog) {
return getNoteValue(latestRelease);
}
const releaseNotes: Array<ReleaseNoteInfo> = [];
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`;
}

View File

@@ -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<typeof autoUpdater.setFeedURL>[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);

View File

@@ -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
}
]
}
]

View File

@@ -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
}
]
}
]

View File

@@ -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
}
]
}
]

View File

@@ -1,103 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US">
<id>tag:github.com,2008:https://github.com/toeverything/AFFiNE/releases</id>
<link type="text/html" rel="alternate" href="https://github.com/toeverything/AFFiNE/releases"/>
<link type="application/atom+xml" rel="self" href="https://github.com/toeverything/AFFiNE/releases.atom"/>
<title>Release notes from AFFiNE</title>
<updated>2023-12-28T16:36:36+08:00</updated>
<entry>
<id>tag:github.com,2008:Repository/519859998/0.11.0-nightly-202312280901-e11e827</id>
<updated>2023-12-28T17:23:15+08:00</updated>
<link rel="alternate" type="text/html" href="https://github.com/toeverything/AFFiNE/releases/tag/0.11.0-nightly-202312280901-e11e827"/>
<title>0.11.0-nightly-202312280901-e11e827</title>
<content>No content.</content>
<author>
<name>github-actions[bot]</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/in/15368?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/519859998/v0.11.1</id>
<updated>2023-12-27T19:40:15+08:00</updated>
<link rel="alternate" type="text/html" href="https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1"/>
<title>0.11.1</title>
<content type="html">&lt;p&gt;fix(core): enable page history for beta/stable (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056965718&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5415&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5415/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5415&quot;&gt;#5415&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
fix(component): fix font display on safari (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055383919&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5393&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5393/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5393&quot;&gt;#5393&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/EYHN/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/EYHN&quot;&gt;@EYHN&lt;/a&gt;&lt;br&gt;
fix(core): avatars are not aligned (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056136302&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5404&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5404/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5404&quot;&gt;#5404&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/JimmFly/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/JimmFly&quot;&gt;@JimmFly&lt;/a&gt;&lt;br&gt;
fix(core): trash page footer display issue (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056129348&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5402&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5402/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5402&quot;&gt;#5402&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
fix(electron): set stable base url to app.affine.pro (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056113464&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5401&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5401/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5401&quot;&gt;#5401&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/joooye34/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/joooye34&quot;&gt;@joooye34&lt;/a&gt;&lt;br&gt;
fix(core): about setting blink issue (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056090521&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5399&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5399/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5399&quot;&gt;#5399&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
fix(core): workpace list blink issue on open (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056096694&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5400&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5400/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5400&quot;&gt;#5400&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
chore(core): add background color to questionnaire (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055986563&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5396&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5396/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5396&quot;&gt;#5396&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/JimmFly/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/JimmFly&quot;&gt;@JimmFly&lt;/a&gt;&lt;br&gt;
fix(core): correct title of onboarding article-2 (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053650286&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5387&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5387/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5387&quot;&gt;#5387&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CatsJuice/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CatsJuice&quot;&gt;@CatsJuice&lt;/a&gt;&lt;br&gt;
fix: use prefix in electron to prevent formdata bug (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055616549&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5395&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5395/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5395&quot;&gt;#5395&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/darkskygit/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/darkskygit&quot;&gt;@darkskygit&lt;/a&gt;&lt;br&gt;
fix(core): fix flickering workspace list (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055363698&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5391&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5391/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5391&quot;&gt;#5391&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/EYHN/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/EYHN&quot;&gt;@EYHN&lt;/a&gt;&lt;br&gt;
fix(workspace): fix svg file with xml header (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053693777&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5388&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5388/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5388&quot;&gt;#5388&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/EYHN/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/EYHN&quot;&gt;@EYHN&lt;/a&gt;&lt;br&gt;
feat: bump blocksuite (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053645163&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5386&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5386/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5386&quot;&gt;#5386&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/regischen/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/regischen&quot;&gt;@regischen&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>github-actions[bot]</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/in/15368?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/519859998/v0.11.1-beta.1</id>
<updated>2023-12-27T18:30:52+08:00</updated>
<link rel="alternate" type="text/html" href="https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1-beta.1"/>
<title>0.11.1-beta.1</title>
<content type="html">&lt;p&gt;fix(core): enable page history for beta/stable (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056965718&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5415&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5415/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5415&quot;&gt;#5415&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
fix(component): fix font display on safari (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055383919&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5393&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5393/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5393&quot;&gt;#5393&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/EYHN/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/EYHN&quot;&gt;@EYHN&lt;/a&gt;&lt;br&gt;
fix(core): avatars are not aligned (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056136302&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5404&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5404/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5404&quot;&gt;#5404&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/JimmFly/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/JimmFly&quot;&gt;@JimmFly&lt;/a&gt;&lt;br&gt;
fix(core): trash page footer display issue (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056129348&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5402&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5402/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5402&quot;&gt;#5402&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
fix(electron): set stable base url to app.affine.pro (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056113464&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5401&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5401/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5401&quot;&gt;#5401&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/joooye34/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/joooye34&quot;&gt;@joooye34&lt;/a&gt;&lt;br&gt;
fix(core): about setting blink issue (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056090521&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5399&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5399/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5399&quot;&gt;#5399&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
fix(core): workpace list blink issue on open (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056096694&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5400&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5400/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5400&quot;&gt;#5400&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt;&lt;br&gt;
chore(core): add background color to questionnaire (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055986563&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5396&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5396/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5396&quot;&gt;#5396&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/JimmFly/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/JimmFly&quot;&gt;@JimmFly&lt;/a&gt;&lt;br&gt;
fix(core): correct title of onboarding article-2 (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053650286&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5387&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5387/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5387&quot;&gt;#5387&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CatsJuice/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CatsJuice&quot;&gt;@CatsJuice&lt;/a&gt;&lt;br&gt;
fix: use prefix in electron to prevent formdata bug (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055616549&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5395&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5395/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5395&quot;&gt;#5395&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/darkskygit/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/darkskygit&quot;&gt;@darkskygit&lt;/a&gt;&lt;br&gt;
fix(core): fix flickering workspace list (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055363698&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5391&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5391/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5391&quot;&gt;#5391&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/EYHN/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/EYHN&quot;&gt;@EYHN&lt;/a&gt;&lt;br&gt;
fix(workspace): fix svg file with xml header (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053693777&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5388&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5388/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5388&quot;&gt;#5388&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/EYHN/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/EYHN&quot;&gt;@EYHN&lt;/a&gt;&lt;br&gt;
feat: bump blocksuite (&lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053645163&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5386&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5386/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5386&quot;&gt;#5386&lt;/a&gt;) &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/regischen/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/regischen&quot;&gt;@regischen&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>github-actions[bot]</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/in/15368?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/519859998/v0.11.1-canary.2</id>
<updated>2023-12-28T10:47:52+08:00</updated>
<link rel="alternate" type="text/html" href="https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1-canary.2"/>
<title>0.11.1-canary.2</title>
<content>No content.</content>
<author>
<name>github-actions[bot]</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/in/15368?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/519859998/v0.11.1-canary.1</id>
<updated>2023-12-27T10:47:52+08:00</updated>
<link rel="alternate" type="text/html" href="https://github.com/toeverything/AFFiNE/releases/tag/v0.11.1-canary.1"/>
<title>0.11.1-canary.1</title>
<content type="html">&lt;h2&gt;What&#39;s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;fix(core): remove plugins settings by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2048206391&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5337&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5337/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5337&quot;&gt;#5337&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore: bump up @vitejs/plugin-vue version to v5 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/renovate/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/renovate&quot;&gt;@renovate&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055571407&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5394&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5394/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5394&quot;&gt;#5394&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(core): correct title of onboarding article-2 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/CatsJuice/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/CatsJuice&quot;&gt;@CatsJuice&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053650286&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5387&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5387/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5387&quot;&gt;#5387&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore(core): add background color to questionnaire by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/JimmFly/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/JimmFly&quot;&gt;@JimmFly&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2055986563&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5396&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5396/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5396&quot;&gt;#5396&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ci: define tag name to fix nightly release failing by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/joooye34/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/joooye34&quot;&gt;@joooye34&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056068417&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5397&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5397/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5397&quot;&gt;#5397&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(core): workpace list blink issue on open by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056096694&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5400&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5400/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5400&quot;&gt;#5400&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(core): about setting blink issue by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056090521&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5399&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5399/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5399&quot;&gt;#5399&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(electron): set stable base url to app.affine.pro by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/joooye34/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/joooye34&quot;&gt;@joooye34&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056113464&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5401&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5401/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5401&quot;&gt;#5401&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(core): trash page footer display issue by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056129348&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5402&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5402/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5402&quot;&gt;#5402&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore: bump up @types/supertest version to v6 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/renovate/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/renovate&quot;&gt;@renovate&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2053226342&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5376&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5376/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5376&quot;&gt;#5376&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chore: bump up react-i18next version to v14 by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/renovate/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/renovate&quot;&gt;@renovate&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2052675317&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5375&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5375/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5375&quot;&gt;#5375&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(core): avatars are not aligned by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/JimmFly/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/JimmFly&quot;&gt;@JimmFly&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056136302&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5404&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5404/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5404&quot;&gt;#5404&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fix(infra): workaround for self-referencing in storybook by &lt;a class=&quot;user-mention notranslate&quot; data-hovercard-type=&quot;user&quot; data-hovercard-url=&quot;/users/pengx17/hovercard&quot; data-octo-click=&quot;hovercard-link-click&quot; data-octo-dimensions=&quot;link_type:self&quot; href=&quot;https://github.com/pengx17&quot;&gt;@pengx17&lt;/a&gt; in &lt;a class=&quot;issue-link js-issue-link&quot; data-error-text=&quot;Failed to load title&quot; data-id=&quot;2056165203&quot; data-permission-text=&quot;Title is private&quot; data-url=&quot;https://github.com/toeverything/AFFiNE/issues/5406&quot; data-hovercard-type=&quot;pull_request&quot; data-hovercard-url=&quot;/toeverything/AFFiNE/pull/5406/hovercard&quot; href=&quot;https://github.com/toeverything/AFFiNE/pull/5406&quot;&gt;#5406&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class=&quot;commit-link&quot; href=&quot;https://github.com/toeverything/AFFiNE/compare/v0.11.1-canary.0...v0.11.1-canary.1&quot;&gt;&lt;tt&gt;v0.11.1-canary.0...v0.11.1-canary.1&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</content>
<author>
<name>github-actions[bot]</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/in/15368?s=60&amp;v=4"/>
</entry>
</feed>

View File

@@ -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
}
]

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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<typeof updater.setFeedURL>[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<typeof updater.setFeedURL>[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);
});
});
});