Greasy Fork is available in English.

LinkedIn Tool

Minor enhancements to LinkedIn. Mostly just hotkeys.

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

  • v5.97 04/03/2024

    Move Scroller assignment from ctor to setter.

    Issue #240.

    Refactor Scroller.#validateInstance().

    Was getting a bit long.

    Issue #241.

    Migrate most modules to use base.Exception.

    Issue #259.

    Update release notes.

    Bump version number.

  • v5.96 26/02/2024

    Use optional chaining with this.#scroller.

    Upcoming changing will make this field optional (e.g., secondary Scrollers).

    Issue #240.

    Use a setter to assign the managed Scroller.

    Issue #240.

    Handle the selectorArray option in Scroller.click().

    Issue #241.

    Add clickConfig to MyNetwork.

    Issue #241.

    Depend on most recent version of lib/base.

    This is to grab the new Exception class.

    Issue #259.

    Update release notes.

    Bump version number.

  • v5.95 25/02/2024

    Expose this.#globals via a getter.

    Issue #240.

    Add validation for clickConfig.

    Issue #241.

    Bump version number.

  • v5.94 23/02/2024

    Stop using name as an identifier as it shadows a global.

    This change addresses local variable.

    Issue #238.

    Implement setter to take the LinkedIn instance.

    Issue #240.

    Acknowledge a number a newly discovered pages.

    Also changed markdown styling for the page names in the comments.

    Issues #244, #255, #256, #257.

    Support an ElementFinder function in Scroller.click().

    Issue #241.

    Initial migration work in Notification for Scroller.click().

    Issue #241.

    Update release notes.

    Bump version number.

  • v5.93 19/02/2024

    JSDoc: Spelling error.

    Consistently name items using navbar rather than navBar.

    Issue #240.

    Add a feature flag for using the new Scroller.click() method.

    Issue #241.

    Bump version number.

  • v5.92 18/02/2024

    Rename self to myself to avoid shadowing a global.

    Issue #238.

    Rename ScrollerService to LinkedInScrollerService.

    Alas, it will no longer be generic.

    Issue #240.

    If no current item, simply click activeElement.

    Issue #241.

    Bump version number.

  • v5.91 16/02/2024

    Migrate to using Service() from lib/base.

    Issue #167.

    Wrap Scroller.name in double quotes in the bug message.

    Makes it a little bit easier to read. E.g., for "Events events" was...

    Issue #241.

    Support the Your events collection.

    Issue #236.

    Implement Share current event.

    Issue #236.

    Acknowledge My Network Events page.

    Issue #253.

    JSDoc: Add missing word.

    Make a log statement a bit more precise.

    Issue #240.

    Fire a resize event each time the navbar changes size.

    Issue #240.

    Update release notes.

    Bump version number.

  • v5.90 14/02/2024

    Bump version of lib/base.js being used.

    This will expose the version of Service there.

    Issue #167.

    Implement n/p secondary navigation within collections.

    Issue #236.

    Use the logger from the Scroller instead of the global logger.

    Stop using event as a local name as it shadows a global.

    Issue #238.

    Fix typo in comment.

    Allow changing top/bottom margins in Scroller.

    We now know that the values sometimes need to change after being initialized.

    Issue #240.

    Add exception list for bugging about unsupported pages.

    Issue #244.

    Post error if Scroller.click() called without being configured.

    Issue #241.

    Update release notes.

    Bump version number.

  • v5.89 12/02/2024

    Migrate primary Scroller setup to base class.

    Issue #234.

    Support primary navigation.

    Issue #236.

    eslint: Rename a local variable that shadows a browser global.

    Issue #238.

    Migrate Service to lib/base.

    Issue #167.

    Define a clickConfig property for Scroller.

    Issue #241.

    TIL: Array.from() takes a mapping function.

    Expose a shallow copy of the current active Pages.

    Issue #244.

    Notify via an error condition whenever an unknown page is visited.

    Issue #244.

    Rework My Network to use the terms collection and individual.

    Individual is not quite right either, since it could be a person, group, event, etc. But, they are not always *card*s, either.

    Issue #245.

    Update release notes.

    Bump version number.

  • v5.88 08/02/2024

    White space around logging intro/outro.

    Fix spelling of property and remove some logging.

    Initial Events support.

    Does nothing more than exist.

    Issue #236.

    Fix two cases where a global was accidentally being used.

    Issue #238.

    Stop logging what each mutation record type is.

    It does not matter at this point, and nothing is being done with that information.

    Issue #239.

    Stow away a pointer to the actual current item element.

    Amusingly, this is how Scroller initially worked before changing to item ids.

    Issue #239.

    Add a monitor to Scroller for the current item staying connected.

    We can capture more state if we see it in other places.

    Issue #239.

    Simple variable rename.

    Issue #240.

    Attach a ResizeObserver to the global nav bar.

    First step in plumbing through detecting changes.

    Issue #240.

    Skeleton for new Scroller.click() method.

    Issue #241.

    Wait for the For Business menu item to show up.

    Identified by the --divider subclass, on some pages, this item gets added later. Actually, the entire navbar content gets rebuilt, causing us to have to reconnect the LIT menu button.

    If this pans out, we can make it the official item, simplifying this code.

    Issue #242.

    Normalize vertical white space around logging {intro,outro}s.

    Closes #243.

    Update release notes.

    Bump version number.

  • v5.87 02/02/2024

    JSDoc: Simplify the Page subclass constructor.

    Start refactoring constructor().

    Issue #234.

    Bump version number.

  • v5.86 31/01/2024

    Minor tweaks to comments.

    Hoist allowReactivation() to base class.

    Closes #228.

    Initial refactoring of the InvitationManager* classes.

    The idea seems to work. Some details will be tricky due to how #private variables work in JavaScript, but those can be worked around.

    Issue #234.

    Bump version number.

  • v5.85 29/01/2024

    Implement Withdrawn invitiation.

    Issue #233.

    Update release notes.

    Bump version number.

  • v5.84 27/01/2024

    Fine tune the pageReadySelector.

    Issue #157.

    Enable reactivation of active pages when revisiting the same page.

    Not experienced any drawbacks. Does not seem to work all the time, but those are likely Page specific issues to be investigated.

    Issue #218.

    Additional tweaks after renaming InvitationManagerReceivedInvites.

    Issue #233.

    Handle the Sent Invites page.

    Essentially a direct copy of the Received Invites page with a number of shortcuts removed that do not make sense in this context.

    Issue #233.

    Update release notes.

    Bump version number.

  • v5.83 24/01/2024

    Invites no longer have menu items.

    Tweak selector to work on both Received/Sent invites.

    Issue #157.

    Rename InvitationManager to InvitationManagerReceivedInvites.

    Issue #233.

    White space around logging intro/outro.

    Migrate InvitationManagerReceivedInvites to containerItems.

    This allows removal of a bunch of custom code.

    Closes #176.

    Bump version number.

  • v5.82 21/01/2024

    Implement l to focus on the tab list.

    Issue #157.

    JSDoc: Update to reflect new approach for impelmenting Services.

    Issue #227.

    Implement J/K for toggle/navigate combo in JobCollections.

    Closes #231.

    Simplify Feed.nextPostPlus() based learning from JobCollections.

    Additional logging about 'focus' events.

    Issue #232.

    Create new Scroller.focus() method.

    This combines shine() and show(), often called together, along with the actual setting of the focus.

    This does not work yet, as after calling this, something resets the focused element back to document.body.

    Issue #232.

    Update release notes.

    Bump version number.

  • v5.81 17/01/2024

    Migrate LinkedInToolbarService from inheritance to messaging.

    Issue #227.

    Add feature flag enableScrollerChangesFocus.

    Not connected to anything yet.

    Issue #232.

    Update release notes.

    Bump version number.

  • v5.80 14/01/2024

    Move the URL monitoring into a click handler.

    Since #gotoNavLink() calls click() this handles both key stroke navigation and old-fashioned clicking with the mouse.

    Issue #218.

    Migrate VMKeyboardService from inheritance to messaging.

    Issue #227.

    Expose Scroller.name.

    Issue #230.

    Bump library versions.

    Really only need lib/base, to pick up the Logger stack trace fix, but might as well bump lib/widget while in here.

    Issue #226.

    Disable reactivation on the details Scroller.

    Because the other Scrollers were disabled, the details one always gets to be set as the #lastScroller. So the first/last actions always worked on it rather than the job cards.

    Closes #230.

    Update release notes.

    Bump version number.

  • v5.79 11/01/2024

    Migrate ScrollerService from inheritance to messaging.

    Issue #227.

    The HTML on the Jobs page changed, so tweaks in response.

    Closes #229.

    Update release notes.

    Bump version number.

  • v5.78 09/01/2024

    Implement Next/Previous/change for pagination navigation.

    Issue #209.

    Rearrange how saved options are loaded.

    Not sure why, but the previous arrangement was not working well.

    Factor out listing the names of active pages.

    Method is getting a little long.

    Issue #218.

    Add temp option to control reactiving currently active pages.

    Issue #218.

    Migrate Service from abstract methods to dispatching.

    Also, tests.

    Issue #227.

    Update release notes.

    Bump version number.

  • v5.77 07/01/2024

    Basic navigation.

    Issue #209.

    Tweak a logging statement.

    Modify ScrollerService to make reactivation optional.

    Issue #218.

    Tune some ScrollerServices to disable reactivation (if active).

    Issue #218.

    Update release notes.

    Bump version number.

  • v5.76 06/01/2024

    Initial SearchResultsPeople support.

    Does nothing but exist.

    Issue #209.

    Improve quality of a random debug logging statement.

    Promote gentlyScrollIntoView() to a full fledged method.

    Need to add more logging and that was going to make #scrollToCurrentItem() too long.

    Issue #218.

    Update release notes.

    Bump version number.

  • v5.75 05/01/2024

    Additional logging in JobCollections.

    Issue #218.

    Bump version number.

  • v5.74 04/01/2024

    Implement Apply, Follow, and Save features.

    Issue #160.

    Update release notes.

    Bump version number.

  • v5.73 03/01/2024

    Update the names for JobCollections Scrollers.

    Tune the pageReadySelector.

    Found a job view where the initial value was not sufficient. Likely no harm in going with both initial candidate selectors.

    Issue #160.

    Implement m to show more/less details.

    At least one cosmetic issue, but not unique to this page.

    Issue #160.

    Call SPA.activate() when the URL does not change.

    Due to how activate() is current written, this is a no-op.

    Issue #218.

    Update release notes.

    Bump version number.

  • v5.72 02/01/2024

    Update release notes.

    Implement n/p for navigating inside some cards.

    Not many options really, just More jobs.

    Issue #160.

    Update release notes.

    Bump version number.

  • v5.71 01/01/2024

    Call getBoundingClientRect() again after (maybe) scrolling.

    It turns out that the result of item.getBoundingClientRect() is not a live object, so after scrolling the bottom of the item into view, we need to refetch the value to see if the top went out of view.

    Adding this one line pushed the length of the method over the configured limit, so also moved this else condition into a separate nested function.

    Since doing that, also rid of the single property destructuring assignment const {item} = this; and replaced it with a traditional assignment of const item = this.item.

    Closes #225.

    Use latest version of lib/web.

    Issue #221.

    Additional monitoring for Global.gotoNavLink().

    Now track and indicate whether the URL actually changed.

    Also switched from otrot2() to otmot() as it will allow us to exit the function sooner if a change is detected.

    Issue #218.

    Additional logging in SPA.activate().

    Issue #218.

    Bump version number.

  • v5.70 31/12/2023

    Implement basic navigation.

    Issue #160.

    Update release notes.

    Bump version number.

  • v5.69 30/12/2023

    Bump all library versions to the latest one.

    Most of these are releases with just additional/updated testing. We really only need lib/web, but makes sense to update all of them at once.

    Issue #221.

    Additional logging in Page.activate().

    Issue #218.

    Factor out common code into a new LinkedInToolbarService class.

    Closes #224.

    Bump version number.

  • v5.68 29/12/2023

    Initial JobView support.

    Does nothing but exist.

    Did notice a pattern similar to what happens with Profile, so will factor that out in a bit.

    Issue #160.

    Update release notes.

    Bump version number.

  • v5.67 27/12/2023

    Include the height of the toolbar in the Scroller margins.

    Issue #156.

    Implement n/p for scrolling through job details.

    Issue #169.

    Bump to latest lib/web release to grab refactored otmot().

    Issue #221.

    Mix in the notification URL to dedupe when text is identical.

    Closes #222.

    Update how the menu is found in Feed.

    Closes #223.

    Update release notes.

    Bump version number.

  • v5.66 26/12/2023

    Move Scroller fixups into a local Service class.

    Most pages do fixups upon app initialization. However, Profile needs to do some extra work with information that is only available after this page has been visited at least once. So defer it until that initial activation.

    Note that it does not yet do that extra work. This is just prep.

    Issue #156.

    Fine-tune the CSS selector for the details pane.

    Issue #169.

    Re-add the LIT menu item if it disappears.

    Sometimes the global nav menu items get rebuilt shortly after we add our custom item.

    Now we monitor the nav list, and if it changes, we re-add ours if necessary.

    Closes #220.

    Update release notes.

    Bump version number.

  • v5.65 24/12/2023

    Move initial primary Scroller creation into the getter.

    Issue #156.

    Switch results page selection to N/P.

    This frees up n/p for use inside the details pane. This will make it consistent with how Messaging is handled.

    Issue #169.

    Add some additional monitoring to Global.#gotoNavLink().

    Issue #218.

    Update release notes.

    Bump version number.

  • v5.64 23/12/2023

    Do fixups on Profile.#entriesHow.

    Issue #156.

    Add some initial logging to some navigation methods.

    Issue #218.

    Bump version number.

  • v5.63 21/12/2023

    Update MyNetwork to the new layout.

    Hopefully this is already rolled out completely and will not be rolled back again.

    While at it, may the cards uid function use anchor hrefs instead of the whole innerText if available.

    Closes #219.

    Update release notes.

  • v5.62 21/12/2023

    Implement Edit for the current section.

    Issue #156.

    Migrate a couple of static methods to instance methods.

    Issue #218.

    Update release notes.

    Bump version number.

  • v5.61 19/12/2023

    Implement m to view more (or Show all...) for the current item.

    Issue #156.

    Switch from local constant to one from lib/base.

    The other one this time.

    Closes #216.

    Update release notes.

    Bump version number.

  • v5.60 17/12/2023

    Have #isItemViewable() explicitly return a Boolean.

    Also, log this fact during getItems post processing.

    Previously, it would return a truthy value of the height in pixels, while, valid code wise, was difficult to pick out in the logs.

    Issue #208.

    Implement next/previous for entries inside a section.

    Different sections have different layouts, so need a few different selectors to figure them out. Would not be surprised if a few are missed.

    Sections that have tab panels inside of them (currently know about Interests and Recommendations) are triggering a known issue with Scroller not wrapping. Fortunately, in practical use, not a big deal, however, it does give us a good test bed to find a fix.

    Issue #156, #208.

    Filter out non-viewable items before scrolling by N.

    This allows removing the skipping non-viewable loop completely.

    Issue #208.

    Update release notes.

    Bump version number.

  • v5.59 16/12/2023

    Basic navigation keys.

    Issue #156.

    Update release notes.

    Bump version number.

  • v5.58 14/12/2023

    Initial support for the Profile view.

    Does nothing more than exists.

    Issue #156.

    Update release notes.

    Bump version number.

  • v5.57 12/12/2023

    Implement S to toggle the star on a conversation.

    Issue #144.

    Update release notes.

    Bump version number.

  • v5.56 11/12/2023

    Implement = to open the nearest menu.

    Issue #144.

    Remove now unused method, dumpInfoAboutElement.

    Issue #205.

    Update release notes.

    Bump version number.

  • v5.55 10/12/2023

    Migrate uses of SPA.dumpInfoAboutElement() to promoted version.

    Issue #205.

    Switch from local constant to one from lib/base.

    Issue #216.

    Bump version number.

  • v5.54 09/12/2023

    Add descriptive text to the assertEqual() in a loop.

    Issue #215.

    Update to most recent release of all libraries.

    We base and web some upcoming changes.

    Issue #205.

    Normalize how Shortcuts are formatted.

    This change covers Messaging and Notifications.

    Closes #213.

    Bump version number.

  • v5.53 08/12/2023

    Promote SPA.dumpInfoAboutElement() to lib/web.js.

    Issue #205.

    Make how often fake error messages show up on page load a tunable.

    Closes #217.

    Normalize how Shortcuts are formatted.

    This change is Jobs and JobCollections.

    Issue #213.

    Bump version number.

  • v5.52 05/12/2023

    Promote ONE_ITEM to a global constant.

    Issue #216.

    Update the Shortcut example to match the new recommendation.

    Issue #213.

    Normalize how Shortcuts are formatted.

    This change is MyNetwork and InvitationManager.

    Issue #213.

    Bump version number.

  • v5.51 04/12/2023

    Implement next/previous message for conversation pane.

    Issue #144.

    Remove some resets in Scroller.

    They do not seem to be needed any more.

    Closes #212.

    Normlize how Shortcuts are formatted, mostly in Feed.

    Issue #213.

    JSDoc: Update some references to the new (or correct) location.

    Closes #214.

    Update release notes.

    Bump version number.

  • v5.50 03/12/2023

    Implement moving to the Message box.

    Issue #144.

    Update release notes.

    Bump version number.

  • v5.49 02/12/2023

    Switch monitoring of the message box to a focus event.

    There are cases where the message box will get focus without setting the data-artdeco-is-focused attribute. This might be a bug in LinkedIn, but does not matter. It is not a good signal.

    Also work around a quirk in Scroller that is needed for other containers that constantly rebuild the elements being tracked. This causes a 'change' event for the old item then one for the new item. And that would result in nested event handlers. It turns out if the user navigates at the right pace, an outer handler could be removed, causing them all to be removed (same callback function after all), and then leave the focus in the message box, resulting in random navigation characters showing up. One Page's fix is another Page's problem.

    Issues #144, #212.

    Update release notes.

    Bump version number.

  • v5.48 01/12/2023

    Basic conversation card scrolling.

    Still has a focus problem where, at the beginning, keyboard navigation will cause focus to move to the message box. However, clicking once on a conversation card will prevent that until the site is reloaded. Definitely a problem to be addressed.

    Issue #144.

    Update release notes.

    Bump version number.

Show all script versions