Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
19b0d18
add feature flag with temporary name
jengstrom-bw Jun 17, 2026
8cd4837
update copy for collection dialog based on feature flag
jengstrom-bw Jun 17, 2026
0dec2a5
update copy and startIcon for domain rules based on feature flag
jengstrom-bw Jun 17, 2026
794609e
update copy, icon and button type for new send dropdown based on feat…
jengstrom-bw Jun 17, 2026
cfd975b
update copy for vault component based on feature flag
jengstrom-bw Jun 17, 2026
6eb6394
update copy for SM project dialog based on feature flag
jengstrom-bw Jun 17, 2026
a63413e
update copy for SM secret-dialog based on feature flag
jengstrom-bw Jun 17, 2026
63dd623
update copy and startIcon for SM service accounts list based on featu…
jengstrom-bw Jun 17, 2026
dfe2572
update copy for SM new-menu based on feature flag
jengstrom-bw Jun 17, 2026
61d6596
update copy and startIcon for SM projects list based on feature flag
jengstrom-bw Jun 17, 2026
083bd42
update copy and startIcon for SM secrets list based on feature flag
jengstrom-bw Jun 17, 2026
a4fd1fd
update copy for new send dropdown V1 and V2 based on feature flag
jengstrom-bw Jun 17, 2026
ba6cb32
update copy for add edit dialog based on feature flag
jengstrom-bw Jun 17, 2026
db6725d
update copy for new cipher menu based on feature flag
jengstrom-bw Jun 17, 2026
f856029
update copy for vault item dialog based on feature flag
jengstrom-bw Jun 17, 2026
172b022
update copy for AC groups and group add edit based on feature flag
jengstrom-bw Jun 17, 2026
e2cbcbb
update copy and icon for domain verification based on feature flag
jengstrom-bw Jun 17, 2026
e0d4dc5
fix tests
jengstrom-bw Jun 17, 2026
3a264d0
update feature flag name
jengstrom-bw Jun 18, 2026
be5f61c
add i18n keys used by lib components in browser and desktop
jengstrom-bw Jun 18, 2026
3b932d2
update feature flag variable name
jengstrom-bw Jun 18, 2026
29a5b06
Merge branch 'main' into vault/pm-32402/update-copy-from-new-to-creat…
jengstrom-bw Jun 18, 2026
b78057f
update individual vault empty button to be secondary and no plus icon
jengstrom-bw Jun 18, 2026
d3770e1
update AC empty vault add button v1/v2
jengstrom-bw Jun 18, 2026
5eea120
update SM add machine account modal copy
jengstrom-bw Jun 18, 2026
bd8d4d5
update new domain modal copy
jengstrom-bw Jun 18, 2026
209608b
fix tests
jengstrom-bw Jun 18, 2026
1421259
Merge branch 'main' into vault/pm-32402/update-copy-from-new-to-creat…
jengstrom-bw Jun 22, 2026
6cf6a34
Merge branch 'main' into vault/pm-32402/update-copy-from-new-to-creat…
jengstrom-bw Jun 22, 2026
72450bd
Merge branch 'main' into vault/pm-32402/update-copy-from-new-to-creat…
jengstrom-bw Jun 23, 2026
fe8f0af
fix new send dropdown when hideIcon and feature flag are false, show …
jengstrom-bw Jun 23, 2026
320cc7e
add initial value to btnTextAddCreateFeatureFlag signal
jengstrom-bw Jun 23, 2026
5452027
revert changes to new send dropdown in libs, out of scope for web
jengstrom-bw Jun 23, 2026
0ab9c8d
fixes missed lib change reversion
jengstrom-bw Jun 23, 2026
2a6e094
Merge branch 'main' into vault/pm-32402/update-copy-from-new-to-creat…
jengstrom-bw Jun 24, 2026
e1e582e
fix issue from merge conflict
jengstrom-bw Jun 24, 2026
9b7acf2
update add-edit header copy
jengstrom-bw Jun 23, 2026
219193e
update vault new button copy to add
jengstrom-bw Jun 23, 2026
11ae23d
update view header copy to sentence case
jengstrom-bw Jun 23, 2026
a438747
update copy for new send dropdown lib
jengstrom-bw Jun 25, 2026
235f3ff
fix tests
jengstrom-bw Jun 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions apps/browser/src/_locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -2321,6 +2321,42 @@
"licenseClass": {
"message": "License class"
},
"addItemHeaderLogin": {
"message": "Add login",
"description": "Header for new login item type"
},
"addItemHeaderCard": {
"message": "Add card",
"description": "Header for new card item type"
},
"addItemHeaderIdentity": {
"message": "Add identity",
"description": "Header for new identity item type"
},
"addItemHeaderNote": {
"message": "Add note",
"description": "Header for new note item type"
},
"addItemHeaderSecureNote": {
"message": "Add secure note",
"description": "Header for new secure note item type"
},
"addItemHeaderSshKey": {
"message": "Add SSH key",
"description": "Header for new SSH key item type"
},
"addItemHeaderBankAccount": {
"message": "Add bank account",
"description": "Header for new bank account item type"
},
"addItemHeaderDriversLicense": {
"message": "Add license",
"description": "Header for new license item type"
},
"addItemHeaderPassport": {
"message": "Add passport",
"description": "Header for new passport item type"
},
"newItemHeaderLogin": {
"message": "New Login",
"description": "Header for new login item type"
Expand Down Expand Up @@ -2385,6 +2421,22 @@
"message": "Edit secure note",
"description": "Header for edit secure note item type"
},
"editItemHeaderLoginSentenceCase": {
"message": "Edit login",
"description": "Header for edit login item type"
},
"editItemHeaderCardSentenceCase": {
"message": "Edit card",
"description": "Header for edit card item type"
},
"editItemHeaderIdentitySentenceCase": {
"message": "Edit identity",
"description": "Header for edit identity item type"
},
"editItemHeaderNoteSentenceCase": {
"message": "Edit note",
"description": "Header for edit note item type"
},
"editItemHeaderSshKey": {
"message": "Edit SSH key",
"description": "Header for edit SSH key item type"
Expand Down Expand Up @@ -3344,6 +3396,10 @@
"message": "New Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"createSendV2": {
"message": "Create Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"newPassword": {
"message": "New password"
},
Expand Down Expand Up @@ -5299,6 +5355,29 @@
}
}
},
"viewItemHeaderLoginSentenceCase": {
"message": "View login",
"description": "Header for view login item type"
},
"viewItemHeaderCardSentenceCase": {
"message": "View card",
"description": "Header for view card item type"
},
"viewItemHeaderIdentitySentenceCase": {
"message": "View identity",
"description": "Header for view identity item type"
},
"viewItemHeaderNoteSentenceCase": {
"message": "View note",
"description": "Header for view note item type"
},
"create": {
"message": "Create",
"description": "for adding new items"
},
"addCollection": {
"message": "Add collection"
},
"new": {
"message": "New"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,12 @@ describe("AddEditComponent", () => {
providers: [
provideNoopAnimations(),
{ provide: PlatformUtilsService, useValue: mock<PlatformUtilsService>() },
{ provide: ConfigService, useValue: mock<ConfigService>() },
{
provide: ConfigService,
useValue: mock<ConfigService>({
getFeatureFlag$: jest.fn().mockReturnValue(of(false)),
}),
},
{ provide: PopupRouterCacheService, useValue: { back, setHistory } },
{ provide: PopupCloseWarningService, useValue: { disable } },
{ provide: Router, useValue: { navigate } },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// @ts-strict-ignore
import { CommonModule } from "@angular/common";
import { Component, OnInit, OnDestroy, viewChild } from "@angular/core";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
import { takeUntilDestroyed, toSignal } from "@angular/core/rxjs-interop";
import { FormsModule } from "@angular/forms";
import { ActivatedRoute, Params, Router } from "@angular/router";
import { firstValueFrom, map, Observable, switchMap } from "rxjs";
Expand Down Expand Up @@ -192,6 +192,11 @@ export type AddEditQueryParams = Partial<Record<keyof QueryParams, string>>;
],
})
export class AddEditComponent implements OnInit, OnDestroy {
protected readonly btnTextAddCreateFeatureFlag = toSignal(
this.configService.getFeatureFlag$(FeatureFlag.PM32380_BtnTextAddCreate),
{ initialValue: false },
);

readonly cipherFormComponent = viewChild(CipherFormComponent);

headerText: string;
Expand Down Expand Up @@ -513,18 +518,54 @@ export class AddEditComponent implements OnInit, OnDestroy {
setHeader(mode: CipherFormMode, type: CipherType) {
const isEditMode = mode === "edit" || mode === "partial-edit";
const translation = {
[CipherType.Login]: isEditMode ? "editItemHeaderLogin" : "newItemHeaderLogin",
[CipherType.Card]: isEditMode ? "editItemHeaderCard" : "newItemHeaderCard",
[CipherType.Identity]: isEditMode ? "editItemHeaderIdentity" : "newItemHeaderIdentity",
[CipherType.SecureNote]: isEditMode ? "editItemHeaderNote" : "newItemHeaderNote",
[CipherType.SshKey]: isEditMode ? "editItemHeaderSshKey" : "newItemHeaderSshKey",
[CipherType.Login]: isEditMode
? this.btnTextAddCreateFeatureFlag()
? "editItemHeaderLoginSentenceCase"
: "editItemHeaderLogin"
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderLogin"
: "newItemHeaderLogin",
[CipherType.Card]: isEditMode
? this.btnTextAddCreateFeatureFlag()
? "editItemHeaderCardSentenceCase"
: "editItemHeaderCard"
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderCard"
: "newItemHeaderCard",
[CipherType.Identity]: isEditMode
? this.btnTextAddCreateFeatureFlag()
? "editItemHeaderIdentitySentenceCase"
: "editItemHeaderIdentity"
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderIdentity"
: "newItemHeaderIdentity",
[CipherType.SecureNote]: isEditMode
? this.btnTextAddCreateFeatureFlag()
? "editItemHeaderNoteSentenceCase"
: "editItemHeaderNote"
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderNote"
: "newItemHeaderNote",
[CipherType.SshKey]: isEditMode
? "editItemHeaderSshKey"
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderSshKey"
: "newItemHeaderSshKey",
[CipherType.BankAccount]: isEditMode
? "editItemHeaderBankAccount"
: "newItemHeaderBankAccount",
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderBankAccount"
: "newItemHeaderBankAccount",
[CipherType.DriversLicense]: isEditMode
? "editItemHeaderLicense"
: "newItemHeaderDriversLicense",
[CipherType.Passport]: isEditMode ? "editItemHeaderPassport" : "newItemHeaderPassport",
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderDriversLicense"
: "newItemHeaderDriversLicense",
[CipherType.Passport]: isEditMode
? "editItemHeaderPassport"
: this.btnTextAddCreateFeatureFlag()
? "addItemHeaderPassport"
: "newItemHeaderPassport",
};
return this.i18nService.t(translation[type]);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
(click)="navigateToNewItemPage()"
startIcon="bwi-plus"
>
{{ "new" | i18n }}
{{ (btnTextAddCreateFeatureFlag() ? "add" : "new") | i18n }}
</button>
} @else {
<button
Expand All @@ -16,7 +16,7 @@
buttonType="primary"
type="button"
>
{{ "new" | i18n }}
{{ (btnTextAddCreateFeatureFlag() ? "add" : "new") | i18n }}
</button>
<bit-menu #itemOptions>
@for (menuItem of cipherMenuItems$ | async; track menuItem.type) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ export class NewItemDropdownComponent implements OnInit {
{ initialValue: false },
);

protected readonly btnTextAddCreateFeatureFlag = toSignal(
this.configService.getFeatureFlag$(FeatureFlag.PM32380_BtnTextAddCreate),
{ initialValue: false },
);

constructor(
private dialogService: DialogService,
private restrictedItemTypeService: RestrictedItemTypesService,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// FIXME: Update this file to be type safe and remove this and next line
// @ts-strict-ignore
import { CommonModule } from "@angular/common";
import { Component } from "@angular/core";
import { Component, inject } from "@angular/core";
import { takeUntilDestroyed, toSignal } from "@angular/core/rxjs-interop";
import { FormsModule } from "@angular/forms";
import { ActivatedRoute, Router } from "@angular/router";
Expand All @@ -23,6 +23,8 @@ import {
} from "@bitwarden/common/autofill/constants";
import { DomainSettingsService } from "@bitwarden/common/autofill/services/domain-settings.service";
import { EventCollectionService, EventType } from "@bitwarden/common/dirt/event-logs";
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
import { UserId } from "@bitwarden/common/types/guid";
Expand Down Expand Up @@ -111,6 +113,12 @@ type LoadAction =
],
})
export class ViewComponent {
private readonly configService = inject(ConfigService);
protected readonly btnTextAddCreateFeatureFlag = toSignal(
this.configService.getFeatureFlag$(FeatureFlag.PM32380_BtnTextAddCreate),
{ initialValue: false },
);

private activeUserId: UserId;

headerText: string;
Expand Down Expand Up @@ -216,10 +224,18 @@ export class ViewComponent {

setHeader(type: CipherType) {
const translation = {
[CipherType.Login]: "viewItemHeaderLogin",
[CipherType.Card]: "viewItemHeaderCard",
[CipherType.Identity]: "viewItemHeaderIdentity",
[CipherType.SecureNote]: "viewItemHeaderNote",
[CipherType.Login]: this.btnTextAddCreateFeatureFlag()
? "viewItemHeaderLoginSentenceCase"
: "viewItemHeaderLogin",
[CipherType.Card]: this.btnTextAddCreateFeatureFlag()
? "viewItemHeaderCardSentenceCase"
: "viewItemHeaderCard",
[CipherType.Identity]: this.btnTextAddCreateFeatureFlag()
? "viewItemHeaderIdentitySentenceCase"
: "viewItemHeaderIdentity",
[CipherType.SecureNote]: this.btnTextAddCreateFeatureFlag()
? "viewItemHeaderNoteSentenceCase"
: "viewItemHeaderNote",
[CipherType.SshKey]: "viewItemHeaderSshKey",
[CipherType.BankAccount]: "viewItemHeaderBankAccount",
[CipherType.DriversLicense]: "viewItemHeaderLicense",
Expand Down
79 changes: 79 additions & 0 deletions apps/desktop/src/locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,42 @@
"message": "View passport",
"description": "Header for view passport item type"
},
"addItemHeaderLogin": {
"message": "Add login",
"description": "Header for new login item type"
},
"addItemHeaderCard": {
"message": "Add card",
"description": "Header for new card item type"
},
"addItemHeaderIdentity": {
"message": "Add identity",
"description": "Header for new identity item type"
},
"addItemHeaderNote": {
"message": "Add note",
"description": "Header for new note item type"
},
"addItemHeaderSecureNote": {
"message": "Add secure note",
"description": "Header for new secure note item type"
},
"addItemHeaderSshKey": {
"message": "Add SSH key",
"description": "Header for new SSH key item type"
},
"addItemHeaderBankAccount": {
"message": "Add bank account",
"description": "Header for new bank account item type"
},
"addItemHeaderDriversLicense": {
"message": "Add license",
"description": "Header for new license item type"
},
"addItemHeaderPassport": {
"message": "Add passport",
"description": "Header for new passport item type"
},
"newItemHeaderLogin": {
"message": "New Login",
"description": "Header for new login item type"
Expand Down Expand Up @@ -230,6 +266,22 @@
"message": "Edit secure note",
"description": "Header for edit secure note item type"
},
"editItemHeaderLoginSentenceCase": {
"message": "Edit login",
"description": "Header for edit login item type"
},
"editItemHeaderCardSentenceCase": {
"message": "Edit card",
"description": "Header for edit card item type"
},
"editItemHeaderIdentitySentenceCase": {
"message": "Edit identity",
"description": "Header for edit identity item type"
},
"editItemHeaderNoteSentenceCase": {
"message": "Edit note",
"description": "Header for edit note item type"
},
"editItemHeaderSshKey": {
"message": "Edit SSH key",
"description": "Header for edit SSH key item type"
Expand Down Expand Up @@ -322,6 +374,29 @@
"message": "Are you sure you want to permanently delete this Send?",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"viewItemHeaderLoginSentenceCase": {
"message": "View login",
"description": "Header for view login item type"
},
"viewItemHeaderCardSentenceCase": {
"message": "View card",
"description": "Header for view card item type"
},
"viewItemHeaderIdentitySentenceCase": {
"message": "View identity",
"description": "Header for view identity item type"
},
"viewItemHeaderNoteSentenceCase": {
"message": "View note",
"description": "Header for view note item type"
},
"create": {
"message": "Create",
"description": "for adding new items"
},
"addCollection": {
"message": "Add collection"
},
"new": {
"message": "New",
"description": "for adding new items"
Expand Down Expand Up @@ -2779,6 +2854,10 @@
"message": "New Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"createSendV2": {
"message": "Create Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendTextDesc": {
"message": "The text you want to send."
},
Expand Down
Loading
Loading