LinkedIn Tool

Minor enhancements to LinkedIn. Mostly just hotkeys.

這裡顯示腳本的所有版本。 只顯示彼此間有代碼差異的版本。

  • v2.16.4 2023-09-02

    Use a different approach to getting the license info on Tampermonkey.

    Issue #120.

  • v2.16.3 2023-09-02

    Update comments for dumpInfoAboutElement().

    Factor out the tabbed ui stuff into a new class, TabbedUI.

    Closes #118.

    Bump version number.

  • v2.16.2 2023-09-02

    Initial License tab.

    Issue #106.

    Build up the help dialog using Web API elements rather than raw html.

    We are going to need access some of the elements later in the function, and rather than looking them back up via querySelector, just keep them handy this way.

    Issue #106.

    More dynamic building of the UI rather than raw HTML.

    Also a proof-of-concept callback for when a tab is triggered so that it can be rendered lazily.

    Issue #106.

    Bump version number.

  • v2.16.1 2023-09-01

    eslint: Enable and configure padded-blocks along with fix-ups.

    Issue #69.

    eslint: Enable semi along with fix-ups.

    Issue #69.

    eslint: Enable and configure space-before-function-paren along with a fix-up.

    Issue #69.

    Bump version number.

  • v2.16.0 2023-09-01

    Do not scroll to the keys for the current page.

    Turns out to be more confusing than helpful.

    Also, always start at the top of the page.

    Issue #115.

    Document what a Promise resolves with.

    Style the hot keys header for the current page.

    Closes #115.

  • v2.15.8 2023-09-01

    Switch a number of methods to arrow functions.

    This removes the need to use bind(this) in various callbacks.

    Issue #97.

    Replace bound functions with explicit arrow functions.

    Issue #97.

    Replace bound functions with arrow functions.

    Since these functions are likely to be overridden in subclasses, need to include a post-instantiation init() function to set them up as callbacks.

    Issue #97.

    Found typo in a property name.

    Run through ispell.

    Replace bound function with explicit arrow functions.

    Issue #97.

    Bump version number.

  • v2.15.7 2023-09-01

    Initial implementation of new Logger API.

    Done in terms of the existing API while migrating.

    Issue #114.

    Improved Logger example.

    Issue #114.

    Migrate Scroller to the new Logger API.

    The irony, since Logger originated in Scroller.

    Issue #114.

    Migrate Jobs to the new Scroller API.

    Issue #114.

    Migrate LinkedIn to new Scroller API.

    Issue #114.

    Migrate SPA to new Scroller API.

    Issue #114.

    Another tweak to the Logger example.

    Issue #114.

    Remove errant log.enable() left over from debugging.

    Finish improvements to the Logger API.

    When creating a new group, it will no longer emit both the group header and the Entered message unless there is extra information passed along.

    Calls the enter/leaving and starting/finished are always checked for correct pairing even if the logger is disabled.

    Closes #114.

    Remove extra string from a log statement.

  • v2.15.6 2023-08-31

    Replace setter hack with explicit clear function.

    Closes #93.

  • v2.15.5 2023-08-31

    eslint: Use destructuring to initialize a few variables.

    Issue #113.

    eslint: Enable and configure arrow-parens along with fix-ups.

    Issue #69.

    eslint: Enable and configure comma-dangle along with a fix-up.

    Issue #69.

    eslint: Enable and configure no-extra-parens along with fix-ups.

    Issue #69.

  • v2.15.4 2023-08-31

    Remove errant log.disable() left over from debugging.

    New selector to find carousel items.

    Does not yet scroll automatically, and scrolling manually loses state.

    Issue #89.

    Add another scrollIntoView() for horizontal.

    This was eerily simple. Not sure I trust it, but works for the moment.

    Issue #89.

    Wrap the Scroller's Logger name with curly braces.

    I realized that it can be difficult to distinguish between the logs from the Scroller named "Job sections" and the class named "Jobs". Since "{Job sections}" kind of look like scrolls, wrapping the names helps provide a visual clue.

    Additional logging.

    Removed errant debug statement. Again.

    Do not reset current job section if clicking on the current one.

    Closes #89.

    Bump version number.

  • v2.15.3 2023-08-30

    eslint: Enable no-plusplus along with fix-ups.

    I am surprised this did not catch more, but I guess the fact that we use a lot of for..of loops works well. Had there been more, I probably would have enabled the allowForLoopAfterthoughts option.

    Issue #68.

    eslint: Enable no-shadow along with fix-ups.

    This found a real bug!

    Issue #68.

    eslint: Comment on no-unused-expressions along with some fix-ups.

    Again, due to old system, this currently gives false positives for optional chaining, so leave off for now.

    Issue #68.

    Minor comment cleanup.

    eslint: Enable prefer-named-capture-group along with fix-ups.

    Issue #68.

    eslint: Enable prefer-promise-reject-errors along with fix-ups.

    Issue #68.

    eslint: Enable require-unicode-regexp along with fix-ups.

    Issue #68.

    eslint: TIL about the greasemonkey environment.

    eslint: Enable and configure yoda along with a fix-up.

    Closes #68.

    Bump version number.

  • v2.15.2 2023-08-30

    Move LIT icon to after the Profile/Me icon.

    Just being polite when the window is really narrow.

    Issue #112.

    Collect issues that happen before the Errors panel is built.

    Closes #112.

    Bump version number.

  • v2.15.1 2023-08-30

    eslint: Enable and configure no-bitwise along with some fix-ups.

    Issue #68.

    eslint: Enable no-else-return along with a fix-up.

    Issue #68.

    eslint: Enable no-empty-function along with some fix-ups.

    Ideally, I would have added a comment like /* No-op. */ to the functions, but that triggered another lint issue. And THAT one could be addressed if I was using a modern version of eslint.

    Issue #68.

    eslint: Enable and configure no-magic-numbers along with fix-ups.

    This did expose some, even those that were 1, so I addressed those. But most were of the first-item-in-array or next-item kind of things.

    Issue #68.

    Reorder key sequences in the help view.

    Make them all consistent:

    • View only commands first.
    • * Nav first, major then minor.
    • * Various load more content.
    • State changing commands.

    Closes #63.

  • v2.15.0 2023-08-30

    Add notification bubbles to the LIT icon.

    Made use of the CSS classes LI already provides for the error count. Made own for use with any future News tab.

    Closes #105.

  • v2.14.5 2023-08-29

    Rename function from On to Until.

    Add a Tool icon for the userscript.

    Does not do anything yet, but it looks good.

    Issue #105.

    Tie the Tool button into bringing up the help dialog.

    Also migrated the ? key to click that button rather than bringing up the dialog directly.

    Issue #105.

  • v2.14.4 2023-08-29

    Refactor: Move dumpInfoAboutElement into SPA.

    Closes #100.

    Add some data-spa-id attributes to help view tab elements.

    Issue #105.

    Give SPA its own Logger.

    Rename _initializeHelpMenu to _initializeHelpView.

    Make SPADetails a class to instantiate, not just a static class.

    It turns out that trying to implement an inherited class full of static properties and methods is just too annoying.

    Issue #105.

    help view: Highlight the Errors tab if here are any logged.

    Issue #105.

    Framework to allow SPA to notify SPADetails on things.

    Issue #105.

    Add debug logging to otmot.

    Migrate waiting for the navbar to appear to inside LinkedIn.

    Upcoming changes require the navbar to already be present. Since we already have code waiting for it, makes sense to move that into this class.

    We then wait for that to finish before proceeding with the rest of the initialization. And this is probably a Good Thing (tm) anyway.

    Issue #105.

  • v2.14.3 2023-08-28

    Fixed typo in name of a property.

    Add platform information to the Errors panel in the help view.

    Issue #105.

    Rename global logger.

    Move some typedefs closer to where they are used.

    Rename Pages to SPA.

    The Pages class has very little that is LinkedIn specific, but we will be moving what little bit is out.

    This is a good time to rename it to SPA, for single-page application.

    Issue #107.

    Reword comment that is now confusing after renaming a class.

    Issue #107.

    Rename variables from pages to spa.

    Amusingly, not all users of pages referred to the Pages instance.

    Issue #107.

    Rename CSS classes, et al.,from lit- to spa-.

    It was short for LinkedIn Tool, but now a bit more generic.

    Issue #107.

    Document SPA properties.

    Issue #107.

    Factor out LinkedIn specific information from SPA.

    Closes #107.

  • v2.14.2 2023-08-27

    Minor tweak to help view tab headers.

    Make current tab bold and retire the * marker.

    Issue #94.

    eslint: Enable no-alert along with some fix-ups.

    Issues #68, #105.

    help view: Add header and minor content update to Information tab.

    I just discovered GM.info and noticed it has some useful information.

  • v2.14.1 2023-08-27

    Give each Page its own Logger instance.

    Issue #104.

    Configure a second MutationObserver for Jobs.

    In order to capture changes to certain sections, we need to observe changes to classes. However, these need to be done for the subtree. Monitoring the entire subtree for childList changes, however, is excessive and results in both multiple matches and noticable performance issues.

    Since we are observing the same element (div.scaffold-finite-scroll__content), we need two observers. Fortunately we can reuse the same callback function.

    Closes #86.

    Bump version number.

  • v2.14.0 2023-08-27

    Scroll to keyboard help for current view if available.

    Closes #55.

  • v2.13.5 2023-08-26

    Change help view tab navigation to control-arrow keys.

    This was easier than trying to deal with having the user need to tab out of the textarea to get navigation back.

    Closes #99.

  • v2.13.4 2023-08-26

    eslint: Enable and configure max-statements along with a fix-up.

    Issue #68.

    Set local values with destructuring assignments for what/how patterns.

    This came out of examining ways to reduce code for the eslint max-statements directive.

    This style makes it easier to provide default values for optional items. Also, all items are accessed consistently.

    Reordered some values for consistency.

    Made one timeout officially optional with a default of 0.

    Messed up renaming of a local variable in last change.

    Factor out the Scroller logging logic into a Logger class.

    Keeps all of the feature that the original logging had plus:

    • Can turn on/off at runtime.
    • Can switch inclusion of stack traces at runtime.

    Instatiated a global logger and migrated few explicit uses of console.debug to it.

    Closes #104.

  • v2.13.3 2023-08-26

    Properly document a property as optional vs nullable.

    eslint: Migrate otrot2 to the what/how pattern.

    Issue #101.

    eslint: Migrate otmot to the what/how pattern and configure max-param.

    Closes #101.

  • v2.13.2 2023-08-24

    Properly document a property as optional vs nullable.

    Turn off debug mode for the jobs scroller.

    eslint: Migrate otrot to the what/how pattern.

    At least one of the one time observers has too many parameters. Will migrate all of them to the what/how pattern to keep them consistent, even in this case where it is only 3 parameters.

    Issue #101.

  • v2.13.1 2023-08-24

    Make the onClickSelector a bit more precise.

    Right now we call refresh at the some time we reenable the onClick event handler. No technical reason, was just convienent.

    However, in this case, that calls refresh before enough of the notifications view is rebuilt that the notification cards are not yet present.

    Here we try to make sure more of the page is repopulated before doing the same stuff.

    Most likely this is not sufficient, but perhaps Good enough.

    Closes #103.

  • v2.13.0 2023-08-24

    Support the New notifications button.

    Using the same approach we used for loading new posts in the feed. If the button is present, go to the first item, otherwise, try to keep the current position.

    Closes #102.

  • v2.12.5 2023-08-23

    Add missing word in comment.

    Remove stale comment.

    Issue #39.

    eslint: Make a SimpleFunction callback in JSDoc.

    This will ease an upcoming change.

    Issue #68.

    Minor typo in comment.

    eslint: Reduce number of parameters to Scroller.

    Six was too many. Now broken down to just What and How objects.

    Issue #68.

    Bump version number.

  • v2.12.4 2023-08-23

    Click on any link or button found in a notification card.

    If a card does not have a match for .nt-card__headline, then just try any single button or link. This happens to catch the case where the only thing in a card is the Undo (the delete) button.

  • v2.12.3 2023-08-22

    Use optional chaining in Page.

    Issue #92.

    Use optional chaining in Global.

    Issue #92.

    Use optional chaining in Feed.

    Issue #92.

    Apply similiar style to _viewReactions as used in last change.

    Unrelated to ongoing optional chaining work, but nice to have.

    Use optional chaining in Jobs.

    Issue #92.

    Use optional chaining in Pages.

    Closes #92.

    Bump version number.

  • v2.12.2 2023-08-22

    Use optional chaining in Scrollbar.

    Issue #92.

    Looks like they are rolling out new class names for post reactions.

  • v2.12.1 2023-08-22

    eslint: Add JSDoc for the last remaining functions.

    Issue #71.

    eslint: Enable max-lines-per-function along with a fix-up.

    Seems like a reasonable default limit. Except of course, for userscripts IIFE.

    Issue #68.

    Bump version number.

  • v2.12.0 2023-08-22

    Remove unnecessary wrapping by Array.from().

    Log error messages into the Errors panel in the help view.

    Users can now easily edit/sanitize then copy-and-paste the content into a bug report.

    Closes #39.

  • v2.11.1 2023-08-21

    Tweak how buttons look in the help view.

    • Support ⋯ as an actual button
    • Disabled so they cannot be tabbed to
    • Rounded a bit more

    Closes #43.

  • v2.11.0 2023-08-21

    Remove matchesKnownText() approach to finding buttons.

    Everything now goes through one approach, simplifying the function.

    We may find more in the future. But for now, nice and clean.

    Closes #42.

  • v2.10.2 2023-08-21

    Detect when toggle+next is executed before there is a current item.

    Issue #95.

    Refactor how empty items are detected.

    Both approaches were necessary, but neither sufficient.

    Closes #95.

  • v2.10.1 2023-08-20

    Minor tweak to a comment and remove an outdated eslint directive.

    Remove float: left from a span.

    While cute in that is allows symmetry between the two consecutive spans, it caused the wrapping div to have a height of zero. And that caused the hr to be in the middle of the text.

    Remove jitter when there is an active comment during toggle+next.

    Handle feed positioning better when loading more posts.

    Introduced otrot2. This function watches for resizes and simply calls an action function every time it sees something.

    Essentially, we are constantly trying to put the window back where it was.

    Works well for adding new posts at the end. When the Load more posts button comes up, however, just give up and jump to the first post. Sorry.

    Closes #96.

  • v2.10.0 2023-08-20

    Minor tweak to a comment.

    Simple refactoring of the generation of the help view.

    Issue #39.

    Start building the help view programmatically.

    This will reduce the need to keep the number of tab style selectors and tab content in sync.

    Issue #39.

    Finish with generating the help view programmatically.

    Issue #39.

    And pointers on where to find documentation and how to file feedback.

    Closes #39

  • v2.9.1 2023-08-20

    eslint: Add JSDoc for the Pages class.

    Issue #71.

    eslint: Enable func-names along with appropriate fix-ups.

    Issue #68.

  • v2.9.0 2023-08-19

    Minor tweak to description for the ? key.

    Issue #44.

    More cheesy CSS to indicate the current tab.

    Can you tell I use a lot of text mode interfaces?

    Issue #44.

    Add keystroke support for selecting current help tab.

    Still ugly, but working. Will file another bug to pretty is up.

    Closes #44.

    Add initial support for an Errors panel.

    Issue #39.

    Bump version number.

  • v2.8.3 2023-08-19

    Use -1 as the tabindex in focusOnElement.

    Refactor _setInputFocus to be more general.

    Issue #24.

    Disable hotkeys while help dialog is up.

    Closes #24.

  • v2.8.2 2023-08-19

    Forgot to update comment after copy-and-paste.

    Implement (barely) a tabbed view on the help screen.

    The styling is crap. There is useful new content. And, ironically, the only way to switch between tabs is by using a mouse.

    But, it is a start.

    Issue #44.

  • v2.8.1 2023-08-18

    eslint: Normalize how @type is used.

    Descriptions go above the type.

    Simple definitions are inlined in comments.

    Issue #71.

    eslint: Configure valid-jsdoc to no longer requireReturn.

    Also remove all of the @returns {void} directives. Just too noisy.

    Issue #71.

    eslint: Add JSDoc for the Notifcations class.

    Issue #71.

    Move comment off of opening comment line, just for consistency.

    eslint: Enable curly and apply fix-ups.

    Issue #68.

  • v2.8.0 2023-08-18

    Implement ability to jump directly to the sidebars when present.

    Use the , and . keys.

    Closes #91.

  • v2.7.2 2023-08-18

    LI changed the Feed UI again and post menu was not working.

    Not sure if rolling it out then back again, or I am hitting a different server or what. I also notice that the Like/Comment/Repost footer changed back to the old one as well.

    Using both old and new selectors now.

    Issue #78.

  • v2.7.1 2023-08-18

    eslint: Add JSDoc for the Jobs class.

    Issue #71.

    Rename monitor function from f to monitor.

    eslint: Enable consistent-return and apply a single fix up.

    Issue #68.

    Tweak dumpInfoAboutElement a little bit.

    Support some more notification types.

    It appears that there are buttons as well as anchors with the .nt-card__headline class. Testing seems to indicate that only one or the other appears.

    It turns out that deleted notifications have neither. But we can detect the Undo button and click it. If we ever see another Apply early notification though, and it turns out it can be found with .nt-card__headline, then we will probably drop matchesKnownText(), and thus supporting the Undo through activation.

    Issue #42.

    Use otrot to monitor changes when deleting a notification.

    Did not look into details. Most likely the element gets completely rebuilt, so need to wait for things to settle down before looking for new the one.

  • v2.7.0 2023-08-17

    Implement save and dismiss toggles for jobs.

    Tied to the S and X keys, respectively.

    Closes #88.

  • v2.6.4 2023-08-17

    Improve focusing a bit.

    While technically not related to this particular issue, it will the user experience a bit better.

    Issue #90., Followup to previous change for another page.

    Technically, this one is not necessary since we are not dealing with nested Scrollers here. However, it does no harm and makes the code consistent.

    Issue #90., Use a better selector to find the load more content button.

    I am starting to recognize some of these things.

    Issue #90., Rename trigger function from f to trigger., Handle scrolling while loading more consistently: stay in place.

    Invoking a manual load would cause the currently selected items to come back into view. If the user had purposefully scrolled them out of view then manually invoked load more again, this would be impolite.

    Also added this stickiness to Notifications.

    Closes #90.

  • v2.6.3 2023-08-17

    Restore currently selected job when elements are automatically loaded.

    Issue #87., Bump version number.

    Closes #87.

  • v2.6.2 2023-08-17

    The previous change did break something: job navigation.

    Issue #68.

  • v2.6.1 2023-08-17

    Minor comment formatting tweaks., eslint: Improve some existing JSDoc., eslint: More improvements to existing JSDoc., eslint: Add JSDoc for the Feed class.

    Issue #71., eslint: Enable class-methods-use-this.

    Resulted in a lot of methods become static, and needing to update the callers.

    Hopefully I did not break anything.

    Issue 68.

顯示所有腳本版本