* first pass implementation * remove screenrecord shortcut hint * refactor * fix: prevent mirror review of screen recording * feat: allow recording with webcam overlay * fix: review screen recording without clipped content * tidy keyboard hints consistent position * refactor: re-use one component for screen picker huddles and screen clips use same picker component now. We had to make sure that tailwind works for both of them. * fix: improve visibility of keyboard hints During compose video or screen recording, the keyboard hints were invisible if the content was super bright.
100 lines
3.2 KiB
TypeScript
100 lines
3.2 KiB
TypeScript
import type { ForgeConfig } from '@electron-forge/shared-types';
|
|
import { MakerSquirrel } from '@electron-forge/maker-squirrel';
|
|
import { MakerZIP } from '@electron-forge/maker-zip';
|
|
import { MakerDeb } from '@electron-forge/maker-deb';
|
|
import { MakerRpm } from '@electron-forge/maker-rpm';
|
|
import { VitePlugin } from '@electron-forge/plugin-vite';
|
|
import { FusesPlugin } from '@electron-forge/plugin-fuses';
|
|
import { FuseV1Options, FuseVersion } from '@electron/fuses';
|
|
|
|
const config: ForgeConfig = {
|
|
packagerConfig: {
|
|
asar: true,
|
|
icon: './assets/flowy',
|
|
appBundleId: 'live.flowy.llink',
|
|
extendInfo: {
|
|
NSMicrophoneUsageDescription: 'llink needs microphone access to record audio messages.',
|
|
NSCameraUsageDescription: 'llink needs camera access to record video messages.',
|
|
},
|
|
osxSign: {},
|
|
osxNotarize: {
|
|
keychainProfile: 'default',
|
|
}
|
|
},
|
|
publishers: [
|
|
{
|
|
name: '@electron-forge/publisher-gcs',
|
|
config: {
|
|
storageOptions: {
|
|
projectId: 'flowy-prod-440017'
|
|
},
|
|
bucket: 'flowy-releases',
|
|
folder: 'llink',
|
|
// NOTE: commented out because we do not want to apply per object ACL which conflicts with uniform bucket-level access that's already public
|
|
// public: true
|
|
}
|
|
}
|
|
],
|
|
rebuildConfig: {},
|
|
makers: [
|
|
new MakerSquirrel((arch) => ({
|
|
remoteReleases: `https://storage.googleapis.com/flowy-releases/llink/win32/${arch}`
|
|
})),
|
|
new MakerZIP((arch) => ({
|
|
macUpdateManifestBaseUrl: `https://storage.googleapis.com/flowy-releases/llink/darwin/${arch}`
|
|
}), ['darwin']),
|
|
new MakerRpm({}),
|
|
new MakerDeb({}),
|
|
],
|
|
plugins: [
|
|
new VitePlugin({
|
|
// `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.
|
|
// If you are familiar with Vite configuration, it will look really familiar.
|
|
build: [
|
|
{
|
|
// `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`.
|
|
entry: 'src/main.ts',
|
|
config: 'vite.main.config.ts',
|
|
target: 'main',
|
|
},
|
|
{
|
|
entry: 'src/preload.ts',
|
|
config: 'vite.preload.config.ts',
|
|
target: 'preload',
|
|
},
|
|
],
|
|
renderer: [
|
|
{
|
|
name: 'main_window',
|
|
config: 'vite.renderer.config.mts',
|
|
},
|
|
{
|
|
name: 'autoplay_window',
|
|
config: 'vite.autoplay.config.mts',
|
|
},
|
|
{
|
|
name: 'huddle_window',
|
|
config: 'vite.huddle.config.mts',
|
|
},
|
|
{
|
|
name: 'screen_record_window',
|
|
config: 'vite.screen-record.config.mts',
|
|
},
|
|
],
|
|
}),
|
|
// Fuses are used to enable/disable various Electron functionality
|
|
// at package time, before code signing the application
|
|
new FusesPlugin({
|
|
version: FuseVersion.V1,
|
|
[FuseV1Options.RunAsNode]: false,
|
|
[FuseV1Options.EnableCookieEncryption]: true,
|
|
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
|
|
[FuseV1Options.EnableNodeCliInspectArguments]: false,
|
|
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
|
|
[FuseV1Options.OnlyLoadAppFromAsar]: true,
|
|
}),
|
|
],
|
|
};
|
|
|
|
export default config;
|