LinkedIn Tool

Minor enhancements to LinkedIn. Mostly just hotkeys.

These are versions of this script where the code was updated. Show all versions.

  • v22 2026-05-13

    Fork a custom version of inInput() for testing.

    Unsure how to identify input types that want to take keyboard input. So capturing extra information for a while.

    Issue #325.

    Mix in how the uid was computed.

    This will be easier than logging.

    Issue #302.

    Use own ariaLabel if present.

    Issue #302.

    Move bottomMargin* support from Scroller to CSS.

    This has been a fixed setting for a while. We can due this migration while migrating to per-page settings for the top margin.

    Issues #240, #322.

    Update release notes.

    Bump version number.

  • v21 2026-05-11

    Rework how Topcard entries are detected.

    Move up a level in the HTML tree, resulting in only on-or-the-other responsive mode set of message/follow/connect buttons being selected.

    Still some disconnected between personal/editable profile and others.

    Issue #302.

    Retire the old keyboard and shortcut generation support.

    Issue #320.

    Move CSS definitions around and rename the classes.

    Issue #240, #322.

    Move a temporary hack into LinkedIn.

    Issue #240, #322.

    Rename LinkedInScrollerService back to ScrollerService.

    This effectively rolls back fd045a7.

    Issues #240, #293.

    Update release notes.

    Bump version number.

  • v20 2026-05-10

    Reset scrollerId on attribute change.

    Issue #300.

    Add aria-label as a source for uids.

    Issue #302.

    Retire the old start(), activate(), and deactivte() methods.

    Issue #320.

    Update release notes.

    Bump version number.

  • v19 2026-05-09

    Provide option to observe attributes inside the container.

    Only logs at the moment.

    Issue #300.

    Make negative carousel selector similar to the positive one.

    Issue #302.

    Use the src property similar to how we use href.

    Issue #302.

    Stop supporting all Topcard background images (for now).

    For premium carousels, it did nothing useful. For regular backgrounds, the selector seems to have changed.

    Issue #302.

    Retire the old pageName and pageId getters.

    Issue #320.

    Update release notes.

    Bump version number.

  • v18 2026-05-08

    Adopt NH.spa.WatchPage as an option.

    Issue #321.

    Retire the pageName shim.

    Issue #320.

    Change how #mutationHandler() processes records.

    Rather than firing a generic records event, the records will be gathered up by type and dispatched that way.

    This will allow us to register separate handlers for different types.

    Issue #300.

    Normalize how const me = is set.

    These were missed in df63288.

    Issue #293.

    Support the Activity -> Newsletters subsection.

    Issue #302.

    Replace old done() method with a listener for initialize.

    Missed in earlier steps of the SPA migration.

    Issues #286, #303.

    Update release notes.

    Bump version number.

    Remove errant blank line.

    Issue #302.

    Fine-tune Highlights negative selectors.

    Issue #302.

    Tweak how uid is computed for Activity -> Comments.

    Issue #302.

  • v17 2026-05-06

    Retire the original SPA implementation in favor of the new.

    The refactored version has fewer features. The missing ones really are site specific and moved into the Details class, LinkedIn.

    Closes #130, #286.

    Retire use of the spa-meatball CSS class.

    Issue #286.

    Remove stale TODO.

    Issue #150.

    Normalize how const me = is set.

    Issue #293.

    Support the Featured section.

    Issue #302.

    Force a checkbox to always be visible.

    Closes #311.

    Retire the readySelector shim.

    Issue #320.

    Update release notes.

    Bump version number.

  • v16 2026-05-05

    Restrict current carousel handling to Activity -> Posts.

    Issue #302.

    Make the News tabs focused if appropriate.

    Issue #311.

    Rename #newsHandler() to #newsReadToggleHandler().

    Issue #311.

    Fix logic error in handling toggling a checkbox.

    Issue #311.

    Update release notes.

    Bump version number.

  • v15 2026-05-04

    Update to the latest version of lib/spa.

    Issue #286.

    Add a developer setting for selecting SPA implementation.

    Issue #286.

    Improve detection for the Activity section name.

    Issue #302.

    Improve selector for the Analytics section.

    There is a another section, "Suggested for you", that has the same svg, but different internal layout.

    Issue #302.

    Track section names derived from h2 so maybe we can do better.

    Issue #302.

    More partial ordering pairs.

    Issue #302.

    Minor tweak to News header.

    Replace "focus on News tab" with a checkbox to mark read.

    Issue #311.

    Update release notes.

    Bump version number.

  • v14 2026-05-03

    A new partial ordering pair.

    Issue #302.

    Support the Services section.

    Issue #302.

    Update release notes.

    Bump version number.

  • v13 2026-05-02

    Delete some of the SPA related handling of News and Errors.

    Issue #130.

    Explicitly capture Profile sections partial orderings.

    No single Profile has every section. Before, the list of known sections was being tracked manually. This allows allows us to capture sections as we stumble across them, and to maintain the likely ordering as determined by a topological sort.

    Issue #302.

    Update release notes.

    Bump version number.

  • v12 2026-05-01

    Change use of a bare Error to Scroller.Exception.

    Closes #308.

    Make the new Info view the only one.

    Lots of old code still needs to be ripped out.

    Issue #130.

    Initial implementation of uniqueSectionIdentifier().

    Issue #309.

    Improve support for the About section.

    Issue #302.

    Update release notes.

    Bump version number.

  • v11 2026-04-30

    Remove some blank lines to normalize code layout.

    Issue #251.

    Create LinkedIn.h1() to go along with h2().

    Issue #251.

    Plug the License tab into the new Info view.

    Also, actually remembered to clone the nodes this time!

    Closes #182.

    Support the Highlights sections.

    Issue #302.

    Update release notes.

    Bump version number.

  • v10 2026-04-29

    Remove errant debug statements.

    Initialize an HTMLElement for holding the fetched license.

    Issue #182.

    Copy the central copy of the license to each tab.

    Currently only one tab.

    Issue #182.

    Initialize implementation of uniqueInvitationIdentifier.

    Issue #307.

    Replace a bad RegExp with computing an explicit prefix to strip.

    The prefix to strip is also available in other places, such as the Message button. But that is not available on all profiles.

    Issue #302.

    Use h2 content as a possible uid.

    Issue #302.

    Debounce loading the license with better state tracking.

    Issue #182.

    Add a small highlight to code elements in the Info view.

    Issue #184.

    Reflow CSS for consistency.

    Issue #184.

    Tweak icon styling to match site.

    Issue #106.

    Update release notes.

    Bump version number.

  • v9 2026-04-28

    Normalize how #licenseHandler() is registered.

    Issue #182.

    Post errors if #currentItemWatcher() times out.

    Issue #289.

    Support the Topcard.

    Issue #302.

    Rework Page into an adapter for spa/Page.

    Issue #286.

    Update release notes.

    Bump version number.

  • v8 2026-04-27

    Force a focus event when closing the info dialog.

    Not quite sure why this is needed. We know that after closing the dialog, focus moved back to whatever was the previous focus, but no focus event was sent, or at least not caught. So explicitly send it.

    It is possible that something (perhaps VM.shortcut itself) is capturing the event and preventing it from propogating to our handler during this particular transition.

    Closes #119.

    Populate the LIT Errors tab with information.

    The old and new variations will get out of sync if users edit it textarea, but that should not be an issue in reality.

    Closes #181.

    Update various TODOs.

    Issues #297, #298, #302.

    Only compute href's pathname once.

    Issue #302.

    Update release notes.

    Bump version number.

  • v7 2026-04-25

    Turn a couple of private methods into arrow functions.

    Joys of using an older eslint.

    Move setting the issues listener to the tabs handler setup.

    Issue #181.

    Introduce multi-div CSS selectors.

    A number of these will be used in Profile.

    Issue #302.

    Attempt to reconnect current item.

    Setting the item will check that it is valid.

    Closes #239.

    Update release notes.

    Bump version number.

  • v6 2026-04-24

    Update to latest version of lib/spa.js.

    Issue #286.

    Revert "Remove an apparently no longer needed Style-2 error badge tweak."

    This reverts commit 36187418082d2c8e15be88bf025f6e24aef85bc0.

    Apparently this IS needed.

    Issue #106.

    Fix indententation.

    Create #addInfoTabsHandlers() for the new info dialog.

    Issue #181.

    Skip the Topcard carousel that some profiles have.

    Issue #302.

    Ignore the opacity CSS property for the News badge.

    Issue #106.

    Update release notes.

    Bump version number.

  • v5.144 2026-04-23

    Remove color override for the TabbedUI.

    It not longer appears necessary, and prevents a subsequent change.

    Issue #106.

    Add styles for positive (green) and negative (red) colors.

    Issue #106.

    Identify updates with a green badge and highlight the News tab.

    Closes #106.

    Update release notes.

    Bump version number.

  • v5.143 2026-04-22

    Toggle the News badge as appropriate.

    Still not connected yet, so this has no effect.

    Issue #106.

    Rename docTab to aboutTab and make it a static method.

    Hoist up some colors as CSS custom properties.

    Issues #106, #181.

    Remove the text length check from #isItemViewable().

    Not the best solution, but will do for now. It appears that the original reason for this, Feed, no longer needs it. And it interferes with image only carousels.

    Would not be surprised if a future version will need this as a tunable.

    Closes #298.

    Ignore a couple of more Style-2 badge properties.

    Update release notes.

    Bump version number.

  • v5.142 2026-04-21

    Include the VM.shortcut version in the bug reporting information.

    Also clean up some related docstring grammar.

    Issue #303.

    Rename an internal variable to be closer to the external API.

    Issue #303.

    Detect when the news badge should be set.

    It will be turned off as soon as the News tab is read.

    Issue #106.

    Use latest version of lib/spa.

    Issue #286.

    Split the issues queue, one each for the two error tabs.

    MessageQueue, like the default issues one, can only have one listener. So tee it while we migrate to the new info dialog.

    We will still have an issue of trying to "join" the badges signal. But since the new dialog is still behind a flag, unlikely to cause any real user problems.

    Issues #130, #181.

    Update release notes.

    Bump version number.

  • v5.141 2026-04-20

    Remove an apparently no longer needed Style-2 error badge tweak.

    Issue #106.

    Use a better color for the Style-1 news badge.

    The colors on a different monitor were way off. This one is actually a green.

    Issue #106.

    Fine tune the positioning of the Style-1 news badge.

    Issue #106.

    Prepare a "News" badge for Style-2 pages.

    Connecting to the DOM is not yet enabled. That will happen once detection is in place.

    Issue #106.

    Enhance errorTab() to take a variant parameter during migration.

    Issue #181.

    Add an Errors tab to the new info dialog.

    Not yet wired into error notifications.

    Issue #181.

    Make enableKeyboardService the only implementation.

    They old stuff is still needed in Page, as that is still used to build the older info dialog.

    Issue #130.

    Update release notes.

    Bump version number.

  • v5.140 2026-04-19

    Another tweak for icon for navbar placement.

    Issue #106.

    Update how ignore is populated.

    Now that it is no longer reused, the variable can be initialized where it is used (again).

    Issue #106.

    Move error tab creation from SPA to LinkedIn.

    Issue #181.

    Pick up the lastest version of the spa library.

    This picks up the fix for propert cleanup after displosing a SPA (which mostly happens in tests).

    Issue #286.

    Implement a better uid for Activity > Images.

    Issue #302.

    Update release notes.

    Bump version number.

  • v5.139 2026-04-18

    Ignore more CSS properties computed based upon content.

    Issue #106.

    Factor out the error badge check.

    Once a similar check for the upcoming news badge is in place, the original function will be too long.

    Issue #106.

    Remove the #keyboardService class variable.

    Never used.

    Issue #130.

    JSDoc: Normalize info view tabs.

    Issue #130.

    eslint: Fully disallow name as a local variable.

    Closes #238.

    Migrate errorMarker from SPA to LinkedIn.

    Issue #181.

    Update the icon to better handle resizing/placement in the navbar.

    Issue #106.

    Update release notes.

    Bump version number.

  • v5.138 2026-04-17

    Ignore width and inline-size CSS properties.

    The setting is width: content-size, making those values dependent on the content.

    Issue #106.

    Fix a function name.

    Issue #106.

    Make enableScrollerChangesFocus the only implementation.

    Closes #232.

    Stop shadowing the global name.

    This change only addresses AccordionTableWidget.

    Issue #238.

    Base uid upon a link search parameter.

    Issue #301.

    Update release notes.

    Bump version number.

  • v5.137 2026-04-16

    Prepare a "News" badge for Style-1 pages.

    Connecting to the DOM is not yet enabled. Still need to do Style-2 and then add the code to turn it on and off. But a good point to check in.

    Decided that since this Style-1 badge is also just tweaking an existing badge (like is done for the error badge), there is currently no need for comparing against another one.

    Issue #106.

    Update to latest version of focusOnTree() to simplify code.

    Issue #232.

    Update to latest version of licenseData() for the new property.

    This provides a simple way to remove a shadowed variable.

    Issue #238.

    Document why defaultUid() is used here.

    Issue #251.

    Rename some variables and move connection check around.

    Issue #106.

    Clean up the CSS for the Style-2 error badge a bit.

    Issue #106.

    Update release notes.

    Bump version number.

  • v5.136 2026-04-13

    Rename #badgeResultsStyle2 to #badgeErrorResultsStyle.

    Issue #106.

    Restrict secondary scrolling to More jobs in JobsView.

    Issue #301.

    Move the remaining items from LinkedInGlobals to LinkedIn.

    Closes #252.

    Update release notes.

    Bump version number.

  • v5.135 2026-04-12

    Factor out finding style differences to a reusable function.

    Issue #106.

    Stop shadowing the global name.

    This change only addresses uses of Service.

    Issue #238.

    Ensure the primary item is visible during secondary scrolling.

    This is an experiment currently restricted to My Network.

    I do not think this looks good on pages with longer primary scrollers, like Feed, that might have lots of items in the secondary scroller (e.g., comments). In those cases, it ends up pinning the current comment on the bottom of the page. But for pages where the secondary scroller has fewer items that are likely to always fit, this might work better.

    Another solution might be to modify how snapToTop works in Scroller.#scrollToCurrentItem().

    Mostly this impacts the case where the users the browser to scroll down the page (arrow keys, mouse), moving the current primary item off the page, then use next/prev on the secondary scroller. Rather than just scrolling the current secondary item into view, the primary will be done first, then secondary.

    Issue #232.

    Move primaryNavSelector from LinkedInGlobals to LinkedIn.

    Issue #252.

    Add chaining support to a couple of VMKeyboardService methods.

    Issue #106.

    Partially handle the About section on the Profile page.

    Issue #297.

    Update release notes.

    Bump version number.

  • v5.134 2026-04-11

    Move some code badge specific code to the new function.

    Issue #106.

    Migrate to using the refactored version of focusOnTree().

    Issue #232.

    Migrated a few users of focusOnElement() to focusOnTree().

    The sidebars are less dramatic, but probably more accurate.

    Issue #252.

    Update section selector for the Jobs page.

    A new attribute was added to a "Show all" button, throwing things off.

    Add VMKeyboardService to the InvitationManager page.

    Issue #130.

    Handle Featured and Activity sections on the Profile page.

    Mostly.

    Issue #297.

    Stop shadowing the global name.

    This change only addresses uses of Object.entries(), changing them to key/value instead.

    Issue #238.

    Update release notes.

    Bump version number.

  • v5.133 2026-04-10

    Migrate known issues from string|object to a class.

    I should have done this at the beginning of this migration to adding dates to issues. Just give each one a unique date so they do not all time out at the same time.

    Change what element #badgeErrorStyle1 points to.

    For the news badge, we want to clone this element so this will simplify that code.

    While the element that gets innerText updated is changed, it is consistent with how the Style-2 error badge gets classes updated.

    Issue #106.

    Make sure all Scroller.dispatcher.on() are using chaining.

    Also make sure they are alphabetized by event.

    Issue #232.

    Introduce a new focusOnTree() function.

    This factors out a recent change in Scroller.focus() for reuse by other functions. Specifically, functions about to be migrated across classes.

    Issues #232, #252.

    Handle the Analytics section on the Profile page.

    Issue #297.

    Update release notes.

    Bump version number.

  • v5.132 2026-04-09

    Move a couple of functions from LinkedInGlobals to LinkedIn.

    Issue #286.

    Factor out assembling of the badges.

    When we add the news badges, the #createMenuItem functions will get too long. This also has the side effect of rearranging code a bit so the two styles look more similar.

    Issue #106.

    Update pageReadySelector for Notifications.

    The old selector does not work when there are no notifications. This same selector is also used with JobsCollections.

    Fire focus/focused events inside Scroller.

    Included both present and past tense to be consistent with Widget.

    One use case is that secondary Scrollers can call show on a primary one to make sure it is visible as well.

    Issue #232.

    Match the Show all button on the Profile page.

    Issue #297.

    Change uidCallback to include the class name.

    While the use of this is fine here, this change makes them consistent with how me is set inside the function itself.

    It also makes grep easier to use.

    Issue #251.

    Include the fakeErrorRate in the dummy/test error messages.

    Update release notes.

    Bump version number.

  • v5.131 2026-04-08

    Move LinkedInGlobals.Style to LinkedIn.Style.

    Issue #286.

    Rename badges from type-badge to badge-type.

    Issue #106.

    Rename uniqueIdentifier to uniqueNotificationIdentifier.

    This was the only Scroller~uidCallback where the callback used the same name as the associated local variable.

    Issue #251.

    Use Scroller.focus() for all focus attempts (behind option).

    Issue #232.

    Put active keyboard services first in the new shortcuts tab.

    Not quite the eventual accordion, but it puts the ones we care about at the top. And sections stay in relative order.

    Issue #130.

    Add a list of known sections on the Profile page.

    Issue #297.

    Enhance a logging statement for easier filtering.

    Issue #298.

    Move ckeyIdentifier() from LinkedInGlobals to LinkedIn.

    Issue #286.

    Update selector to load more Feed comments.

    Update Feed comments selector.

    Deleted comments no longer have an anchor that can be used for identification.

    Replace a deprecated exception with the modern name.

    Issue #259.

    Update release notes.

    Bump version number.

  • v5.130 2026-04-07

    Update to most recent version of all libraries.

    Update Feed comment selectors.

    Add a timeout to Page.#waitUntilReady.

    Issue #297.

    Update how the flagged version of Scroller.focus() is implemented.

    Instead of always focusing on the current item, it will move browser focus to the first known focusable self-or-child element.

    Will likely need fine tuning, or some sort of configuration.

    Issue #232.

    Allow Jobs.focus() to use the WIP Scroller.focus() work.

    Issue #232.

    Make all Scroller~uidCallback implementations consistent.

    Issue #251.

    Modify how HybridFixerService detects a hybrid page.

    Issue #295.

    Move a couple of consumers of LinkedInGlobals below LinkedIn.

    Issue #286.

    Create a library wide Logger instance.

    Issue #232.

    Partial update of Profile with Style-2 support.

    Every section on this page is different, and trying to find queries that work consistently has been difficult. Will revisit after some time away.

    Meanwhile, at least navigating along the sections works.

    Issue #297.

    Report old news before unused issues.

    The old news tends to be removed first, which can change the unused issues.

    Update release notes.

    Bump version number.

  • v5.129 2026-04-03

    Update JobsCollections.uniqueDetailsIdentifier for consistency.

    Issue #251.

    Rename a CSS class to be more generic.

    Issue #106.

    Rename a Scroller config property.

    Issue #293.

    eslint: Remove -1 as an allowed magic number.

    Add clickConfig to Jobs.

    Issue #241.

    Update release notes.

    Bump version number.

  • v5.128 2026-04-01

    Move the testing "errors" sooner in initialization.

    We want to ensure we set up the listener after we have a UI. The previous location was not properly testing that.

    Update a few doc strings.

    Rename ourMenuBadge to errorBadge.

    This makes room for future badges.

    Issue #106.

    Move LinkedIn higher in the script.

    Now that LinkedIn extends an external class, the location is a bit more flexible. Moving it up will allow us to merge in LinkedInGlobals.

    Issues #252, #286.

    Derive a couple of constants from the metadata block.

    eslint: Use the ONE_ITEM constant where appropriate.

    Make sure each Scroller~uidCallback logs an intro/outro.

    Issue #251.

    Move some constants from the ctor to the class.

    Issue #293.

    Bump version number.

  • v5.127 2026-03-31

    Remove an if (element) check.

    The caller ensures it exists, and not other Scroller~uidCallback implementations use it.

    Issue #251.

    Rename some callbacks.

    Issue #106.

    Move reloading of hybrid pages into a Service.

    It turns out that certains pages (like Jobs) would trigger the reload before the URL was updated, so it would simply reload the same page, rather than the target page.

    Now, as a service only used in Global, it gets triggered after the transition.

    Issue #295.

    Fix how sets are manipulated.

    This was plain wrong.

    Issue #296.

    Add a handler for the expose event on the News tabs.

    Will be used to turn off the News badge, once it exists.

    Issue #106.

    Factor out saving options for future use.

    Issue #106.

    Support dismissing Feed items that use a popup menu.

    eslint: Remove unused directives.

    Badge whac-a-mole.

    Issue #296.

    Update release notes.

    Bump version number.

  • v5.126 2026-03-30

    Ignore specific properties when comparing badges.

    The opacity property is controlled by the presence of any errors via lit-menu-error-badge-hide.

    Issue #296.

    Apply a minor HTML fixup.

    Issue #184.

    Update ul style to return bullet points and indentation.

    This is similar to what the spa-* styles use.

    Closes #184.

    Rename enableIssue244Changes to enableAlertUnsupportedPages.

    Issue #244.

    Fix typo in a logging statement.

    Provide an option for using the WIP keyboard service.

    Also enhance DebugKeys to take a logger.

    Issue #130.

    Post errors about old news items.

    Update release notes.

    Bump version number.

  • v5.125 2026-03-29

    Make uses of Scroller~What name: use string interpolation.

    Issue #246.

    Make uses of web.*~What name: use string interpolation.

    Since these all also use ${me}, added logging to a few methods as well.

    Closes #246.

    In the AccordionTableWidget, rows go into the current section.

    Issue #180.

    Tweak some lit-* CSS to be closer to spa-*.

    Issue #180.

    Add highlights to indicate current active hotkeys.

    Issue #180.

    Update the pathname: for Feed.

    When transitioning from Style-1 pages back to Feed, the pathname is /feed instead of /feed/.

    Issue #295.

    Fix minor typo in comment.

    Implement a temporary workaround for hybrid pages.

    This is a horrible hack that just reloads hybrid pages rather than handling them.

    Issue #295.

    Update release notes.

    Bump version number.

  • v5.124 2026-03-27

    Update the selector for Feed comments.

    Also updated the Scroller~uidCallback functions to a possible new standard.

    Issue #251.

    Move style installation out of SPA and into LinkedIn.

    Issue #286.

    Change how the Style-2 error badge is created.

    As stated in the Style-1 code:

    Making the assumption that the there is at least one item....

    Except, for Style-2, it seems less likely we will find one, as they are created lazily.

    So now we keep a pre-made class and do comparisons against canonical ones.

    There is a problem with scaling, so this is no complete until those are worked out. But is provides a framework.

    Issue #296.

    Fix issue caused by the recent News tab update.

    The content was changed from a string to an object, and missed updating where it was converted to HTML.

    Update release notes.

    Bump version number.

  • v5.123 2026-03-25

    Update how issue processing is handled for the News tab.

    Instead of logging and throwing an Error, post the info to the Errors tab.

    Track when globalKnownIssues were last reviewed for clean up.

    Only report about unused issues if they have not been reviewed for 30 days.

    Reporting is currently behind a flag.

    Replace SPADetails with NH.spa.Details.

    Basically, LinkedIn is now an adapter for the old SPA to the newer library.

    The old class really did not have much in it, as it was stalled with a previous refactor. This effectively put some stuff back into LinkedIn.

    Issue #286.

    Update the selector for the global search input.

    Unsure if this was missed earlier (since it still referenced data-view-name) or was a recent change.

    Update the SearchResultsPeople page.

    Still a WIP, so not much to do. Though a Filter focus feature was added before I remembered it was a WIP.

    Issue #209. Closes #292.

    Update release notes.

    Bump version number.

  • v5.122 2026-03-24

    Update the Events page.

    Still a WIP, so not much to do.

    Issue #236. Closes #291.

    Update release notes.

    Bump version number.

  • v5.121 2026-03-23

    Normalize some names and implementations.

    Implement Scroller.defaultUid().

    A slightly tuned Element.innerText.

    Issue #251. Closes #294.

    Update the Profile page.

    While still a Style-1 page, it was out of date.

    Closes #290.

    Run through ispell.

    Update release notes.

    Bump version number.

  • v5.120 2026-03-20

    Update the Notifications page.

    While still a Style-1 page, it was out of date.

    The most interesting change is the new Filter focus.

    Closes #283.

    Update release notes.

    Bump version number.

  • v5.119 2026-03-19

    Update the Messages page.

    While still a Style-1 page, it was of date.

    The biggest UX change is the Focused/Other tablist was replaced with a filter. This removed the need to observe the tablist.

    This page is annoying in that many actions change the URL triggering the whole activation sequence. The biggest impact seems to be that composing a new message would get reset because the URL change was treated as a page load. Previously this seems to have been handled by a complicated observer. This was replaced by simply reseting the appropriate scroller to the empty item.

    The fact that browsers now seem to react differently when focused elements get their tabindex value removed would probably have made getting the previous method difficult to get working again.

    Outside of that, mostly selector updates.

    Closes #279.

    Simplify some variable references.

    Update release notes.

    Bump version number.

  • v5.118 2026-03-19

    Depend on the GreasyFork hosted version of the spa library.

    Settings on the library have been fixed.

    Issue #286.

  • v5.116 2026-03-17

    Implement a LinkedInStyleService to verify site styles.

    Also assigned initial values for acceptable styles on many pages.

    Closes #284.

    Update release notes.

    Bump version number.

  • v5.115 2026-03-15

    Tweak styling of list items in the Information view.

    The Style-2 pages set list-item: none, so lists, like on the News tab, have no bullet points.

    Issue #272.

    Update the JobCollections pages.

    While still a Style-1 page, there had been some minor changes over time.

    The biggest different is the removal of the thumbs up/down hotkeys and a new one to move to the new tab list of additional collections.

    Issue #278.

    Rename JobCollections to JobsCollections.

    Issue #278.

    Verify that a toolbar exists before getting values from it.

    Issue #282.

    Update the implementation of the JobView page.

    Issue #278.

    Rename JobView to JobsView.

    Closes #278.

    Update release notes.

    Bump version number.

  • v5.114 2026-03-13

    Factor out a common Scroller~uidCallback implementation.

    May be registered via a Scroller~How type or called from inside one as a starting point.

    Also removed older code while migrating to using this new function.

    Issue #270.

    Update the implementation of the Jobs view.

    Currently only the main page. Related sub-pages are not yet migrated.

    Issue #278.

    Incremental improvement for element selection.

    Fix typo in placeholder variable name.

    Extra logging.

    Update release notes.

    Bump version number.

  • v5.113 2026-03-12

    Update My Network to the latest layout change.

    Utilitized techniques similar to just used on Feed.

    Also make use of l to focus on the tab list similar to Invitation Manager.

    Issue #281.

    Incremental improvements for element selection.

    This is making use of some techniques just used for My Network.

    No longer need to specify if the clickable element is a button or a link, and the intermediate element has been seen to be either span or div.

    Closes #281.

    Update the implementation of the Invitation Manager view.

    This includes consolidating separate Sent/Received support.

    Closes #280.

    Implement the ability to pass in a human readable name for a page.

    The default is still naming the pages after name of the class. But, in certain circumstances, that may not be sufficient (aka, LinkedIn's "My Network" actually being called "Grow" and "Catch up"). Now such implementations can pass in a human readable variation.

    Change hotkeys to match LinkedIn's official keyboard shortcuts.

    Somewhere along the line, LinkedIn did natively implement something similar to LIT. It does inter-page navigation (the g then 'h` kestrokes) and intra-page next/previous items.

    It looks like less was implemented than LIT does. Also, with the latest site rollouts, "Style-2" pages do not appear to support them.

    Still, if they have it, LIT should use the same shortcuts for inter-page navigation.

    Update release notes.

    Bump version number.

  • v5.112 2026-03-11

    Only add a badge if the cloned menu item does not have one.

    Typically, the Home menu item would have a badge if the loaded page was a different Style-2 page, so we would end up with two badges on the new item.

    Also, remove some setting of internals as that happens in the calling functions when it fires an event.

    Closes #275.

    Rearrange code to be like functions closer together.

    Fix minor code formatting issue.

    Update Feed to the latest layout change.

    There are fewer named items to use, so must focus on layout.

    Posts and comments have similar structure, with the import bits being a header, status bar, and footer, and UI features are mostly consisent within those structures.

    And sometimes (e.g., Like, Reactions, Menu), the same selectors even work in both cases.

    Issue #281.

    Update release notes.

    Bump version number.

  • v5.111 2026-03-10

    Add a new dev-only hotkey for logging the activeElement.

    Changing focus to the Developer Tools window then back can sometimes cause enough logging to scroll details off the screen.

    Update selector for adding the Tool menu item.

    Issue #281.

    Remove errant debug code.

    Update Global to the latest layout change.

    Now, the only way to find elements to trigger involve bits that may be translated. Since it is easier to search for attributes vs text, use aria-label as the primary target.

    Issue #281.

    Update release notes.

    Bump version number.

Show all script versions