[CHERRY-PICK] [#8366] Move FileSystemUtils into FileSystem

Cherry picking from master to 2.0-preview
It's odd that some functions of the Alluxio Filesystem are implemented within FileSystemUtils as opposed to the normal FileSystem. Passing a FileSystem and FileSystemContext together in any of the functions within FileSystemUtils implies that the FileSystemContext belongs to the FileSystem client that is being passed. While implied, it is not necessarily strictly enforced. Moving these functions into the FileSystem API and implementations to BaseFileSystem provides more flexibility because they no longer need direct access to the FileSystemContext to perform checkConsistency, persist, and waitCompleted operations.

@calvinjia

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/2038/
Test PASSed.


systemd stop jobs causing long shutdown/reboot times on 16.10

While debugging #81, I've had to reboot my freshly installed Ubuntu 16.10 many times.
I've noticed that the stop job for ifup for etho (presumably turning off the interface) and moreso the unmounting of /var/run/0 can take a while. The default systemd timeout configuration is 1m30s, but the estimated time roughly doubles everytime the elapsed time of the stop job breaches the previous estimated time (e.g. if the stop job was estimated to take 1m30s but ended up going over, the estimated time doubles or just adds 30s or similar). This can keep going on, for up to 9m in my experience (I always end up doing a 'Hard Reboot' through the Scaleway web interface - my filesystems must hate me).
I've tried editing the DefaultTimeoutSec value in /etc/systemd/system.conf and while this sets the stop job estimated time to what I put in the configuration file, the estimated time keeps doubling.
Research online has lead me. Some Arch Linux users managed to mitigate/stop this on their systems by modifying the same value I did and/or installing watchdog and enabling its systemd service, but this hasn't worked in my experience either.
The exact messages I'm getting are "A stop job is running for /run/user/0" or A stop job is running for ifup for eth0".
The ifup stop job will sometimes properly stop by itself, leading to the /run/user/0 one which takes a while (I'm not sure if it ever ends as I'm unwilling to wait).
Any help would be appreciated.

Can confirm, having the exact same problem here. Also tried everything you mentioned before stumbling upon this issue. Waited around 18 minutes just to see "[FAILED] Failed unmounting /run/user/1000.". It still wouldn't reboot and I also did a 'hard reboot' after having waited another 5 minutes.
[FAILED] Failed unmounting /run/user/1000.
[  OK  ] Reached target Unmount All Filesystems.
[  OK  ] Stopped target Local File Systems (Pre).
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Stopped Create Static Device Nodes in /dev.
[  OK  ] Reached target Shutdown.
[ 1448.977223] block nbd0: Attempted send on closed socket
[ 1449.040000] blk_update_request: 17 callbacks suppressed
[ 1449.102764] blk_update_request: I/O error, dev nbd0, sector 75563344
[ 1449.179116] EXT4-fs error (device nbd0): ext4_find_entry:1450: inode #2359574: comm systemd: reading directory lblock 0
[ 1518.687793] systemd-journald[2372]: Failed to send WATCHDOG=1 notification message: Connection refused
[ 1588.685640] systemd-journald[2372]: Failed to send WATCHDOG=1 notification message: Transport endpoint is not connected
[ 1698.682197] systemd-journald[2372]: Failed to send WATCHDOG=1 notification message: Transport endpoint is not connected
[ 1768.680023] systemd-journald[2372]: Failed to send WATCHDOG=1 notification message: Transport endpoint is not connected

Hi mate. Try booting up with a rescue bootscript and running fdisk on your nbd0 volume.

Pretty new to fdisk, what am I actually supposed to do? And how did I get all those drive errors when this is a completely new server?

Sorry for the late reply mate. Just got really busy.
I can't really tell you where all the drive errors came from. I think they're just minor little things.
I'm shaky with fdisk, so Google how to repair a filesystem with it. Iirc, the -y flag automatically says yes to any prompts (e.g. "Do you want to repair this error?" and -a runs fdisk automatically. Something like that. Good luck!

Couldn't find any errors with fdisk though, also rolled back to 16.04 shortly afterwards, so can't try it anymore.


Remove idevice_id, idevicename & ideviceinfo from libimobiledevice cache package

After https://github.com/flutter/flutter/pull/50248 lands, the tool will no longer need the idevice_id and ideviceinfo binaries. Removing them from the pre-built package will mean removing the entries here, updating the mirrored repos (either with a trivial change, or better bringing them up to date with upstream), and rolling the new versions to the framework via the version files in flutter/bin/internal.

idevicename is also gone with https://github.com/flutter/flutter/pull/50084.

https://github.com/flutter/flutter/pull/50248 is merged!

ideviceinstaller is also gone

Woohoo!

@christopherfujino What's the status of this issue? What work is there left to do?

Recipe moved to https://flutter.googlesource.com/recipes/+/refs/heads/master/recipes/ios-usb-dependencies.py#58.

What's the status of this issue?

I don't think any of the work in the description has been done.

What work is there left to do?

All of it!

@zanderso thanks for the reminder, i'm deep in the LUCI config weeds fixing this https://github.com/flutter/flutter/issues/59506, so I'll do this while i'm at it.


Fixgraph : improvement in remaning graph Algorithms

Description of Change
improvement in remaning graph Algorithms

Checklist

[x] Added description of change
[x] Added file name matches File name guidelines
[x] Added tests and example, test must pass
[x] Added documentation so that the program is self-explanatory and educational - Doxygen guidelines
[x] Relevant documentation/comments is changed or added
[x] PR title follows semantic commit guidelines
[x] Search previous suggestions before making a new one, as yours may be a duplicate.
[x] I acknowledge that all my contributions will be made under the project's license.

Notes:

linked with #932

@ayaankhan98 For future, please create pull-requests on forks rather than the main repo. This will help us maintain a clean repo. Thanks.

@ayaankhan98 Seeing this effort makes me feel so happy! Are you still working on it? Some of my work depend on this branch now: #980. I'm happy to help here, #983. I need to merge the master branch into this branch and opened a PR for that as well #984.

@ayaankhan98 Seeing this effort makes me feel so happy! Are you still working on it? Some of my work depend on this branch now: #980. I'm happy to help here, #983. I need to merge the master branch into this branch and opened a PR for that as well #984.

@fhlasek  i am facing some issue with my machine, that's why i am unable to work on this PR, it would be nice if you take this forward and complete this.

@ayaankhan98 sounds good, as I said, I'm happy to help, just didn't want to redo something that you already have ready to push :-)

@ayaankhan98 sounds good, as I said, I'm happy to help, just didn't want to redo something that you already have ready to push :-)

@ayaankhan98 and @fhlasek  good progress, gentlemen.
@fhlasek may I suggest to take the branch to your fork and make the necessary updates. We can close the #954 and #984 and you can then create a new pull request. This way, all the contributions by both of you would be retained. Thank you 😄

@ayaankhan98 sounds good, as I said, I'm happy to help, just didn't want to redo something that you already have ready to push :-)

@ayaankhan98 and @fhlasek good progress, gentlemen.
@fhlasek may I suggest to take the branch to your fork and make the necessary updates. We can close the #954 and #984 and you can then create a new pull request. This way, all the contributions by both of you would be retained. Thank you

sounds good to me.


Program fields in ReadGroup should be filled from @PG tags

The ReadGroup.programs field is currently not being populated. This should be filled in using the SAM @PG tags, if present.

Considering that ReadGroup doesn't represent a BAM, whereas a ReadGroupSet does, shouldn't the .programs field be moved to the latter? (see #574)

@macieksmuga --- yes, probably. This would be a  schemas issue though.

Fixed in #590


Updated the Pubsub sample

As requested in b/36888286.

Hi Frank! Thanks for the review. I have made the requested changes. There is one thing I am not sure though; some comments in the new sample only apply to Ruby (for example, exceptions thrown in callback functions will not propagate to main thread in Ruby Pub/Sub client library), and I feel that it might be OK to include them in the sample? If they should be removed as well, please let me know. Thanks :)
Chen

Hi Frank! Thanks for the comments. I've made the requested changes :)

Hi Frank! Thanks for helping me out :) I've made the requested changes. Topics.rb line #55 and #156 has been updated as well, not sure why GitHub won't recognize the old snapshots as outdated :(

Thanks @michaelawyu LGTM! Is documentation updated for these samples? cloud.google.com/pubsub/docs?

Thanks :) I've created a CL. Will publish the page to the staging site for tech writers to review once the new sample is published.

@michaelawyu sg! I wanted to make sure, so we will wait to merge until the CL is reviewed and ready to submitted.

Hi Frank! The CL (cl/186061185) has been approved. If it is OK with you, I will merge the sample and submit the CL after the final check. Thanks!

Hi @michaelawyu! I left a comment in the CL before we merge this I'd like for you to stage the documentation before publishing/merging cl and PR.


workflows: Enable debug mode in conformance tests

Closing in favor of https://github.com/cilium/cilium/pull/19825.


[BUG] In iOS Create folder time crash Occurs.

This Same crash occurs in your example code please check and then ping me.
My Code :
var asset = await PhotoManager.editor.darwin.createFolder(
'Test',
parent: null
);
Error :
-[PHCollectionList assetCollectionSubtype]: unrecognized selector sent to instance 0x280124820
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PHCollectionList assetCollectionSubtype]: unrecognized selector sent to instance 0x280124820'
*** First throw call stack:
(0x18b562db4 0x1899ed9a0 0x18b6c2c24 0x18b577f58 0x18b5db98c 0x100c8c628 0x100c96a58 0x1970fa850 0x1970fb7c8 0x1970d2b2c 0x1970dfd48 0x1970e0514 0x1d7610b14 0x1d761067c)
libc++abi: terminating with uncaught exception of type NSException

thread #62, queue = 'com.apple.root.default-qos', stop reason = signal SIGABRT
frame #0: 0x00000001c8a542f4 libsystem_kernel.dylib__pthread_kill + 8 libsystem_kernel.dylib:
->  0x1c8a542f4 <+8>:  b.lo   0x1c8a54310               ; <+36>
0x1c8a542f8 <+12>: stp    x29, x30, [sp, #-0x10]!
0x1c8a542fc <+16>: mov    x29, sp
0x1c8a54300 <+20>: bl     0x1c8a4fcd4               ; cerror_nocancel

Please provide device info, and better to make a screen record using simulators.


gnat14Packages.gnatcoll-sql: 24.0.0 -> 25.0.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/AdaCore/gnatcoll-db/releases.
meta.description for gnat14Packages.gnatcoll-sql is: GNAT Components Collection - Database packages
meta.homepage for gnat14Packages.gnatcoll-sql is: https://github.com/AdaCore/gnatcoll-db
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 25.0.0 in filename of file in /nix/store/4abp4jbjrjxi3a2wvm4ksfcj8pdb85zy-gnatcoll-sql-25.0.0

Rebuild report (if merged into master) (click to expand)

26 total rebuild path(s)

26 package rebuild(s)

First fifty rebuilds by attrpath

emacsPackages.ada-mode
gnat12Packages.gnatcoll-db2ada
gnat12Packages.gnatcoll-postgres
gnat12Packages.gnatcoll-sql
gnat12Packages.gnatcoll-sqlite
gnat12Packages.gnatcoll-xref
gnat12Packages.gnatinspect
gnat13Packages.gnatcoll-db2ada
gnat13Packages.gnatcoll-postgres
gnat13Packages.gnatcoll-sql
gnat13Packages.gnatcoll-sqlite
gnat13Packages.gnatcoll-xref
gnat13Packages.gnatinspect
gnat14Packages.gnatcoll-db2ada
gnat14Packages.gnatcoll-postgres
gnat14Packages.gnatcoll-sql
gnat14Packages.gnatcoll-sqlite
gnat14Packages.gnatcoll-xref
gnat14Packages.gnatinspect
gnatPackages.gnatcoll-db2ada
gnatPackages.gnatcoll-postgres
gnatPackages.gnatcoll-sql
gnatPackages.gnatcoll-sqlite
gnatPackages.gnatcoll-xref
gnatPackages.gnatinspect

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/4abp4jbjrjxi3a2wvm4ksfcj8pdb85zy-gnatcoll-sql-25.0.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A gnat14Packages.gnatcoll-sql https://github.com/r-ryantm/nixpkgs/archive/a0a9d51dbccfbc8bc88b98594696811bb9c539bc.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/a0a9d51dbccfbc8bc88b98594696811bb9c539bc#gnat14Packages.gnatcoll-sql

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/4abp4jbjrjxi3a2wvm4ksfcj8pdb85zy-gnatcoll-sql-25.0.0
ls -la /nix/store/4abp4jbjrjxi3a2wvm4ksfcj8pdb85zy-gnatcoll-sql-25.0.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:white_check_mark: 19 packages built:

emacsPackages.ada-mode
gnat12Packages.gnatcoll-db2ada
gnat12Packages.gnatcoll-postgres
gnat12Packages.gnatcoll-sql
gnat12Packages.gnatcoll-sqlite
gnat12Packages.gnatcoll-xref
gnat12Packages.gnatinspect
gnat13Packages.gnatcoll-db2ada
gnat13Packages.gnatcoll-postgres
gnat13Packages.gnatcoll-sql
gnat13Packages.gnatcoll-sqlite
gnat13Packages.gnatcoll-xref
gnat13Packages.gnatinspect
gnat14Packages.gnatcoll-db2ada
gnat14Packages.gnatcoll-postgres
gnat14Packages.gnatcoll-sql
gnat14Packages.gnatcoll-sqlite
gnat14Packages.gnatcoll-xref
gnat14Packages.gnatinspect

Maintainer pings
cc @sternenseemann for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

See https://github.com/NixOS/nixpkgs/pull/352856.


type-hinting fix to allow python3.8 compatibility

Subscripting type hints was introduced in python 3.9+. This change enables use of streamlit-shortcuts with python 3.8 as well!
ref: https://docs.python.org/3.9/whatsnew/3.9.html#type-hinting-generics-in-standard-collections
Relevant error log in python 3.8:
    def add_keyboard_shortcuts(key_combinations: dict[str, str]):
TypeError: 'type' object is not subscriptable

Why (still) python 3.8?

Python 3.8 is still yet to be EOL as of today
Is the default version of python in Ubuntu 20.04

@abhijitmajumdar apologies for the butchering of the correct history, I tried making it right so it showed you as an author but couldn't make it perfect and the release doesn't detect the right PR so I manually wrote the release notes.


[accessibility] keyboard navigation is broken and some interactive elements are missing focus styles.

According to WCAG and WAI websites and web apps must be fully operable via the keyboard.
There is a short video that tells why it is important:
Web Accessibility Perspectives: Keyboard Compatibility
Here are a few things that should be done:

[x] Focus styles must be added to all interactive elements(most of the elements already have them but some of them are missing focus styles). Without the focus keyboard, users can get lost i.e they won't be able to easily know where the current focus is or what interactive element they are on. https://slack.com is a good example of an accessible site. they use an outlined border around links when they receive focus:

The elements that are missing focus styles are anchors, and images that are wrapped by anchors, docs navigation, docs side panel and a few buttons.

[ ] Apart from the focus state styles there must be a tabbing order for keyboard users and dropdowns should reveal their content when they receive focus.

[x] the hamburger menu is missing keyboard support i.e users should be able to open the menu via tabbing to the hamburger and then pressing enter which will make the menu appear.

[x] On Desktop when the hamburger menu is hidden visually it should also be inaccessible to the keyboard users as well. Currently, On the Desktop to get to the contents on any page(below the nav) I have to first tab through 2 navigations with the exact same links.

Sometimes what happens is designer don't like the outlines or dotted borders around elements but their value for accessibility can't be ignored.

There is a way via which we can only make the outlines or specific focus styles appear when the user is navigating the content using a keyboard. For instance, https://gitpod.io is a good example which does that.

I volunteer to make small Prs related to accessibility :slightly_smiling_face:  I'll start off by making a PR for focus styles for Keyboard users only.

It would be nice if someone else can work on it.

dropdowns should reveal their content when they receive focus.

I believe this is optional. As long as a keyboard user is able to access a dropdown by pressing enter, the dropdown is accessible. Tabbing is still missing on a couple parts of the websites, but once we get those fixed, we should be good to close this issue!

Hi @julieg18 . Should we transfer this issue to the theme repo, or is it dvc.org-specific? Assuming it's still relevant


[$500] [Critical] [UX reliability] The plaid modal is taking long to load in the bottom up flow and not found page is shown

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number:
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @danielrvidal
Slack conversation: https://expensify.slack.com/archives/C05LX9D6E07/p1716940673539529
Action Performed:
Break down in numbered steps
BUG: Plaid connection is taking a very long time when I click Pay with Expensify for the first time

<EMAIL_ADDRESS>submitted<EMAIL_ADDRESS>an IOU.
<EMAIL_ADDRESS>got the email and clicked Pay , is taken to the sign in page, gets the magic code and logs in
I navigate to the IOU in our DM and click Pay with Expensify
It just seems to load for a long time showing a screen “We’re taking a look at your information. You will be able to continue with next steps shortly.”
I’ve instances where I can’t currently get this to load with a test account OR it takes a long time. It should be taking me to Connect with Plaid.

Underneath the overlay though you can see it says Hm… it’s not here.
If I then leave the Plaid setup, I see the Hm… it’s not here flow, which is incorrect.
If I click the link to “You don’t have access to this chat”, it opens the DM.

Having it take a long time is reproducible for me right now. I my first experience was here, and I’ll put another video and logs in :thread:.
Expected Result:
Describe what you think should've happened
The bank account flow should open after a bit. Real report remains open under the moda.
Actual Result:
Describe what actually happened
User is stuck on the plaid modal flow and there is not found page shown in the report screen
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://expensify.slack.com/archives/C05LX9D6E07/p1716940740586069?thread_ts=1716940673.539529&cid=C05LX9D6E07

View all open jobs on GitHub
Issue OwnerCurrent Issue Owner: @
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01b1cf25507f28de79
Upwork Job ID:<PHONE_NUMBER>900498432
Last Price Increase: 2024-05-31
Automatic offers:

getusha | Reviewer | 102615217

Hello, is there a bounty for this issue, regardless, I want to work on this.

Yes there is a bounty, making it 500 since its critical task

Okay here's what I think: The issue described involves the Plaid modal taking a long time to load in the bottom-up flow, eventually leading to a "Not Found" page in Expensify's app. Here’s a detailed look into potential causes and how to fix them:
Potential Causes
1, Network Latency:
Slow network responses from the Plaid API could be causing delays in loading the modal.
2, Integration Issues:
There might be issues with the integration between Plaid and Expensify’s system, possibly due to incorrect API calls, misconfigured endpoints, or problems with API keys.
3, Timeouts:
The application might be hitting a timeout period while waiting for the Plaid modal to load, resulting in a fallback to the "Not Found" page.
4, React Native Specific Issues:
React Native might be having trouble rendering the Plaid modal efficiently due to compatibility issues or performance bottlenecks.
5, Error Handling:
Poor error handling in the code could be leading to a "Not Found" page instead of a more appropriate error message or retry logic.
Steps I plan to take on fixing the Issue
1, Check Network Conditions:
Monitor network requests to Plaid’s API using tools like Fiddler or Chrome Developer Tools to check for high latency or failed requests.
2, Review Integration Code:
Ensure that API endpoints and keys are correctly configured.
Verify that the API calls to Plaid are correctly formed and handle the responses properly.
3, Implement Retry Logic:
Implement retry logic for the API calls to handle transient network issues
4, Optimize React Native Performance:
Ensure that the React Native components used to display the Plaid modal are optimized for performance.
Use performance profiling tools to identify and resolve bottlenecks.
5, Improve Error Handling:
Enhance error handling to provide user-friendly error messages or fallback options instead of a "Not Found" page.
Finally, I will:
1, Diagnose the problem: Use network monitoring and error logging to identify the root cause.
Improve integration: Ensure API calls and configurations are correct.
2, Enhance user experience: Implement retry logic and better error handling to provide a smoother user experience.
3, Optimize performance: Use React Native performance tools to resolve any rendering issues.
By addressing these areas, you can significantly improve the loading time and reliability of the Plaid modal within the Expensify app.

Pardon me but I am not able to write a proposal for the job on Upwork. That said, If you give me the job to work on, I will submit it for your verification through telegram or even GitHub and only then you can give me what you deem fit for my work.

Proposal
Problem Statement
The issue at hand is that the Plaid connection takes a very long time when a user clicks "Pay with Expensify" for the first time. Users experience prolonged loading times and are sometimes stuck on a screen saying, "We’re taking a look at your information. You will be able to continue with the next steps shortly.” Underneath the overlay, there is a message saying, "Hm… it’s not here." If the user leaves the Plaid setup, they see the incorrect "Hm… it’s not here" flow. Clicking the link "You don’t have access to this chat" incorrectly opens the DM.
Root Cause
The root cause of the problem appears to be related to delays and potential missteps in the Plaid setup and connection process. The system does not transition smoothly from initiating the Plaid connection to the bank account flow, resulting in users being stuck in a loading state.
Proposed Changes
To solve the problem, the following changes are recommended:

Improve Plaid Connection Initialization
Ensure that the connection to Plaid is initiated correctly and that any initial checks or setups are handled promptly.

// Ensure proper initialization and error handling
async function initiatePlaidConnection() {
    try {
        const response = await startPlaidConnection();
        if (response.error) {
            handlePlaidError(response.error);
        } else {
            proceedToPlaidFlow(response.data);
        }
    } catch (error) {
        handlePlaidError(error);
    }
}

Enhance Loading and Transition Experience
Improve the user experience by ensuring that loading states are accurately represented and that users are transitioned correctly to the next steps.

// Manage loading state and transition
function proceedToPlaidFlow(data) {
    setLoading(false);
    navigateToPlaidSetup(data);
}

// Show a user-friendly loading state
function setLoading(isLoading) {
    if (isLoading) {
        showLoadingScreen("We’re taking a look at your information. You will be able to continue with next steps shortly.");
    } else {
        hideLoadingScreen();
    }
}

Handle Errors and Incorrect Flows
Ensure that errors and incorrect flows are handled gracefully and provide appropriate feedback to the user.

// Handle Plaid errors and incorrect flows
function handlePlaidError(error) {
    setLoading(false);
    showErrorMessage("There was an issue connecting to Plaid. Please try again later.");
}

// Navigate to the correct report after error
function navigateToCorrectReportAfterError() {
    navigateToReport();
}

Correct Message Display and Navigation
Fix the issues with incorrect message displays and navigation to ensure users do not see misleading information.

// Correct message display and navigation
function showErrorMessage(message) {
    displayOverlayMessage(message);
    // Additional logic to handle incorrect flows
    if (message.includes("not here")) {
        navigateToCorrectReportAfterError();
    }
}

Update Error Messages and Flow Handling
Ensure that error messages are clear and provide useful information to the user. Update the flow handling logic to avoid incorrect states.

// Update error messages and flow handling
function displayOverlayMessage(message) {
    // Display the message on the overlay
    overlayElement.innerText = message;
}

// Additional flow handling for errors
function navigateToReport() {
    // Logic to navigate to the correct report
    window.location.href = '/report';
}

Expected Result
The bank account flow should open after a brief loading period, with the real report remaining open under the modal. The transition should be smooth, and users should not encounter misleading messages or incorrect navigation.
By implementing these changes, the connection to Plaid should be more reliable and the user experience significantly improved, avoiding prolonged loading times and incorrect flows.

The screenshot/video link is not accessible

Was that screenshot/video shared in #expensify-open-source channel?

Here is the video
https://github.com/Expensify/App/assets/36083550/129bb65a-0884-4fd9-920d-30c4d2469eea

Posted in #contributor-plus to see if a C+ can take this over since it's been a week and @getusha has commented

Still waiting for proposals, both proposals posted by @goldenbear101 are AI generated.

Really sorry about that but they aren't AI-generated, It's a suspicion fine-tuned by AI. And I could prove iT as you will.

@goldenbear101 get yourself familiarized with the codebase and try writing a detailed proposal on where & what to change. and it's important to put accurate and detailed RCA.

Hi, Laurids from Margelo here. I will be working on this issue.

Thanks!

Holding on https://github.com/Expensify/Expensify/issues/350724 and https://github.com/Expensify/App/issues/43492 as discussed here https://expensify.slack.com/archives/C05R2V5GM1S/p1718259305669389?thread_ts=1716984044.957689&cid=C05R2V5GM1S

on HOLD

still held

If it's still happening, we will need to wait for - https://github.com/Expensify/Expensify/issues/350724

A conversation is happening here https://expensify.slack.com/archives/C07BLGL7GBX/p1720554518831649?thread_ts=1720547161.965499&cid=C07BLGL7GBX

Closing this as this is fixed https://expensify.slack.com/archives/C07BLGL7GBX/p1720554518831649?thread_ts=1720547161.965499&cid=C07BLGL7GBX

This seems to be still a problem but the API speed has improved a bunch so we might have to look somewhere else a bit

Hey, Hanno from Margelo here, I am available to look into this 👋

This is the bug report from the user
https://github.com/user-attachments/assets/5cf9eafd-7909-4b0c-ab56-1a865b7a43c8
As we can see, the internet strength is not great. Perhaps that could be also one of the reason.

I agree the internet is likely slow but it loads for like 15 seconds while the rest of the app seems to function still. So if we could improve anything in this flow, it feels like an important one.

@hannojg started a PR with some improvements

Looping in a BZ member to handle payment as I'm going OOO

$250 to @getusha for this one cc @zanyrenney
the automation seems to have failed

thanks @mountiny

I will pay now!

ah @getusha is paid via manual requests.

payment summary
$250 owed to @getusha via NewExpensify. Please request payment there.
Thank you!

$250 approved for @getusha


OutOfDirectMemoryError

Hi All,
I am using grpc java to build a server and use python to build the client. The rpc call is a stream to stream call. In server, the server will get more than 5000,000 records from a file and send it to client via the stream. But I get some errors on the server side. The message is as following, could anyone take look into this?
io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 16777216 byte(s) of direct memory (used:<PHONE_NUMBER>, max:<PHONE_NUMBER>)Aug 31, 2016 6:04:49 PM io.grpc.internal.SerializingExecutor$TaskRunner run
SEVERE: Exception while executing runnable io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$2@358c7df0
java.lang.IllegalStateException: call already closed
at com.google.common.base.Preconditions.checkState(Preconditions.java:174)
at io.grpc.internal.ServerCallImpl.close(ServerCallImpl.java:178)
at io.grpc.stub.ServerCalls$ServerCallStreamObserverImpl.onCompleted(ServerCalls.java:304)
at Heavy.PriceQuery.Mode1.MarketQuoteClientStreamObserver.onCompleted(MarketQuoteClientStreamObserver.java:37)
at io.grpc.stub.ServerCalls$2$1.onHalfClose(ServerCalls.java:217)
at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:260)
at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$2.runInContext(ServerImpl.java:503)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52)
at io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
thanks,
Eric

I ran into the same error when creating a Proof-of-Concept gRPC application to see if gRPC would work for my use case. Basically I was trying to send 3 million simple messages from the server to the client, in a single stream, and as a result I get the OutOfDirectMemoryError. I am probably doing something wrong or gRPC was not meant for such use case. If anyone could help, that'd be great.
The code: https://github.com/lploom/grpc-OutOfDirectMemoryError

Y'all might want to file the issue with the Java repository: https://github.com/grpc/grpc-java/issues.

I get one work around for this issue. reduce the times the rpc server send data to the client. Suppose you want to send 3 million records to client, you could reduce the time by create another message which hold "repeated" records of the send message. I do that by adding 10000 records to the new message and then do the sends. The error disappears.
I think gRpc doesn't work well with millions records stream but by this way I could get it fixed.

Closing, in favor of Java-repo issue.


fix: Navigating between menu entries fails after the second click with an error message

🐛 The bug
Navigating between menu entries fails after the second click with an error message.
.
Steps to reproduce:

Go to https://bowlforfun-frontend-staging.netlify.app/
Open the Main Menu by clicking on the hamburger icon in the navigation bar
Click on "About"
See that the current page is the "About" page ("/about")
Again, open the main menu by clicking on the hamburger icon in the navigation bar
Click on "Home"
See that the application does not navigation to "Home"
In the Javascript Console output you can see following error message:

[@ionic/vue Warning]: The view you are trying to render for path / does not have the required <ion-page> component. Transitions and lifecycle methods may not work as expected.

See https://ionicframework.com/docs/vue/navigation#ionpage for more information.
...
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'classList')
...

GitHub Repo: https://github.com/robotex82/bowforfun-frontend
Public URL: https://bowlforfun-frontend-staging.netlify.app/
🛠 To reproduce
https://stackblitz.com/github/robotex82/bowforfun-frontend/tree/feature/BFF-0-ionic-setup
Here is a video of the current behaviour:
https://user-images.githubusercontent.com/655932/225315626-5357db7b-7b42-4d73-a0c0-a5c691d1af48.mp4
🌈 Expected behaviour

Navigating between navigation items should be possible an unlimited amount of times
There should be no error message in the console when clicking navigation items

ℹ Additional context

I can observe the same behaviour on my local machine running npm run dev
I have not been able to work around the error, i.e. by trying:

Different combinations of having the ion-page element on different places
Placing the ion-pabe element in a layout, in the app.vue file on different levels of nesting

I used the documentation on:

https://ionic.nuxtjs.org/features
https://ionicframework.com/docs/vue/your-first-app
https://ionicframework.com/docs/api/menu

And the youtube video here: https://www.youtube.com/watch?v=f4sB7NhCgRw

Hi @robotex82 👋
Your repo doesn't have Ionic installed, is just Nuxt3 barebone.

I have a similar issue, when I navigate to a page the first time it works. But if I click on a link to a page I already have been to, it changes the url, but does not navigate.
I tried all the documented ways for navigating from the docs: https://ionicframework.com/docs/vue/navigation
The only way it works is a full page refresh, which of course is not desirable.
I'm getting this error:
Uncaught (in promise) TypeError: enteringEl is undefined
NuxtJS
isViewVisible
handlePageTransition
setupViewItem
setup
callWithErrorHandling
callWithAsyncErrorHandling
job
callWithErrorHandling
flushJobs

[@ionic/vue Warning]: The view you are trying to render for path / does not have the required  component. Transitions and lifecycle methods may not work as expected.

You will see this error if your page doesn't include the  wrapper.

[@ionic/vue Warning]: The view you are trying to render for path / does not have the required  component. Transitions and lifecycle methods may not work as expected.
See https://ionicframework.com/docs/vue/navigation#ionpage for more information.
...
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'classList')
...

You will see this error if your page doesn't include the  wrapper.

Yes, it was my bad.
I had the  wrapper, but it was not the root element.
It works as expected now.


Update README.md

Updated README to include dependencies for operating systems.
I have no idea what requirements OS X has.
Maybe you would like to also list nodejs as a dependency for each OS. :package:

Created these changes based off #52.
Need to add the Python 2.7.3 requirement to Windows.

Just add a link to node-gyp like we discussed and I'll merge it!

Thanks!

Not sure why the failure happened. All I changed was text. :3


Auto Minify settings not saving

Hello,
We're running plugin 6.1.5 and one of our customers noticed that none of the Auto Minify settings (js, css,html) save after checking them. Let me know what logs I can provide to help troubleshoot.

Hi,
Thank for notifying. We've a fix for it here . The fix will be deployed in the next version. For now please use cloudflare.com
Thanks

Lets keep this open until the fix is released.

Fixed in 6.2.0


[Snyk] Security upgrade electron from 23.1.2 to 26.6.7

Snyk has created this PR to fix 1 vulnerabilities in the yarn dependencies of this project.
Snyk changed the following file(s):

packages/react-devtools/package.json

Note for zero-installs users
If you are using the Yarn feature zero-installs that was introduced in Yarn V2, note that this PR does not update the .yarn/cache/ directory meaning this code cannot be pulled and immediately developed on as one would expect for a zero-install project - you will need to run yarn to update the contents of the ./yarn/cache directory.
If you are not using zero-install you can ignore this as your flow should likely be unchanged.

⚠ Warning
Failed to update the yarn.lock, please update manually before merging.

Vulnerabilities that will be fixed with an upgrade:

Issue
Score

Out-of-bounds Read SNYK-JS-ELECTRON-6179663
  864

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.


std::vector template data type

Hi, is there a way to use my own data type (like std::string) in place of <duckdb::Value>  and converting it later using a loop here? Is there is a better way available?
std::vector<duckdb::Value> stdData = result->collection.GetRow(i)

I am not sure I understand what you are trying to do. Are you trying to not use the Value class to retrieve values? That can be achieved by switching on the column types. Otherwise, please clarify.

Thanks I understand now.  Pardon my bad explanation


Integrate simplecov-rspec into the project

simplecov-rspec is a Ruby gem that integrates SimpleCov with RSpec to ensure your tests meet a minimum coverage threshold. It enhances your test suite by automatically failing tests when coverage falls below a specified threshold and, optionally, listing uncovered lines to help you improve coverage.

Will fix TruffleRuby and JRuby low test coverage in a future build.


[9.x] Enable to modify HTTP Client request headers when using beforeSending() callback

This is a duplicate PR of #42244 but made for Laravel 9.

Laravel 8 is merged into Laravel 9 before release.


Fix 4337 paymaster data parsing

Set version v6.0.0b33

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 3 (0.0%)  changed or added relevant lines in 1 file are covered.
4 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-0.01%) to 93.547%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

gnosis/eth/account_abstraction/user_operation.py
0
3
0.0%

Files with Coverage Reduction
New Missed Lines
%

gnosis/eth/ethereum_client.py
1
86.16%

gnosis/safe/tests/utils.py
1
60.0%

gnosis/eth/clients/ens_client.py
1
59.38%

gnosis/safe/safe_tx.py
1
90.97%

Totals

Change from base Build<PHONE_NUMBER>:
-0.01%

Covered Lines:
8234

Relevant Lines:
8802

💛  - Coveralls


Update package.json

Change version of Gulp for install regarding issue #1322
Before opening a pull request, please make sure to do the following:
Open an issue related to the bugfix/feature addressed in the pull request, if one does not already exist.
Make it clear in your commit messages what is being changed, and the reason for the changes.

I agree with @derweili 's comment in https://github.com/olefredrik/FoundationPress/issues/1322

I don't think "next" is the right version to reference. "next" does not reference to a unique version but to the latest stable version. This version will change in the future. Using "next" could cause incompatibility problems when gulp has breaking changes in upcoming versions.

It seems to be a better idea to change it to "gulp": "^4.0"
If you agree that this might be a better approach, please update your pull request and I'll merge it into the master branch.
Thanks!

No problem!  I'll update it right now. :)


Flutter code assist issues

Couple of assist issues:

Don't show 'Center widget' if invoked on a Center widget
Show all the Wrap ones next to each other
Replace with children is confusing; it has a child. Should this just be Delete widget?

This was tested with sdk-dev.24

@devoncarew

Maybe related: https://github.com/Dart-Code/Dart-Code/issues/558
I have a screenshot there showing the quickfixes in the wrong order. I checked the log and it seemed like the server returned them in the correct order. However, I have not been able to reproduce. I believe the order is supposed to be "by severity of the related diagnostic" and then the order they were given. None of these have diagnostics so I'd expect them to appear in the order the server provides them.
Ofc it's possible the order shown here is the order from the server; that could be checked by enabling logging.

sgtm
perhaps we should just lexically sort the assist on the server before returning them, so the order to predictable (and stable) for the user?
I'm comfortable with this continuing to be called Replace with children - changing the name significantly based on the arity may make it harder to locate for users.

/cc @scheglov

perhaps we should just lexically sort the assist on the server before returning them, so the order to predictable (and stable) for the user?

We currently have a priority associated with assists so that we can sort them by relevance. I'm not sure whether that's better than alphabetic, but it isn't arbitrary and ought to be stable. (That's not to say that the current priorities are correct.)

https://dart-review.googlesource.com/c/sdk/+/40920
https://dart-review.googlesource.com/c/sdk/+/40880
no-op

@devoncarew

I'm comfortable with this continuing to be called Replace with children - changing the name significantly based on the arity may make it harder to locate for users.

Why not avoid the arity entirely, and just call it 'Delete widget'?

FWIW, 'Delete widget' sounds to me like "delete this widget and all of its children"; similar to delete directory, I wouldn't expect the children to still be there.

@bwilkerson yes, I agree that is probably what some might think, but I think it's pretty learneable once you try it. I certainly think that the confusion over the differences between 'Convert to children' and 'Replace with children' is worse.

Ah, I see a possible problem.
Convert to children: does not belong to new Center.
We should show it only when the caret is on the child: name of the named argument.
So, it will not be displayed at the same time as Replace with children.

FWIW, 'Delete widget' sounds to me like "delete this widget and all of its children"

Would "Remove widget" be any better? Seems a little less destructive? "Replace with children" does seem a bit weird to me.
Or, can we not put the name of the widget that's being removed in there? "Remove Center" or similar might be a bit more obvious? That seems more like what you'd tell someone to do if you were pointing at their screen wanting them to make that change.

OK, I will rename it in Analysis Server and Flutter plugin.
https://dart-review.googlesource.com/c/sdk/+/40961

OK, I think these issues are fixed now.

@mit-mit

Show all the Wrap ones next to each other

FWIW, looks like there was a bug introduced in Code with the CodeAction changes that did break the sort (https://github.com/Microsoft/vscode/issues/43617). Should be fixed in next release.


Avoid buffer overruns in req.

Avoid buffer overruns in the req utility.
Clean up some of the formatting "return x" instead of "return (x)" mostly.

Master only, or do you intend to cherry-pick this to 1.1.0 as well?

I was planning on merging these changes to master only.  If folks think 1.1.0 as well, I'm happy to do it too.  At least if it is possible.
I'll note that the old code didn't actually have an overflow issue except perhaps in add_attribute_object.  The earlier code checks the lengths against the longest suffix (_default) first and fails if this is out of range.  The later checks I've added are therefore redundant.  They are worth keeping in case the code is ever changed or rearranged in the future -- it is a fairly low cost to pay for unintrusive checks that provide reasonable error messages.

If the same issue exists in 1.1.0, then I don't see why we wouldn't cherry-pick down to it.
I'm unsure if "the old code" refers to 1.1.0 or something older...
Either way, it was just a question

The old code being the code after the recent reversion but before this PR.
Lines 987 and 1047 guard against overflows subsequent to them.  The longest string is tested first and the later ones are left untested so no error is actually possible.  This isn't ideal, but it isn't broken and cannot cause problems as written -- maybe there will be problems later when another suffix is introduced.  This fix attempts to avoid any such.  The risk is that later backports of features which break the assumptions.
The later code from line 1170 has a risk of an overflow.  These could be guarded better and perhaps these are good to back merge to older branches.
Of course, I'll merge anything deemed useful back.

The 1.1.0 code still has the reverted changes from #3701 .  Is there any reason to want to use these changes instead of those? @levitte ?  I.e. both code paths have the same protections and paranoia in place.

I assume that there isn't any point to a 1.1.0 back port since these are guarded already.


Filter transpile diagnostics

I'm working on implementing the isolatedModules option using the transpile method in gulp-typescript. I get errors that lib.d.ts hasn't been found and that it cannot find global types:
error TS2318: Cannot find global type 'Array'.
error TS2318: Cannot find global type 'Boolean'.
error TS2318: Cannot find global type 'Function'.
error TS2318: Cannot find global type 'IArguments'.
error TS2318: Cannot find global type 'Number'.
error TS2318: Cannot find global type 'Object'.
error TS2318: Cannot find global type 'RegExp'.
error TS2318: Cannot find global type 'String'.
error TS6053: File 'lib.d.ts' not found.

Is there a way to filter out these messages using the API? Or should I just implement something like if (error.code === 2318 || error.code === 6053) { ... }?
In my opinion these messages should be to filter out in the transpile method, as everyone who uses that method won't be interested in those messages.

@ivogabe, you are correct. these should not be added.

FWIW I just don't even look at the errors and just spit out the JS :+1: e.g. in https://github.com/basarat/typescript-script


Support non-collection top-level attributes.

For example: kubernetes_secret.type
metadata:
name: mysecret
type: Opaque
data:
password: dmFsdWUtMg0K
username: dmFsdWUtMQ0K

I've merged the puppet-swagger-generator patch, but this PR not longer merged cleanly so I've just run the generator and pushed the changes. Thanks for your work on these.


Tensors resulting from face detection seemingly cannot be accessed and disposed

Issue Description
We're using the following code to do face detection on image files. Note, the getHuman function either initializes human, if needed, or returns the already initialized object. Also the logs have been added for debugging.
  const buffer = fs.readFileSync(imgFile);

  const tensor = (await getHuman()).tf.node.decodeImage(buffer);
  const res = await (await getHuman()).detect(tensor);

  // Dispose all tensors
  if (res?.face) {
    console.log("res.face", res.face);
    res.face.forEach(async (f: FaceResult) => {
      console.log(`Disposing face tensor`, f.tensor);
      (await getHuman()).tf.dispose(f.tensor);
    });
  }

  if (tensor) {
    console.log(`Disposing tensor`, tensor);
    (await getHuman()).tf.dispose(tensor);
  }

  console.log("numTensors", (await getHuman()).tf.engine().memory().numTensors);

  return res.face as FaceResult[];

We are doing face detection, which means that in our config, we have:
  face: {
    enabled: true,
    detector: {
      enabled: true,
      rotation: false,
      maxDetected: 10,
      minConfidence: 0.6,
    },
    mesh: { enabled: false },
    iris: { enabled: false },
    description: { enabled: true },
    emotion: { enabled: false },
  },

My understanding is that this will result in tensors attached to the FaceResult. And indeed we can see numTensors increasing, the more we call this function. However, res.face.tensor appears to be undefined in all cases. The only tensor we're able to see exists and dispose of, is the initial one obtained from decodeImage.
So what we see is numTensors increasing, along with the memory allocated to the process, which, given enough workload, will run out of memory eventually.
Steps to Reproduce
Run the above code on a series of images, over and over.
Expected Behavior
The number of tensors remains steady after they are used and disposed of. Memory usage also remains stable.
Environment
Node.js on an M1 Mac

Human library version? 3.2.1
Built-in demo or custom code? Custom
Browser or NodeJS and version (e.g. NodeJS 14.15 or Chrome 89)? Node 20
OS and Hardware platform (e.g. Windows 10, Ubuntu Linux on x64, Android 10)? M1 Mac, also see same behavior on Amazon Linux

After reading #232 a bit more, I noticed that we are not setting face.detector.return to true. When I do this, then the face.tensor is no longer undefined and we can dispose it. However, the tensor count and memory still increase.

Also note that we were on 2.3.1. Upgrading to 2.3.2 didn't seem to change things.

Some more information. I noticed we had this in our config.
deallocate: false,

I assume this is okay, since we are attempting to manually deallocate using .dispose? Anyway, I tried setting this to true. Memory usage seemed maybe slightly affected? However I still ended up with ~1,000 tensors more than when I started. That's not expected after using dispose on everything, is it?
Lastly, the only other places we use human is calling match.similarity. I assume there aren't any tensors from this that we need to clean up?

After more testing, I have to correct the above observation. Changing to deallocate: true does help. Memory increases at first (perhaps as expected), but over a longer period of time, it stays stable, rather than increasing unbounded.
This solves the immediate problem for us, which is good. However, I still think there may be an issue where manually deallocating the tensors does not provide the same (or similar) results as having deallocate: true.

this is pretty well documented from your side, not much i can add right now - I'll take a look and try to reproduce when I'm back from my travels in 2 weeks.

i wrote a full reproduction used your base code and i see no leaks, with or without return=true
const fs = require('fs');
const H = require('../dist/human.node.js');

const config = {
  debug: true,
  modelBasePath: 'https://vladmandic.github.io/human-models/models/',
  body: { enabled: false },
  hand: { enabled: false },
  face: {
    enabled: true,
    detector: {
      return: true,
      enabled: true,
      rotation: false,
      maxDetected: 10,
      minConfidence: 0.6,
    },
    mesh: { enabled: false },
    iris: { enabled: false },
    description: { enabled: true },
    emotion: { enabled: false },
  },
};

const human = new H.Human(config);
let i = 0;

async function detect(imgFile) {
  const imgBuffer = fs.readFileSync(imgFile);
  const imgTensor = human.tf.node.decodeImage(imgBuffer);
  const res = await human.detect(imgTensor);
  if (res?.face) {
    console.log(`loop=${i} faces=${res.face.length} tensors=${human.tf.engine().memory().numTensors}`);
    res.face.forEach((f) => human.tf.dispose(f.tensor)); // only needed if return:true
  }
  human.tf.dispose(imgTensor);
  return res.face;
}

async function loop(imgFile) {
  for (i = 0; i < 99; i++) {
    await detect(imgFile);
  }
}

loop('../samples/in/group-2.jpg');

loop=0 faces=3 tensors=253
...
loop=98 faces=3 tensors=253

if the issue persists, write a full self-contained reproduction (e.g. reference to getHuman as simple as it may be mean that my reproduction is different by definition), update here and i'll reopen.


Make Network Reachability monitor more battery friendly

As described in https://github.com/couchbase/couchbase-lite-android/issues/224#issuecomment-37703186 the Network Reachability monitor needs to be made more battery friendly.

from https://github.com/couchbase/couchbase-lite-android/issues/224#issuecomment-37703186

I'm glad to see this implemented, so I can take our own code for doing this out of our app :smiley:
From perusing these commits it seems like (correct me if I'm wrong) the network monitor is bound the whole time a replication is running. One thing that might be worth considering is the Android developer guide for battery life which suggests that:

Changes to a device's connectivity can be very frequent—this broadcast is triggered every time you move between mobile data and Wi-Fi. As a result, it's good practice to monitor this broadcast only when you've previously suspended updates or downloads in order to resume them. It's generally sufficient to simply check for Internet connectivity before beginning an update and, should there be none, suspend further updates until connectivity is restored.

In other words, the network monitor should only listen if you've previously detected that the device is offline, either by explicitly asking the ConnectivityManager or by getting a network error after an attempted HTTP request.


When creating a study, the default name is saved as the Latest Study visited and doesn't change when renamed

The study is first created, then the name changed and then saved. It is basically a create+update operation. The rename is not recorded in the latest study menu item. Probably the same bug applies to a regular rename of a study.
Also test what happens when visiting a study chapter URL.

fixed in 2.1.23


Rebuild source docs with actual code so 'view source' works properly

This is a hard diff to look through, the main thing that changes was in bin/builddocs, specifically I added two new calls to ./docs/lib/findocomments.rb and ./docs/lib/buildsourcedocs.rb to correctly handle the building of source docs.

Where is docs\lib\findocomments.rb?

It doesn't display because the diff is too large, but if you check out the branch it should be there.


Get keycode in Trumbowyg

I can't seem to understand, how to get keycode in Trumbowyg. I've tried tbwchange event, but it doesn't seem to return anything. The event itself is fired, but how can I get the pressed key char code?
I searched the issues, but found nothing about it. I also looked in the code and also can't seem to understand, what's wrong.
Could you, please, clarify this?

What's your goal?

I need to capture Enter or Ctrl + Enter keys and submit the form with Trumbowyg. I have all the code and only need to capture the keys.

You can juste use the parent element like that:
$('#trumbowyg-demo').parent().on('keydown', function (e) {
    if (e.ctrlKey && e.which === 13) {
        // send your form
    }
})

Ah, I see... I've tried to use it directly on ".trumbowyg-editor" class, but apparently it didn't work, because editor is created dynamically. Should've guessed that. Thanks for the tip. it works now.


Can't seem to connect to my berkshelf-api server

I installed the berkshelf-api server using chef-solo on a node (output below is just a rerun to confirm install looks good).
'''root@chef-node-poliva-007:~# chef-solo  -j /tmp/chef.json -r http://orion-cli.rim.net/~Mandolin/berkshelf-api/cookbooks.tar.gz
[2014-05-26T13:22:20-04:00] WARN: *****************************************
[2014-05-26T13:22:20-04:00] WARN: Did not find config file: /etc/chef/solo.rb, using command line options.
[2014-05-26T13:22:20-04:00] WARN: *****************************************
Starting Chef Client, version 11.10.4
Compiling Cookbooks...
Recipe: build-essential::_debian

package[autoconf] action install (up to date)
package[binutils-doc] action install (up to date)
package[bison] action install (up to date)
package[build-essential] action install (up to date)
package[flex] action install (up to date)
package[gettext] action install (up to date)
package[ncurses-dev] action install (up to date)
Recipe: libarchive::default
package[libarchive-dev] action install (up to date)
chef_gem[libarchive-ruby] action install (up to date)
Recipe: berkshelf-api::app
chef_gem[bundler] action install (up to date)
Recipe: ohai::default
remote_directory[/etc/chef/ohai_plugins] action createRecipe:
cookbook_file[/etc/chef/ohai_plugins/README] action create (up to date)
(up to date)
Recipe: ohai::default
ohai[custom_plugins] action reload

re-run ohai and merge results into node attributes

[2014-05-26T13:22:23-04:00] WARN: Cloning resource attributes for service[nginx] from prior resource (CHEF-3694)
[2014-05-26T13:22:23-04:00] WARN: Current  service[nginx]: /var/chef/cookbooks/nginx/recipes/source.rb:123:in from_file' [2014-05-26T13:22:23-04:00] WARN: Cloning resource attributes for service[nginx] from prior resource (CHEF-3694) [2014-05-26T13:22:23-04:00] WARN: Previous service[nginx]: /var/chef/cookbooks/nginx/recipes/source.rb:123:in from_file'
[2014-05-26T13:22:23-04:00] WARN: Current  service[nginx]: /var/chef/cookbooks/nginx/recipes/default.rb:24:in `from_file'
Converging 54 resources
Recipe: build-essential::_debian

package[autoconf] action nothing (skipped due to action :nothing)

package[binutils-doc] action nothing (skipped due to action :nothing)

package[bison] action nothing (skipped due to action :nothing)

package[build-essential] action nothing (skipped due to action :nothing)

package[flex] action nothing (skipped due to action :nothing)

package[gettext] action nothing (skipped due to action :nothing)

package[ncurses-dev] action nothing (skipped due to action :nothing)
Recipe: libarchive::default

package[libarchive-dev] action nothing (skipped due to action :nothing)

chef_gem[libarchive-ruby] action install (up to date)
Recipe: runit::default

service[runit] action nothing (skipped due to action :nothing)

execute[start-runsvdir] action nothing (skipped due to action :nothing)

execute[runit-hup-init] action nothing (skipped due to action :nothing)

package[runit] action install (up to date)
Recipe: berkshelf-api::app

chef_gem[bundler] action install (up to date)

user[berkshelf] action create (up to date)

group[berkshelf] action create (up to date)

directory[/etc/berkshelf/api-server] action create (up to date)

file[/etc/berkshelf/api-server/config.json] action create (up to date)

github_asset[berkshelf-api.tar.gz] action downloadRecipe:

chef_gem[octokit] action install (up to date)

chef_gem[octokit] action install (up to date)
(up to date)
Recipe: berkshelf-api::app

libarchive_file[berkshelf-api.tar.gz] action extract (up to date)

execute[berkshelf-api-bundle-install] action run (skipped due to not_if)
Recipe:

service[berks-api] action nothing (skipped due to action :nothing)
Recipe: berkshelf-api::app

runit_service[berks-api] action enableRecipe:

directory[/etc/sv/berks-api] action create (up to date)

template[/etc/sv/berks-api/run] action create (up to date)

directory[/etc/sv/berks-api/log] action create (up to date)

directory[/etc/sv/berks-api/log/main] action create (up to date)

template[/etc/sv/berks-api/log/run] action create (up to date)

template[/etc/sv/berks-api/log/config] action create (up to date)

link[/etc/init.d/berks-api] action create (up to date)

configure service runit_service[berks-api]

Recipe: nginx::source

user[www-data] action create (up to date)
Recipe: nginx::ohai_plugin
ohai[reload_nginx] action nothing (skipped due to action :nothing)
template[/etc/chef/ohai_plugins/nginx.rb] action create (up to date)
Recipe: ohai::default
remote_directory[/etc/chef/ohai_plugins] action nothing (skipped due to action :nothing)
ohai[custom_plugins] action nothing (skipped due to action :nothing)
Recipe: nginx::commons_dir
directory[/etc/nginx] action create (up to date)
directory[/var/log/nginx] action create (up to date)
directory[/var/run] action create (up to date)
directory[/etc/nginx/sites-available] action create (up to date)
directory[/etc/nginx/sites-enabled] action create (up to date)
directory[/etc/nginx/conf.d] action create (up to date)
Recipe: nginx::commons_script
template[/usr/sbin/nxensite] action create (up to date)
template[/usr/sbin/nxdissite] action create (up to date)
Recipe: nginx::source
package[libpcre3] action install (up to date)
package[libpcre3-dev] action install (up to date)
package[libssl-dev] action install (up to date)
remote_file[http://orion-cli.rim.net/~Mandolin/berkshelf-api/nginx-1.4.4.tar.gz] action create (up to date)
Recipe: nginx::commons_conf
template[nginx.conf] action create (up to date)
template[/etc/nginx/sites-available/default] action create (up to date)
execute[nxensite default] action run

execute /usr/sbin/nxensite default

Recipe: nginx::source

cookbook_file[/etc/nginx/mime.types] action create (up to date)

bash[unarchive_source] action run (skipped due to not_if)
Recipe: nginx::http_gzip_static_module

template[/etc/nginx/conf.d/http_gzip_static.conf] action create (up to date)
Recipe: nginx::source

bash[compile_nginx_source] action run (skipped due to not_if)
Recipe:

service[nginx] action nothing (skipped due to action :nothing)
Recipe: nginx::source

runit_service[nginx] action enableRecipe:

directory[/etc/sv/nginx] action create (up to date)

template[/etc/sv/nginx/run] action create (up to date)

directory[/etc/sv/nginx/log] action create (up to date)

directory[/etc/sv/nginx/log/main] action create (up to date)

template[/etc/sv/nginx/log/run] action create (up to date)

template[/etc/sv/nginx/log/config] action create (up to date)

link[/etc/init.d/nginx] action create (up to date)

configure service runit_service[nginx]

Recipe: nginx::source

service[nginx] action nothing (up to date)
Recipe: nginx::default

service[nginx] action start (up to date)
Recipe: berkshelf-api::http_proxy

execute[nxdissite default] action run

execute /usr/sbin/nxdissite default

template[/etc/nginx/sites-available/berks-api] action create (up to date)

execute[nxensite berks-api] action run (skipped due to not_if)
Recipe: nginx::default

service[nginx] action reload

reload service service[nginx]

Running handlers:
Running handlers complete
Chef Client finished, 6/64 resources updated in 3.244786654 seconds
'''
My Berksfile source is then...
source "https://<IP_ADDRESS>"
metadata
But I get connection refused...
poliva@chef-ws-poliva-002:~/relay_node-cookbook$ berks install -d
I, [2014-05-26T13:30:11.814098 #3764]  INFO -- : Reducing lockfile
D, [2014-05-26T13:30:11.814334 #3764] DEBUG -- : Current lockfile:
D, [2014-05-26T13:30:11.814504 #3764] DEBUG -- :
D, [2014-05-26T13:30:11.814599 #3764] DEBUG -- :   DEPENDENCIES
D, [2014-05-26T13:30:11.814696 #3764] DEBUG -- :
D, [2014-05-26T13:30:11.814801 #3764] DEBUG -- :   GRAPH
D, [2014-05-26T13:30:11.814894 #3764] DEBUG -- :
D, [2014-05-26T13:30:11.814985 #3764] DEBUG -- : Unlocking dependencies no longer in the Berksfile
D, [2014-05-26T13:30:11.815079 #3764] DEBUG -- : Removing transitive dependencies
D, [2014-05-26T13:30:11.815193 #3764] DEBUG -- :   Checking relay_node-cookbook (>= 0.0.0)
D, [2014-05-26T13:30:11.815294 #3764] DEBUG -- :     Skipping (not graphed)
D, [2014-05-26T13:30:11.815388 #3764] DEBUG -- : New lockfile:
D, [2014-05-26T13:30:11.815451 #3764] DEBUG -- :
D, [2014-05-26T13:30:11.815546 #3764] DEBUG -- :   DEPENDENCIES
D, [2014-05-26T13:30:11.815644 #3764] DEBUG -- :
D, [2014-05-26T13:30:11.815742 #3764] DEBUG -- :   GRAPH
D, [2014-05-26T13:30:11.815840 #3764] DEBUG -- :
Resolving cookbook dependencies...
I, [2014-05-26T13:30:11.816022 #3764]  INFO -- : Checking if lockfile is trusted
D, [2014-05-26T13:30:11.816130 #3764] DEBUG -- : Checking relay_node-cookbook (>= 0.0.0)
D, [2014-05-26T13:30:11.816226 #3764] DEBUG -- :   Not in lockfile - cannot be trusted!
I, [2014-05-26T13:30:11.816321 #3764]  INFO -- : Installing from universe
Fetching 'relay_node-cookbook' from source at .
D, [2014-05-26T13:30:12.400627 #3764] DEBUG -- :   Creating a resolver
Fetching cookbook index from https://<IP_ADDRESS>...
Error retrieving universe from source: https://<IP_ADDRESS>

[Berkshelf::APIClient::ServiceUnavaiable] Connection refused - connect(2)
D, [2014-05-26T13:30:12.989124 #3764] DEBUG -- :   Adding explicit dependency on relay_node-cookbook (1.0.3) '/home/poliva/relay_node-cookbook'
D, [2014-05-26T13:30:12.989553 #3764] DEBUG -- :   Starting resolution...
Unable to satisfy constraints on package relay_common-cookbook, which does not exist, due to solution constraint (relay_node-cookbook = 1.0.3). Solution constraints that may result in a constraint on relay_common-cookbook: [(relay_node-cookbook = 1.0.3) -> (relay_common-cookbook = 1.0.3)]
Missing artifacts: relay_common-cookbook,epagent,java
Demand that cannot be met: (relay_node-cookbook = 1.0.3)
Unable to find a solution for demands: relay_node-cookbook (1.0.3)
/var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/resolver.rb:83:in rescue in resolve'     /var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/resolver.rb:73:in resolve'
/var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/installer.rb:170:in install_from_universe'     /var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/installer.rb:39:in run'
/var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/berksfile.rb:371:in install'     /var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/cli.rb:143:in install'
/var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/command.rb:27:in run'     /var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/invocation.rb:120:in invoke_command'
/var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor.rb:363:in dispatch'     /var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/cli.rb:52:in dispatch'
/var/lib/gems/1.9.1/gems/thor-0.18.1/lib/thor/base.rb:439:in start'     /var/lib/gems/1.9.1/gems/berkshelf-3.1.2/lib/berkshelf/cli.rb:27:in execute!'
/var/lib/gems/1.9.1/gems/berkshelf-3.1.2/bin/berks:5:in <top (required)>'     /usr/local/bin/berks:19:in load'
/usr/local/bin/berks:19:in `'

poliva@chef-ws-poliva-002:~/relay_node-cookbook$ ping <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from <IP_ADDRESS>: icmp_req=1 ttl=64 time=1.21 ms
64 bytes from <IP_ADDRESS>: icmp_req=2 ttl=64 time=0.892 ms
64 bytes from <IP_ADDRESS>: icmp_req=3 ttl=64 time=0.730 ms
^C
--- <IP_ADDRESS> ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.730/0.944/1.210/0.199 ms

have you ever try to install berkshelf-api-server cookbook on a Oracle Operating System?


Ignore empty explain requests

Hi there,
This is my first PR, and I tried to fix #60.
Thanks for reviewing :)

The change looks good! Could you add tests for both the messages explain and could you explain to tests/server.test.js? That will require adding a new describe(...) section for the explain command, and a separate it(...) test for each message (eg. handler("jdm", "testbot", "fredbot: could you explain");).

@jdm I added a test asserting that could you explain worked correctly. Is that what you meant ?

Exactly!


Branch coverage

UPDATE: 0.6.8 (https://github.com/taiki-e/cargo-llvm-cov/pull/356) added unstable --branch flag to enable branch coverage. (requires nightly-2024-03-16+.)
LLVM supports branch coverage (https://reviews.llvm.org/D84467), -Zinstrument-coverage does not support it yet.
See https://github.com/rust-lang/rust/issues/79649 for more.

This is why we see - (0/0) in html report.

(- (0/0) does not look good and confusing, so I need to find a way to get rid of that display somehow.)

The output can be made nicer with the following workaround.
cargo llvm-cov --html && sed -i "s_]*>[^t]*
_
_g" target/llvm-cov/html/index.html

Branch coverage support has landed in nightly: https://github.com/rust-lang/rust/issues/79649#issuecomment-1999562694.

0.6.8 (https://github.com/taiki-e/cargo-llvm-cov/pull/356) added unstable --branch flag to enable branch coverage. (requires nightly-2024-03-16+.)

Seems to also work on rustc 1.78.0-nightly (c67326b06 2024-03-15)?

Seems to also work on rustc 1.78.0-nightly (c67326b06 2024-03-15)?

It is nightly-2024-03-16. (The commit date ("c67326b06 2024-03-15" in this case) is one day before the rustup toolchain version: https://github.com/rust-lang/rust/issues/51533)

I have tried to utilise this by changing an existing workflow
-cargo llvm-cov --cobertura --output-path coverage.xml --workspace --no-fail-fast --all-features --exclude foo
+cargo +nightly llvm-cov test --cobertura --output-path coverage.xml --branch --workspace --no-fail-fast --all-features --exclude foo

The workflow fails with
error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C"  PATH="/work/home/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/work/home/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/self-contained:/work/home/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/work/home/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/self-contained:/work/home/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/work/home/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/self-contained:/work/home/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustcRlY9PE/symbols.o" "/__w/rosalind/rosalind/target/llvm-cov-target/debug/deps/test_tile_request-56790ab4beac6feb.test_tile_request.e66584c38f015a9b-cgu.00.rcgu.o"
  = note: rust-lld: error: unable to find library -lbar

The lib obviously exists because the workflow passes without this change, and it is in /usr/local/bin.
I tried adding env: { LD_LIBRARY_PATH: /usr/local/lib } to the workflow step, to no avail.

@jayvdb

I have tried to utilise this by changing an existing workflow

There are two changes in that diff.
It would be helpful to understand whether the use of the nightly compiler itself caused the problem or whether the both use of the nightly compiler and use of --branch flag caused the problem.
That said, I guess the cause of the recent nightly's linker problems is basically https://blog.rust-lang.org/2024/05/17/enabling-rust-lld-on-linux.html.

I removed --branch and still have a problem, so it isnt this tools probem. Thanks for the link.  "-Zlinker-features=-lld" and -Clink-arg=-Wl,-z,nostart-stop-gc didn't do the trick. I'll keep digging.


How can I give two fixtures file instead of one in importTestFrom ?

Can I give two fixtures in importTestFrom something I am try is like this but getting error, Type 'string[]' is not assignable to type 'string | ImportTestFrom | undefined'. I know its type error that importTestFrom is just accepting string not array.
const testFixture = ['tests/fixtures/pagefixtures.ts', 'api_test/fixtures/apifixture.ts'];
const testDir = defineBddConfig({
importTestFrom: testFixture,
paths: ['tests/features/.feature', 'api_tests/features/.feature'],
require: ['tests/steps/.steps.ts', 'api_tests/steps/.steps.ts'],
});

importTestFrom can't accept array, because we need to get only one test instance in generate files: import { test } from '...'.
There are several options to achieve that:

if your tests and api_tests are separate, you can create two Playwright projects:
export default defineConfig({
  projects: [
    {
      name: 'page-tests',
      testDir: defineBddConfig({
        outputDir: './features-gen/page-tests',
        importTestFrom: 'tests/fixtures/pagefixtures.ts',
        paths: ['tests/features/*.feature'],
        require: ['tests/steps/*.steps.ts'],
      }),
    },
    {
      name: 'api-tests',
      testDir: defineBddConfig({
        outputDir: './features-gen/api-tests',
        importTestFrom: 'api_test/fixtures/apifixture.ts',
        paths: ['api_tests/features/*.feature'],
        require: ['api_tests/steps/*.steps.ts'],
      }),
    },

if your features use fixtures from both files, then you can use Playwright's mergeTests utility to get single test:
// allFixtures.ts
import { mergeTests } from '@playwright/test';
import { test as pageTest } from 'tests/fixtures/pagefixtures.ts';
import { test as apiTest } from 'api_test/fixtures/apifixture.ts';

export const test = mergeTests(pageTest, apiTest);

you can try playwright-bdd v7 (rc), it tries automatically detect which file to use in importTestFrom. But there is no super magic - if fixtures file is ambiguous, playwright-bdd will throw an error, so you may need to apply mergeTests anyway.

Thank you @vitalets for your help. you are doing amazing work


StartedAt logged only with seconds granularity

As can be seen in access_log_record.go line 29 the used time output pattern leads to timestamps which only have second granularity. This fact makes the access logs (or RTR messages) less usable as they could be. Would it be possible to also include the milliseconds into the log output?
Thanks for your feedback.
Cheers,
Michael Stephan<EMAIL_ADDRESS>

Hello @MichaelStephan thanks for the feedback. Seems like a reasonable request. We'll investigate whether this is an easy change. Moving the review story into the backlog.

Hello @MichaelStephan we implemented this in https://github.com/cloudfoundry/gorouter/commit/dab0ce83e6d9fda8b865cffc943ea8f089f4ebc4
This change is included in final release v234 of cf-release
https://github.com/cloudfoundry/cf-release/commit/53306998e51ad051ec013899ba6d5c9ac7f97f45

Hello @shalako, thanks for delivering the solution that fast.


Invalid PHP version on Packagist

Description:
PHP version badge on Packagist returns invalid for some packages. It works normally for others.
Working badges:
 - https://packagist.org/packages/filips123/monolog-phpmailer/
 - https://packagist.org/packages/symfony/symfony/
Invalid badges:
 - https://packagist.org/packages/filips123/config-writer
 - https://packagist.org/packages/slim/slim/

Hi, thanks for the report.
Hmm, I wonder, is this related to #2190, #1586, #885?

@paulmelnikow So what does this mean? Is it issue with package or shields.io? Is it possible to fix it so it will works with any package?

Yes, I imagine it's possible to fix this so it works on any package. It'll take some investigation to find out what's up. If you're up for digging into it, I'm happy to give you some pointers. If not, I or one of the other maintainers will. 😁

This is unrelated to those other issues.
The reason why those badges don't work is because if you call packagist/php-v without specifying a version, we assume dev-master as the version. The packages you've linked there don't expose a dev-master version so calling them without a version fails. If you pass a (valid) version, they will render. For example:
 - https://img.shields.io/packagist/php-v/slim/slim/3.11.0.svg
 - https://img.shields.io/packagist/php-v/slim/slim/4.x-dev.svg
 - https://img.shields.io/packagist/php-v/slim/slim/notaversion.svg
I'm not sure that allowing this to be called with no version and defaulting to dev-master is actually a great assumption for this badge, but changing it now is a non-backwards-compatible change.
I think we can probably make the error message a bit more informative and show the example with a version on the home page to make this a bit less confusing.

If dev-master don't exist, the newest branch or version should be used.


Feature request: There should be a way to tell the exact compiler version.

Expose rustc -vV, which can tell you Stable is 1.19.0, Beta is 1.20.0-beta.1, Nightly is 1.20.0-nightly (ae98ebfcb 2017-07-20).
Currently these can only be retrieved by triggering an ICE, which is very inconvenient.

only be retrieved by triggering an ICE

fn main() {
    println!("{:?}", std::process::Command::new("rustc").arg("-vV").output());
}

@shepmaster thanks. Still inconvenient 😝

Yep. Do you have a vision of how this information would be presented? I'd like to also eventually show the available crates and their versions, so this type of metadata might want a bit of a home.

Adding a "Versions" button to show the versions of the current toolset should be good enough.

Massive props for the thorough mockup! Also, I'm glad you included the clippy / rustfmt versions — I had completely forgotten about them.
I like the idea of having a link to the crate - were you thinking that would go to the crates.io page or somewhere else?

Adding a "Versions" button to show the versions of the current toolset should be good enough.

I'm very hesitant to add more buttons to the current header. They are already so many that a reasonable-sized window cuts them off. Simply wrapping doesn't really help because then the main reason you are on the page (the editor and output fields) get even less space.
I've got some back-of-mind ideas that I'm mulling about. Maybe other people will chime in with some ideas.

were you thinking that would go to the crates.io page or somewhere else?

I prefer docs.rs

#219 introduces a bare-bones solution:

Ok, the changes in #299 give a place for these:

I've opened #300 and #301 for the related parts.


Disable 'run' button if any project not selected

Looks good! Please squash the commits. :)

Cherry picked into 3.0.3


MSID: 102433 Version: 1 DOI: 10.1101/2<IP_ADDRESS>0659

MSID: 102433
Version: 1
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>0659
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=102433
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>0659

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/102433v1
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>0659
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/102433/v1/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

fixing typo in important - https://sciety.org/evaluations/hypothesis:ntfSaKfdEe-aHY8y8pge1A/content

sent authors WOS email


Publish on CheeseShop (PyPi)?

Would you like to publish this repository so you can pip install zktop?
We would need to fill out this with appropriate data:
setup(name='funniest',
      version='0.1',
      description='The funniest joke in the world',
      url='http://github.com/storborg/funniest',
      author='Flying Circus',
<EMAIL_ADDRESS>      license='MIT',
      packages=['funniest'],
      zip_safe=False)

zktop is now available on PyPi. Thanks for the request.


beforeSend: passing custom arguments to data

I would like to passing all custom arguments which attribute starts with data-ic-*.
I try to use beforeSend, and modify data variable, but isnt works:
<button class="text-danger btn-xs" data-ic-recipient-id="2" ic-delete-from="/api/messages/recipients" ic-src="/api/messages/recipients" ic-verb="DELETE" ic-trigger-on="default" ic-deps="ignore" ic-id="2"><i class="fa fa-trash"></i></button>
            /** Intercooler can send data attributes datas automatically
             **/
            $(function(){
              $('body').on('beforeSend.ic', function(ev,elt,data){
                //$.blockUI();
                data['foo'] = 'bar';
                console.log("Intercooler beforeSend",data);
                //Console log says: Intercooler beforeSend ic-request=true&&ic-id=1&ic-current-url=%2Fadmin%2Fmessages%2F1&_method=DELETE
              }).on('complete.ic', function(){
                //$.unblockUI();
              });
            })

Can you use the standard jQuery mechanism?
http://stackoverflow.com/questions/5618827/ajaxy-add-parameters-to-request
If not, could you use ic-global-include?
http://intercoolerjs.org/attributes/ic-global-include.html
If not, could you use cookies instead?  :)

Not to pretty solutions.. :) Maybe i will try to change your script recognize attributes and automatically attatch data attributes as custom argument to the data.
Maybe can you give me some advice where can i found it these lines.

/src/intercooler.js after line 531
    $(elt).each(function() {       $.each(this.attributes, function() {         if(this.specified) {           if (this.name.match(/^data-arg-(.*)/)) {             console.log(this.name, this.value);             data = appendData(data, this.name.replace(/^data-arg-/,''), this.value);           }         }       });     });

Wait, could you use ic-include?  Sorry, would have mentioned it earlier, but I figured you had already seen it:
http://intercoolerjs.org/attributes/ic-include.html
Cheers,
Carson
On April 25, 2016 at 2:44:52 PM, csimpi<EMAIL_ADDRESS>wrote:
/src/intercooler.js after line 531
$(elt).each(function() {
$.each(this.attributes, function() {
if(this.specified) {
if (this.name.match(/^data-arg-(.*)/)) {
console.log(this.name, this.value);
data = appendData(data, this.name.replace(/^data-arg-/,''), this.value);
}
}
});
});
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub

I saw in doc, but i would not use different input elements, i would like pass custom variabless through ajax from the current element data-arg-* attributes.
Ex.:
I would like to delete one recipient from e-mail .conversation, i have to pass recipient id variable, and the conversation variable.

You can put arguments in as JSON with ic-include:
Syntax
The value of the ic-include attribute can either be a CSS/JQuery element selector of elements to include in the request or a JSON object of name/value pairs to include. If it is a JSON object, it must satisfy the jQuery parseJSON() requirements.
would that work?
Cheers,
Carson
On April 25, 2016 at 2:57:31 PM, csimpi<EMAIL_ADDRESS>wrote:
I saw in doc, but i would not use different input elements, i would like pass custom variabless through ajax from the current element data-arg-* attributes.
Ex.:
I would like to delete one recipient from e-mail .conversation, i have to pass recipient id variable, and the conversation variable.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub

Yes i saw that too, and its really okay, but I usually use the data attributes for other things, and i would not like to add datas twice. I could use only from the JSON data, but use separeted data attributes more simple and as i know that's the usually way to pass  custom argument trough some javascript libs functions. (like nestable js plugin)
Thanks for your solutions! If you like my solution use it :)


Coder not saving files - "Failed to handle server message: a.encodeStream is not a function"

code-server version: codercom/code-server:latest (1.939 for example, but I have reproduced it with all versions released since March)
OS Version: Docker on Windows 10 1809 (17763.437) on personal laptop, Azure Container Instances (can reproduce on both)

Description
Sometimes when trying to save changes to a file, I get the following error :

The file just gets stuck and will not save. If I choose to discard the changes, the file will loose all of its contents, not just my changes.
I can reproduce this very easily with a hello world .NET Core Web App (works 100% of the time), but I have also been able to do it with JS files, for example (although it was not as straight forward as creating, editing, saving).
The file will be locked on disk until the Coder session ends (sometimes it stays locked even after the coder process is terminated).
I have tried debugging it myself but have had other issues building coder from scratch.
Steps to Reproduce
1.Spin up a code-server container (Docker on Windows or ACI)
2.Open coder in a browser (I have tried with Chrome, Opera and Firefox)
3.Open a new Terminal in coder
3.Download the latest version of the .NET Core SDK according to the official instructions here (make sure you select the right OS version running on the container)
4.Run dotnet new web
5.Try changing Program.cs (add a couple of characters, does not have to compile)
6.Save
7.Notice the "unsaved" dot on the file header is still present
8.Check the browser Dev Console, error will be shown there

For a workaround see https://github.com/cdr/code-server/issues/597#issuecomment-490118664


Fix problem with registration of new user for same email than existing user in 7.5

Describe the bug
In DSpace 7.5 you can start the registration process for a new user with an email address that is the address of an already existing user. You receive the email to complete the registration, and only when you try to finish the registration you get an unspecific error message.
To Reproduce
Steps to reproduce the behavior:

Create a new user with an email address
Finish the registration process
Create another user with the same email address
You receive an email to finish the registration process, only when you complete the registration process, you get an unspecific error message, saying "Registration failed An exception has occurred"

Expected behavior
When you try to register a new user with an email address for which a user exists already, the UI should tell you so, and perhaps offer to reset the password, in case you forgot the password. In no case should it start a new registration process.
Screenshot
That's the error message you get, when you try to complete a registration for an email address for which a user exists already:

Thanks @MW3000 . I've verified this bug occurs from the Registration page /register.
We already perform this same sort of check though when you create a new EPerson via the admin tools (/access-control/epeople -> "Add EPerson").  If you enter a duplicate email in that form, you receive a notice that says "This email is already taken".
So, likely we just need to copy that validation logic into the /register page as well.
Needs a volunteer.  May not be difficult to solve as the logic exists elsewhere.

I looked into this a bit, and the problem with copying the duplicate email logic into the /register page is that the REST API endpoints used by the UI admin tools to check for existing users with a given email address require authentication – specifically the /epersons/search endpoint used to conduct a "byEmail" search. Since there isn't a user logged in during registration, much less an admin user, those endpoints aren't available. I'll keep thinking on it.

@nwoodward : Good point...and that just prompted me to recall why that endpoint is access restricted.  Essentially, it's for security. We don't want anyone to be able to easily "test" whether a specific email address has an account in DSpace.
So, my original idea won't work.  We cannot copy the logic over.
Instead, likely the /register page should not throw any error.  Instead, it can do one of two things:

Send you the "forgot password" email to the email in question...as that way you realize you have an account already.
Or, do absolutely nothing.  But, perhaps the confirmation message should say: "If you do not receive an email shortly, you may already have an account. In which case, you should use the 'forgot password' form."

The first approach is likely a bit more user friendly.

OK, you can assign it to me. I think I have a solution for the first approach ready. I'll submit it soon.


Invitations and pre-existing session

The following flow causes an exception (yes this was triggered):

I invite<EMAIL_ADDRESS>to IdE, email gets generated and off it goes to him
Jim Bob already has his browser open with an AAF session as<EMAIL_ADDRESS>Jim Bob gets the invitation and clicks on the link provided, he'll receive an exception because the email address, ST etc of his current IdP session already exists for the Subject representing him as<EMAIL_ADDRESS>but is attempted to be merged into the Subject associated with the Invitation that is being claimed.

This is very far out case but worth some thought alongside #35


ns 8 build - not calling hook for remote build

This is my first time trying nativescript remote build.  I'm targetting CircleCI for remote builds as suggested in the nativescript blog.
I have just gone through the setup instructions with a small existing project  with CircleCI
Everything appears to be correct, I think.
However, when I type ns build ios or ns run ios it does not fire a remote build.
There's no indication that the plugin is actively running.
Please let me know what additional information I can provide to help troubleshoot
thanks

I have the same issues, created a brand new ns 8 project, then installed nativescript-remote-builds, added .nsremote-config.json and .nsremote.env.json but looks like every time I do a build it uses the local environment.
I cheked the hooks directory and it has only nativescript-core.js.
How can I make this work?

Ok looks like it adds hooks and starts to work if you use the next version:
npm install nativescript-remote-builds@next


Graphic for device agent docs

Related Issue
No response
Description
Considerations:

Where will the image be displayed/shared, product? blog post? social media? presentation? website?

Inspirations:

Hi @joepavitt wdyt?

Feel like we need clearer labelling on the high level steps, e.g. "Installation" & "Deploy Flows". Maybe the bottom row could be a right-side instead? Left-side is "Install", right-side becomes "Deploy"?

Yeah, that's how you lay it out initially. However, I was trying to avoid making it too long horizontally, as it could become unreadable on smaller screens.
I'll see what I can do.

Could we split the bottom row into two blue sections? Both labelled Deployment, but with Option 1/2 in them? Think that's the bit that's reads as confusing at the moment.

Could we split the bottom row into two blue sections?

Done!

Thanks @Yndira-E - I do still thinking the bottom should go to the right, as the general flow reads (to start with) left > right, then down, left left > right again.
I checked how it would render in the docs themselves, and this was the outcome:

I thought a max-width would be set and data-zoomable added. On mobile it should be fine taking up  the full width.
Here's the horizontal version in case you'd prefer to use this one for desktop instead.

Does the iteration on this section involve more than the graphic? I’ve put the device agent post on hold until we’ve made improvements.

Does the iteration on this section involve more than the graphic? I’ve put the device agent post on hold until we’ve made improvements.

It'll be an upgrade of section alongside the graphic I think, not 100%

But why make the image intentionally smaller and have load of empty white-space on the right?

Here's the horizontal version in case you'd prefer to use this one for desktop instead.

I trust your judgment—pick the one you think looks best for each screen size. Just let me know when this section of the docs is updated so we can review the user flow from the /device-agent page and, finally, promote it on socials 😉


Question on calling function to get values from database for a Select control (drop down box)

With the following schema, see that I'm doing a .find on the ChartDictionary for 2 different select controls, chartStatus and location. This is the recommended way of doing it based on much internet searching and research.
Chart.attachSchema(new SimpleSchema({
  demographics: {
    type: Object,
  }
  , 'demographics.chartStatus': {
    type: String,
    label: "Chart Status",
    autoform: {
      options: function () {
        var options = ChartDictionary.find({"lookup_type": "chartStatus"}, {sort: {"lookup_label": 1}}).map(function (c) {
          return {label: c.lookup_label, value: c.lookup_id};
        });
        console.log("getting chart status options found: " + options.length);
        return options;
      }
    }
  }
  , 'demographics.location': {
    type: String,
    label: "Location",
    autoform: {
      options: function () {
        var options = ChartDictionary.find({"lookup_type": "clinicLocation"}, {sort: {"lookup_label": 1}}).map(function (c) {
          return {label: c.lookup_label, value: c.lookup_id};
        });
        console.log("getting clinic locations options found " + options.length);
        return options;
      }
    }
  }

When I visit a route that displays the autoform, I see my console.log messages , but they are running an extreme number of times, and I'm confused as to why.  There seems to be something off.  It seems to be trying to .find the options but not getting them all at first, as the first ones show the number found to be 0, then next it shows a few more, and finally, the last one, shows 17 chart status found and 8 clinic locations found, which is the full amount.  Is there something wrong with the subscription... do I need to get it to wait for the subscription or something like that?
See image below for the output of the browser console.  (this is what shows when the app reloads after a code change)

I have put together a repo to demonstrate this.  Seems that it runs 4 times consistently. https://github.com/wesyah234/quickFormDemo/tree/28ed72b6f6d197bcf4077883f17ca577c82feb12
Some discussion has gone on at the forums on this:
https://forums.meteor.com/t/strange-behavior-when-using-a-function-with-autoform-simpleschema-to-pull-values-for-a-select-control/7669
One comment was "don't do expensive stuff in the autoform options function", but I am concerned about that, since my use case dictates that I need to be able to populate autoform select options from a Mongo collection.  (I would think this would be a common use case)
They thought I should address it with you directly here.
Thanks for looking!

Looks related to this issue: https://github.com/aldeed/meteor-autoform/issues/757#issuecomment-78297853

Blaze in general can rerun stuff a lot, and there are likely some optimizations to be done in AF, too.
As for optimizing this specific case, ideally you don't display the template that contains the form until all the subs it needs are ready. Next best would be something like this at the top of each options function:
if (! ChartDictionarySubscription.ready()) return;

ok, thanks...