Changelog

Latest release: v2.2.5

Release number loads from GitHub. Full history stays in repository changelog.

CHANGELOG for Again, Why Salesforce

All notable changes to this project are documented here.

Format follows Keep a Changelog and Semantic Versioning.

Please remember that this project is entirely funded by the support of its users; if you'd like to send a tip, click here.

v2.2.5

๐Ÿ›  Changed

  • Changed how the translations are returned, not requiring to get the translation instance everytime (#186)
  • Squashed modal explainer into parent function (#185)
  • Improved callback management using optional chaining and default returns (#189)
  • Replaced confirm calls with our own confirm modal (#187)
  • Toast messages now show the extension name as title (#210)

๐Ÿ› Fixed

  • Changing color of your Tabs would not be visible from the settings page
  • Translator would request multiple times the same locale file due to mismanagement of current language
  • Hunted runtime errors which would break the flow (#210)
  • "open" action on updated Tab from Manage Tabs modal now opens the updated link (#210)
  • Improved secure use of regex to match Salesforce tab (#184)
  • Manage Tabs modal now saves the correct number of pinned Tabs (#210)
  • Import now shows a new option to import the number of pinned Tabs which will be added to your list (#210)
  • Open Other Org modal would work only on odd-numbered openings (#210)
  • Save / Remove Page would send 2 toasts (#210)

๐Ÿงช Tests

  • Added Logging Auditor & tests
  • Added tests for new exports of translator file

๐Ÿ’พ Repository

  • Refactored to use runtime + module for easier testing (#176)
  • Updated README images which link to webstores (#210)

๐Ÿ” Privacy

v2.2.4

๐Ÿ›  Changed

  • Improved parallel tasks for faster responsiveness
  • Better use of Promises all around the extension

๐Ÿ› Fixed

  • Settings and Popup now use bundled js files for direct comparison between development environment and production environment

๐Ÿ’ฅ Removed

  • Removed use of Analytics Date due to previous version use of a standalone setting (EXTENSION_LAST_ACTIVE_DAY)

๐Ÿงช Tests

  • Added tests for removal of analytics date
  • Added tests for build step
v2.2.3

๐Ÿš€ Added

  • Added data_collection_permissions for Firefox (#137) which made us bump its min-version to 140

Salesforce

  • Allowed import by drag-and-drop on Firefox (#156)
  • Extensively added assistive texts (#136)

Settings

  • Added theme change in settings (light/dark) which syncs with the popup (#129)
  • An onboarding Tutorial has been created! (#135)
  • Added Help (?) button to link to the wiki

Components

  • Created new component for theme handling

๐Ÿ›  Changed

  • Now using way less loose strings for message exchanges and instead relying on constants

Salesforce

  • The review and sponsor images are now shown after 20 / 40 days of use even if the user does not have the required Tabs (#138)
  • Moved Simple Analytics to its own file (src/salesforce/analytics.js)
  • Created new file to guard against once-a-day functions (#145)

๐Ÿ› Fixed

Salesforce

  • Added queue for transactional messages from background page (#142)
  • Fixed context menus sometimes not shown until browser tab switch (#148)
  • Removed initalization race which could lead to losing Tabs sometimes (#141)

๐Ÿงช Tests

  • Added test for new review / sponsor logic
  • Added tests for analytics
  • Added tests for theme change behavior
  • Added tests for the new tutorial
  • Added tests for new global functions
  • Added tests for new function in TabContainer
  • Created tests for yet untested files (#155)
v2.2.0

This release represents the turning point with which we run away from "Why Salesforce" as we've addressed the most central bit of the extension: Tab Management.

In this new version, you won't have to deal with the popup as much since you'll be able to manager your Tabs from the WAY BIGGER space in your Salesforce Setup page.

To celebrate this even more, we're introducing the ability to have pinned Tabs which will always stay at the top of your list until you unpin them.

๐Ÿš€ Added

Salesforce

  • New Context menus to temporarily hide Org Tabs OR Generic Tabs (#109)
  • New Sorting options (settings + context menus): sort by Usage (number of times the Tabs were clicked) or by Date (last time the Tabs were clicked) (#113)
  • During import, new option to import the metadata from point 2 or skip such data
  • New feature to pin Tabs at the beginning of the list (#114) they'll have a different background for easier identification
  • New Context menus to pin or unpin Tabs
  • New Context menus to remove pinned / unpinned Tabs
  • New Export modal to select which Tabs to export (#80)
  • New Import modal to select which Tabs to import (#81)
  • New context menu item to manage saved tabs without opening the popup (#120)
  • Updated logic of draggable items to take into consideration the pinned Tabs

Popup

  • Added a wrappers so that the images have a tooltip

Settings

  • New Settings Tabs to style pinned and unpinned Tabs
  • Added optional permission management to the main page (#123)
  • Added review and sponsor buttons at the top-right inside of review-sponsor-aws (#123)
  • Added a wrappers so that the images have a tooltip

Background

  • Created dedicated function to retrieve the style settings

Repository

  • Added eslint to check for JSDocs everywhere in src
  • New file export.js to deal with export
  • New file manageTabs.js to deal with managing Tabs specifically

๐Ÿ›  Changed

Salesforce

  • Updated the translator to increment the cache when it finds new translations while using placeholders
  • Updated css selector to check whether a Tab is pinned or not
  • Heavily refactored src/settigs/options.js
  • dragHandler now does not send messages, improving security
  • Updated the Simple Analytics path, removing the unnecessary version which was moved to utm_source #125
  • When moving your Tabs manually, the automatic sorting is now invalidated

Popup

  • Refactored review and sponsor into review-sponsor-aws

Settings

  • The settings previews now will show only the currently selected ones
  • The settings previews will automatically update from active / inactive state based on which input you're using
  • Choosing your color styles is now done through color pickers #132

Background

  • Refactored function to create default styles

๐Ÿ’ฅ Removed

  • Removed difficult to find popup Tab management (#122)
  • Unused static method Tab.update() (was only used in tests)
  • Unused static methods in TabContainer (were only used in tests)

๐Ÿงช Tests

  • Added tests for the new metadata fields on Tab and for their sorting options
  • Added tests for pinned Tabs
  • Added tests for new translator feature
  • Added tests for pinned Tabs export
  • Added tests for review-sponsor component
v2.1.0

๐Ÿš€ Added

Salesforce

  • Allow sorting options for saved Tabs (by Label, by URL, by Org; ascending and descending). Read the wiki
  • Context menus (right-click Tab) now offer one-shot sort actions.
  • New setting: "Keep Tabs sorted" to always auto-sort Tabs.

Popup

  • Added new button to send a review from your browser's store page (detected dynamically).
  • Added new button to sponsor the project (any amount is appreciated).

Settings

  • Interactive help icons next to every setting in the Options page.
  • Clicking a help icon opens documentation if a URL is provided.
  • Ensured settings interactions do not conflict (e.g., disabling "Add Tabs in Front" when persistent sorting is enabled).
  • Improved layout, grouping, and responsiveness; added toast notifications for saved settings.
  • New Setting to always add new Tabs as "Org Tabs".
  • New Setting to always place new Tabs at the front.

Localization

  • New translation strings for Tab sorting (ascending, descending, by Label, URL, Org) in all supported languages.
  • Help/documentation strings for every setting.
  • UI strings for context menu sort actions, sorting errors, and new manifest descriptions.

๐Ÿ›  Changed

Salesforce

  • TabContainer now tracks sorting state and direction.
  • Improved feedback for Tab sorting actions.

Settings

  • Refreshed settings layout and grouping for clarity.
  • Improved responsiveness and visual feedback (toasts) for settings changes.

Documentation

  • Updated README with a link to the new wiki page for Tab Sorting.
  • Documentation/help references throughout settings and README.

Repo

  • Created src folder and moved extension-related scripts into it.
  • Updated deno.json to point to src instead of ./ for imports.
  • Refactored other files accordingly.

๐Ÿ› Fixed

General

  • Improved interaction between persistent sorting and manual Tab placement settings to prevent conflicting behaviors.

๐Ÿงช Tests

  • Extended test coverage for Tab sorting, persistent sorting, and settings UI interactions.
  • Created tests for background files.
  • Created scaffolding for tests of salesforce and popup files.
v2.0.2

๐Ÿ›  Changed

Tab Management

  • Refactored how Tabs are identified and manipulated to include org (organization) as a first-class property alongside label and url.
  • All Tab management operations (move, remove, update, etc.) now consistently distinguish Tabs with the same URL but different orgs.
  • Improved the logic for moving Tabs: Tabs now skip over org-specific Tabs that don't match when reordering.
  • Enhanced removal of Tabs to prevent deleting org-specific Tabs from other orgs by mistake.

API & Internals

  • Refactored TabContainer.getTabsByData and related functions to support strict and flexible organization matching.
  • Updated TabContainer.getSingleTabByData to better handle ambiguous/multiple matches and provide clearer errors.
  • Improved test coverage for org-specific Tab operations, edge cases, and ambiguity handling.

UI & Salesforce Integration

  • Context menu and keyboard commands now pass org information when acting on Tabs.
  • Tab operations in Salesforce content scripts now consistently use org data, ensuring correct Tab manipulation across orgs.
  • Updated the favourite button and logic to detect org-specific Tabs.

๐Ÿ› Fixed

Tab Management

  • Fixed bugs where actions could affect the wrong Tab if multiple Tabs shared the same URL but belonged to different orgs.
  • Resolved edge cases in Tab reordering and context menu handling involving org-specific Tabs.
  • Improved error messages and prevention of ambiguous Tab operations.

UI

  • Addressed inconsistent state of the favourite button when multiple Tabs have the same URL but different orgs.
  • Fixed potential UI errors when updating or toggling Tabs with incomplete org information.

๐Ÿงช Tests

  • Significantly expanded automated tests for Tab management, especially for edge cases involving org-specific and ambiguous Tabs.
  • Added new test steps for moving and removing org Tabs, verifying correct behavior and error handling in complex scenarios.
v2.0.1

๐Ÿš€ Added

Updates to the extension

  • Created Tab.isDuplicate() to check if a Tab exists with or without org.
  • Updated use of TabContainer.exists(), for duplicate prevention and check for current href link.
  • Track new users on the extension using /version/new-user

๐Ÿ›  Changed

Salesforce

  • Send ping for analytics only once a day (added date key to check for this).

Background

  • Allow export on browsers other than Chrome / Firefox / Safari (removed strict check for Safari after Chrome and Firefox).

Updates to the extension

  • A Tab was considered duplicate only based on the url; now multiple Tabs may exist with the same url but different org values.

Updates to the repository

  • Updated Privacy Policy to reflect new storage options used for analytics.

๐Ÿ› Fixed

Salesforce

  • Fixed toast message showing html break (<br />) by inserting more div elements when there's a line break in the text (\n) instead of one single span with the text only.
  • Fix drag and drop of Tabs not working (due to using our own ul from v2.0.0).

Popup

  • Fix drag and drop of Tabs not working (due to using our own ul from v2.0.0).
v2.0.0

๐Ÿš€ Added

Salesforce

  • Custom <ul> element for Tab storage (we were relying on one available in Salesforce Setup before)
  • Keyboard shortcuts for common actions
  • On-screen notification when a new extension version is available
  • "Update Tab" directly from a Salesforce Setup modal via context menu (without opening the popup)
  • Option to open "Open in Another Org" links in the same browser tab or in a new tab

Popup

  • Created popup used to request optional permissions.

Updates to the extension

  • Full localization support for all languages listed here
  • New extension settings page
  • Safari rollout, plus a dedicated Safari Installation Guide
  • Simple Analytics integration for user metrics

Updates to the repository

  • CHANGELOG.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md and SECURITY.md added
  • README.md reordered for better flow

๐Ÿ›  Changed

Salesforce

  • SVG-based star and slashed-star icons (replacing PNGs); they now work seamlessly when using another extension to switch to dark mode

Updates to the repository

  • Updated Privacy Policy to reflect new storage options used by settings

๐Ÿ› Fixed

Updates to the repository

  • Corrected JSDoc comments throughout the codebase

โš ๏ธ Breaking Changes

  • Removed support for the tabTitle field in saved configurations
v1.4.8

This release re-adds the lightning.force.com pattern for Setup pages. This is needed due to production orgs not yet using the my.salesforce-setup.com pattern.

For this version, you may still import Tabs using tabTitle and url (and org); however, from version 1.5.0, you'll have to import Tabs using label and url (and org). All versions of the extension until verion 1.5.0 will automatically redownload the imported list of Tabs with label instead of tabTitle. We thank you for your understanding.

v1.4.7

This release presents a new screen used in the popup that is used to request permanent access to Salesforce Setup pages. This is needed due to the last release using only activeTab.

For this version, you may still import Tabs using tabTitle and url (and org); however, from version 1.5.0, you'll have to import Tabs using label and url (and org). All versions of the extension until verion 1.5.0 will automatically redownload the imported list of Tabs with label instead of tabTitle. We thank you for your understanding.

v1.4.6

This release contains a fix to Chrome's export feature and the removal of the tabs permission (only using activeTab now).

For this version, you may still import Tabs using tabTitle and url (and org); however, from version 1.5.0, you'll have to import Tabs using label and url (and org). All versions of the extension until verion 1.5.0 will automatically redownload the imported list of Tabs with label instead of tabTitle. We thank you for your understanding.

v1.4.5

This release contains various improvements such as allowing for org-specific Tabs and it also fixes some bugs from the previous version.

For this version, you may still import Tabs using tabTitle and url (and org); however, from version 1.5.0, you'll have to import Tabs using label and url (and org). All versions of the extension until verion 1.5.0 will automatically redownload the imported list of Tabs with label instead of tabTitle. We thank you for your understanding.

Bugs squashed

Context Menus

  • Fixed accidental removal of Context Menu Items after a period of time (by performing a check after a while) #48.

Salesforce

  • Fixed synchronization of Tabs between browser's tabs and windows #42;
  • Prevented the creation of multiple modals (it is now required to close the previous one) #41.

New Functionality

Salesforce

  • More usage of the Toast Message, showing errors when something fails (and also info or warning) #44;
  • Improved the Open Other Org modal (now using text boxes instead of disabled input fields);
  • Changed Import modal to resemble Salesforce's modals #41;
  • When a Tab is org-specific, it is shown in bold in the Setup bar #30;
  • When saving a new Tab using the favourite button, the URL is checked to match the Salesforce Ids pattern. If the URL is found to have an Id, it is saved as org-specific automatically #30;
  • Tabs which are org-specific but related to another org, will not be shown and their position will remain fixed #30;
  • Context Menu Items now feature Emojis for faster recall.

Popup

  • When a Tab is org-specific, a checkbox next to its URL is ticked #30;
  • Tabs which are org-specific but related to another org, will not be shown and their position will remain fixed #30.

Updates to the repository

  • Implemented Tab object for dealing with user's picked Tabs; #50;
  • Removed call to background page to minify/expand/else a URL (now it's done in Tab);
  • Implemented TabContainer object for managing the user's picked Tabs;
  • Implemented tests for Tab and TabContainer classes;
  • Renamed tabTitle to label for Tab objects; #50;
  • Tests have been added to the PR and Push pipeline.
v1.4.4

This release contains fixes to bugs found in the previous version

Bugs squashed

Salesforce

  • Fixed bug about context menu items being removed and never available after browser timeout;
  • Fixed issue where the open other org menu item would get stuck when trying to open developer edition orgs + added toast error when the URL does not match the regex used to check it;
  • Fixed issue where context menus would not be available inside Salesforce Setup frames;
  • Added more listeners to know when the user changes window / tab to show the context menus only in Salesforce Setup.
v1.4.3

This release contains fixes to bugs found in the previous version

Bugs squashed

Salesforce

  • Fixed bug when trying to open a link in another Org: when the link is not a Salesforce Setup page, /setup/lightning/ was added anyways;
  • Fixed bug about context menu items not being reloaded when the browser was closed and reopened.
v1.4.2

This release contains various improvements which are both quality of life and new function like opening a link into another org.

New Functionality

This release contains the new features listed below from the previous version.

Popup

  • Drag functionality improved;
  • Improved color theme update speed for Chrome;
  • When not in Salesforce Setup, the button opens a new tab into the same browser container.
  • Uses background scipt to minify a pasted URL;
  • Better reacts to user input: when both title and URL are filled in, creates a new row but when this is no longer true, the row gets deleted;
  • Implemented warning when the URL inserted is already been saved before;
  • Actually removes the disabled attribute instead of setting it to false (Chrome did not like it).

Salesforce

  • Drag functionality improved;
  • Uses background scipt to minify a pasted URL;
  • Implemented warning when the URL inserted is already been saved before;
  • Implemented context menu items to simplify use of the extension (honorable mentions: "Open in another Org", "Make first/last", "Remove tabs to the left/right");
  • During import, if an issue occurs, a toast message is shown explainig the error;
  • During import, if the user imports some duplicates willingly, a toast message is shown to let them know about it;
  • First implementation of Salesforce's modals (can be seen when trying to open a link or page in another Org);
  • Toast messages now have a dynamic time to persist based on how long the text inside of them is;
  • Toast messages now come in 4 different flavours: success, info, warning, error;
  • Saved tabs URLs which are not linked to another Salesforce Setup page, now open into a new tab by default;
  • Updated "Flows" default tab to the new Standard App (outside of Salesforce Setup);

Updates to the repository

  • Moved themeHandler.js up one directory;

2. Updated some checks made through ` to ??`;

  • Added contextMenus permission;
  • Refactored content.js into favourite-manager.js, generator.js, import.js based on where each functionality (and constants) could've been a better fit;
v1.4.1

This release contains updates to the repository after the initial release on the various platforms and some quality of life improvements.

New Functionality

This release contains the new features listed below from the previous version.

Popup

  • Updated button colors on light and dark modes

Salesforce

  • Import check of the chosen file;
  • Error popup on import error;
  • Ability scroll with mouse left-right when adding a lot of tabs;
  • Ability to override currently favourited tabs during import operation;
  • Now using Lightning Navigation when switching to another Setup page.

Updates to the repository

  • Updated links to the stores;
  • Updated gh command used in action;
  • Removed BSD license after talking to walters954 (the owner of the upstream repo);
  • Added screenshots of the extension in action (also used on the marketplaces).
v1.4.0

This release constitutes the baseline from which this extension will be developed.

This version number was chosen because this project was forked from Why Salesforce when it was at version 1.3. We've added a patch version number as well.

New Functionality

This release contains the new features listed below from the previous version.

Popup

  • Autosave;
  • Highlight of the currently focused input field;
  • Cleaner referenced URLs by omitting /lightning/setup/ (you can still write / paste any URL);
  • Automatic creation of a new row when all the previous ones are filled in;
  • Ability to reorder the tabs by dragging;
  • Button to delete all entries;
  • Import and Export functionality;
  • Light / Dark mode;
  • Link to this repository;
  • Button to redirect to Salesforce login when not on a Salesforce page;
  • Button to redirect to Salesforce setup when on a different Salesforce page.

Salesforce

  • Native Salesforce toast message to show the user a change has been completed (or not);
  • Native Salesforce import selector / drop area to import a .json file with the tab names and referenced URLs;
  • Ability to reorder the tabs by dragging;
  • Highlight of the saved tab when on its referenced page;
  • Dynamic creation of a favourite / unfavourite current page button;
  • Reload of tabs when a new one is added / when one (or more) is deleted.

Updates to the repository

  • Refactoring of the whole code;
  • Creation of dedicated directories;
  • Creation of our own license (when the project was forked, there was none available. Now we feature both the one we picked and also the one from the original project);
  • Updated logo to clarify our existence;
  • Use of Deno v2 instead of Node;
  • Removed manifest.json from the repository and used template-manifest.json to hold all different attributes for the extension and build-manifest.mjs to create the manifest.json depending on which browser you want to use.