LinkedIn Tool

Minor enhancements to LinkedIn. Mostly just hotkeys.

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

  • v5.46 2023-11-28

    Reset the tracking id on duplicate items.

    This helps with, but does not solve, the issue with duplicate items in a Scroller.

    Issue #204.

    Make use of the new TestCase.assertNoRaises() method.

    Issue #211.

    Bump version number.

  • v5.47 2023-11-28 Imported from URL
  • v5.46 2023-11-27

    Reset the tracking id on duplicate items.

    This helps with, but does not solve, the issue with duplicate items in a Scroller.

    Issue #204.

    Make use of the new TestCase.assertNoRaises() method.

    Issue #211.

    Bump version number.

  • v5.45 2023-11-26

    Use optional chaining in case the querySelector() fails.

    Retire SPADetails setup issues in favor of NH.base.issues.

    Issue #205.

    Normalize spacing around logger.{entered,leaving}() in Logger.

    This makes it easier to read the code.

    Issues #204, #208.

    Update release notes.

    Bump version number.

  • v5.44 2023-11-25

    Bump all libraries to the current version.

    We only need recent changes to lib/base, but might as well grab everything.

    Issue #205.

    Plug in using NH.base.issues.

    Issue #205.

    Replace logging duplicates to posting to the new issues listener.

    Issue #204.

    Ignore non-viewable items when checking for duplicates.

    For lazily loaded items, they all get the same uid and that stays persistent, even after they are loaded. On the other hand, this did end up stress testing the new issue message queue.

    Issue #204.

    Update release notes.

    Bump version number.

  • v5.43 2023-11-24

    Tweak log message grammar.

    Issue #144.

    Fix typo in selector.

    Amazingly it was working (sometimes), even with the typo.

    Issue #144.

    Reduce calls into Scroller by keeping result in a local variable.

    Issue #144.

    eslint: Explicitly configure newline-per-chained-call and fix-ups.

    Closes #203.

    Log detection of duplicate items in a Scroller.

    Factored out an inner loop to do this, as the surrounding function became too large.

    Issue #204.

    Update release notes.

    Bump version number.

  • v5.42 2023-11-23

    Detect when focus shows up in message box and act accordingly.

    I am not keen on the idea of moving focus back to the current conversation card, but not sure where else to put it.

    Issue #144.

    Update selectors for hide/show job card in JobCollections.

    I guess someone from the Job team moved over to the JobCollections team because now they use similar mark up.

    Closes #206.

    Update release notes.

    Bump version number.

  • v5.41 2023-11-22

    Remove errant log statement.

    Issue #144.

    Move control of the tablist monitor into Scroller activation.

    It turns out that having two services that control the same thing (current item) starting up at the same time is a bit of a pain. It works, but functions are effectively multi-threading and really making the logger upset that groups are exiting in the wrong order. This is purely a cosmetic issue.

    But, since it is easily fixed by this change, which also happens to reduce code size a tiny bit, it is worth doing.

    Issue #144.

    Update release notes.

    Bump version number.

  • v5.40 2023-11-20

    Validate uidCallback.

    This will help with silly mistakes when adding a new Scroller.

    Issue #144.

    Use this.id to ease custom naming in test methods.

    Add Scroller for Messaging view.

    No hotkeys yet, but the basics are here, including finding the active card on both page activate and changing the active Focused/Other tab.

    When a new conversation is selected (and this happens without LIT), the focus immediately moves to the Write a message... text area, which makes navigation tricky. The user would need to a nav-key TAB nav-key TAB sequence to move around.

    Need to review other pages to see if they have a similar problem and if we already have precedence on how to handle this.

    Issue #144.

    Update release notes.

    Bump version number.

  • v5.39 2023-11-19

    Implement moving to the message tablist.

    Issue #144.

    Update release notes.

    Bump version number.

  • v5.38 2023-11-18

    Monitor which messaging tab (Focused/Other) is currently active.

    Issue #144.

    Bump version number.

  • v5.37 2023-11-17

    Bump all libraries to the current version.

    This is also a good time to switch them all to the new URLs Greasy Fork is using.

    Issue #200.

    Update release notes.

    Bump version number.

  • v5.36 2023-11-16

    Enable GM.setValue() and GM.getValue().

    Issue #170.

    Update release notes.

    Bump version number.

  • v5.35 2023-11-14

    Tweak HTML in news content.

    This more closely matches what the markdown on GitHub and Greasy Fork use.

    Update release notes.

    Bump version number.

  • v5.34 2023-11-13

    Support an optional timeout on containers in Scroller.

    Issue #165.

    Switch the paginationScroller to using containeritems.

    The 1 second timeout may need tweaking after experience.

    This had to wait until Scroller supported timeouts in activating container click handlers. Otherwise, it could just wait forever. Not all pages handled by JobCollections will have pagination. It depends on both the page and the number of items that page may serve.

    Closes #177.

    Switch everything over to using the new devmode option.

    Closes #198.

    Remove old comment.

    Issue #173.

    Rewrite testParseSeq() as a TestCase.

    Issue #179.

    Update release notes.

    Bump version number.

  • v5.33 2023-11-12

    JSDoc: Correct outdated reference.

    Issue #141.

    Rename properties with underscores in them in Page subclasses.

    Issue #141.

    Verify a container exists before looking for items.

    Issue #165.

    Implement a simple (for now!) loadOptions().

    Issue #198.

    Update release notes.

    Bump version number.

  • v5.32 2023-11-10

    More renaming getters from old private _names to current names.

    Issue #141.

    Change terminology from 'base' to 'container' as appropriate.

    Issue #177.

    Rewrite testScroller() as a TestCase.

    Issue #179.

    Bump version number.

  • v5.31 2023-11-09

    Rename getters from old-style private _names to current names.

    This change is invasive enough to do stand-alone.

    Issue #141.

    Listen for clicks during the capture phase in Scroller.

    We want to make sure we see them before the web page may cancel it.

    Closes #161.

    Update release notes.

    Bump version number.

  • v5.30 2023-11-08

    style-nudge: Make a #private field static in Feed.

    This happens to be used in a string necessary early in the loading process. In order for it to be placed in the style-guide preferred location, it needed to be static.

    Issue #173.

    style-nudge: Right place #private methods in Page subclasses.

    Issue #173.

    style-nudge: Right place #private methods in SPA.

    Issue #173.

    Remove experimental support for w2ui.

    Issue #189.

    Bump version numbers.

  • v5.29 2023-11-07

    Bump versions of many libraries.

    Mostly this grabs new dev things, like better error messaging and test assertions.

    Issues #170, #185.

    Move loading and saving of Logger configs outside of testing.

    The lib/userscript variations will do sensible things when the {get,set}Value functions are not granted, which is currently the case. However, developers can turn them on for testing.

    This particular sequences, of saving on hidden and loading on visible, allows developers to switch to another tab that has the userscript manager UI, tweak the values there, and then load the new values when returning to the LinkedIn tab. At least, until we get an in-app UI built for this.

    Issues #145, #170.

    Simplify Feed.#onPostActivate().

    We really only care if the post still has the has-occluded-height attribute at this point. So, just check that directly rather than looping through the list of attribute changes.

    Also, since we now want to log inside the monitor, change it to an arrow function.

    Issue #150.

    Make item being viewable a criteria for reactivation.

    This comes closer to solve the special case for Feed. It still needs to handle the case where, here, the classes are properly assigned, but by the time this function leaves and Feed takes back over, all of the classes are explicitly reset by LinkedIn.

    Issue #150.

    style-nudge: Right place a #private field in Scroller.

    This was a recent addition. Missed because this is not yet a precommit hook.

    Issue #173.

    Retire the DummyService.

    No longer needed as we have real ones to test with.

    Issue #130.

    style-nudge: Right place most #private fields in Page subclasses.

    One needs to be changed to a static #private field, and that will be a separate change.

    Also took the opportunity to remove some unnecessary initializers which were holdovers from earlier days in the project.

    Issue #173.

    style-nudge: Right place #private fields in SPADetails.

    Issue #173.

    style-nudge: Right place #private fields in LinkedIn.

    Issue #173.

    style-nudge: Right place #private fields in SPA.

    Issue #173.

    Update release notes.

    Bump version numbers.

  • v5.28 2023-11-06

    style-nudge: Right place static #private fields in Page subclasses.

    Issue #173.

    Move news content out of LinkedIn to a global variable.

    As static #private fields, they needed to be moved to the correct location inside the class. Might as well make them global to the app.

    Issue #173.

    Wait for current item to reappear when Scroller is reactivated.

    Works well enough to remove equivalent code from three locations. To handle the one in Feed requires a bit more work.

    Not perfect, but a good start.

    Issue #150.

    Update release notes.

    Bump version numbers.

  • v5.27 2023-11-05

    Bump lib/userscript to version 3.

    This picks up a fix for using Greasemonkey.

    Closes #187.

    style-nudge: Right place a static #private field in LinkedIn.

    Issue #173.

    Bump lib/widget to version 2.

    Does not do anything yet, but it does allow me to act in developer mode with one less local change.

    Issue #185.

    Fix typo in the name of logging group.

    Include the unknown issues in the error message.

    Update release notes.

    Bump version numbers.

  • v5.26 2023-11-04

    Missed adding a known issue.

  • v5.25 2023-11-04

    style-nudge: Alphabetize #private properties in Page.

    Issue #173.

    Remove Page._refresh().

    Issue #150, #178.

    style-nudge: Right place static pubic methods in SPA.

    I had been putting this particular move off because I know these methods are going to be removed. But that is taking longer than hoped.

    Going ahead and doing this will allow a new (dumb) linting tool to be created.

    Issue #173.

    Bump lib/base to version 22.

    Use new simpleParseWords() function and retire similar static SPA method.

    Issues #130, #180.

    style-nudge: Alphabetize some public getters in Page subclasses.

    Issue #173.

    style-nudge: Organize public getters in SPADetails.

    Issue #173.

    style-nudge: Organizer getters in SPA.

    Issue #173.

    style-nudge: Organize public methods in LinkedIn.

    Issue #173.

    Experiment with using the w2ui library.

    Issue #185.

    Update release notes.

    Bump version numbers.

  • v5.24 2023-11-03

    Add missing '*' from a comment.

    Issue #173.

    style-nudge: Right place a getter in Scroller.

    Issue #173.

    style-nudge: Right place a property in AccordionTableWidget.

    Issue #173.

    style-nudge: Move a static #private property in Page.

    Issue #173.

    style-nudge: Right place a property in Global.

    Issue #173.

    style-nudge: Right place properties in VMKeyboardService.

    Issue #173.

    Migrate Notifications from refresh to onScrollerActivate.

    Issue #178.

    Update release notes.

    Bump version numbers.

  • v5.23 2023-11-02

    Implement s to focus on the Search messages input field.

    Issue #144.

    Move static public methods in all remaining class.

    Issue #173.

    Variable renaming from 'resultspage' to 'pagination'.

    Issue #177.

    Migrate InvitationManager from refresh to onScrollerActivate.

    Issue #178.

    Move saving Logger configs to when the page goes away.

    Since we are tracking counters, not just booleans, it makes sense to have it automatic rather than opening some future config screen.

    Issue #145.

    Update release notes.

    Bump version numbers.

  • v5.22 2023-11-01

    Bump lib/widget to version 1 and Widget from that library.

    Issue #167.

    Make all static _unique functions officially public.

    I am not a big fan of this, preferring that they stay private. However, there are a couple of issues:

    • The older version of eslint I am using cannot handle multiple static #private methods
    • Making them static #private arrow functions would require that they be defined before the static field that references it, violating the style guide.

    Just easier to do this for now.

    Issues #141, #173.

    Migrate MyNetwork from using refresh to onScrollerActivate.

    Issue #178.

    Bump version numbers.

  • v5.21 2023-10-31

    Implement N to compose a New message.

    Issue #144.

    Depend on lib/widget version 0.

    Also make use of the Info widget.

    The Widget base class is purposefully not exposed (at the moment), so we have to keep it duplicated until we migrate the new accordion over.

    Issue #167.

    style-nudge: Move public methods in Page.

    Issue #173.

    Make a #private method an arrow function.

    Issue #141.

    Move static #private methods in Global.

    Issue #173.

    Move the constructor() to the top of all remaining classes.

    Issue #173.

    Add styling for the keystrokes tab in the new info view.

    Issue #180.

    Add a colon (:) at the end of keystroke sequences.

    Issue #180.

    Update release notes.

    Bump version numbers.

  • v5.20 2023-10-30

    Move saving of Logger configs into closing the new info view.

    This is still behind a dev flag.

    Issue #145.

    style-nudge: Move public getters in Page.

    Issue #173.

    Implement l to load more conversations.

    Issue #144.

    Start refactoring widgets into their own library.

    Issue #167.

    Migrate Feed from using refresh to onScrollerActivate.

    Issue #178.

    Run shortcut key sequences through parseSeq() and adjust CSS.

    Issue #180.

    Update release notes (formatting as well as content).

    Bump version numbers.

  • v5.19 2023-10-29

    Move parseSeq from SPA to VMKeyboardService.

    Both currently use VM.shortcut facilities, so it makes sense to put them together.

    Issue #130.

    Switch Messaging to using containerItems for primary Scroller.

    Issue #165.

    Reflow the containerItems in Feed for consistency.

    This is how we ended up doing this for all other locations that do not fit on one line.

    Issue #165.

    Bump lib/web to version 1 and use functions from that library.

    Issue #167.

    Remove some unnecessary trailing semicolons.

    Issue #173.

    style-nudge: Move constructor() to the top of Page.

    Issue #173.

    Bump version numbers.

  • v5.18 2023-10-28

    Minor tweak to JSDoc wording.

    Issue #130.

    Enhance TabbedUI to take an HTML element as well as a string.

    This will make it easier for a tab to be another widget.

    Issue #130.

    Implement Widget.clear().

    Issue #130.

    Create a simple AccordionTableWidget.

    Does not do much yet, just a base to build on.

    Issue #130.

    Start populating the new table with shortcuts.

    Very raw, no styling yet.

    Issue #130.

    Add a VMKeyboardService to all Pages.

    They still do nothing, but it will at least allow the new info view to have content.

    Issue #130.

    Switch JobCollections to using containerItems for one Scroller.

    Issue #165.

    Fix minor typo in a logging context.

    Make CSS selectors for the pagination scroller a bit more precise.

    Issue #165.

    Bump lib/userscript to version 2.

    Make use of the new environmentData() function.

    Issue #167.

    Migrate a number of functions to lib/web.

    These include clickElement(), focusOnElement(), and isInput().

    I have no idea how I missed these when I added the otmot family.

    Issue #167.

    style-nudge: Move static #private fields into the correct location.

    Issue #173.

    Bump version numbers.

  • v5.17 2023-10-28

    Depend on lib/web version 0.

    Also use all of the function already migrated to it.

    Issue #167.

    Factor some reusable code out of InfoWidget into a base class.

    Other rendering widgets can also use this base, but will require a bit more work. This is essentially a distilaltion of previous implementations.

    More imporantly, this can be used for the forthcoming accordion widget.

    Issue #130.

    Switch MyNetwork to using containerItems for primary Scroller.

    Issue #165.

    Add environmentData() to lib/userscript.

    Mostly a raw copy from _errorPlatformInfo(). Untested in its current form.

    Issue #167.

    style-nudge: Move #private properties to the correct location.

    Missed a static method last time, as well. Also, changed setKeyboardContext from an arrow function to a regular method. This is not in effect yet, so this may change. But I do not think it needs to be an arrow function here.

    Issue #173.

    Update release notes.

    Bump version numbers.

  • v5.16 2023-10-28

    Missed a known issue, thus breaking the application.

  • v5.15 2023-10-27

    Hook in building shortcut table each time the info view is opened.

    Does not yet actually build anything, just logs.

    Issue #130.

    Switch Feed to using containerItems for primary Scroller.

    Also made the container selector a bit more precise.

    Issue #165.

    Bump versions of all libraries being used.

    Also make use of the ensure() feature that provides a restricted namespace.

    Issue #167. Closes #175.

    style-nudge: Reorder a single property in ScrollerService.

    Issue #173.

    style-nudge: Move public static methods to the correct location.

    In this case, constructor() counts as a public static method.

    Issue #173.

    Start refactoring WEB API specific code into its own library.

    Issue #167.

    Bump version numbers.

  • v5.14 2023-10-27

    style-nudge: Reorder the properties in Service.

    Issue #173.

    Make a couple of CSS selectors available as constants.

    Issue #174.

    Have Jobs pageReadySelector use the newly available constant.

    Issue #174.

    Have Messaging pageReadySelector use the new constant.

    The effect of using this selector over the previous one is minimal, but is starts a pattern of consistency across Pages where it is possible.

    Closes #174.

    Correct TabbedUI example.

    Export VMKeyboardService.#services as a getter.

    Issue #130.

    Create an empty shortcuts tab for the new info view.

    Issue #130.

    Depend on lib/userscript version 0.

    Also use the licenseData() function from it.

    Issue #167.

    Bump version numbers.

  • v5.13 2023-10-26

    Bump versions of lib/base and lib/xunit being used.

    Also migrate namespace from NH.base.testing to NH.xunit.testing.

    Issues #167, #172.

    style-nudge: Alphabetize a LinkedInGlobals getter.

    Issue #173.

    Move linkedInGlobals close to first use.

    Issue #173.

    Expose active status of a VMKeyboardService instance.

    Issue #130.

    Switch Jobs' primary Scroller to using containerItems.

    Issue #165.

    Start refactoring userscript specific code into own library.

    Issue #167.

    Bump version numbers.

  • v5.12 2023-10-25

    Move running tests to before instantiating LinkedIn.

    Too much interleaving of logs otherwise.

    Issue #172.

    Depend on lib/xunit version 0.

    Issue #167.

    Allow use of containerItems.

    Issue #165.

    Rename some event handlers.

    Issue #130.

    Prefer new info view in dev mode.

    Issue #130.

    Missed a known issue in the initial list.

    Issue #106.

    Throw Error if there are unknown issues when building the News tab.

    After some experience, it turns out throwing an error is more important than silently ignoring it.

    Issue #106.

    Give Service a shortName property.

    Issue #130.

    Improve list of shortcut in VMKeyboardService.

    Expose the list via a getter and update it when instance are removed.

    Issue #130.

    Bump version numbers.

  • v5.11 2023-10-25

    Factor out generation of the name and instruction elements.

    The function was getting too long.

    Issue #130.

    Add hotkey navigation for inside the new info view.

    Issue #130.

    Tune Jobs pageReadySelector again.

    It turns out that #compactfooter-copyright is loaded lazily. So, if the user scrolls down the Jobs page, visits a job, and comes back, the copyright will not show up until until the user scrolls it into view. So the page is not activated until that happens.

    However, the aside element, which will eventually contain the copyright, is loaded earlier. Still after main, though in that same batch.

    Issue #165.

    Have Scroller.#getItems support #containerItems.

    This may not be the final form, but it is simple. Unlike how we handled #onClickElements, where we changed a single HTML element to a set of elements, here we are going from an (element, [string]) tuple to a list of string, string pairs. Unless we need to do massaging of the information while poplating the list of elements to actually return, I suspect this may be the simplest way to go.

    Anyway, I suspect this may be the last thing necessary to support containerItems. We should start migrating the other major scrollers in a day or two.

    Issue #165.

    Move Scroller #private properties.

    Issue #173.

    Bump version numbers.

  • v5.10 2023-10-24

    style-nudge: Move TabbedUI #private fields to the correct location.

    Issue #173.

    Install event listeners for the new info widget.

    Issue #130.

    Install tabs in the new info widget.

    Also populated it with a couple of easy to handle tabs.

    Issue #130.

    Change Jobs pageReadySelector to #compactfooter-copyright.

    Measured, and shows up noticeably later than main.

    Issue #165.

    Give Jobs experimental containerItems.

    Like many things, keyed to testing being enabled. And does not work yet.

    Issue #165.

    Have Scroller.#waitForBases return the Promise.all().

    The caller will soon have a need for them.

    Issue #165.

    Change Scroller's #onClickElement to a set of elements.

    Issue #165.

    style-nudge: Move Scroller public methods.

    Issue #173.

    Bump lib/base to version 12.

    Make use of the new ensure function.

    Issue #167.

    Bump version numbers.

  • v5.9 2023-10-22

    Initial support for the Messaging page.

    Figuring out when a page is ready to be activated has long been an issue. I finally wrote up some documentation for it: https://github.com/nexushoratio/userscripts/blob/main/STYLE-GUIDE.md#supporting-a-new-page

    Issue #144.

    Replace Jobs refresh() with scroller onActivate.

    This page is a good place to test the containerItems stuff.

    Issue #165.

    Bump version numbers.

  • v5.8 2023-10-21

    Basic News tab.

    Pretty ugly, but a start.

    Issue #106.

    Use a local variable for tracking the infowidget container element.

    Issue #130.

    Add a dismiss button to the header of the new info widget.

    Issue #130.

    Bump version numbers.

  • v5.7 2023-10-19

    Move the #private property towards the end of the class.

    Issue #173.

    Turn static URLs into a couple of helper functions.

    This is really just a personal helper function. The editor I use happend to have problems with formatting if #private properties are used inside template literals. So I moved them out. Lame reason, I know.

    Issue #106.

    Move #private properties to the end of LinkedIn.

    Issue #173.

    Split the lit-instructions CSS class into two.

    Issue #130.

    Move the info widget styling to CSS classes.

    Issue #130.

    Additional logging for Scroller.

    Issue #165.

    Move the deprecated refresh to after services are activated.

    Every current refresh depends on Scroller, which is now wrapped by service activation.

    At the moment this means nothing, but it does confuse debugging.

    Issue #165.

    style-nudge: Move Scroller's getters to the correct place.

    Issue #173.

    style-nudge: Move Jobs' #private fields to the correct location.

    Issue #173.

    Bump lib/base to version 9.

    Remove Dispatcher from this file and use the version from the library.

    Issue #167.

    Add missing eslint-enable at the end of tests.

    Bump version numbers.

  • v5.6 2023-10-19

    Factor out the GitHub and Greasy Fork URLs so they can be reused.

    Issue #106.

    Style the new info widget to be the same size as the old one.

    Issue #130.

    Replace a spa class with a lit one.

    Also have #addLitStyles use the same pattern for adding styles as other places in the code.

    Issue #130.

    Make Scroller.#containerItems default to an empty array.

    Issue #165.

    Have Scroller.activate() wait for containers to show up.

    Issue #165.

    Bump lib/base to version 8.

    No recent code migrations, just pulling in new features.

    Issue #167.

    Migrate Dispatcher to lib/base.

    Issue #167.

    Use the new test runner from lib/base.

    Issue #172.

    Move public methods closer to the top of TabbedUI.

    Issue #173.

    Bump version numbers.

  • v5.5.2 2023-10-18

    Create a simple test runner.

    Issue #172.

    Move InfoWidget #private properties to the end of the class.

    Issues #130, #167.

    Move one TabbedUI #private method to the end of the class.

    Just prep work before moving this to lib/base.

    Issue #167.

    Introduce ContainerItemsSelector to Scroller.

    Issue #165.

    Move #private properties to the end of Dispatcher.

    Just prep work before moving this to lib/base.

    Issue #167.

    Move some #private properties to later in the class for Service.

    Just prep work before moving this to lib/base.

    Issue #167.

    Bump version number.

  • v5.5.1 2023-10-17

    Add a placeholder comment.

    This will make applying a particular patch that enables debugging easier to apply.

    Issue #170.

    Minor rearranging of code.

    Just nudging to code towards the new style guide prior to eventual refactoring.

    Issue #167.

    Add open and close methods and events to InfoWidget.

    Issue #130.

    Migrate some hold overs to #private properties.

    Issue #141.

    Replace a thenable with await.

    Now that the wrapping IIFE is an async function, we can replace waiting on LinkedIn.ready's with an await rather than a then().

    This pausing the subsequent testing, which could get the proceeding log message and those from creating SPA and the Page classes mixed in with it.

    This does not eliminate all mixed in logs, since we do have event handling all over the place. But, it does reduce it.

    Issue #167.

    Move Scroller constructor validation to a separate method.

    Future validations are going to make the function too long, so refactor now.

    Issue #165.

    Correct some strings in Scroller's tests.

    Issue #165.

    Bump lib/base to version 6.

    Remove uuId, safeId, and strHash from this file and use the versions from the library.

    NOTE: Due to lack of proper coding hygiene (see issue #171), lib/base calls itself version 5.

    Issue #167.

    Bump version number.

  • v5.5.0 2023-10-16

    Implement + and - for thumbs-up and thumbs-down on job cards.

    This is a bit of a cheat. Depending on the exact page being visited, the job card may either have thumbs-{up,down} buttons OR a X dismiss button.

    The way dismiss and thumbs-down are selected are identical (at the moment), so dismiss just calls thumbs-down.

    It is always possible that in the future, these two will have different ways of selecting them and this will have to be changed again.

    Closes #168.

    Expose the #details property via a getter.

    Page subclasses will generally be application specific and may need information from this SPADetails instance.

    Issue #130.

    Create a LinkedIn.navBarScrollerFixup() method.

    Page classes often need to have the {Scroller~How} configurations fixed up once we know how tall the navbar is. Instead of having having the LinkedIn class updating static public properties, the classes can now send in the properties for update.

    Issue #130.

    Page classes ask the LinkedIn instance to update some properties.

    A later change can make these public properties #private.

    Issue #130.

    Bump lib/base to version 5.

    Remove Logger from this file and use the version from the library.

    Issue #167.

    More Scroller hardening and tests.

    Issue #165.

    Migrate uuId, safeId, and strHash to lib/base.

    Issue #167.

    Bump version number.

  • v5.4.8 2023-10-16

    Move #private properties to the end of the class.

    Just prep work before moving this to lib/base.

    Issue #167.

    Move a lost comment to a sensible place.

    Start writing tests for Scroller.

    Issue #165.

    Make a CSS selector case insensitive.

    Apparently a matching word changed from "Undo" to "undo".

    Issue #168.

  • v5.4.7 2023-10-15

    Bump version number.

  • v5.4.6 2023-10-15

    Move setting #spa from start() to constructor().

    One more step in eliminating start().

    Issue #130.

  • v5.4.6 2023-10-14

    Simple toggle to bounce between info views.

    Only happens in testing mode.

    Also move saving Logger configs to this same if statement merely for convenience.

    Issues #130, #145.

    Use #lastScroller technique in Jobs.

    Closes #163.

    Implement waitForSelector and migrate users to it.

    The most common use of otmot is waiting for elements to show up. This provides a simple way of doing that.

    I realized this after looking at other JS libraries hosted on GreasyFork and seeing how many implement this same pattern. And that we will need it for Scroller.

    Issue #165.

    Bump lib/base to version 3.

    Remove DefaultMap from this file and use the version from the library.

    Issue #167.

    Add ability for a test case to have a testName property.

    If a test case is defined using a static #private method, then there will be no name available, and it is not possible to assign one easily. However, assigning a property called testName works, so allow that as an option.

    Issue #167.

    Migrate Logger to base.

    Some cosmetic differences between the original version and this one:

    • GroupMode is now internal. I figured out how to use static initialization blocks to create the known enums and freeze the nested class.
    • #Config is now a private class.
    • These classes required a lot of rearranging to meet the new style guidelines.

    I did waffle a bit about whether I should move GroupMode into Logger or Config out. With the way the library explicitly exposes symbols, both would allow them to be effectively private. Since this whole userscript thing is as much of a learning exercise as anything else, I went with the hardway, simply for the experience. If Logger was going to be in a standalone module, I would likely have moved them out, but since these libraries will not be that granular, I also think this makes more sense.

    Issue #167.

    Bump version number.

顯示所有腳本版本