mirror of
https://github.com/bitwarden/clients.git
synced 2026-02-05 00:25:18 +08:00
* feat: scaffold desktop_objc * feat: rename fido2 to autofill * feat: scaffold electron autofill * feat: auto call hello world on init * feat: scaffold call to basic objc function * feat: simple log that checks if autofill is enabled * feat: adding some availability guards * feat: scaffold services and allow calls from inspector * feat: create custom type for returning strings across rust/objc boundary * chore: clean up comments * feat: enable ARC * feat: add util function `c_string_to_nsstring` * chore: refactor and rename to `run_command` * feat: add try-catch around command execution * feat: properly implement command calling Add static typing. Add proper error handling. * feat: add autoreleasepool to avoid memory leaks * chore: change objc names to camelCase * fix: error returning * feat: extract some helper functions into utils class * feat: scaffold status command * feat: implement status command * feat: implement password credential mapping * wip: implement sync command This crashes because we are not properly handling the fact that `saveCredentialIdentities` uses callbacks, resulting in a race condition where we try to access a variable (result) that has already gotten dealloc'd. * feat: first version of callback * feat: make run_command async * feat: functioning callback returns * chore: refactor to make objc code easier to read and use * feat: refactor everything to use new callback return method * feat: re-implement status command with callback * fix: warning about CommandContext not being FFI-safe * feat: implement sync command using callbacks * feat: implement manual password credential sync * feat: add auto syncing * docs: add todo * feat: add support for passkeys * chore: move desktop autofill service to init service * feat: auto-add all .m files to builder * fix: native build on unix and windows * fix: unused compiler warnings * fix: napi type exports * feat: add corresponding dist command * feat: comment signing profile until we fix signing * fix: build breaking on non-macOS platforms * chore: cargo lock update * chore: revert accidental version change * feat: put sync behind feature flag * chore: put files in autofill folder * fix: obj-c code not recompiling on changes * feat: add `namespace` to commands * fix: linting complaining about flag * feat: add autofill as owner of their objc code * chore: make autofill owner of run_command in core crate * fix: re-add napi annotation * fix: remove dev bypass
98 lines
4.8 KiB
TypeScript
98 lines
4.8 KiB
TypeScript
/**
|
|
* Feature flags.
|
|
*
|
|
* Flags MUST be short lived and SHALL be removed once enabled.
|
|
*/
|
|
export enum FeatureFlag {
|
|
BrowserFilelessImport = "browser-fileless-import",
|
|
ItemShare = "item-share",
|
|
GeneratorToolsModernization = "generator-tools-modernization",
|
|
AC1795_UpdatedSubscriptionStatusSection = "AC-1795_updated-subscription-status-section",
|
|
ExtensionRefresh = "extension-refresh",
|
|
PersistPopupView = "persist-popup-view",
|
|
PM4154_BulkEncryptionService = "PM-4154-bulk-encryption-service",
|
|
UseTreeWalkerApiForPageDetailsCollection = "use-tree-walker-api-for-page-details-collection",
|
|
EmailVerification = "email-verification",
|
|
InlineMenuFieldQualification = "inline-menu-field-qualification",
|
|
TwoFactorComponentRefactor = "two-factor-component-refactor",
|
|
InlineMenuPositioningImprovements = "inline-menu-positioning-improvements",
|
|
ProviderClientVaultPrivacyBanner = "ac-2833-provider-client-vault-privacy-banner",
|
|
VaultBulkManagementAction = "vault-bulk-management-action",
|
|
IdpAutoSubmitLogin = "idp-auto-submit-login",
|
|
UnauthenticatedExtensionUIRefresh = "unauth-ui-refresh",
|
|
GenerateIdentityFillScriptRefactor = "generate-identity-fill-script-refactor",
|
|
EnableNewCardCombinedExpiryAutofill = "enable-new-card-combined-expiry-autofill",
|
|
DelayFido2PageScriptInitWithinMv2 = "delay-fido2-page-script-init-within-mv2",
|
|
AccountDeprovisioning = "pm-10308-account-deprovisioning",
|
|
SSHKeyVaultItem = "ssh-key-vault-item",
|
|
SSHAgent = "ssh-agent",
|
|
NotificationBarAddLoginImprovements = "notification-bar-add-login-improvements",
|
|
AC2476_DeprecateStripeSourcesAPI = "AC-2476-deprecate-stripe-sources-api",
|
|
CipherKeyEncryption = "cipher-key-encryption",
|
|
VerifiedSsoDomainEndpoint = "pm-12337-refactor-sso-details-endpoint",
|
|
PM11901_RefactorSelfHostingLicenseUploader = "PM-11901-refactor-self-hosting-license-uploader",
|
|
PM14505AdminConsoleIntegrationPage = "pm-14505-admin-console-integration-page",
|
|
CriticalApps = "pm-14466-risk-insights-critical-application",
|
|
TrialPaymentOptional = "PM-8163-trial-payment",
|
|
SecurityTasks = "security-tasks",
|
|
NewDeviceVerificationTemporaryDismiss = "new-device-temporary-dismiss",
|
|
NewDeviceVerificationPermanentDismiss = "new-device-permanent-dismiss",
|
|
DisableFreeFamiliesSponsorship = "PM-12274-disable-free-families-sponsorship",
|
|
MacOsNativeCredentialSync = "macos-native-credential-sync",
|
|
PM11360RemoveProviderExportPermission = "pm-11360-remove-provider-export-permission",
|
|
}
|
|
|
|
export type AllowedFeatureFlagTypes = boolean | number | string;
|
|
|
|
// Helper to ensure the value is treated as a boolean.
|
|
const FALSE = false as boolean;
|
|
|
|
/**
|
|
* Default value for feature flags.
|
|
*
|
|
* DO NOT enable previously disabled flags, REMOVE them instead.
|
|
* We support true as a value as we prefer flags to "enable" not "disable".
|
|
*/
|
|
export const DefaultFeatureFlagValue = {
|
|
[FeatureFlag.BrowserFilelessImport]: FALSE,
|
|
[FeatureFlag.ItemShare]: FALSE,
|
|
[FeatureFlag.GeneratorToolsModernization]: FALSE,
|
|
[FeatureFlag.AC1795_UpdatedSubscriptionStatusSection]: FALSE,
|
|
[FeatureFlag.ExtensionRefresh]: FALSE,
|
|
[FeatureFlag.PersistPopupView]: FALSE,
|
|
[FeatureFlag.PM4154_BulkEncryptionService]: FALSE,
|
|
[FeatureFlag.UseTreeWalkerApiForPageDetailsCollection]: FALSE,
|
|
[FeatureFlag.EmailVerification]: FALSE,
|
|
[FeatureFlag.InlineMenuFieldQualification]: FALSE,
|
|
[FeatureFlag.TwoFactorComponentRefactor]: FALSE,
|
|
[FeatureFlag.InlineMenuPositioningImprovements]: FALSE,
|
|
[FeatureFlag.ProviderClientVaultPrivacyBanner]: FALSE,
|
|
[FeatureFlag.VaultBulkManagementAction]: FALSE,
|
|
[FeatureFlag.IdpAutoSubmitLogin]: FALSE,
|
|
[FeatureFlag.UnauthenticatedExtensionUIRefresh]: FALSE,
|
|
[FeatureFlag.GenerateIdentityFillScriptRefactor]: FALSE,
|
|
[FeatureFlag.EnableNewCardCombinedExpiryAutofill]: FALSE,
|
|
[FeatureFlag.DelayFido2PageScriptInitWithinMv2]: FALSE,
|
|
[FeatureFlag.AccountDeprovisioning]: FALSE,
|
|
[FeatureFlag.SSHKeyVaultItem]: FALSE,
|
|
[FeatureFlag.SSHAgent]: FALSE,
|
|
[FeatureFlag.NotificationBarAddLoginImprovements]: FALSE,
|
|
[FeatureFlag.AC2476_DeprecateStripeSourcesAPI]: FALSE,
|
|
[FeatureFlag.CipherKeyEncryption]: FALSE,
|
|
[FeatureFlag.VerifiedSsoDomainEndpoint]: FALSE,
|
|
[FeatureFlag.PM11901_RefactorSelfHostingLicenseUploader]: FALSE,
|
|
[FeatureFlag.PM14505AdminConsoleIntegrationPage]: FALSE,
|
|
[FeatureFlag.CriticalApps]: FALSE,
|
|
[FeatureFlag.TrialPaymentOptional]: FALSE,
|
|
[FeatureFlag.SecurityTasks]: FALSE,
|
|
[FeatureFlag.NewDeviceVerificationTemporaryDismiss]: FALSE,
|
|
[FeatureFlag.NewDeviceVerificationPermanentDismiss]: FALSE,
|
|
[FeatureFlag.DisableFreeFamiliesSponsorship]: FALSE,
|
|
[FeatureFlag.MacOsNativeCredentialSync]: FALSE,
|
|
[FeatureFlag.PM11360RemoveProviderExportPermission]: FALSE,
|
|
} satisfies Record<FeatureFlag, AllowedFeatureFlagTypes>;
|
|
|
|
export type DefaultFeatureFlagValueType = typeof DefaultFeatureFlagValue;
|
|
|
|
export type FeatureFlagValueType<Flag extends FeatureFlag> = DefaultFeatureFlagValueType[Flag];
|