Comment linking

Details

Fixed Issues

$ https://github.com/Expensify/Expensify/issues/147480
Tests
Setup
For dev, you would need to set
const URL_WEBSITE_REGEX = `(https?:\\/\\/)?(((?:www\\.)?[-a-z0-9]+?\\.)+(?:${TLD_REGEX})|(localhost\\:8080))(?:\\:\\d{2,4}|\\b|(?=_))`;

in node_modules/expensify-common/lib/ExpensiMark.js before pressing enter so that its saved like a URL.)

P.S Paste doesn't work on a simulator iOS for me but it works fine on a physical phone.
Recent Chat (pick a chat within 30 messages)

Generate a comment link within the 30most recent messages. Paste it on the same report and another report.
Sign out, clear local storage and proceed so that we are testing on clean slate. On native you need delete app and redownload. On native web test on private browser and start a new browser for each test.
Sign in, go to the first same report and click on the comment link. Confirm the message is properly highlighted and scrolled to. The code will try to have the message show up at the middle if possible. On native confirm the drawer is not open so you can always see the comments.
Repeat step 2.
Sign in, go to the other report and click on the comment link. Confirm you are redirected to the correct report and the message is properly highlighted and scrolled to. (Note: the animation might take about 10s to begin. Mentioned as part of known issues below)
Send a test message to the chat report. Confirm on clicking send that it does not scroll once again to the LINKED comment thats in the URL once you send a new message.

Older Chat (pick a chat thats older than 51 messages back, PM me if you need this reportActionID)

Generate a comment link within thats 51 - 100 recent messages back. Paste it on the same report and another report.
Repeat the steps 2 to 6 from the previous test.

Really old chat (pick a chat thats older than 200 messages back, PM me if you need this reportActionID)

Generate a comment link with a reportActionID older than 200 messages back. Paste it on the same report and another report.
Repeat the steps 2 to 6 from "Recent Chat" tests with the only difference this time is that nothing will happen. The chat will not scroll to message or show a highlight.

[x] Verify that no errors appear in the JS console

Contributor (PR Author) Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] iOS / native
[ ] Android / native
[x] iOS / Safari
[ ] Android / Chrome
[x] MacOS / Chrome
[x] MacOS / Desktop

[x] I verified there are no console errors (if there’s a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained “why” the code was doing something instead of only explaining “what” the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named “index.js”. All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] Any functional components have the displayName property
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose and it is

[x] If a new CSS style is added I verified that:

[x] A similar style doesn’t already exist
[x] The style can’t be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.

PR Reviewer Checklist

[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] iOS / native
[ ] Android / native
[ ] iOS / Safari
[ ] Android / Chrome
[ ] MacOS / Chrome
[ ] MacOS / Desktop

[ ] I verified there are no console errors (if there’s a console error not related to the PR, report it or open an issue for it to be fixed)
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained “why” the code was doing something instead of only explaining “what” the code was doing.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named “index.js”. All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] Any functional components have the displayName property
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose and it is broken down into smaller components in order to separate concerns and functions

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn’t already exist
[ ] The style can’t be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.

QA Steps
Same as Test steps.

[ ] Verify that no errors appear in the JS console

Known problems/limitations

Clicking on a comment link on another report takes a while for the animation to begin. Especially on web/desktop since it takes a while before we render and calculate all the heights.
Click on a same link that was already animated before will not do anything since the URL does not change.
Hovering over the highlighted text removes the green background.
No feedback atm that items are being rendered before scroll can happen.
Comment highlighted is not always scrolled to perfectly in the middle.

Future steps

Improvement - Work on https://github.com/Expensify/App/pull/8638#discussion_r887357360 to move logic from ReportActionsView to ReportActionsList. Maybe also this improvement.
Follow up issue - as per comment. Create a follow up issue to clean up the code once the other issue is resolved.

Screenshots

Web
Same report
https://user-images.githubusercontent.com/14356145/170385534-65bc72d5-c262-4a24-bdfa-918e84ababf7.mov
Different Report
https://user-images.githubusercontent.com/14356145/170386093-ef96528e-68a7-4283-9e1f-b868a0dabe84.mov
Mobile Web
Same Report
https://user-images.githubusercontent.com/14356145/170386404-fd8ff457-0789-4c8f-b488-96e7e90c48c9.mov
Different Report
https://user-images.githubusercontent.com/14356145/170386504-3919fb26-3abe-4ace-8717-d2ba5db7d3a2.mov
Desktop
Same Report
https://user-images.githubusercontent.com/14356145/170386601-799c6d85-96e0-4414-ac3d-1aec24ba1d83.mov
Different Report
https://user-images.githubusercontent.com/14356145/170386712-353175be-2a38-46ed-b06d-15a4975fc87f.mov
iOS
Same Report
https://user-images.githubusercontent.com/14356145/170387191-7435bd63-ddc3-41a9-b8a7-ba1242f5b644.mov
Different Report
https://user-images.githubusercontent.com/14356145/170387311-822dac71-fb2d-43a8-a8e5-a73751a9ec89.mov
Android

Updated code. Made a note of known limitations so i don't forget. I'll post relevant ones on the issue too later. Asked for comment background color in the issue.
Known limitations:

UI is not optimized, on web/desktop we have to wait till all the items are measured before scrolling.
Clicking on the same URL won't do anything because we don't remove route param from the URL so no change is detected when the same link is clicked.
The current regex URL_WEBSITE_REGEX in ExpensiMark does not work with localhost. To dev test i manually update to,

const URL_WEBSITE_REGEX = `(https?:\\/\\/)?(((?:www\\.)?[-a-z0-9]+?\\.)+(?:${TLD_REGEX})|(localhost\\:8080))(?:\\:\\d{2,4}|\\b|(?=_))`;

Will have to create a PR to find a better regex solution for localhost.
4. Measurements are not perfect. Something the scroll is not perfectly centered. This usually happens the more far back it has to scroll. Sometimes a refresh fixes this.
5. On ios simulator i ended up setting the default drawer status to false here. I'm not sure if its an issue just for me but on ios simulator while click on a link the drawer would be open by default and i couldn't see the chats. Not sure if this is an issue just for me or on physical phones too.

Tested on physcial ios web and app today. Looks like drawer state is actually incorrect and its not just a simulator thing. Investigating.

Took a bit of time with the drawer stuff but i found a working solution. Okay so next steps for me,

Update the color of the background highlight.
Lots of testing. I know it works well on web, native & native web if the linked comment is under 50 chats but i still need to test it more. Then need to test over 50 chats scrollback if it works well, i think its fine for web but i dont remember for native. Test other scenarios i can think of.
Update the issue with the images/videos and place it for review.

I think im close. I've updated the background highlight. Started testing today. There are a number of things i've been testing today. Here is my list,
Comment linking testing
Recent Chats on same report (within 50 messages)

[x] iOS app
[x] iOS Web
[x] Web
[x] Desktop
clicking same link does not do anything.
Ran query select rowID, * from reportActions where reportID = <reportID> order by created desc limit 50; and then pick a rowID in the middle. The URL will be http://localhost:8080/r//.

Recent Chats on different reports (within 50 messages)

[x] iOS app
[x] iOS Web
[x] Web
[x] Desktop
will have to wait 10s for content to render before it will scroll to the correct report

Older chats on same report (between 50 -100 messages in the scrollback)

[x] iOS app
[x] iOS Web
[x] Web
[x] Desktop
Ran query select rowID, * from reportActions where reportID = <reportID> order by created desc limit 60; and picked the oldest rowID. The URL will be http://localhost:8080/r//.

Older chats on different report (between 50 -100 messages in the scrollback)

[x] iOS app
[ ] iOS Web
[x] Web
[x] Desktop
Found a bug here with the order of operations causing this point to not work but i fixed the bug today.

Really old chats on the same report (over 150 messages back in the scrollback)

[ ] iOS app
[ ] iOS Web
[ ] Web
[ ] Desktop

Really old chats on different report (over 150 messages back in the scrollback)

[ ] iOS app
[ ] iOS Web
[ ] Web
[ ] Desktop

Just a little bit more testing and then cleanup before i put it for review. I'm hoping to put it out for review tomorrow 🤞

Ready for review 🎉
Additionally while i don't have any console errors i have two warnings. Any idea how to address them?

Steps: On Native iOS click on a comment link.

Warning: Cannot update a component (`ForwardRef(BaseNavigationContainer)`) while rendering a different component (`ReportScreen`). To locate the bad setState() call inside `ReportScreen`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render
    in ReportScreen (at withOnyx.js:173)
    in withOnyx(ReportScreen) (at withOnyx.js:197)
    in Unknown (at SceneView.tsx:126)

Steps: On web click on a comment link.

Animated: `useNativeDriver` is not supported because the native animated module is missing. Falling back to JS-based animation. To resolve this, add `RCTAnimation` module to this app, or remove `useNativeDriver`. Make sure to run `pod install` first. Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md

but if i remove useNativeDriver there are more warnings 😅

Looks like we're still waiting on another round of reviews, yeah?

Yup, friendly bump to review whenever you guys get the chance.

Sorry, I just have one too many things going on right now. Maybe we can get some additional reviewers here?

okay, well we already have 3. I'll use pullerbear to add a fourth to review.

The linked comment must be within the last 150 reportActions

Correct. In the PR description check out the section titled "Known problems/limitations". From the issue it looks like in this first phase we just want a basic version to work. Once bidirectional scrolling it implemented then we'll work on a more perfect version.

Removing artificial limit, addressed merge conflicts and re-tested. Ready for review.

Sorry @chiragsalian, but I can't review this properly today. I really need to focus on the Manual Request API refactor doc as it's blocking the entire roadmap.

Shall address merge conflict once reviews are more active otherwise it will be wasted effort on my end to continuously address merge conflicts.

I hate to bother you guys but i was talking to someone else today about this PR and as per the manfesito engineering guidelines

Review other people's code and triage auto-assigned issues

is prioritized higher than working on daily whatsnext issues. Any chance you guys can prioritize reviewing this PR 🙇♂

Discussed with marc and we landed on splitting the webpack part of this PR to another PR so its easier to review. While splitting i realized that copy link feature as a whole can be split so that each part can individually work so now,

This PR is purely for clicking a comment link which will navigate to the specific comment.
And this other PR is for supporting the copy link feature to create comment links on dev/staging/production.

These two PRs should now be independent of each other. Retested and this PR is ready for review 🙂

Sorry Chirag, with onshore and the API Refactor docs I forgot to come back to this one. Taking another look today.
Side note, that manifesto priority order existed before we introduced the newsletter process. This isn't an excuse for not reviewing 😄, but I'd argue that some newsletter blocking work should be treated as a higher priority than reviews.

@chiragsalian, the last issue on the comment was unanswered. Does it need further discussion?

Sorry i wasn't able to update today due to some personal errands. Aiming to address comments tomorrow.

I tried a number of things today to resolve this comment. I kept hitting dead ends and ended up reverting my code. I'll try more over the weekend and if i dont make any progress i'll ask on slack on Monday.

Updated the code.
From this comment i investigate ways to reduce checkScrollToReportAction polling. I think i've reduced it quite a lot but a sort of polling still exists for native.
I was able to reduce setTimeout value to 10 and it works fine. Removing doesn't work because even though the callback says the action item is rendered if i attempt to scroll immediately is fails.
I'll ask for inputs on slack for both.
Additionally i don't know why navigation to go back from the report screen to home screen is broken. Right now if you click on a comment link and click back, the report actionID is not removed from the URL so my code closes the drawer which is incorrect. It was definitely working before so i'm not sure why it broke now. Shall investigate.

Gonna pull this down and do some testing and will do another review now.

okay i figured out some nice navigation fixes which removes closeDrawer from ReportScreen code and updates custom actions with some fixes (as seen in this commit).
Although i unfortunately see a new bug. Somehow when a comment link is clicked ReportScreen is remounted. I think its because now i'm doing pushDrawerRoute and i should instead call closeDrawer if reportActionID is present and call linkTo. Shall test it out.
Can someone explain to me when we would want to call pushDrawerRoute? I would think its to update the drawers but then i'm confused why we call it for r/reportID which is ReportScreen and not the drawer.

Updated code with better navigation (thanks for the help marc 🙇♂), retested and ready for review.

Code looks better! I'm having some issues while testing on web.

Create a chat with 1000 comments
Tap link to old chat
Wait and nothing happens
Tap again
Nothing happens

https://user-images.githubusercontent.com/32969087/176571396-1137561f-068c-4492-a50f-73b83e2ef928.mp4
Is it because I have many chats messages?
@Julesssss @Justicea83 @roryabraham could use some help testing this one.

Testing 30 comments back

Confirm on clicking send that the scroll does not automatically move

Is this native only? On web I was scrolled down to the most recent message (the one I litterally just sent), and that seems expected IMO. Am I mistaken?

Also, most likely unrelated, but I saw this error during each test which didn't make much sense.

I wonder whether we should show a spinner of some sort when the paginated chats are loading?

Ok, that sounds fine to me. I'm just going to do some testing with a smaller report and if everything looks good I will merge.

Hmm so same issue even with 300 comments. Doesn't seem to work at all.

Ok, 150 works, but it takes about 10 seconds when tapping on a link that drops you into the app.
Is comment linking supposed to work quickly if we are already on a /:reportID/:reportActionID route and navigate to the same address?
It seems like the page refreshes and then takes a long time to navigate. We must be remeasuring the items? I think you explained this to me @chiragsalian, but thought by using props.navigation.setParams() we would improve it.
https://user-images.githubusercontent.com/32969087/176796776-0758f6ac-3504-4530-8e9d-6900cc63ac82.mp4
It is much better when toggling between two different addresses (and never the same one that we're on)
https://user-images.githubusercontent.com/32969087/176796947-6f7f69f7-c7b1-4f99-a018-e32a037eb8d6.mp4
Can we fix that?

I haven't dived deeper into why it halts after 4 or 5 chats. Do we feel like we should for the MVP?

I think that's OK, but seems like there should be some kind of explanation as to why this does not work and we could at least provide a decent user experience like maybe show a loading spinner until all the chat history has loaded and then scroll? Otherwise, it is very weird and a link to a historical comment will appear to just not do anything at all. Maybe we should disable any links that are effectively useless?
Just to pull out something David said here...

I think we should remove the limit because it's solving a problem we haven't experienced. If we experience the problem and don't like it, then we can solve it.

I don't like it, but feel free to ask others 😄 It feels a bit broken to me.
A thought... we can always put this behind a beta until it works flawlessly and that will allow us to merge this code for now, test internally, and see if it's acceptable or if we can improve it. IMO it's not really usable enough in the current state to release to all users as a proper feature without some kind of disclaimer or limit to how far back they can navigate.

It seems like the page refreshes and then takes a long time to navigate. We must be remeasuring the items? I think you explained this to me @chiragsalian, but thought by using props.navigation.setParams() we would improve it.

Thats odd. It should not refresh if you are on the same reportID. I'm pretty sure you don't have my latest changes since it should not show that loader in reportScreen. Can you check and make sure you pulled my latest changes?

we could at least provide a decent user experience like maybe show a loading spinner until all the chat history has loaded and then scroll?

So i've mentioned this in my Known problems/limitations section which i've also posted in the https://github.com/Expensify/Expensify/issues/147480#issuecomment-1154579912. I haven't gotten any pushback on the items so i left it for now. I think it can be done as a follow up improvement since this PR is pretty large as is but if you guys feel strongly let me know.

I don't like it, but feel free to ask others 😄 It feels a bit broken to me.
IMO it's not really usable enough in the current state to release to all users as a proper feature

I'm more than happy to continue working on items mentioned in the known limitations but i was told for N7 the people using this would be people that have very little comments, like 10 to 20. Hence i focused on the MVP for that usecase and thought once the MVP was live we could start tackle other items based on priority. Let me know if you feel otherwise.
Additionally i had the same concern expressed here - "I'm a little concerned once this comment linking is live people will say it doesn't work well and it would been easier to explain it doesn't work at all for over n past chats at this time than saying you will need to wait 2 to 5 minutes to see if it works. Just wanted to share my concern (maybe its a not a real concern at this time and just something i'm thinking about)." and the consensus was to mostly get an MVP released.

Can you check and make sure you pulled my latest changes?

yes, branch is up to date.

I think it can be done as a follow up improvement since this PR is pretty large as is but if you guys feel strongly let me know.

Sorry, going to sound like a broken record here, but I feel strongly that it would be good to limit introducing any UX that feels fundamentally broken. Why is this feature so urgently needed that we will ship with obvious flaws?
I understand that the size of this PR is a factor in us wanting to take a shortcut here. But we have options. We can merge what you have here and enable the feature when it is ready. We can have a beta or even without a beta just hardcode and disable the feature until it works and we can continue testing on dev in a future PR and then release it when it works properly. That will enable us to break up the work into phases and make incremental improvements.

I discussed the MVP requirements with jason yesterday and today and if he feels like any of the known limitations here should be tackled or if we can put the feature behind a beta. It was a bit confusing to me because at first we were rushing to get this out the door but N7 has been delayed quite a bit so things have changed since then. Anyway I asked if he would prefer holding this, closing this, changing priorities or putting in under a beta and it sounds he liked the beta idea based on the review comments here.
So for my next step i'll add it behind a beta and Jason said we can internally test it and decide what to prioritize from there (loader, performance, older chats testing etc). So i'll work on putting this behind a beta next.

but can we try to work out why this is breaking?

Sure, i did a little bit of investigation. It works fine for me if the comment is under 150-200 most recent. If it's more than 200 it's a little weird wherein we do load 250 report actions and gives it to baseInvertedFlatList but i'm not sure why baseInvertedFlatList does not measure the items at this point. It does save the 250 actions to onyx but for some reason baseInvertedFlatList doesn't measure these. If i reload the page then baseInvertedFlatList measures the complete 250 perfectly but once it loads the additional 50 it even renders them but it does not measure the new items. Each time i refresh it will refresh baseInvertedFlatList will measure the new 50 items but when we load another 50 it will render them but not measure them. I stopped investigating at this point and can pick it up again if its needed.
Anyway i've put the feature behind a beta. Let me know if you guys feel like there are areas to prioritize in this PR while it's still behind the beta. For anything else, once this goes live for us to test i'll post the known limitations in the issue to prioritize the list and then tackle them separate with a plan of action.
Also now that this is behind beta do we normally ask QA to add themselves to beta and test or have them not test?
Ready for review.

Placing PR on HOLD till the web-E beta PR is live. But this should still be good to review.

Closing this issue. Sorry for the delay in posting. I spoke to jason earlier where he mentioned the priority of comment linking has dropped wrt the API refactors. Then i spoke to rory where he mentioned we were closing to getting bidirectional scrolling live. With it live now i'd like to take this back to the drawing board and do the functionality better using bidirectional scrolling and creating multiple smaller PRs so its easier for testing.


refactor: completions option

(WIP)
Some flag completions are mistakenly bound to other flags, this PR adds a FlagOption to add completions, so there is a single source of truth for command name and no dev mistakes can be made in the future

Introduced in #468


Add navigator.doNotTrack and DNT support tables

Please can we have DNT and doNotTrack support added to caniuse.com
The 'Do Not Track' privacy initiative is implemented first at an HTTP Header level, e.g. DNT:1 and then exposed on the window and navigator objects in the DOM as doNotTrack depending on the User Agent.
Current implementations:

navigator.doNotTrack
navigator.msDoNotTrack (IE 9-10)
window.doNotTrack (IE 11+, Safari 7+)

See:

W3.org spec (Working Draft): https://www.w3.org/TR/tracking-dnt/
MDN Guide on the Do Not Track initiative: https://developer.mozilla.org/en-US/docs/Web/Security/Do_not_track_field_guide
MDN Article on navigator.doNotTrack: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/doNotTrack

As a web developer, I'm interested in a JS polyfill that would check the User Agent for the user's Do Not Track setting. If doNotTrack is set, then I'd, for instance, not load up any client-side analytics.
Thanks!

+1

+1

+1 And please include storeSiteSpecificTrackingException, etc. With the EU GDPR looming there's likely to be interest in this.

+1 on @dmdabbs regarding GDPR. We're working on this now and we're not the only ones.

Now available at https://caniuse.com/#feat=do-not-track


Fix a broken test

Thank you for the merge of #4764. It was an errors because #4815 was not applied 💦
This PR fixes following errors.
https://travis-ci.org/bbatsov/rubocop/jobs/282114496#L576-L610

Before submitting the PR make sure the following are checked:

[x] Wrote good commit messages.
[ ] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Used the same coding conventions as the rest of the project.
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[ ] Added tests.
[ ] Added an entry to the Changelog if the new code introduces user-observable changes. See changelog entry format.
[x] All tests(rake spec) are passing.
[x] The new code doesn't generate RuboCop offenses that are checked by rake internal_investigation.
[x] The PR relates to only one subject with a clear title
and description in grammatically correct, complete sentences.
[ ] Updated cop documentation with rake generate_cops_documentation (required only when you've added a new cop or changed the configuration/documentation of an existing cop).

👍
Thanks for the fast reaction!

Thank you for taking your time 🙏


Remove redundant initialization

Remove redundant initialization. We don't need to initialize t1 and t2 to a value since below k and p are explicitly defined in for loop and there's no other implicit conditions that may cause an runtime error if t1 and t2 are not initialized

Remove redundant initialization. We don't need to initialize t1 and t2 to a value since below k and p are explicitly defined in for loop and there's no other implicit conditions that may cause an runtime error if t1 and t2 are not initialized

Coverage increased (+0.05%) to 22.436% when pulling a784665c70ddcc65c8404fbd8c02a1f0dc3aaa8c on ZhongxuanWang:patch-1 into 3d3fea0e80422864a22b751fdedfbb443288baff on sarxos:master.


settings - licenses, privacy policy and terms of use

What would you like to be added:
Section on the settings page to view Licenses, Privacy Policty and terms of use
Why is this needed:
/triage accepted
/priority important-soon
/area ui-ux
/assign @jtlntno-cake

/design in-progress

Do we need to have separate pages for each (licenses, privacy policy and terms of use)? And do we also have the content that we can check for each? @thedoublejay

Closing as main ticket will be this one - https://github.com/DeFiCh/wallet/issues/376


[Deploy] Instagram

Service
Instagram
Link to your repository
https://github.com/adambirds/recipe-instagram
Additional Information
This is a plugin for Instagram

Is this getting added?

this is great that it shows instagram web interface, but it doesn't really allow for messaging which is kind of the point of franz. Without direct messaging working what is the real point?

Well, someone built a real desktop client for instagram that allows chatting: https://github.com/ifedapoolarewaju/igdm
This is an Electron app, so it should be possible to convert this to a plugin for Franz, it should not?

did the Instagram electron app work? if it did, how?

@adambirds can you please re-open the issue, so it gets more attention? You are not the only one who wants this.
@afonsocarmo
it uses the same "private" Instagram API like the official Instagram app. I think the most interesting file here is https://github.com/ifedapoolarewaju/igdm/blob/master/main/instagram.js which shows all available operations using its client.
the author also built the API: https://github.com/ifedapoolarewaju/instagram-private-api
if the tool still works, someone could require this api and communicate with Instagram the same way like the author did in the first link I posted. It would be useful to first build a web version out of his implementation and the Franz plugin in the last step.

I closed this because I am no longer using Franz or interested in spending any more development time on it. If you would like to look at it further then please feel free to fork the repo and then work from there.

I closed this because I am no longer using Franz or interested in spending any more development time on it. If you would like to look at it further then please feel free to fork the repo and then work from there.

You don't need to spend any more time to it, but please re-open and unsubscribe this issue, so it gets some more attention.
Thank you!


Made the text entry field expand in the presence of long text

Made the chat text field expandable for long text. The max lines are 4.
MOB-2335

Could you please also add android:maxLength="10000", to align with IOS.

Could you please also add android:maxLength="10000", to align with IOS.

added

!squash


all: remove global logger, use base/http.ResponseWriter instead of our fork

This is cleanup. I wrote the responseWriter here first and then ported it into base/http, so now we can use the shared version.

Codecov Report

Merging #105 into master will decrease coverage by 0.21%.
The diff coverage is 34.69%.

@@            Coverage Diff             @@
##           master     #105      +/-   ##
==========================================
- Coverage   51.37%   51.16%   -0.22%
==========================================
  Files          23       23
  Lines        3126     3100      -26
==========================================
- Hits         1606     1586      -20
+ Misses       1189     1187       -2
+ Partials      331      327       -4


Fix broken help links

… Queries, Directives and Filtering
Description
There are several links broken on Help -> Documentation : Graph Academy, Type Definitions, Queries, Directives and Filters.  This PR corrects those.
Complexity:
Low
Issue
N/A

Made some changes to the Neo4j GraphQL Toolbox? Or made some changes to the core library perhaps?
Check out your changes at https://neo4j-graphql-toolbox-83.surge.sh
Use for instance a local dbms hosted on Neo4j Desktop or a cloud-hosted Aura Free dbms.


Kernel start fails with unknown option --ip=<IP_ADDRESS>

Hi there, cool project and i would love to use it. However, the kernel does not start for me in a fresh conda environment using jupyter with vscode:

Any hints on how to solve this?
Here are the jupyter logs:
error 13:48:35.907: Error in execution (get message for cell) [ap [Error]: The kernel died. Error: unknown option --ip=<IP_ADDRESS>
usage: /home/csb_admin/anaconda3/envs/xeus-sqlite/bin/python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h' for more information.... View Jupyter [log](command:jupyter.viewOutput) for further details.
	at ChildProcess.<anonymous> (/home/csb_admin/.vscode-server/extensions/ms-toolsai.jupyter-2023.1.2010391206/out/extension.node.js:17:102857)
	at ChildProcess.emit (node:events:538:35)
	at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)] {
  category: 'kerneldied',
  kernelConnectionMetadata: Zd {
    kind: 'startUsingPythonInterpreter',
    kernelSpec: id {
      specFile: '/home/csb_admin/anaconda3/envs/xeus-sqlite/share/jupyter/kernels/xsqlite/kernel.json',
      interpreterPath: '/home/csb_admin/anaconda3/envs/xeus-sqlite/bin/python',
      isRegisteredByVSC: 'registeredByNewVersionOfExtForCustomKernelSpec',
      name: 'pythonjvsc74a57bd05e91d0f63ce49382f18b9e612cdf94dd5611a3d00a569b3cf5de0f12d01f01e4',
      argv: [Array],
      language: 'sqlite',
      executable: '/home/csb_admin/anaconda3/envs/xeus-sqlite/bin/xsqlite',
      display_name: 'xsqlite',
      metadata: [Object],
      env: undefined,
      interrupt_mode: undefined
    },
    interpreter: {
      id: '/home/csb_admin/anaconda3/envs/xeus-sqlite/bin/python',
      sysPrefix: '/home/csb_admin/anaconda3/envs/xeus-sqlite',
      envPath: [f],
      displayPath: [f],
      envName: 'xeus-sqlite',
      uri: [f],
      displayName: 'xeus-sqlite',
      envType: 'Conda',
      version: [Object]
    },
    id: '.jvsc74a57bd05e91d0f63ce49382f18b9e612cdf94dd5611a3d00a569b3cf5de0f12d01f01e4#xsqlite./home/csb_admin/anaconda3/envs/xeus-sqlite/python././home/csb_admin/anaconda3/envs/xeus-sqlite/bin/xsqlite#-f#{connection_file}'
  },
  exitCode: 2,
  stdErr: 'unknown option --ip=<IP_ADDRESS>\n' +
    'usage: /home/csb_admin/anaconda3/envs/xeus-sqlite/bin/python [option] ... [-c cmd | -m mod | file | -] [arg] ...\n' +
    "Try `python -h' for more information.\n"
}
info 13:48:35.921: Process Execution: > ~/anaconda3/envs/xeus-sqlite/bin/python -c "import ipykernel;print('6af208d0-cb9c-427f-b937-ff563e17efdf')"
> ~/anaconda3/envs/xeus-sqlite/bin/python -c "import ipykernel;print('6af208d0-cb9c-427f-b937-ff563e17efdf')"
´´´

Error: unknown option --ip=<IP_ADDRESS>
Never saw this error before... I guess I'd have to test it myself on a vscode instance.
Did it use to work before?

Did it use to work before?

Nope, this is the first message that i got from the kernel after following the install steps.
I also tried to test it locally with my windows machine, but there i can't install it with a fresh miniconda env (PackagesNotFoundError: The following packages are not available from current channels:- xeus-sqlite)

Unfortunately, I don't think it's available on windows.
Sorry, I wasn't clear enough with my question, what I meant was did it use to work with previous versions of xeus-sqlite?

This is the first time i tried it (never have used it before), but i can try pinning previous versions, any recommendations on which version to try?

No, sorry.
I don't think other versions will work... I'd have to invest some time looking for this bug, or if you're up to it and want to investigate.
I'm around if you want to ask questions!


EnumList should error when trying to index a nil value within the Enums table

I believe this was removed when table.freeze was added, but table.freeze only fulfills what __newindex did. It does not error if you index a nil value.
In my opinion, it is fairly useful for debugging, especially if you are changing around the Enum names around quite a bit. I had to spend 20 mins to debug an issue related to this, and it would be nice if the behavior matched that of the Roblox Enums, which error if you try to index for a non-existent Enum.

I think this should be pretty doable. Might just need to tack on an __index function that throws an error.


How to sort the ValueSet view ?

Is is possible to sort the view after the two profiles HospitalNotification and CareCommunication ?

Please change the letters to the existing ValueSets  and CodeSystems to the right camel case


“could not connect to netflix addon repository”

i am trying to install netflix on a raspberry pi 3b+ with this guide https://www.makeuseof.com/tag/netflix-amazon-video-plex-raspberry-pi/
but it didn’t work and i got the “cannot connect to repository” message. i realised that the guide told you to downgrade osmc but even when i tried it in a brand spanking new install whit no downgrading it did not work.
more info:
i don’t think that it’s beacuse i’m in a not working county but still i’m in the uk,england

I reproduce, using LibreElec Leia amd64

i fixed it by downloading this master and putting it into the recovery directory of NOOBS, i just installed it without the repository
p.s the tutorial said to download some of the required files and i did do that so it worked when i didn’t use the repo

ooops i’ll leave this open in case anyone has the same issue

same for me, v 1.0.1 of plugin repo

Well, the whole of https://johtru.com is unreachable from anywhere I tried - I guess we have a root cause...

https://github.com/asciidisco/plugin.video.netflix/issues/675

I am in India ,Have the same issue, Netflix was working till last month, I started getting "Netflix error check log for error", tried to reinstall. Downloaded the Netflix addon repository , now I start getting error " Could not connect to repository".
Please provide me the solution around this .

Reproduced both issues discussed in this feed, using repository 1.0.1 and plugin 0.13.23.

Same here.

I have the same issue. Anyone have any luck solving this?

Re-posting the solution from #675 here, since people are still having issues.
This issue is caused by the repo no longer being actively supported.
I resolved this issue by moving to https://github.com/CastagnaIT/plugin.video.netflix. Its a fork of this repo that is actively supported and is working for me.
I am not a developer on either of these, so please reach out to their owners if you have issues.


#180: do not allow dupe forms in the IBDO stack

This work simply adds a "remove(newForm)" call before any attempt to add a new form to the IBDO's form stack. This will remove any already existing matching forms (or do nothing if it doesn't already exist) and then continue as before. The test I wrote adds the same form multiple times in different ways and then checks to see that only one of that form exists in the stack.
As an aside, it may be worth revisiting BaseDataObject for a little bit of refactoring, but that's outside the scope of this ticket.

In RoutingAlgorithmTest, testErrorHandlingErrorPopsAllCurrentForms() is currently failing after this change because it is expecting to see at least two ERRORs in the form stack, which is now impossible. There are a few ways to fix this:

Allow for multiple ERRORs to exist in the stack
Change the test conditions/answers
Change the check in MobileAgent, line 454

For now, I will implement allowing multiple ERRORs in the stack as it is the easiest to implement and still keep with current functionality.

After looking over the current code and talking it over with @dev-mlb a bit, I think if we wanted to do anything now we should start enumerating these instances with logs so we can see how often it happens and under which situations before we take actions to prevent. The ticket does ask for logging updates and confirmation and that might be a better first step.
I'm concerned that there are natural situations we need to know about and then there is the noted ERROR form handling scenario. It may be the case that we are safe from running into multiple ERROR forms with changes we've made to routing and removing moveTo, but the kind of code I would have replaced https://github.com/NationalSecurityAgency/emissary/blob/7.7.0/src/main/java/emissary/core/MobileAgent.java#L454 with was actually bug fixed to be the current state which makes me wonder what I'm missing.

After looking over the current code and talking it over with @dev-mlb a bit, I think if we wanted to do anything now we should start enumerating these instances with logs so we can see how often it happens and under which situations before we take actions to prevent. The ticket does ask for logging updates and confirmation and that might be a better first step.
I'm concerned that there are natural situations we need to know about and then there is the noted ERROR form handling scenario. It may be the case that we are safe from running into multiple ERROR forms with changes we've made to routing and removing moveTo, but the kind of code I would have replaced https://github.com/NationalSecurityAgency/emissary/blob/7.7.0/src/main/java/emissary/core/MobileAgent.java#L454 with was actually bug fixed to be the current state which makes me wonder what I'm missing.

Just to make sure I'm interpreting correctly, we should scratch this pull request and instead just log instances of duplicate forms?

Yes, let's go that route for now to better understand this behavior.

Closing this and opening a new pull request: https://github.com/NationalSecurityAgency/emissary/pull/304


Add info on importing and exporting Markdown in GDocs

Google introduces importing and exporting Markdown in Google Docs. TODO - see how it works and change https://github.com/trailofbits/testing-handbook?tab=readme-ov-file#workflow-from-google-docs

2173729264eeefb48e0d2d7d81442b6484722bd0


Notebook 4 - one s too many in the fit function before the random sampling section

Hi,
I was trying to reimplement the course material for my use case which is 1D as homework, and I had a bug running the fit function when using the PyTorch dataloaders, and I noticed that our fit function implemented right before the sampling chapter uses a variable called preds in the report function, however the predictions are stored in pred during the loop, and this lead to me having inconsistent dimensions, removing the s worked out.
Cheers

Out of curiosity do you have a minimal example maybe that shows the issue?

Hi @PiotrCzapla
Right before the random sampling section we define fit as:
def fit():
    for epoch in range(epochs):
        for xb,yb in train_dl:
            pred = model(xb)
            loss = loss_func(pred, yb)
            loss.backward()
            opt.step()
            opt.zero_grad()
        report(loss, preds, yb)

We define pred on line 4 in our loop, but we call report on preds in the last line. In most of the other fit functions it assigns the prediction to preds correctly such as the first fit function in the same notebook:
def fit():
    for epoch in range(epochs):
        for i in range(0, n, bs):
            s = slice(i, min(n,i+bs))
            xb,yb = x_train[s],y_train[s]
            preds = model(xb)
            loss = loss_func(preds, yb)
            loss.backward()
            with torch.no_grad():
                for p in model.parameters(): p -= p.grad * lr
                model.zero_grad()
        report(loss, preds, yb)

I see what you mean, it is in 04_minibatch_training just before jupyter chapter "Random sampling". :) I made a fix https://github.com/fastai/course22p2/pull/19 with github.dev it is super easy nowadays to make such changes directly in the browser even to notebooks ! :)
Thank you.

I did not know that. Thanks, I will try it next time!


Fixed Checkstyle Issues

Contains
Fixed CheckStyle issues logged by IntelliJ checkstyle plugin
How to test
Run the IntelliJ CheckStyle plugin.

Can one of the admins please verify this patch?


build error,"msvcr120.dll is missing" on windows 2008 sp2

i'm clone a dev branch and  already installed Visual C++ Redistributable Packages for Visual Studio 2013,but no installed visual studio 2013,the below is some of log output:
Build succeeded.
    64 Warning(s)
    0 Error(s)
.....
xUnit.net ASP.NET test runner (32-bit DNX 4.5.1)
Copyright (C) 2015 Outercurve Foundation.
Discovering: Microsoft.AspNet.Server.KestrelTests
Discovered:  Microsoft.AspNet.Server.KestrelTests
Starting:    Microsoft.AspNet.Server.KestrelTests
   Microsoft.AspNet.Server.KestrelTests.NetworkingTests.SocketCanReadAndWrite [F
AIL]
      System.InvalidOperationException : Unable to load libuv.
      Stack Trace:
         C:\Users\Administrator\KestrelHttpServer\src\Microsoft.AspNet.Server.Ke
strel\Networking\Libuv.cs(45,0): at Microsoft.AspNet.Server.Kestrel.Networking.L
ibuv.Load(String dllToLoad)
         C:\Users\Administrator\KestrelHttpServer\src\Microsoft.AspNet.Server.Ke
strel\KestrelEngine.cs(61,0): at Microsoft.AspNet.Server.Kestrel.KestrelEngine..
ctor(ILibraryManager libraryManager)
         NetworkingTests.cs(25,0): at Microsoft.AspNet.Server.KestrelTests.Netwo
rkingTests..ctor()
   Microsoft.AspNet.Server.KestrelTests.NetworkingTests.LoopCanBeInitAndClose [F
AIL]
      System.InvalidOperationException : Unable to load libuv.
...

it's looks about a libuv error? i'm can use dnx . web in my computer.

i solved this because the 32-bit DNX 4.5.1,in 64-bits system,it should be is 64-bit DNX 4.5.1,see dnvm#84,
deleted a 32-bits DNX and run dnvm upgrade -unstable -arch x64 will downloading a 64-bits package.


module "typing" has no attribute "Final"

Trying to install the plugin on QGIS 3.18.0 from the OSgeo4W installer throws the following error

Osgeo4W ships Python 3.7.0 for QGIS 3.18.0 and, If I'm not wrong, the final attribut was added only in Python 3.8.
I see online several ways are available to manage the lack of final attribute in previous Python versions.

Hmm, I must admit I did not really test Python3.7. I'll just remove the Final annotation then


VnV :: Plan

Documents:
VnV Plan
Changes:
Complete revision 0 of section 3: Plan
Checklists:

[x] Verification and Validation Team
[x] SRS Verification Plan
[x] Design Verification Plan
[x] Verification and Validation Verification Plan
[x] Implementation Verification Plan
[x] Automated Testing and Verification Tools
[x] Software Validation Plan

Completed in commit id: 3f92414effe6ef592110ba04cf7c4bf898a9243d


fix: use Action instead of ItemLayout

Example use of Action:
// for chevron
<Action.Cell
  title={t`title`}
  caption={t`caption`}
  onPress={onPress}
  Icon={PlaceholderIcon}
  variant="active"
>
  <Action.Press />
</Action.Cell>

// for Switch
<Action.Cell
  title={t`title`}
  caption={t`caption`}
  onPress={onPress}
  Icon={PlaceholderIcon}
  variant="active"
>
  <Action.Switch onPress={onPress} isSelected={/** some boolean value */ true} />
</Action.Cell>

The only annoying thing right now is that we need to manually pass same onPress to Switch too. We can't disable it because we lose switch animation that way.

Icon colour setting ideas so far:

Passing component directly and adding prop

// <Component Icon={Icon} />
function Component({ Icon }) {
  return <Icon color="new.color" />
}

Passing JSX and adding prop with cloneElement

// <Component icon={<Icon />} />
function Component(props) {
  const icon = cloneElement(props.icon, { color: 'new.color' });
}

Using context

// <IconColorProvider color="new.color">
// <Component />
// </IconColorProvider>
function Icon(props) {
  const context = useIconColorContext();
  return <Icon color={props.color ?? context.color ?? defaultColor} />
}

currentColor. Not sure if this works in React Native but some sources indicate might

// <View color="new.color">
// <Component />
// </View>

Icon colour setting ideas so far:

I agree with @pete-watters in other feedback here, there just isn't a need to pass an icon w/out the props it needs. It is just how things were coded initially, but there is a better way to do it imo. The icons can just be passed with the color (or variant) it needs w/out needing to functions to get the color later ...or am I missing something?

I'm not advocating for cloneElements. I've added another option per the alternates stated in the docs, using a render prop.
I think the feeling brewing from the discussions with Fara and Pete here and on Slack is that: there's surely a better way to do it than this? and I'm inclined to agree.
The approach used here also reinitialises the component on every render, and is fairly unintuitive React, which encourage composition by passing JSX.

I am currently looking at a similar situation we have built with our native Button. There, we named the prop buttonState instead of variant ...and we export getButtonTextColor(buttonState) to use and apply the color before passing the icon with the color applied to the Button as a ReactNode.

Soo made a few changes to the PR:

Export UI as Cell not as Action
Icons are now passed as a ReactNode as icon={<PlaceholderIcon />}. Color is assigned through cloneElement, but it doesn't override a color that was passed during icon node creation.
No variants anymore, the color should be assigned when creating icon node.

Thx for working on these changes @edgarkhanzadian, fwiw it might make more sense to leave the variant prop and assign the color in the Cell component ...I just didn't understand what the variant prop was doing and tried to point out the defined types were unclear ...and inconsistent with other components. I didn't realize it was just being used for styling now. Whatever we decide, I think we should do the same with buttonState (prob change that to variant) ...with Cell, wouldn't using similar types be better: 'default' | 'disabled' | 'critical'? I was just confused, and not really following the intention of your changes well, so if you feel it is better to leave/refine your previous direction, please feel free to. It seem like the variant prop would need to do some other style changes in Cell too? Wouldn't the chevron icon change color? Wouldn't the ItemLayout text colors change in some way if the Cell is 'disabled'? With our custom web Pressable the disabled prop handles a lot more styling changes than just the avatar icon.
Just a note too, if you leave these changes, the variant prop hasn't been removed entirely. It doesn't seem like it needs to be kept as a prop or type?


Wait for the client to finish writing the file

on the final message that is sent to the localhost provider client,
buildkit would just close the stream and return without waiting for the
client to return a final confirmation that the entire file was written
to disk.

Signed-off-by: Alex Couture-Beil<EMAIL_ADDRESS>

and it's working with 20 repeated locally tests:


Automated Package Upgrade

:tada: This PR is included in version 12.4.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Visual artifacts when running at speed 0

See http://screenshotcomparison.com/comparison/129784 and http://screenshotcomparison.com/comparison/129783 for examples. The artifacts are more visible with Psy, but are also present with Psnr tuning.
The only setting enabled at only speed 0 is bottom-up encoding, so this is likely related to that setting.

Source is
http://movietrailers.apple.com/movies/universal/johnny-english-strikes-again/johnny-english-strikes-again-trailer-1_h1080p.mov
commandline
ffmpeg -nostats -i johnny-english-strikes-again-trailer-1_h1080p.mov -pix_fmt yuv420p  -f yuv4mpegpipe - | rav1e - -v --output 0psy.ivf -s 0 --low_latency false  --tune psychovisual

This seems to be a mismatch in one of the SMOOTH intra predictors.

Closing this one and tracking in #987, that one is more specific as to the root cause.

I believe we have not confirmed that the reason for this case is the same to
the mismatch between encoder and decoder?

I thought that was the case from the IRC conversations, but feel free to reopen if I'm wrong.

Verified that #989, https://github.com/xiph/rav1e/commit/8eae88fcda424c6cf0819102c1b7faaecde53d08 fixed the mismatch and the banded (brightened or darkened) artifacts.


Finalize SOO Africa Q2 activities

Final reminder sent to SOO Tanzania and Nigeria. Pending response, will re-allocate resources.

SOO Tanzania's activity run: https://creativecommons.org/weblog/entry/45488
SOO Nigeria's activity launches tomorrow: https://events.webmaker.org/events/7033
SOO Kenya's activity pending.


RAM Leak Fix

RAM Leak Fix
https://github.com/hardkoded/puppeteer-sharp/pull/1980
https://github.com/cefsharp/Puppeteer/pull/31

Environment: framework=net48
1 of 763 failed
I don't know why this one failed now. The other pull request went through :(
do you have any idea?

PuppeteerSharp.Tests.HeadfulTests.HeadfulTests.OOPIFShouldExposeEventsWithinOOPIFs is failed

https://github.com/cefsharp/Puppeteer/discussions/30


No Verbose output when followpath used

Expected Behavior
When using followpath behaviour bot will follow path and report on distance to next waypoint
Actual Behavior
no output on location in log.
Steps to Reproduce
run bot with path config
Other Information
OS: Linux
Git Commit: 49f9177ef4226a6a69499d7afc1fb24e5c72fc50
Python Version: Python 2.7.9

only way is to just track using the frontend

Aware of that - and have been. But it is a little offputting that there is no output into the console regarding whether the path has been parsed or if it is being followed.

@alexratman is this still an issue? and if it is, should it turn into a feature request?


Filemin doesn't save the file lol

Hello,
I'm on CentOS 7 + Webmin/Virtualmin (Authentic theme)
tried on a simple text file... tried to empty and Save...
the animation spinner stays there and nothing else... then, If I click on Close, it correctly closes the file but the file isn't changed at all...
may be an issue by the theme?
Thank you

don't know why... retried and saved... first time it didn't work... no errors on javascript console
anyway I close this issue for now
bye

Yes, it maybe theme issue. AJAX'ification of Filemin is done on Authentic side, thanks to @qooob :)

I'm beating now with making Collapsible (minimizable) Filemin Editor window, so multiple files could be edited at the same time. If there is a bug which your talking about (however I doubt as it was tested thoroughly) then it should just go.. If I ever finish I'll release it in 17.21 around Xmas! ;)

Nice :)

I can't tell you how annoying this is!! :|

I can imagine :D

:D

found the issue... lol
it can't save when the file content in the meanwhile is changed...
eg.

you open the file (eg. a text log file)
you're reading the file but in the meanwhile the file content is changed by any external event
empty the file
can't save...

;-)

I have changed this part in the theme... however, I don't beileve it would be happening.. because the Filemin Editor has the filename and it's content and doesn't care if file is changed or not.

See the version 17.21 in couple of days, it will have the ability to use multiple file-editors at once.

that is, in 17.21 this will behave different? have you tried those steps yourself?

Yes I did. Couldn't reproduce.

don't know... If I try to save with the php error log or with maillog while are updated... it did it that way
the spinner on the save button stays there rolling and can't save

It shouldn't be the case in 17.21

If you want I could do a video about it...

Sure, thanks!

It's weird.. it doesn't do it anymore... there must be something else which may cause that behavior but on javascript console I don't see special errors...anyway, if it happens again I'll let you know

anyway, this is on console
https://mydomain.com:10000/index.cgi/?xhr-info=1```

net::ERR_CONNECTION_TIMED_OUT means either session is over or just no connecting for your server.. I guess..


For easier review, you can pick the commits individually. I carefully isolated each commit.

Done

Ready


--embed-thumbnail image quality option

[x] I'm reporting a feature request
[x] I've verified that I'm running youtube-dl version 2021.03.31
[x] I've searched the bugtracker for similar feature requests including closed ones

It would be nice if one could choose the quality of the image embedded as a thumbnail into the audio track of the video one downloads. At the moment the thumbnail is of the lowest quality.

Have you checked whether the downloaded thumbnail file is of higher quality than the embedded one? If not, you might need to use ffmpegthumbnailer on the video.

To get higher quality jpeg thumbnail, line 70 in embedthumbnail.py  needs to be changed to:
            self.run_ffmpeg(escaped_thumbnail_filename, escaped_thumbnail_jpg_filename, ['-q:v', '1', '-bsf:v', 'mjpeg2jpeg'])
(added '-q:v', '1' to convert the webp to jpg with the least compression)

Cheers. I Will try that, though I've worked with the command-line version up to now. But I'll see how I can incorporate that.

Cheers. I Will try that, though I've worked with the command-line version up to now. But I'll see how I can incorporate that.

Well, you can compile the command-line executable from the source, with the change implemented, or run:
python youtube_dl\__main__.py <arguments> directly from within the source directory (Python must be installed).

Honestly, you are the single-most helpful person I've talked with this whole year so far. Thanks a lot, I will do so!

Thanks a lot, I will do so!

Thanks!
Let me know if you've got better jpg thumbnails now.

I've just tested it and I am afraid it did not produce any notable change. Not sure why. But as mentioned, it's nothing serious. I will one day incorporate another program more dedicated to the task.

I've just tested it and I am afraid it did not produce any notable change. Not sure why. But as mentioned, it's nothing serious. I will one day incorporate another program more dedicated to the task.

Strange, because when I tested it before opening an issue here (with examples), I saw the difference...

I just learned that it has been embedding the highest image all along. This is embarrassing. I don't know how I missed that. Sorry, but thanks for your time. Have a good one.

youtube-dl downloads jpeg thumbnails for some videos and webp for others. The quality loss is only applicable when a webp is downloaded and then converted to jpeg.


Update pkg/image

Includes torch/image#196 (commits)
Should fix https://github.com/NVIDIA/DIGITS/issues/1134
/cc @TimZaman

Thanks Luke!


nothing loads

Describe the bug
nothing loads on the website
Desktop (please complete the following information):
chrome os
chrome
the newest

That was a problem with the host if im not wrong, in fact a few days ago when you wrote directly in the search engine the url of the page took you to a page of a company that buys and sells web domains, so it probably has to do with that. (Sorry if google did a bad translate btw)

I'm having the same problem with chrome os. I cannot load any songs whatsoever.


Clarify the responses that should be given when a request is missing arguments

Dendrite seems to prefer a 400 M_MISSING_ARGUMENTS while Synapse goes for the 500 M_UNKNOWN route. A consistent error would be nice not only amoung the 2 projects, but in the spec as well.
Applies to all APIs, not just c2s.

It is very obviously a bug to return a 500 error in response to missing or unexpected parameters.

As for M_UNKNOWN: I'd love it if the spec could say something like "Servers SHOULD only return M_UNKNOWN when no other error code is appropriate. Clients SHOULD NOT rely on it being returned under any particular set of circumstances."

out of band discussion yielded synapse being buggy in this area. Leaving this open as a general "make it  clearer" thing for the spec.


Re-inserted disk causes VG/LV unavailability

Tried to reproduce manually from host OS with ext4 FS:

Create PV, VG, LV, FS and mount

root@sandy-goop:~# lsblk -o NAME,SERIAL,SIZE,TYPE,MOUNTPOINT NAME SERIAL SIZE TYPE MOUNTPOINT sda VDH0042D 7.3T disk
root@sandy-goop:~# pvcreate /dev/sda
  Physical volume "/dev/sda" successfully created.
root@sandy-goop:~# vgcreate test-vg /dev/sda
  Volume group "test-vg" successfully created
root@sandy-goop:~# lvcreate --yes --name test-lv --size 100G test-vg
  Logical volume "test-lv" created.
root@sandy-goop:~# mkfs.ext4 /dev/test-vg/test-lv
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 26214400 4k blocks and 6553600 inodes
Filesystem UUID: 148604a6-d28a-4507-a791-8e0460f58470
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done   root@sandy-goop:~# mount /dev/test-vg/test-lv /mnt/
root@sandy-goop:~# touch /mnt/myfile.txt
root@sandy-goop:~# echo hello >> /mnt/myfile.txt
root@sandy-goop:~# cat /mnt/myfile.txt
hello

Delete underlying SCSI device and unmount

root@sandy-goop:~# lsscsi | grep sda
[0:0:0:0]    disk    ATA      HGST HUS728T8TAL RT04  /dev/sda
root@sandy-goop:~# echo 1 > /sys/class/scsi_device/0:0:0:0/device/delete
root@sandy-goop:~# lsscsi | grep sda
root@sandy-goop:~# lsblk | grep sda
root@sandy-goop:~# mount | grep test
/dev/mapper/test--vg-test--lv on /mnt type ext4 (rw,relatime,data=ordered)root@sandy-goop:~# mount | grep test
/dev/mapper/test--vg-test--lv on /mnt type ext4 (rw,relatime,data=ordered)
root@sandy-goop:~# ls /dev/mapper/test--vg-test--lv
/dev/mapper/test--vg-test--lv
root@sandy-goop:~# ls /mnt/
lost+found  myfile.txt
root@sandy-goop:~# cat /mnt/myfile.txt
hello
root@sandy-goop:~# sync
root@sandy-goop:~# cat /mnt/myfile.txt
hello
root@sandy-goop:~# umount /mnt
root@sandy-goop:~# mount | grep test

Rescan SCSI bus and try to mount back

root@sandy-goop:~# echo "- - -" > /sys/class/scsi_host/host0/scan
root@sandy-goop:~# lsblk -o NAME,SERIAL,SIZE,TYPE,MOUNTPOINT| grep VDH0042D
sdz                  VDH0042D           7.3T disk
root@sandy-goop:~# mount /dev/test-vg/test-lv /mnt/
mount: /mnt: can't read superblock on /dev/mapper/test--vg-test--lv.
root@sandy-goop:~# ls /mnt/
root@sandy-goop:~#
root@sandy-goop:~# pvscan
  /dev/test-vg/test-lv: read failed after 0 of 4096 at 0: Input/output error
  /dev/test-vg/test-lv: read failed after 0 of 4096 at<PHONE_NUMBER>64: Input/output error
  /dev/test-vg/test-lv: read failed after 0 of 4096 at<PHONE_NUMBER>08: Input/output error
  /dev/test-vg/test-lv: read failed after 0 of 4096 at 4096: Input/output error
  PV /dev/sdy2   VG root-vg         lvm2 [446.65 GiB / <302.65 GiB free]
  PV /dev/sdz    VG test-vg         lvm2 [<7.28 TiB / <7.18 TiB free]
  Total: 2 [7.71 TiB] / in use: 2 [7.71 TiB] / in no VG: 0 [0   ]
root@sandy-goop:~# vgscan
  Reading volume groups from cache.
  Found volume group "root-vg" using metadata type lvm2
  Found volume group "test-vg" using metadata type lvm2
root@sandy-goop:~# lvscan
  ACTIVE            '/dev/root-vg/lv_swap' [976.00 MiB] inherit
  ACTIVE            '/dev/root-vg/lv_root' [47.68 GiB] inherit
  ACTIVE            '/dev/root-vg/lv_var' [<95.37 GiB] inherit
  ACTIVE            '/dev/test-vg/test-lv' [100.00 GiB] inherit
root@sandy-goop:~#

After reboot problem dissapeared:

root@sandy-goop:~# pvscan
  PV /dev/sdy2   VG root-vg         lvm2 [446.65 GiB / <302.65 GiB free]
  PV /dev/sda    VG test-vg         lvm2 [<7.28 TiB / <7.18 TiB free]
  Total: 2 [7.71 TiB] / in use: 2 [7.71 TiB] / in no VG: 0 [0   ]
root@sandy-goop:~# mount /dev/test-vg/test-lv /mnt/
root@sandy-goop:~# ls /mnt/
lost+found  myfile.txt
root@sandy-goop:~# cat /mnt/myfile.txt
hello

The following commands return VG/LVs to the working state:
Inactive VG: vgchange -an <VG name>
Scan Volume group: vgscan
Active VG: vgchange -ay <VG name>


Support code completion

Support code completion in Python code editor.

Which kind of code completion are we aiming for? For instance, the default support in JavaScript is a couple of snippets (such as loop and function definitions). Do we want the same for Python, and more (such as autocompleting variable/function names) or even an IntelliSense level?

Ideally: full featured code completion, but more down to earth e.g. code completion as supported in Jupyter Notebooks. But this feature is low priority. I was just adding this as an issue to keep

CodeMirror: hook

That link points to the docs of the old version of CM. Version 6 has an extra prefix in the URL: https://codemirror.net/6/docs/

I am aware of that link, but I should have mentioned it here myself. I contacted the maintainer of CodeMirror 6 and asked if it were possible to provide some more documentation on how to use the autocompletion-features. I am very grateful to him for providing it swiftly and thoroughly.


How do I set up a condition to exclude certain types of commits from triggering a build?

This is a bug in the documentation because it is not documented!
My scenario is specific to GitHub-hosted projects.
I have set up an Azure DevOps Pipeline that builds and deploys a GitHub-hosted project to an Azure Web App. But the build fires for anything that is checked in to the branch. For example, if I update the readme.md file! I don't want that to happen.
How do I set up exclusion conditions in Azure DevOps?
NOTE: I do not know any YAML. So if you are providing those as instructions, please provide complete information and the actual statements to put in.

@sujayvsarma Thank you for the feedback.
Please refer to the Paths section of Build triggers.
There you'll find both descriptions and YAML examples.

So if I have multiple .md files in different places, I would need to exclude them one by one? (since I as per the documentation, cannot write exclude: *.md).
Also, I don't have a .yaml file. I used the Azure DevOps GUI to create the pipeline -- it builds and deploys to an App Service on Azure. So, where would I make these edits to the .yaml file?

You should be able to reference them all if you refer to a root folder, such as /build/*/*.md.
To use YAML, see Tasks, though the easiest way is to add the .yaml file to your repo and point to it from the Pipelines screen.


Re-enable playground github workflow

The playground workflow suddenly started failing. A likely cause is the underlying ubuntu container for GH actions being updated and causing one of the dependencies to fail.

The Hip New Way to do this kind of thing is to use the WebAssembly component model and jco! If anyone's interested, overhauling the build pipeline to use that could be a good way to go. (Another option is to just fix the current build pipeline in its current form.)

Hey, after merge of https://github.com/calyxir/calyx/pull/1949 , the playground deployment is again running, but has some issues like :

Some examples are not found : eg Minimize regs simple , resource sharing etc .
some passes are not valid : eg component-interface-inserter , resource-sharing

The simple fix would be to check which files for examples are missing / moved and update the config.json file accordingly ; and remove the invalid passes. For a more long-term fix, I'm thinking of a simple node script which will basically do the above automatically, and can be run in CI on each push to validate that the PR does not break anything.
I also thought to maybe generate the config.json file automatically, i.e. a script which will scan the tests dir to find the examples present and generate the file from that, and can be run in the website build command to always have up-to-date examples and passes. But,

There are a lot of tests, and I think adding all of those as example on site would overwhelm the users (especially first time users - like me :p )
I don't have much idea how the default passes can be determined from the file

So, I feel only the validation CI would be good.
Apart from that is there anything this issue needs to address ?
Thanks :)

That validation thing seems like a pretty good idea! It would hopefully be pretty straightforward to check that the list of passes actually exists. And you're right that including all the tests as examples in the playground probably wouldn't make sense—it seems more reasonable to keep these "handpicked," and checking that they actually exist would be lovely.
For the set of passes, it would be possible to parse a list of passes from the output of calyx pass-help. This output is pretty long, however, so I'm not 100% sure how convenient it is to parse? For a default set of passes to surface in the UI, it might make sense to include the compile alias that this output mentions:
- compile: static-inline, merge-assigns, dead-group-removal, simplify-static-guards, add-guard, compile-static-interface, dead-group-removal, compile-static, tdcc


fix(remix-server-runtime): don't use React types

Follow-up of #4801
Not the most ideal thing to do imo, but it fixes #5615 🤷♂
As I mentioned in https://github.com/remix-run/remix/pull/4801#discussion_r1042617554, I added @types/react to dependencies because we're using ComponentType type in packages/remix-server-runtime/routeModules.ts
https://github.com/remix-run/remix/blob/793531210d0ef0635ac076d9aee1d31d3ee82655/packages/remix-server-runtime/routeModules.ts#L40
https://github.com/remix-run/remix/blob/793531210d0ef0635ac076d9aee1d31d3ee82655/packages/remix-server-runtime/routeModules.ts#L45
https://github.com/remix-run/remix/blob/793531210d0ef0635ac076d9aee1d31d3ee82655/packages/remix-server-runtime/routeModules.ts#L218
We should probably move that to @remix-run/react and make @remix-run/server-runtime more renderer-agnostic in that place.
@brophdawg11 thought that would be the case when moving to RR 6.4 (see https://github.com/remix-run/remix/pull/4801#discussion_r1042733354), but apparently that's not the case 😢

Closes #5615

we could even just use any

I would personally go with unknown instead
https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#any

@remix-run/server-runtime would not import anything from @types/react and could eliminate the dependency entirely

👍

@remix-run/react would, but could go back to the original devDependencies/peerDependencies approach?

React is already in peerDependencies of @remix-run/react
https://github.com/remix-run/remix/blob/209ac82ea9b874ceb093a5a86b759560ebbf2d23/packages/remix-react/package.json#L30-L33

What do you want me to do about @types/cookie?
Do I create another PR for adding it back to dependencies, so it fixes #6275?

I would personally go with unknown instead
https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#any

We should use any as otherwise people who use the exported types, will get type errors

We should repoint this to the v2 branch since it's technically a breaking change to the types?

@brophdawg11 making it any is broadening the current type, so not a breaking change imo?
And like @lpsinger says, this fixes a regression as well

@MichaelDeBoey I don't think we should consider more accurate types as "breaking changes". Types get stripped when building and don't affect prod. More accurate types are surfacing potential bugs that were previously invisible.

@pcattori Did you want to tag @brophdawg11?
As I don't think this PR is a breaking change

I think this as it stands would be a breaking type change as ErrorBoundaryComponent/RouteComponent exported from @remix-run/server-runtime are becoming significantly less accurate (and being deprecated at the same time in favor of the ones exported from @remix-run/react).  If someone was using them in their route files it would no longer provide them any type checking unless they changed their imports to pull from @remix-run/react.
import { ErrorBoundaryComponent } from '@remix-run/server-runtime';

export const ErrorBoundary: ErrorBoundaryComponent = () => {
  ...
};

In my eyes, this PR has evolved into the correct way to handle this moving forward in v2 - although we should also stop exporting them from @remix-run/server-runtime in v2 and only export from @remix-run/react.
But to @lpsinger's comment I think we still need a way to fix the regression introduced by #4801.  What was the original issue we were fixing there?  Could we revert that original change for v1 and be in an acceptable spot until v2?

@pcattori Did you want to tag @brophdawg11? As I don't think this PR is a breaking change

Whoops meant to tag both of you 😅 I haven't read through the PR. Just wanted to clearly state that when types change to be more accurate, they aren't "breaking changes", they are bug fixes.

But to @lpsinger's comment I think we still need a way to fix the regression introduced by #4801. What was the original issue we were fixing there? Could we revert that original change for v1 and be in an acceptable spot until v2?

Reverting #6051 ought to fix the regression.

Talked this over with @jacob-ebey and @pcattori and we decided that the loosening of the types in server-runtime is really just a bug fix since that should never have been exporting react-flavored types.  We've included deprecation warnings pointing to the corresponding types in @remix-run/react.

Do I understand correctly based on the labels that this won't be fixed until v2? When will that be?

@lpsinger Nah sorry for the confusion - we're going to get this merged for the next release

Hm, we must have a bug in our bot logic - this is not included in 1.17.1-pre.1 and should land in 1.18.0
https://github.com/remix-run/remix/compare/remix<EMAIL_ADDRESS>

Hm, we must have a bug in our bot logic - this is not included in 1.17.1-pre.1 and should land in 1.18.0
https://github.com/remix-run/remix/compare/remix<EMAIL_ADDRESS>
yeah that’s odd… it gets the commits via git log --pretty=format:%H<EMAIL_ADDRESS>./packages, but seems like github actions got a different list 🤔
indeed not here, but somehow got into the list in ci


Added OPTIONAL support for Precomputed-Joins.

Added capability to match multiple PCJs containing OPTIONALs to sub-queries of a given RYA query.  Enhanced how the AccumuloIndexSet PCJ node evaluates BindingSets and performs joins to accommodate PCJs with OPTIONALs and to make PCJ evaluation more robust and efficient in general.

Looks good.  Only concern I have is with context support, which is kind of out of the scope of this pr.  Going forward, try to include jira numbers in the commit comments.

merged.  can you close the pull request?


Rename all keys & consts from repositorie to repository

Seemed odd not to name it correctly in EN-US format

Hi @thibmaek,
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!

Aside from this seems this add-on is also totally broken, /config has a .git dir but this add-on tries to clone it instead of pulling:

starting version 3.2.2
[Info] cleanup config folder and clone from repositorie
[Error] can't clone https://github.com/thibmaek/homeassistant into /config

Reinstalling add-on doesn't fix it.

It doesn't work in hassio because the /config folder isn't mapped into the add-on container. The config.json  file needs the map key with rw to the config folder:
  "hassio_api": true,
  "map": ["config:rw"],
  "options": {


First Time Push

I am trying to push a first time commit.
I get the message as described above about "current branch does not track....."
I then pressed the PUSH button under Outgoing Commits, but it still fails with the same error.
Any ideas?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

Pushing master
Error: cannot spawn /c/program files (x86)/microsoft visual studio/2017/community/common7/ide/commonextensions/microsoft/teamfoundation/team explorer/Git/mingw32/libexec/git-core/git-askpass.exe: No such file or directory
Error encountered while pushing branch to the remote repository: Git failed with a fatal error.

Hi, when I try to push it tells me to sign in, but when I put my credentials it keeps saying it failed even though the credential is right. This is my first push

nvm, I needed to create a git credential


Prepare Release v1.3.1

🚢

In the future when fixing a release, please document what was wrong with the previous one 🙏 Since the v1.3.1's changelog is just Prepare release, it's really not clear at the moment


Make trailing slash optional

Desired behavior:

Always allow an optional trailing slash
Never add an optional trailing slash when generating links via makePath

I think this behavior is pretty standard.
Today (as of v0.12.9) makePath appends a trailing slash if a trailing slash is optionally allowed.
Food for thought (tangential): It would be nice to support optional trailing slashes automatically without the need to add a /?  to all routes.

For me, the desired behavior would be

Force trailing slash for routes (via redirect), but only for routes with children ("directories")
Always add trailing slash to links to those routes

So I don't think changing the default behavior is the ideal solution. But it would be nice to have some more control over this.

+1

+1

+1

This is really an important issue. However, since the issue hasn’t been resolved, what is the workaround?

+1

+1

Yep, ver annoying issue. Path must be handled with and without trailing slash by default as it is not classic REST router.

@ryanflorence @mjackson will this be addressed/changed in #1158? Does it make sense to implement it on the current code base, or should I rather start based on the code in #1158 ?

@Dignifiedquire This is already fixed in #1158

@mjackson  how to solve this issue now?

its now optional in 1.0

workaround for this in 0.13.2 ?

@kevzettler add /? to the url

workaround for this in 0.13.2 ?

+1

/? is not work in 1.0.0-beta3?

It is not working in Link component. Class "active" is not added in case of trailing slash.
In the method Router#isActive are compared wrong strings:
to === state.path

which in my case of using /? in route's path looks like this:
"/about" === "/about/"

Hi guys! Can't you just redirect every path with trailing slash to the path without it on server (using express for example)?
It completely solved this issue for us.

@th0r yes I ended up with unification of all routes

(On 1.0.0-rc3) This is strange, but when using IndexRedirect, having a trailing slash on the root path caused a problem for me.
If I do this (a slash after admin):
  <Route path='/admin/' component={App}>
    <IndexRedirect to='posts' />

Then if I open a new window and go to localhost:.../admin/ it gets redirected to /admin/posts correctly, BUT if I open a new window and go to localhost:.../admin (without a slash at the end) it gives me an error:
Warning: Location "/admin" did not match any routes

To fix this, I had to remove the trailing slash from the root component:
  <Route path='/admin' component={App}>
    <IndexRedirect to='posts' />

I wanted to write a failing test but couldn't figure out how:
https://github.com/rackt/react-router/blob/c025177a10785f96f7683d4f033f6acdd46c1f2e/modules/__tests__/IndexRedirect-test.js#L20-L31

Just don't specify the trailing slash on path if you want to match the slash-less route - easy enough.

For anyone wondering about how to do this in express:
// remove trailing slashes
app.use(function(req, res, next) {
  if (req.path.length > 1 && /\/$/.test(req.path)) {
    var query = req.url.slice(req.path.length)
    res.redirect(301, req.path.slice(0, -1) + query)
  } else {
    next()
  }
})

any update on this feature?

I found a solution that worked for me
"I added  into the  of my index.html and it worked (:"
Source:
http://stackoverflow.com/questions/28253162/react-router-dynamic-segments-crash-when-accessed

@Frikki: Old, I know, but I saw this somewhere. This will force all routes to end in a slash.
<Redirect from="/*" to="/*/" />
You need to import Redirect from 'react-router'.

+1

I'd love what @cmmartti worked, but it is causing an infinite loop for unknown paths as far as I understand.

I'm using react-router v2 and was able to force trailing slashes using onEnter and onChange hooks. All of my URLs are "directory" style, so I always add a trailing slash. If you need more sophisticated logic, this approach gives you the full power of JS to do so.
The technique relies on the fact that you can wrap all existing <Route>s with a path-less <Route> without affecting your application. By adding hooks to the new top-level route, it catches all changes with no ill-effects.
My <Router>:
<Router history={browserHistory}>
	<Route onEnter={forceTrailingSlash} onChange={forceTrailingSlashOnChange}>
		<Route path="/" component={MainLayout}>
			<IndexRoute component={Dashboard} />
			...other routes
		</Route>
	</Route>
</Router>

forceTrailingSlash checks if the new path has a trailing slash and if not uses replace() to add a trailing slash while preserving all other route data.
function forceTrailingSlash(nextState, replace) {
	const path = nextState.location.pathname;
	if (path.slice(-1) !== '/') {
		replace({
			...nextState.location,
			pathname: path + '/'
		});
	}
}

forceTrailingSlashOnChange simply delegates to forceTrailingSlash, which is necessary because the onChange hook has an extra argument we don't need.
function forceTrailingSlashOnChange(prevState, nextState, replace) {
	forceTrailingSlash(nextState, replace);
}

Is there a solution for optional trailing slashes for v4?

Is there a solution for optional trailing slashes for v4?
(sorry for notification spam - deleted the first comment by accident)

Simple
<Route path='/admin(/)' component={App}>

@pugnascotia From my understanding of the v4 design, the approach I described would still apply with light refactoring:

instead of wrapping your app in a  to track changes, you'd just use a custom component
replace the onEnter and onChange hooks with standard component lifecycle methods componentWillMount and componentWillReceiveProps.

componentWillMount is called on the server as well, and should work for universal apps. I'm not 100% sure these are the best lifecycle methods to replace RR's hooks, but I'm sure a future migration guide will make that clear.
@cristianele That's not a DRY solution for multiple routes. Also, isn't it good practice to support only a single URL for a given page of content? You're making a trailing slash optional for users, but also allowing two equivalent URLs for each route with that treatment.

For those of who are interested in forcing a trailing slash on specific routes:
<Route path="/:id(\d+)" exact strict render={props => <Redirect to={`${props.location.pathname}/`}/>}/>

This is nice if a user goes directly to /123 but your links are like <Link to={item}/> to go to /123/item

Following up on @lewisdiamond's solution (using 4.1.x specifically), I believe enforcing trailing slashes for all routes can be achieved by making the following the first route in your router:
<Route path="/:url*" exact strict render={props => <Redirect to={`${props.location.pathname}/`}/>}/>

/:url* and strict match any number of /urlfragments but this combination does not match the root url or any paths with a trailing slash. The render method issues a redirect that appends a / to the current path as in @lewisdiamond's post.
Sample root component:
  render() {
    return <Provider store={this.props.store}>
        <Router history={this.props.history}>
          <Switch>
            <Route exact strict path="/:url*" render={props => <Redirect to={`${props.location.pathname}/`}/>} />
            <Route exact path="/login" component={Login} />
            <Route exact path="/logout" component={Logout} />
            <Route path="/" component={MarketingSection} />
            <Route path="/Subsection" component={SomeSubsectionComponent} />
            <Route component={FourOhFour} />
          </Switch>
        </Router>
      </Provider>
  }

This change shouldn't require modifying routes anywhere else in an app as long as no routes strictly required no trailing slash (those would now be broken). I was able to drop this redirect into an existing app that was both defined as in the example above and exclusively used slashless internal links. Everything just worked with one exception: At one route in particular, there was some bad url join logic that assumed there'd be no trailing slash in the path and it only worked correctly in that case (meaning that the accessing that route with a trailing slash was broken before my change anyway). Be on the lookout for fun stuff like url.resolve(currentPath + '/', someID).
Note that non-matching routes of the form /some/bad/route are redirected to /some/bad/route/ before displaying the FourOhFour component in the example above. If one were to enforce trailing slashes at a web server level, this is very similar to the behavior you'd see there (web server redirects /some/bad/route to /some/bad/route/ and then passes the request off to your application code which then responds with a 404).

If you got here looking to remove the trailing slash at the end of all URLs in React Router 4, this comment might help you:
https://github.com/ReactTraining/react-router/issues/4841#issuecomment-349096723

@thomasw thanks for your solution! works great for me and allowed me to greatly cleanup my Google analytics page


Unable to install

on my windows phone running windows phone 10 i am unable to install the app. I cant find a tutorial online to find if im doing it right but when i run the appx bundle it asks if i want to install it but when i select yes it doesnt do anythoing

There are 2 ways to install an appxbundle from github, let me share with you this link, which is showing the easier one, especially on a slower device like the Lumia 650: http://allaboutwindowsphone.com/features/item/23922_Installing_Strix_Music_on_your.php
Don't follow Steve's tutorial, but go to Arlo's page and click in "Install" and there will be a 2 line installation instruction for WIndows Phone using the Device Portal functionality. That will work fine... Make sure you have dependencies installed!

This is not an issue with Unicord, if you need support installing it, please join the Discord server and ask there.


Add tests

For now my suggestion would be to have two kinds of tests

unit tests (with some mocks, to not have to load actual BPF programs when running as user)
integration tests with runc/podman, something local and lightweight (requiring root, doing actual BPF operations)

For future we might consider also some E2E tests with Kubernetes.

Unity for C is a really nice and easy to use unit testing library. Not sure if you've used it. If not, here's an example. https://github.com/briandowns/libspinner/blob/master/tests/tests.c

I didn't. I only used https://developer.gnome.org/glib/stable/glib-Testing.html once and had a look at the selftests in the Linux kernel.


The simple exmaple of Google Blogger API #121

In favor of #121

Thanks for contributing, but at the moment I we won't accept this PR as is. Blogger isn't a built-in apps script service and we don't want a proliferation of samples that are all variations on "Call  using UrlFetchApp." That's an unbounded problem space and would be difficult to maintain over the long term. If you think people will find it valuable, I suggest putting the sample in a gist on your own account.
In the future, please file a feature request to propose new samples beforehand as described in the contributing guide. This will save some time for everyone as we can scope out and validate the sample before you spend time writing them.

Yes, I understand.


bower_components folder is not exist!

BundleConfig.cs
                    "~/bower_components/angular/angular.min.js",
                    "~/bower_components/angular-animate/angular-animate.min.js",
                    "~/bower_components/angular-sanitize/angular-sanitize.min.js",
                    "~/bower_components/angular-aria/angular-aria.min.js",
                    "~/bower_components/angular-ui-router/release/angular-ui-router.min.js",

It was in .gitignore file and ignored. Included it.
Thanks.


Error in during installation

Hello,
When I try to install either by downloading from GitHub or composer, I get error
Could not scan for classes inside "/Users/altaf/Sites/laravel-ecommerce/vendor/mage2/category/src/database" which
   does not appear to be a file nor a folder

This error is for all packages in the mage2 folder.
I am using Valet 2.0.4 with php 7.0.20 and nginx 1.10.3
Can you please advice what is the problem here?
Also check the attached screenshot.

Thank you

Hello,
I am having  same issue
@indpurvesh please advice what is the issue?

Same problem here with runtime exceptions. Do we have any stable releases?

Error, install from github and composer
[RuntimeException]
Could not scan for classes inside "modules/mage2/feature/src/database" which does not appear to be a file or a folder

It should be fixed. Thanks to all for your support.

Error was inside composer.json file.
just Update:
"classmap": [
    "database/migrations"
],


Error: Could not locate the bindings file.

Describe the bug
I've just installed vapid via npm, and I can't create a new project. It fails, complaining about not locating the bindings file.
To Reproduce
Steps to reproduce the behavior:

sudo npm install -g vapid
vapid new x (or actually, even just vapid)
See error

Your Environment
Include relevant details, so others can replicate the issue.

OS: OpenBSD 6.4
Node Version: v8.12.0
Vapid Version: ? (latest)

Error
/usr/local/lib/node_modules/@vapid/cli/node_modules/bindings/bindings.js:135
  throw err;
  ^

Error: Could not locate the bindings file. Tried:
 →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS> →<EMAIL_ADDRESS>    at bindings (/usr/local/lib/node_modules/@vapid/cli/node_modules/bindings/bindings.js:126:9)
    at Object.<anonymous> (/usr/local/lib/node_modules/@vapid/cli/node_modules/sharp/lib/constructor.js:10:34)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/local/lib/node_modules/@vapid/cli/node_modules/sharp/lib/index.js:3:15)

@jocap Thanks for submitting this. Here's the command you can use to see which version of Vapid you're running:
vapid -v

Scott, thanks for your reply.  Again, the vapid command doesn't work;
vapid -v results in the same error.
On Tue, Apr 16, 2019 at 06:29:22PM -0700, Scott Robbin wrote:

@jocap Thanks for submitting this. Here's the command you can use to see which version of Vapid you're running:
vapid -v

--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/vapid/vapid/issues/135#issuecomment-483902482

@jocap Maybe try forcefully re-installing/upgrading?
npm install -g @vapid/cli