Skip to content

Conversation

Jingo88
Copy link
Contributor

@Jingo88 Jingo88 commented Oct 1, 2025

🎟️ Tracking

PM-19152 Web Archive Vault and Filter
PM-25188 Web Archive Vault More Options Menu
PM-25189 Web Archive Bulk Options

📔 Objective

Adding the Archive features to the web vault

  • Premium users can Archive (individual and bulk)
  • When archiving an item a confirmation modal will appear
  • Archived items are not show in search results or autofill
  • Archived items are shown in exports
  • Archived items can be unarchived (individual and bulk)
  • Master Password Reprompt modals appear for the archive/unarchive actions
  • Archive filter added when flag is on (premium status does not matter)
  • If Item is in archive and user is not premium only show Unarchive, Delete in more options menu
  • If item is in archive and user is not premium, if user edits item, item is moved to individual vault
  • Clone Option will not appear in archive vault if Enforce Org Data Ownership policy is on

Note: Unarchive Icon is not ready yet. If it isn't ready by PR merge I'll make a new ticket for it later

📸 Screen Recording

PM-19152.PM-25188.PM-25189.mov

⏰ Reminders before review

  • Contributor guidelines followed
  • All formatters and local linters executed and passed
  • Written new unit and / or integration tests where applicable
  • Protected functional changes with optionality (feature flags)
  • Used internationalization (i18n) for all UI strings
  • CI builds passed
  • Communicated to DevOps any deployment requirements
  • Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team

🦮 Reviewer guidelines

  • 👍 (:+1:) or similar for great changes
  • 📝 (:memo:) or ℹ️ (:information_source:) for notes or general info
  • ❓ (:question:) for questions
  • 🤔 (:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion
  • 🎨 (:art:) for suggestions / improvements
  • ❌ (:x:) or ⚠️ (:warning:) for more significant problems or concerns needing attention
  • 🌱 (:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt
  • ⛏ (:pick:) for minor or nitpick changes

@Jingo88 Jingo88 requested a review from a team as a code owner October 1, 2025 17:17
@Jingo88 Jingo88 requested a review from nick-livefront October 1, 2025 17:17
Copy link
Contributor

github-actions bot commented Oct 1, 2025

Logo
Checkmarx One – Scan Summary & Detailsb8c30413-cd91-418c-9b48-24c24a6f4a39

New Issues (1)

Checkmarx found the following issues in this Pull Request

Severity Issue Source File / Package Checkmarx Insight
MEDIUM Missing_HSTS_Header /libs/common/src/services/api.service.ts: 217
detailsThe web-application does not define an HSTS header, leaving it vulnerable to attack.
ID: 9luueTOhHAcEpXRPBRWFJ7B4EVk%3D
Attack Vector

Copy link

codecov bot commented Oct 1, 2025

Codecov Report

❌ Patch coverage is 10.98901% with 81 lines in your changes missing coverage. Please review.
✅ Project coverage is 38.76%. Comparing base (cae5823) to head (c068aa0).
⚠️ Report is 3 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
.../src/app/vault/individual-vault/vault.component.ts 0.00% 49 Missing ⚠️
...lt/components/vault-items/vault-items.component.ts 0.00% 15 Missing ⚠️
...mponents/vault-items/vault-cipher-row.component.ts 0.00% 12 Missing ⚠️
.../vault-filter/components/vault-filter.component.ts 0.00% 2 Missing ⚠️
libs/vault/src/cipher-form/cipher-form.stories.ts 0.00% 2 Missing ⚠️
...c/vault/services/default-cipher-archive.service.ts 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #16686      +/-   ##
==========================================
- Coverage   38.79%   38.76%   -0.04%     
==========================================
  Files        3394     3394              
  Lines       96439    96525      +86     
  Branches    14465    14484      +19     
==========================================
+ Hits        37418    37421       +3     
- Misses      57389    57470      +81     
- Partials     1632     1634       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Collaborator

@nick-livefront nick-livefront left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only change I'm requesting changes for are the plural messaging for bulk archiving. Otherwise the rest are general questions!

Comment on lines +11116 to +11118
"archiveItemConfirmDesc": {
"message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive this item?"
},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎨 There should probably be a bulk version of this statement too

"archiveItemsConfirmDesc": {
    "message": "Archived items are excluded from general search results and autofill suggestions. Are you sure you want to archive these items?"
  },

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call, going to do the same for the title

this.toastService.showToast({
variant: "success",
message: this.i18nService.t("itemUnarchived"),
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ is a this.refresh(); missing here?

this.toastService.showToast({
variant: "success",
message: this.i18nService.t("itemWasSentToArchive"),
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ is a this.refresh(); missing here?

</button>
<button
bitMenuItem
*ngIf="showAssignToCollections"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ Should the showAssignToCollections variable be updated to exclude archived items? I assume a user shouldn't be able to move an item to an organization if it is archived.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah yeah good call here too. Will add archive check for showAssignToCollections

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going to put this question here because it is related to filters but not the code changes here. Should it be possible to select an organization and archive filter? This will always result in the empty state as organization ciphers cannot be archived but also could imply that the user can have archived org ciphers.

Image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good point. Will bubble this question up. If any further implementation I'll add it in another ticket.

Copy link

sonarqubecloud bot commented Oct 1, 2025

@Jingo88 Jingo88 added the needs-qa Marks a PR as requiring QA approval label Oct 1, 2025
@Jingo88 Jingo88 requested a review from nick-livefront October 2, 2025 15:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-qa Marks a PR as requiring QA approval
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants