Trying to find AssociatedDevices on OccupancyGroup instead of Area

I think the concepts of "Area" and "OccupancyGroup" are reversed. From what I'm seeing it's rejecting OccupancyGroups because there are no AssociatedDevice[s] but those are assigned to Area[s].
https://github.com/gurumitts/pylutron-caseta/blob/b6ffcf61dff3d0e2da5181bb714f6a76ec1901ae/pylutron_caseta/smartbridge.py#L526
Sep 14 13:32:42 raspberrypi hass[14890]: 2020-09-14 13:32:42 DEBUG (MainThread) [pylutron_caseta.smartbridge] Loading areas from the Smart Bridge Sep 14 13:32:42 raspberrypi hass[14890]: 2020-09-14 13:32:42 DEBUG (MainThread) [pylutron_caseta.leap] sending b'{"CommuniqueType": "ReadRequest", "Header": {"Url": "/area"}}' Sep 14 13:32:42 raspberrypi hass[14890]: 2020-09-14 13:32:42 DEBUG (MainThread) [pylutron_caseta.leap] received b'{"CommuniqueType":"ReadResponse","Header":{"MessageBodyType":"MultipleAreaDefinition","StatusC ode":"200 OK","Url":"/area"},"Body":{"Areas":[{"href":"/area/1","Name":"root","LoadShedding":{"href":"/area/1/loadshedding"}},{"href":"/area/2","Name":"Dining Room","Parent":{"href":"/area/1"},"Category":{"Ty pe":"DiningRoom"},"AssociatedDevices":[{"href":"/device/2"},{"href":"/device/3"},{"href":"/device/22"},{"href":"/device/24"},{"href":"/device/25"}],"AssociatedOccupancyGroups":[{"href":"/occupancygroup/1"}]," LoadShedding":{"href":"/area/2/loadshedding"},"OccupancySettings":{"href":"/area/2/occupancysettings"},"OccupancySensorSettings":{"href":"/area/2/occupancysensorsettings"},"DaylightingGainSettings":{"href":"/ area/2/daylightinggainsettings"}}, ...
Sep 14 13:32:42 raspberrypi hass[14890]: 2020-09-14 13:32:42 DEBUG (MainThread) [pylutron_caseta.smartbridge] Loading occupancy groups from the Smart Bridge Sep 14 13:32:42 raspberrypi hass[14890]: 2020-09-14 13:32:42 DEBUG (MainThread) [pylutron_caseta.leap] sending b'{"CommuniqueType": "ReadRequest", "Header": {"Url": "/occupancygroup"}}' Sep 14 13:32:42 raspberrypi hass[14890]: 2020-09-14 13:32:42 DEBUG (MainThread) [pylutron_caseta.leap] received b'{"CommuniqueType":"ReadResponse","Header":{"MessageBodyType":"MultipleOccupancyGroupDefinition ","StatusCode":"200 OK","Url":"/occupancygroup"},"Body":{"OccupancyGroups":[{"href":"/occupancygroup/1","AssociatedAreas":[{"Area":{"href":"/area/2"}}],"ProgrammingType":"Freeform","ProgrammingModel":{"href": "/programmingmodel/142"}},{"href":"/occupancygroup/2","AssociatedAreas":[{"Area":{"href":"/area/3"}}],"ProgrammingType":"Freeform","ProgrammingModel":{"href":"/programmingmodel/143"}},{"href":"/occupancygroup /3","AssociatedAreas":[{"Area":{"href":"/area/4"}}],"ProgrammingType":"Freeform","ProgrammingModel":{"href":"/programmingmodel/144"}},{"href":"/occupancygroup/4","AssociatedAreas":[{"Area":{"href":"/area/5"}} ],"ProgrammingType":"Freeform","ProgrammingModel":{"href":"/programmingmodel/145"}},{"href":"/occupancygroup/5","AssociatedAreas":[{"Area":{"href":"/area/6"}}],"ProgrammingType":"Freeform","ProgrammingModel": {"href":"/programmingmodel/146"}},{"href":"/occupancygroup/6","AssociatedAreas":[{"Area":{"href":"/area/7"}}],"ProgrammingType":"Freeform","ProgrammingModel":{"href":"/programmingmodel/157"}},{"href":"/occupa ncygroup/7","AssociatedAreas":[{"Area":{"href":"/area/8"}}],"ProgrammingType":"Freeform","ProgrammingModel":{"href":"/programmingmodel/158"}},{"href":"/occupancygroup/8","AssociatedAreas":[{"Area":{"href":"/a rea/9"}}],"ProgrammingType":"Freeform","ProgrammingModel":{"href":"/programmingmodel/159"}},{"href":"/occupancygroup/9", ... Sep 14 13:32:42 raspberrypi hass[14890]: 2020-09-14 13:32:42 DEBUG (MainThread) [pylutron_caseta.smartbridge] No sensors associated with /occupancygroup/1

I'm not exactly sure what you mean here.  If there are no AssociatedDevices, then that means that there are no devices responding to changes in occupancy state for that occupancy group.  Strictly within the Caseta or RA2 Select system, having such an occupancy group makes no sense.  In the context of Home Assistant, however, it allows you use Lutron Occupancy sensors to control other smart home products (smart bulbs, smart plugs, garage door if you feel like being crayzay, etc.).
However, it should be impossible to add an occupancy/vacancy sensor to a Caseta system without putting it in an area.  As a result, any occupancy group that has at least one sensor must have an associated area.  So a situation where there is no associated area with an occ group that has 1+ sensors represents some kind of system corruption.  That's why the piece of logic you highlighted is there.

Sorry I mixed up two things. I wanted AssociatedDevices to areas loaded in so I can pass them through to HomeAssistant. Didn't realize this was looking for AssociatedSensors which are associated with occupancygroups. I'm doing a local change to pull in AssociatedDevices and closed this out and will send a pull req if it ends up being useful.

What are you doing with associated devices?  Those are just the devices that respond to occupancy state changes in some way.  Home Assistant probably won't care much about that (especially since HA can't really change any of that behavior).
What I'm doing with my HA system is I have 2 occupancy sensors in my bathroom configured in vacancy mode (upon going vacant, the bathroom lights turn off) -- this is handled by Caseta.  With Home Assistant, I have a transition to the 'occupied' state trigger a 'bright' scene between sunrise and 10:30pm, a 'very dim' scene between 10:30pm and 5:30am, and a 'medium dim' scene between 5:30am and sunrise.  That part can't be done purely within Caseta, which is why I added support for occ sensors in the first place.

I'm trying to create groups out of the rooms I make in the lutron app
automatically in homeassistant. I was under the impression that Area
represents effectively a "room" in the Lutron app.
On Mon, Sep 14, 2020 at 10:00 PM Jason Swails<EMAIL_ADDRESS>wrote:

What are you doing with associated devices? Those are just the devices
that respond to occupancy state changes in some way. Home Assistant
probably won't care much about that (especially since HA can't really
change any of that behavior).
What I'm doing with my HA system is I have 2 occupancy sensors in my
bathroom configured in vacancy mode (upon going vacant, the bathroom lights
turn off) -- this is handled by Caseta. With Home Assistant, I have a
transition to the 'occupied' state trigger a 'bright' scene between sunrise
and 10:30pm, a 'very dim' scene between 10:30pm and 5:30am, and a 'medium
dim' scene between 5:30am and sunrise. That part can't be done purely
within Caseta, which is why I added support for occ sensors in the first
place.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/gurumitts/pylutron-caseta/issues/57#issuecomment-692415020,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACGIKP6MHF2XM6OMQH7Z6LSF3DDNANCNFSM4RLUROCQ
.


ad plays in background while content is paused full-screen on iPhone

Going fullscreen while the ad is playing doesnt behave as expected.
The ad plays in the background but the fullscreen player show the video content paused.
steps to reproduce:

visit this url (on iPhone)
Press play and click on fullscreen button while the ad is playing.

package.json dependencies:
"videojs-ima": "^1.4.0",
"video.js": "^6.6.0",

I don't have an iPhone here to test with but this sounds like the issue where the default player intercepts inline videos. Try placing playsinline=1 webkit-playsinline=1 as parameters on the <source src= line in your <video element definition as follows:
<video id="my-video (other settings)
You may need to make sure you only use these parameters for iPhones since I've noticed them causing problems in other environments, especially in Firefox.
D

@dilburt I applied your settings .. but still having the issue. This happens on iOS devices. Looks like the default player uses our videojs stream in full screen .. and thus does not use the ima-sdk container's view.

We had to set google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); in our player implementation to support skippable ads on iphone - a requirement from our Advertisers, business stakeholders and for the audiences on our sites (UX).
Apparently that change causes ad playback to break when users click the full-screen button on mobile - which leads to a really horrible experience, and clearly this is a known issue, as I see it noted in the Google IMA SDK docs:
https://developers.google.com/interactive-media-ads/docs/sdks/html5/skippable-ads
Do you have an ETA for this fix, so we can support skippable ads AND the full-screen button during ad playback (a requirement for Innovid certification and our sponsors)?

Hi all,
In regards to setting up a player using IMA, there is not a single set-up for every possible playback scenario. Please refer to this Custom Playback APIs for IMA HTML5 and Mobile Safari guide for more information.
Also, feel free to reach out here if you continue to have issues.


Can't see the content of my container

Issue Type: Bug
Dear Sir/Madam,
I have openend the container remotely as my MIT FULL STACK development tutorial showed me but my version doesn't show me the contents of the container as in the folders and code files.
Best Regards,
Leul Shiferaw
VS Code version: Code 1.66.2 (dfd34e8260c270da74b5c2d86d61aee4b6d56977, 2022-04-11T07:46:01.075Z)
OS version: Windows_NT x64 10.0.22000
Restricted Mode: No
Remote OS version: Linux x64 <IP_ADDRESS>-microsoft-standard-WSL2

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz (12 x 2592)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: enabledopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
15.88GB (3.44GB free)

Process Argv
--crash-reporter-id b900afe8-3817-406a-8472-8b37e4bf01d0

Screen Reader
no

VM
0%

Item
Value

Remote
Container express01:latest (happy_ptolemy)

OS
Linux x64 <IP_ADDRESS>-microsoft-standard-WSL2

CPUs
Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz (12 x 2592)

Memory (System)
7.71GB (4.96GB free)

VM
0%

Extensions (4)

Extension
Author (truncated)
Version

remote-containers
ms-
0.234.0

remote-wsl
ms-
0.66.2

material-icon-theme
PKi
4.16.0

vim
vsc
1.22.2

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
pythonvspyl392:30443607
pythontb:30283811
pythonptprofiler:30281270
vshan820:30294714
vstes263cf:30335440
vscorecescf:30445987
pythondataviewer:30285071
vscod805:30301674
pythonvspyt200:30340761
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
vsaa593:30376534
vsc1dst:30438360
pythonvs932:30410667
wslgetstarted:30449410
pythonvsnew555:30457759
vscscmwlcmt:30465135
cppdebugcf:30475217

Hey @chrmarti, this issue might need further attention.
@LeulShiferaw, you can help us out by closing this issue if the problem no longer exists, or adding more information.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


BSAPI-7: Creating a 5 star scale rating for a book with a timestamp

Feature Overview
Summary
Provide a way to rate a book out of 5 stars, including a timestamp.
Rationale

Motivation: Users will want to rate books they've read on a 5 star scale.
Functionality: By getting the the user and book ID, along with the number of stars, the user will be able to leave a rating on any book.
Impact: Will impact the ratings and books tables, and perhaps other services that utilize book data.

Acceptance Criteria

POST /ratings/books
Paramaters sent: Rating, User Id, Book Id
Successful response: New rating is

Please re-commit this code with spotlessApply applied to it. so you can pass the spotlessCheck that we have.


Fix/26470: Input focus is not working while coming from ws

Details

Input focus is not working properly while coming from directly from WS
Fixed Issues

$ https://github.com/Expensify/App/issues/26470
PROPOSAL: https://github.com/Expensify/App/issues/26470#issuecomment-1707723170
Tests

go to any chat
send some messages
observe focus is working fine
no go to any workspace(create if not have -(Profile setting->workspace))
then select three dots which is top most right
go to #announce
write some text
observe the focus

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

Offline tests

QA Steps

go to any chat
send some messages
observe focus is working fine
no go to any workspace(create if not have -(Profile setting->workspace))
then select three dots which is top most right
go to #announce
write some text
observe the focus

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

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 the expected offline behavior in the Offline steps 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 tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

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

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[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 the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[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 is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review 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] I verified that if a function's arguments changed that all usages have also been updated correctly
[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] 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] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[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 broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[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 code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[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.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Screencast from 12-09-2023 14:47:09.webm

Mobile Web - Chrome

https://github.com/Expensify/App/assets/141406735/7f089139-88c4-47ce-a79e-b98e2742a8bb

Mobile Web - Safari

https://github.com/Expensify/App/assets/141406735/d68d6c93-011d-47be-9bbf-7bc55a3ab020

Desktop
https://github.com/Expensify/App/assets/141406735/454dc6ca-3d30-4e4b-b08f-791342a78dc0

iOS
https://github.com/Expensify/App/assets/141406735/42783961-df71-4c77-8172-7720c906ae64

Android
https://github.com/Expensify/App/assets/141406735/01a09fa1-0eb1-4f8a-8a75-a80713cce156

@sobitneupane Please help review this PR

While testing I found some unusual behavior in small screen device, the composer text input focuses sometime and mostly it doesn't focus. It doesn't look related to this PR.

Currently, We are using this condition to check if we auto focus on composer or not:
https://github.com/Expensify/App/blob/1e33428d3dcb968f501c3d5309b95898fb5bdb8c/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js#L114

With the mobile device, the shouldAutoFocus is just true if the report is empty

Bump @sobitneupane

@Beamanator Please help check this PR

@Beamanator Is it expected to autofocus empty chats (in this case #admins and #announce) in small screen device?

@sobitneupane FYI https://github.com/Expensify/App/blob/1e33428d3dcb968f501c3d5309b95898fb5bdb8c/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js#L427-L429

@DylanDylann In that case, we should not open keyboard on native platforms even after the modal closes. Let's handle the issue.

@DylanDylann In that case, we should not open keyboard on native platforms even after the modal closes. Let's handle the issue.

Which case? Please give me more detail

// We want to focus or refocus the input when a modal has been closed or the underlying screen is refocused.
// We avoid doing this on native platforms since the software keyboard popping
// open creates a jarring and broken UX.

We want to avoid focusing the input when a modal has been closed in native platforms but if you go through the attached screen recordings, you can notice that we are focusing input on native as well which is not expected according to above comment.

// We want to focus or refocus the input when a modal has been closed or the underlying screen is refocused.
// We avoid doing this on native platforms since the software keyboard popping
// open creates a jarring and broken UX.

We want to avoid focusing the input when a modal has been closed in native platforms but if you go through the attached screen recordings, you can notice that we are focusing input on native as well which is not expected according to the above comment.

So you mean that in the native device, we will avoid the composer focusing when the modal is closed regardless the report is empty or not, right?

Do we focus empty chats when user navigate to it from LHN in native platforms? If yes, I believe it should focus. Else, it shouldn't. I am not sure what is the expected behavior. So, waiting for confirmation from @Beamanator on this.

Do we focus empty chats when user navigate to it from LHN in native platforms? If yes, I believe it should focus. Else, it shouldn't. I am not sure what is the expected behavior. So, waiting for confirmation from @Beamanator on this.

@Beamanator please help confirm

@Beamanator  bump

shit, sorry for the delay - will review today 🙏

Looks like the main question is:

@Beamanator Is it expected to autofocus empty chats (in this case #admins and #announce) in small screen device?

Good question, let's go with what we have today - on my iOS device any time I open a chat report (#admins, #announce, group chat, 1:1, room, etc) I DO NOT see autofocusing chats, so I think we should not autofocus empty chats either, yeah?
I do see when you START a brand new chat, we auto-focus the input on iOS, but opening empty #admins / #announce rooms does NOT auto-focus inputs

@Beamanator @sobitneupane Currently, this issue is fixed by https://github.com/Expensify/App/pull/27317. With this fixhttps://github.com/Expensify/App/pull/27317, modal.isVisible is also set to false before go to #admin/#announce report

BUMP @Beamanator

@DylanDylann Let's merge it with main and retest to see if we get the expected output.

@DylanDylann ~Let's merge it with main and retest to see if we get the expected output.~
Oh I see. So, this PR won't be required any longer, right?

yeb

@Beamanator BUMP

@DylanDylann please add more in your messages than BUMP - what exactly do you want me to look at? @sobitneupane already responded to your tags, what do you think is next? Please help push this along without just saying "BUMP @Beamanator". I'd recommend you try to understand that this PR is a very small change to a very niche flow that is not nearly as high priority as other things going on in this company. I'm not purposefully ignoring your bumps, I'm working hard on other tasks that I believe are higher priority, so I get back to this when I can. This is all I'm going to say about this matter, but feel free to reach out if you have questions / concerns.
@sobitneupane are we planning to close this PR?

I'll verify whether the problem has been resolved in the main branch, and if it is, we can proceed to close this pull request.

please add more in your messages than BUMP - what exactly do you want me to look at? @sobitneupane already responded to your tags, what do you think is next? Please help push this along without just saying "BUMP @Beamanator". I'd recommend you try to understand that this PR is a very small change to a very niche flow that is not nearly as high priority as other things going on in this company. I'm not purposefully ignoring your bumps, I'm working hard on other tasks that I believe are higher priority, so I get back to this when I can. This is all I'm going to say about this matter, but feel free to reach out if you have questions / concerns.

Thanks for your remainder, I noted that

Keyboard doesn't open in android when we access #admins or #announce room through the workspace. It is quite different issue. So, I think we can close this PR.
Screenshots/Videos

Web
https://github.com/Expensify/App/assets/25876548/cbc8fe28-e8df-4607-9e5c-a39880736fb9

Mobile Web - Chrome
https://github.com/Expensify/App/assets/25876548/5e49eb06-08b0-452d-a0b5-00c95beda631

Mobile Web - Safari

https://github.com/Expensify/App/assets/25876548/b8a593f1-772a-4943-bb25-19d2ee2df795

iOS
https://github.com/Expensify/App/assets/25876548/1dee3e3f-9a1a-4971-bbab-df6be1a22126

Android

https://github.com/Expensify/App/assets/25876548/c531ec99-73aa-4bdc-8df2-16c73218e73c

@sobitneupane Can I close this PR?

Yes @DylanDylann. You can close the PR.


x/build: linux-amd64-longtest timeouts

According to dashboard linux-amd64-longtest was having timeouts starting from 28 May 17:08 until 29 May 17:45. Log say that timeout was 3 minutes.
We should consider raising the timeout limit because testing of cmd/go takes at least 3 minutes.

Timeouts all over the dashboard. I guess it was not deployed yet...


Convert image plane metadata

@ieivanov raised the need of converting all image plane metadata, which will be useful for the mantis project.
In a previous meeting we agreed that the easiest, fastest, and most robust way to preserve MM image plane metadata during conversion is to toggle on the option to store them as a separate TXT file in MM. However this may not be accessible from pycromanager. @ieivanov is this the reason why need such a feature? If so I propose that we only implement this for ND-TIFF, and write an output TXT file similar to what MM MDA would produce.

The motivation here is to be able to convert all of our tif datasets - ome.tif or ndtiff, to zarr for downstream processing and long-term storage. Ideally we'd be able to delete the original tif datasets after conversion to avoid data duplication. For that, we need to be 100% sure that we transfer all data and metadata.

@ziw-liu @ieivanov we will not be able to delete TIFF files across all projects, particularly ones where Fiji/ImgaeJ are still tools of choice of the users.
Let's focus on capturing metadata for the mantis project, i.e., NDTIFF format. @ieivanov,
Does the NDTIFF python reader provide a metadata object that you can query during conversion?
Next question would be: what is a useful format for metadata that doesn't create many small files in one folder (here I am keeping in mind rsync efficiency)? Two ideas:

Add a custom field in .zattrs, say acq-meta-<tczyx>.
Dump metadata in machine parsable text files, and store them in singe tar.gz with the zarr store.

Yes, let's discuss today if we have enough time. The ndtiff reader does provide handles to all metadata. We should figure out how to store it efficiently.
MM does a bit of a word vomit when it comes to metadata. Most of these value don't change across the acquisition. We can figure out a way to store constant value and those that change only across certain dimensions of the data - e.g. z position during a z stack, channel params when imaging different channels, or elapsed time, which changes for every image.

I will try dumping all the image plane metadata into a single JSON blob in the top level of the output Zarr store.


feat(ts-sdk): detect & configure package manager

Following up on https://github.com/dagger/dagger/pull/7852, this PR uses the packageManager field of the package.json to use the correct package manager.
If not, it detect the used lockfile.
This PR also includes a change to generate a lockfile (yarn v1 by default) but it can also generate a lockfile for pnpm or npm with the right version.
⚠ It seems yarn v4, and specially corepack  with yarn v4 isn't working well with Dagger, I'm writing tests for everything except yarn v4 and may handle this later.
Example
{
  "packageManager"<EMAIL_ADDRESS>// or<EMAIL_ADDRESS>or<EMAIL_ADDRESS>}

Closes https://github.com/dagger/dagger/issues/7851

⚠ It seems yarn v4, and specially corepack with yarn v4 isn't working well with Dagger, I'm writing tests for everything except yarn v4 and may handle this later.

What issue are you running into with yarn v4?
A potential issue that you will probably run into is that since the users module has a @dagger.io/dagger in dependencies, it will install them as well when yarn install (for example) is run.

What issue are you running into with yarn v4?
A potential issue that you will probably run into is that since the users module has a @dagger.io/dagger in dependencies, it will install them as well when yarn install (for example) is run.

It doesn't resolve dependencies correctly and output that there's no type Container in the basic quickstart example.
I'm super confused about that and think it might be because of the worspace logic? Since it's not included in the package.json?

It doesn't resolve dependencies correctly and output that there's no type Container in the basic quickstart example.
I'm super confused about that and think it might be because of the worspace logic? Since it's not included in the package.json?

One of the issues is due to the fact that that you aren't using the node_modules linker.  To enable that you would need a .yarnrc file with
nodeLinker: node-modules

Since the users module isn't using 'pnp', it will just check in the node_modules folder.
The 'workspace logic' should only really affect the case where you try to do a yarn install inside of the sdk directory from the users module.
(By 'users module', I'm referring to the 'dagger' folder and not the 'sdk' folder)

One of the issues is due to the fact that that you aren't using the node_modules linker. To enable that you would need a .yarnrc file with

Okay, I'll take care of that in a follow up PR then, supporting yarn v4 is something different thant the package manager configuration

Update: on test failing left: TestTypescriptWithOtherModuleTypes
My guess is that by resolving the modules differently, it fails to provide the corresponding symbol of the dependencies, I'm trying to find a way to make it work.

Ok the bug should be fixed! There was an issue with the alias resolution.

Okay, I'll take care of that in a follow up PR then, supporting yarn v4 is something different thant the package manager configuration

It's not really a yarn-v4 thing.  When install (for any package manager) is run, it will install the dependencies for the sdk as well since its listed as a dependency.  Since the 'user' module doesn't have access to the lock file, these intermediate dependencies will also change.
The fact that the sdk is using the pnp linker also means that the dependencies will never match, regardless of which package manager is used

It's not really a yarn-v4 thing. When install (for any package manager) is run, it will install the dependencies for the sdk as well since its listed as a dependency. Since the 'user' module doesn't have access to the lock file, these intermediate dependencies will also change.

The fact that the sdk is using the pnp linker also means that the dependencies will never match, regardless of which package manager is used

That's strange it's only failing with yarn v4 then? Other package manager works fine

That's strange it's only failing with yarn v4 then? Other package manager works fine

So pnpm isolates its dependencies, so that may not be an issue, but I'm pretty sure that npm does.  It may still work, but its not going to pick up the yarn.lock and apply them, so there is still the potential (depending on your version ranges in the sdk) that it will get run with different versions.

So pnpm isolates its dependencies, so that may not be an issue, but I'm pretty sure that npm does. It may still work, but its not going to pick up the yarn.lock and apply them, so there is still the potential (depending on your version ranges in the sdk) that it will get run with different versions.

If you set up npm, it will generate & pick up the package-lock.json file, for yarn the yarn.lock etc...
However, it seems the fix I made on this PR also fixes the issue with yarn v4, it seems the compiler API does not resolve the symbols the same way depending of the package manager, that's pretty funny.

I know it will pick up the other lock file if it's at the root. Wasn't sure if it was going to pick it up from another folder.
Yarn patches typescript I believe. Although I never looked into what it actually changed

Yarn patches typescript I believe. Although I never looked into what it actually changed

Yeah, that's quite strange... but at least this PR will improve the DX :D

@helderco I did some improvement in the PR to improve the code readability and steps.
I now store module related config in moduleConfig so it's easier to reuse everywhere.
For the installSDK, I would prefer doing that in another follow up PR as I explained in my comment.

@helderco I need to ignore node_modulesbefore merging the PR, otherwise it makes the TS SDK much slower

@helderco I finally found a way, it makes the SDK a bit faster, I like it a lot!
I'll also try to remove the duplication of install, we might not need it anymore.

I just want to level-set on some issues with the current dagger 0.12.2 and this proposed PR:

You must assume there's a package.json at the top-level directory (above the dagger/ folder)
This package.json should/may have a packageManager field -- if this is provided, you must use this package manager or the install  breaks
You have to ensure that the lockfile is NOT updated as part of this process.  That means you will likely need to run one of the following (from antifu ni):

# npm ci
# yarn install --frozen-lockfile (Yarn 1)
# yarn install --immutable (Yarn Berry)
# pnpm install --frozen-lockfile
# bun install --frozen-lockfile

For example, I removed the packageManager field and executed the following:
    return (
      dag
        .container()
        .from('node:18-slim')
        .withExec(['corepack', 'enable'])
        .withExec(['corepack', 'prepare', 'yarn@latest', '--activate'])
        .withDirectory('/src', source)
        .withWorkdir('/src')
        .withExec(['yarn', 'install', '--immutable'])
        .stdout()
    )

This failed with:
    ┃ ➤ YN0028: │ The lockfile would have been modified by this install, which is explicitly forbidden.
    ┃ ➤ YN0000: └ Completed in 0s 264ms
    ┃ ➤ YN0000: · Failed with errors in 1s 589ms
  ✘ Container.stdout: String! 2m47.3s
  ! process "yarn install --immutable" did not complete successfully: exit code: 1

Error: response from query: input: internalApps.build resolve: call function "build": process "tsx --no-deprecation --tsconfig /src/dagger/tsconfig.json /src/dagger/src/__dagger.entrypoint.ts" did not complete successfully: exit code: 1

Stderr:
Error: resolve: process "yarn install --immutable" did not complete successfully: exit code: 1

Thanks for your feedbacks!

You must assume there's a package.json at the top-level directory (above the dagger/ folder)

The module init creates a package.json and it's pretty much required to get everything working, if there's no package.json, the SDK will provide one during the installation.

This package.json should/may have a packageManager field -- if this is provided, you must use this package manager or the install breaks

Yes, if there's not packageManager field, it's going to use<EMAIL_ADDRESS>
You have to ensure that the lockfile is NOT updated as part of this process. That means you will likely need to run one of the following (from antifu ni):

Hmmm why is that required? I'm not sure this will be possible because it depends of which version of your package manager you use.
In your example your using yarn latest, so probably v4.xxx but if you made your setup with v1, the lockfile is completely different.
I can add this --immutable field but I'm not sure it will fix the issue thought, it might create more actually

Hmmm why is that required? I'm not sure this will be possible because it depends of which version of your package manager you use.

Because we're going to be using this in our CI/CD pipeline, and that's the best practice.  What I'm including above (.withExec(['yarn', 'install', '--immutable']) will be how many projects will want to use dagger.

Yes, if there's not packageManager field, it's going to use<EMAIL_ADDRESS>
My 2c -- use npm and avoid the yarn version nonsense.  I don't quite understand how this works yet, but if you run yarn v1 in the top level folder, this will probably definitely conflict with the v4 lock file.
It might be worth considering using nodenv and a separate node process for the SDK.  That way you fix the node version/package manager the SDK requires independently of the target node requirements

Because we're going to be using this in our CI/CD pipeline, and that's the best practice. What I'm including above (.withExec(['yarn', 'install', '--immutable']) will be how many projects will want to use dagger.

But that means you'll  need to use the same yarn version as the runtime, so you need to configure your packageManager to be consistent. Which is not what you're doing in your snippet.
Could you try the same code but with the same yarn version?

My 2c -- use npm and avoid the yarn version nonsense. I don't quite understand how this works yet, but if you run yarn v1 in the top level folder, this will probably definitely conflict with the v4 lock file.

Yes but npm is much slower, I could use pnpm but it's not adopted by everyone so I'm not sure what's the right decision.
@helderco any thought on this one?

But that means you'll need to use the same yarn version as the runtime, so you need to configure your packageManager to be consistent. Which is not what you're doing in your snippet.

Sorry, my snippet was illustrating the problem.  Remember, I have this in my package.json:
  "packageManager"<EMAIL_ADDRESS>
But, even using 4.1.1, I get:
Container.withExec(args: ["corepack", "prepare"<EMAIL_ADDRESS>"--activate"]): Container! 1.7s
...
    ┃ ➤ YN0028: │ The lockfile would have been modified by this install, which is explicitly forbidden.
    ┃ ➤ YN0000: └ Completed in 0s 278ms
    ┃ ➤ YN0000: · Failed with errors in 1s 552ms
  ✘ Container.stdout: String! 2m44.7s
  ! process "yarn install --immutable" did not complete successfully: exit code: 1

so the error still occurs.  I think this is due to the SDK's yarn install (v1 will modify the lock file), and then my yarn install --immutable will fail due to this

Yes but npm is much slower, I could use pnpm but it's not adopted by everyone so I'm not sure what's the right decision.

Yeah, I know -- I'm a huge pnpm fan, but our company uses yarn.  but, npm is the default, so it might be the best choice  -- speed means nothing with the other issues it introduces

Found a new issue by not installing the SDK node_modules in the runtime, it seems the subpackage that sdk depends on are not added to the lockfile, I don't understand why thought but they are required to make it work.
I'm trying to find a way.

Does the sdk get installed separately from the module?  That could be causing these issues since the dependencies would potentially change when the module is added.
Also since there isn't a .yarnrc.yml file in the sdk, it will use PnP instead of the node modules linker which would cause other issues.

Also since there isn't a .yarnrc.yml file in the sdk, it will use PnP instead of the node modules linker which would cause other issues.

Yes, I'm currently trying to change the node linker but it's the same problem with yarn v4

The sdk needs to be treated like any other npm dependency

Yes but the same issue is that it's a local dependencies, so the dependencies of this deps needs to be installed at the root node_modules.
I found a fix with pnpm, it works with yarn v1 & npm but not with yarn v4, I'm trying to see if I can fix that with a workspaces or something

I added a commit with theses changes, it works locally, I'm currently checking if it passes on the CI

Only 1 test failing, I can reproduce locally with dagger call but not with a manual test, this is weird
https://dagger.cloud/dagger/traces/9144e633456d21a1f0ab7ce11bb0a7cd?span=a29638ceb3992471#a49f16c55743f48b

Ok I normally fixed the tests, it seems it was related to the typescript version installed with that specific bun version, I fixed it by adding the deps to the package.json

Ci is green, ready for a last review before we merge :D

Hey, can somebody show me how to test this locally before it's merged?  I have pulled his branch down, I'm confused about how I can reference it

Hey, can somebody show me how to test this locally before it's merged? I have pulled his branch down, I'm confused about how I can reference it

Hey sure, you can go to the branch then follow these steps:
# From the root of the dagger repo
./hack/dev

# Go to your project and put this in your .envrc
DAGGER_SRC_ROOT=<path to the dagger repro>/dagger/dagger
export _EXPERIMENTAL_DAGGER_CLI_BIN=$DAGGER_SRC_ROOT/bin/dagger
export _EXPERIMENTAL_DAGGER_RUNNER_HOST=docker-container://dagger-engine.dev
export PATH=$DAGGER_SRC_ROOT/bin:$PATH

# Verify your CLI with dagger version
dagger version
dagger dev-66331ea9a8772a0d0fced5cbceb6e4f26f454b2c (registry.dagger.io/engine) darwin/arm64

# And verify your dev engine is up
docker ps
e7faf74a16df   localhost/dagger-engine.dev:latest   "dagger-entrypoint.s…"   18 hours ago   Up 18 hours             dagger-engine.dev

# Now you can use dagger with the branch version.

OK, I think this is looking better, but I need help identifying if this is a local test issue or something more:
✔ connect 0.2s
✔ moduleSource(refString: "."): ModuleSource! 0.0s
✔ ModuleSource.kind: ModuleSourceKind! 0.0s
✔ ModuleSource.resolveContextPathFromCaller: String! 0.0s
✔ ModuleSource.withName(name: "internal-apps"): ModuleSource! 0.0s
✔ ModuleSource.withSDK(sdk: "typescript"): ModuleSource! 0.0s
✔ ModuleSource.withSourceSubpath(path: "."): ModuleSource! 0.0s
✔ ModuleSource.resolveFromCaller: ModuleSource! 1m7.5s
✘ ModuleSource.asModule(engineVersion: "latest"): Module! 2m43.6s
! failed to create module: select: failed to update codegen and runtime: failed to generate code: failed to call sdk module codegen: select: call function "Codegen": process "/runtime" did not complete successfully: exit code: 2
Error: failed to generate code: input: moduleSource.withContextDirectory.withName.withSDK.withSourceSubpath.asModule resolve: failed to create module: select: failed to update codegen and runtime: failed to generate code: failed to call sdk module codegen: select: call function "Codegen": process "/runtime" did not complete successfully: exit code: 2

Stdout:
marshal: json: error calling MarshalJSON for type *dagger.GeneratedCode: input: container.from.withoutEntrypoint.withExec.withEnvVariable.withMountedCache.withMountedCache.withMountedCache.withExec.withMountedDirectory.withMountedDirectory.withWorkdir.withExec.withExec.withDirectory.withDirectory.withExec.withExec.withExec.withExec.file resolve: process "corepack use<EMAIL_ADDRESS>did not complete successfully: exit code: 1

Stdout:
Installing<EMAIL_ADDRESS>in the project...

➤ YN0000: · Yarn 4.1.1
➤ YN0000: ┌ Resolution step
➤ YN0085: │ + @dagger.io/dagger@file:./sdk#./sdk::hash=06fb56&locator=internal-apps%40workspace%3A.
➤ YN0085: │ - @dagger.io/dagger@file:./sdk#./sdk::hash=e3430a&locator=dagger-bc5392%40workspace%3Adagger, dagger-bc5392@workspace:dagger
➤ YN0000: └ Completed in 0s 765ms
➤ YN0000: ┌ Post-resolution validation
➤ YN0002: │ @repo/pinnacle-layers@workspace:packages/pinnacle-layer doesn't provide eslint (p5fa97), requested by @typescript-eslint/parser.
➤ YN0002: │ skills@workspace:apps/skills doesn't provide esbuild (p15d2f), requested by serverless-esbuild.
➤ YN0086: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code.
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0066: │ typescript@patch:typescript@npm%3A5.5.2#optional!builtin<compat/typescript>::version=5.5.2&hash=5adc0c: Cannot apply hunk #1
➤ YN0066: │ typescript@patch:typescript@npm%3A5.5.3#optional!builtin<compat/typescript>::version=5.5.3&hash=5adc0c: Cannot apply hunk #1
➤ YN0013: │ 2605 packages were added to the project (+ 1.02 GiB).
➤ YN0000: └ Completed in 24s 233ms
➤ YN0000: ┌ Link step
➤ YN0005: │ vue-material@npm:1.0.0 lists build scripts, but its build has been explicitly disabled through configuration.
➤ YN0007: │ protobufjs@npm:7.3.2 must be built because it never has been before or the last one failed
➤ YN0007: │ svelte-preprocess@npm:5.1.4 [2e35e] must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.21.5 must be built because it never has been before or the last one failed
➤ YN0007: │ aws-sdk@npm:2.1646.0 must be built because it never has been before or the last one failed
➤ YN0007: │ sqlite3@npm:5.1.7 [20c11] must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.19.2 must be built because it never has been before or the last one failed
➤ YN0007: │ es5-ext@npm:0.10.64 must be built because it never has been before or the last one failed
➤ YN0007: │ @sentry/cli@npm:2.32.1 must be built because it never has been before or the last one failed
➤ YN0007: │ better-sqlite3@npm:8.7.0 must be built because it never has been before or the last one failed
➤ YN0007: │ core-js@npm:3.37.1 must be built because it never has been before or the last one failed
➤ YN0007: │ vue-demi@npm:0.14.5 [d85ca] must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.17.19 must be built because it never has been before or the last one failed
➤ YN0007: │ yorkie@npm:2.0.0 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/fontawesome-common-types@npm:6.5.2 must be built because it never has been before or the last one failed
➤ YN0007: │ cypress@npm:13.12.0 must be built because it never has been before or the last one failed
➤ YN0007: │ vue-demi@npm:0.14.5 [499a1] must be built because it never has been before or the last one failed
➤ YN0007: │ vue-demi@npm:0.14.5 [90d6b] must be built because it never has been before or the last one failed
➤ YN0007: │ @sveltejs/kit@npm:2.5.17 [13444] must be built because it never has been before or the last one failed
➤ YN0007: │ serverless@npm:3.39.0 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/fontawesome-svg-core@npm:6.5.2 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/free-solid-svg-icons@npm:6.5.2 must be built because it never has been before or the last one failed
➤ YN0009: │ @sveltejs/kit@npm:2.5.17 [13444] couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-16527659/build.log)
➤ YN0000: └ Completed in 40s 119ms
➤ YN0000: · Failed with errors in 1m 6s

internal-apps  dagger @ 4c5430a ⩮✘∽+ 3m52s ❄ devenv-shell-env❯ dagger version
dagger dev-fb9b6428d0f4be165359994e87fc0e8b15326811 (registry.dagger.io/engine) linux/amd64

internal-apps  dagger @ 4c5430a ⩮✘∽+ ❄ devenv-shell-env❯ cat .yarnrc.yml
enableMirror: true

nodeLinker: pnpm

pnpMode: loose

globalFolder: ./.yarn/berry

OK, I think this is looking better, but I need help identifying if this is a local test issue or something more:

Hey, I think that's strange corepack use failed, doesn't seem related ot the runtime itself but maybe I do something wrong during the setup, could you try in a simple node image to see if it works?
Try with  node:lts if you can please
Also I think the nodeLinker will need to be set to node_modules to work with the SDK, but let's first identify the corepack issue.

Try with node:lts if you can please

Not sure how to do that, given Im' doing dagger init --sdk=typescript.  How would I specify this?

Also I think the nodeLinker will need to be set to node_modules to work with the SDK, but let's first identify the corepack issue.

I hope not -- I've migrated away from that for cache reasons.  By including globalFolder: **./.yarn/berry**, that brings the cache inside the container to allow the linking to work (I hope)

Not sure how to do that, given Im' doing dagger init --sdk=typescript. How would I specify this?

I meant, add your project to a docker container and try corepack use, just to test
docker run -it -v $PWD:. node:lts /bin/sh

corepack use<EMAIL_ADDRESS>
Does it fails?

jeez, sorry, I should have thought of that.  However, works fine:
internal-apps  dagger @ 4c5430a ⩮✘∽+ ❄ devenv-shell-env❯ docker run -it -v $PWD:/src node:lts /bin/bash
root@7d451bb044f6:/# cd /src
root@7d451bb044f6:/src# corepack enable
root@7d451bb044f6:/src# corepack use<EMAIL_ADDRESS>Installing<EMAIL_ADDRESS>in the project...

➤ YN0065: Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry
➤ YN0065: Run yarn config set --home enableTelemetry 0 to disable

➤ YN0000: · Yarn 4.1.1
➤ YN0000: ┌ Resolution step
➤ YN0085: │ - @dagger.io/dagger@file:./sdk#./sdk::hash=e3430a&locator=dagger-bc5392%40workspace%3Adagger, @graphql-typed-document-node/core@npm:3.2.0, @grpc/grpc-js@npm:1.11.1, @grpc/proto-loader@npm:0.7.13, @isaacs/fs-minipass@npm:4.0.1, @js-sdsl/ordered-map@npm:4.4.2, @lifeomic/axios-fetch@npm:3.1.0, @opentelemetry/api-logs@npm:0.52.1, @opentelemetry/api@npm:1.9.0, and 61 more.
➤ YN0000: └ Completed in 0s 817ms
➤ YN0000: ┌ Post-resolution validation
➤ YN0002: │ @repo/pinnacle-layers@workspace:packages/pinnacle-layer doesn't provide eslint (p5fa97), requested by @typescript-eslint/parser.
➤ YN0002: │ skills@workspace:apps/skills doesn't provide esbuild (p15d2f), requested by serverless-esbuild.
➤ YN0086: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code.
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0066: │ typescript@patch:typescript@npm%3A5.5.2#optional!builtin<compat/typescript>::version=5.5.2&hash=5adc0c: Cannot apply hunk #1
➤ YN0013: │ 2536 packages were added to the project (+ 974.91 MiB).
➤ YN0000: └ Completed in 18s 587ms
➤ YN0000: ┌ Link step
➤ YN0005: │ vue-material@npm:1.0.0 lists build scripts, but its build has been explicitly disabled through configuration.
➤ YN0007: │ svelte-preprocess@npm:5.1.4 [2e35e] must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.21.5 must be built because it never has been before or the last one failed
➤ YN0007: │ aws-sdk@npm:2.1646.0 must be built because it never has been before or the last one failed
➤ YN0007: │ sqlite3@npm:5.1.7 [20c11] must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.19.2 must be built because it never has been before or the last one failed
➤ YN0007: │ es5-ext@npm:0.10.64 must be built because it never has been before or the last one failed
➤ YN0007: │ @sentry/cli@npm:2.32.1 must be built because it never has been before or the last one failed
➤ YN0007: │ better-sqlite3@npm:8.7.0 must be built because it never has been before or the last one failed
➤ YN0007: │ core-js@npm:3.37.1 must be built because it never has been before or the last one failed
➤ YN0007: │ vue-demi@npm:0.14.5 [d85ca] must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.17.19 must be built because it never has been before or the last one failed
➤ YN0007: │ yorkie@npm:2.0.0 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/fontawesome-common-types@npm:6.5.2 must be built because it never has been before or the last one failed
➤ YN0007: │ cypress@npm:13.12.0 must be built because it never has been before or the last one failed
➤ YN0007: │ vue-demi@npm:0.14.5 [499a1] must be built because it never has been before or the last one failed
➤ YN0007: │ vue-demi@npm:0.14.5 [90d6b] must be built because it never has been before or the last one failed
➤ YN0007: │ @sveltejs/kit@npm:2.5.17 [13444] must be built because it never has been before or the last one failed
➤ YN0007: │ serverless@npm:3.39.0 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/fontawesome-svg-core@npm:6.5.2 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/free-solid-svg-icons@npm:6.5.2 must be built because it never has been before or the last one failed
➤ YN0000: └ Completed in 37s 281ms
➤ YN0000: · Done with warnings in 57s 192ms
root@7d451bb044f6:/src# echo $?
0
root@7d451bb044f6:/src#

jeez, sorry, I should have thought of that. However, works fine:

Uhhhg then it's quite strange, the steps are basically the same in the runtime, I'm quite confused :/

The nodeLinker, globalFolder, and cacheFolder are slightly different things, so you should be able to still pull in the globalFolder inside of the repo path and still change what nodeLinker you are using

True, but here's what I found:

When you use nodeLinker: pnpm, it uses symlinks and saves a ton of space (ideal for dagger caching IMO)
However, the cache folder needs to be in the repo by default (hence the need for globalFolder: **./.yarn/berry**)

Without this, I got some symlink outside of filesystem or something in my code when trying to compile

Stepping back, here's a question:  Should we recommend that dagger.json and dagger/ be above the target folder? Most of my comments/critiques/objections to this implementation have been because I didn't want to move all my folders down a level in my monorepo to support dagger.  However, I wonder if it might not be a case of caveat emptor if you choose to use dagger directly inside your target folder like I did.
In theory, we would need to ensure these permutations worked:

Pkg Mgr
Version
Source
Permutation

all
all
below
n/a

npm
all
same level

pnpm
all
same level

pnpm
all
same level
packageManager specified

yarn
1
same level

yarn
1
same level
packageManager specified

yarn
2+
same level

yarn
2+
same level
packageManager specified

yarn
2+
same level
nodeLinker: pnp

yarn
2+
same level
nodeLinker: node_modules

yarn
2+
same level
nodeLinker: pnpm

NOTE: Not sure how globalLinker might affect the yarn testing

Stepping back, here's a question: Should we recommend that dagger.json and dagger/ be above the target folder? Most of my comments/critiques/objections to this implementation have been because I didn't want to move all my folders down a level in my monorepo to support dagger. However, I wonder if it might not be a case of caveat emptor if you choose to use dagger directly inside your target folder like I did.

In my your dagger.json should be at the root of your repo but the source in a sub directory so you do not mixup your dependencies.
For example
.
.git
dagger.json // -> source ./ci
ci/
--- package.json
--- package-lock.json
--- tsconfig
--- src/index.ts
package.json // your project package.json
xx... rest of your repo

In my your dagger.json should be at the root of your repo but the source in a sub directory so you do not mixup your dependencies.

LOL, why would a new user (i.e. me) assume that?  All of my gitlab configuration is at the top of the repo:
.gitlab_ci.yaml
apps/
  reviews/
  skills/
  stocks/
  tnb/
docker/
node_modules/
packages/
docker-compose.yml
Dockerfile
README.md
package.json
tsconfig.json
turbo.json
yarn.lock

If I'm switching to dagger, nothing explicit in the docs says that.
dagger init happily installs alongside my app (and did, leading me to be involved with this PR due to all the issues I was having)
I just spent a few minutes in the docs trying to find this as a requirement, but it isn't specified.
The only thing I can see in the docs is this: The quickstart repo is formatted correctly, but nowhere do you say "Install dagger a layer above your TypeScript project"
For reference, I did this (and I've been doing ci/cd for a while):

Came to dagger.io and perused the docs (guilty for assuming)
Went to the quickstart and followed the quickstart in MY repo
Churned

I have multiple thoughts:

Maybe dagger init should throw an error if package.json is in the current folder?
Will this limitation apply to other platforms?  What happens with a dagger init at the top level of a go project or python project?  Are there conflicts there?

@jpadams -- Food for thought based on our call and new user experiences

My case is slightly different than @drmikecrowe , since I have all of my dagger code in a separate repository than my application code.  My concerns are centered around the dependencies of the sdk and the rest of my dagger module.  (I'm using the node_modules linker for yarn)

In my your dagger.json should be at the root of your repo but the source in a sub directory so you do not mixup your dependencies.

How would this fix 'mixing up your dependencies'?  Since dagger is referenced as a dependency, calling yarn install will install the dependencies of dagger itself and use the lockfile of the root of the repo (unless the dagger module is not part of the workspace and has its own yarn.lock. In that case it will use the local lock file)

Maybe dagger init should throw an error if package.json is in the current folder?

I think what we need is a clear explanation of what you think the folder structure should be for both when dagger is in a monorepo and when its in its own repo.

In my your dagger.json should be at the root of your repo but the source in a sub directory so you do not mixup your dependencies.

I now believe this must be our requirement:
.
.git
dagger.json // -> source ./ci
ci/
--- package.json
--- package-lock.json
--- tsconfig
--- src/index.ts
project/ (or source)
--- package.json // your project package.json
--- xx... rest of your repo

In short, I think dagger's package.json and the project's package.json must be in parallel folders.  I don't see how they can be parent/children with any monorepo setup


Move to file bug

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: 1.85.1
OS Version:  Linux x64 6.5.0-14-generic

Steps to Reproduce:

Select a code block.
Right-click and choose "Move to New File" or a similar option to move it to a new file.
In the newly created file, multiple import statements are observed.

Please share a minimal example project which demonstrates the issue

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Disable user select on tablets

We have had to do this on two of our flagship client apps. When a user holds down their finger to bring up the context menu the text on the page gets selected and it's not a good look. Is there any reason NOT to do this at the Hoist level?

I think this makes sense to do at the hoist-level for tablets. Interesting to note that Onsen does this for us for mobile, so clearly a precedent of disabling user-select for touch screens

Agreed - let's add the rule for the next Hoist release


Update package.json to support svelte@next

📑 Description

Currently, this package cannot be installed with svelte@next. It works fine, but the dependency restriction is quite strict. I added svelte@next as a dependency to resolve this issue.
Current behavior when running npm install with svelte@next:
Found<EMAIL_ADDRESS>npm ERR! node_modules/svelte
npm ERR!   dev<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>

✅ Checks

[x] My pull request adheres to the code style of this project
[x] My code requires changes to the documentation
[x] I have updated the documentation as required
[x] All the tests have passed

ℹ Additional Information

Okay, so it depends on the package installer you use. So it's time to switch. ^^
pnpm ✔
npm ❌
Since I already collected this information, I will share it just in case. :)

A ^ version range will not include pre-releases by default, unless the range itself includes a pre-release.

Source: https://semver.org/
You have to list ^5.0.0-next.1 explicitly for npm. Otherwise, you get the dependency issue.
You can reproduce the issue:
# Setup a new project called to test and select "Try the Svelte 5 preview (unstable!)"
$: npm create svelte@latest test
# change to the directory created
$: cd test
# run inital install
$: npm install
# try to install radix, which will fail
npm i -D svelte-lucide@next

Use pnpm.
As you can see, I don't have any problems:

Yeah, that's also what I found out. Already switched my project to pnpm. ^^
Just wanted to share the info. Thank you for your support. 👍


Fix listing images with no slugs

For image with no slug, omit the slug field completely, instead of printing literally None.

Changes Unknown when pulling 8be3d8abed0f724fb836db381185fe86f45e5143 on jwilk:image-without-slug into ** on duggan:master**.

Great, cheers, I'll cut a release shortly with the last few changes you've submitted!


fix: DocumentDB Available Memory alarm

Description
Increase the threshold for DocumentDB memory alarms. We will be removing DocumentDB soon enough, and is no longer written to, and in-fact is basically empty now after the migration.
Context: https://walletconnect.slack.com/archives/C05S6CH27HC/p1698659213137829?thread_ts=1698580949.468659&cid=C05S6CH27HC
Resolves #164
How Has This Been Tested?
Not tested
Due Diligence

[ ] Breaking change
[ ] Requires a documentation update
[ ] Requires a e2e/integration test update

Closing in favor of https://github.com/WalletConnect/notify-server/pull/169


When the "[06.08] 🚀🚀 Next BIG update is on the way!!" will be available? today is [06, 08]

As the title

The checkpoints for the audio-language branch have been uploaded. Due to the limit of GPU memory, the online interactive demo for the latest Video-LLaMA is not ready yet and the current running demo on Hugging Face is still for the previous version.


Add csi-blockdevices driver

Closes #983

One odd thing with the dep ensure here to me was that there were changes in vendor/ that did not seem accounted for by the changes in Gopkg.lock. I'm not sure why this is, unless new things had been added to vendor/ before by dep ensure, and those new things were added to the commit.
Otherwise, if a commit hash for a dependency hasn't changed, I would not expect to see changes related to those projects in /vendor.

Codecov Report

Merging #1003 into master will increase coverage by 0.34%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1003      +/-   ##
==========================================
+ Coverage   34.11%   34.46%   +0.34%
==========================================
  Files          36       36
  Lines        2896     2896
==========================================
+ Hits          988      998      +10
+ Misses       1806     1795      -11
- Partials      102      103       +1

Impacted Files
Coverage Δ

libstorage/api/types/types_localdevices.go
88.23% <0%> (+1.47%)
:arrow_up:

...storage/drivers/storage/vfs/storage/vfs_storage.go
40.28% <0%> (+2.15%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 866d593...40d8307. Read the comment docs.

Replaced by #1005.


Open folder not reused window with multi root workspace

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: 1.90.1, maybe since we have multi-root workspace system
OS Version: Windows 10

Steps to Reproduce:

Open some folder in vscode
Add some more folders into workspace and it would become workspace
Open folder that already opened in workspace with cli code <opened folder>

Result behaviour is, it will just open a new window with a folder that already opened in another window workspace
With -r option it then trying to close the last active window and reopen into only that folder
With -a it then try to create workspace if that folder is not yet opened
Drop the folder and only open the file with -g then it might open a last active window that not a window that actually contain the file
All of these are not ideal
I wish that if there is any workspace already contain that folder it should just make that window become active and use it. But if there is none then it should open new window normally. This should be default behaviour of vscode without any flag
If it can't be default behaviour then I would like to propose a new flag, such as --reused-if-exist/-re
Also sometimes we would like to open folder to existing workspace, but specifically to workspace that already contain folder we known. And so I would like to also propose that there could be a flag --add-to <mainfolder> which will check that, if the mainfolder already opened in any window, it would use that window to create workspace
Or maybe let it that, when we open code with list of folder into workspace, if the first folder in the list already opened, vscode will use that folder as the main, choose opened window as a base, and open workspace in that window
Is this behaviour possible?

It seem like this might be the problem
https://github.com/microsoft/vscode/blob/35ac2d01a6b7ae2e0141377a6a924f050aa65237/src/vs/platform/windows/electron-main/windowsFinder.ts#L44-L52
The code here was tested only if the workspace itself has the same root as the folder it try to opened but not ask for the opened folder inside workspace unlike findWindowOnFile above

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

Should this issue be considered as a feature or bug?

@bpasero Should this issue be considered as a bug?


Galactic Release

Repo
Deprecated
Done
Assignee
Fork
Related

micro-ROS core

micro-ROS/micro_ros_setup

X

Branch

micro-ROS/micro-ROS-Agent

X

Branch

micro-ROS/micro_ros_espidf_component

XX

Branch

micro-ROS/rmw-microxrcedds

XX

Branch

micro-ROS/rosidl_typesupport

XX

X
Branch PR

micro-ROS/micro_ros_raspberrypi_pico_sdk

XX

Branch

micro-ROS/micro_ros_arduino

XX

Branch

micro-ROS/rosidl_typesupport_microxrcedds

XX

Branch

micro-ROS/micro_ros_mbed

XX

Branch

micro-ROS/docker

X

Branch Update with ros:galactic

micro-ROS/micro_ros_nuttx_app

XX

Branch

micro-ROS/micro_ros_zephyr_module

X

Branch

ros2/rclc

XX

Branch

micro-ROS/rcl

XX

X
Branch

micro-ROS/micro_ros_stm32cubemx_utils

X

Branch

micro-ROS/freertos_apps

X

Branch

micro-ROS/zephyr_apps

X

Branch

micro-ROS/rcutils

X

X
Branch

micro-ROS/raspbian_apps

X

Branch

micro-ROS/micro-ROS-demos

X

Branch

micro-ROS/micro_ros_msgs

X

Branch

micro-ROS/rclc-release

??

micro-ROS docs

micro-ROS/micro-ROS.github.io

micro-ROS demos & examples

micro-ROS/micro-ROS_sensors_demo

micro-ROS/micro-ROS_moveit2_demo

micro-ROS/micro-ROS_crazyflie_demo

micro-ROS/micro-ROS_openmanipulator_demo

Other

micro-ROS/system_modes

@norro

micro-ROS/micro_ros_memory_profiling

micro-ROS/nuttx_apps

micro-ROS/micro_ros_diagnostics

@norro

micro-ROS/micro-ROS_kobuki_demo

@ralph-lange

micro-ROS/benchmarking_shadow-builder

micro-ROS/micro-ROS_warehouse_demo

micro-ROS/benchmarking

micro-ROS/micro-ROS_thumper_demo

micro-ROS/micro-ROS_demobox_demo

micro-ROS/micro_ros_showcase_demo

micro-ROS/benchmarking-results

micro-ROS/executor_testbench

micro-ROS/drive_base

micro-ROS/mcb

micro-ROS/micro-ROS-bridge_RPI

micro-ROS/ros2-performance

micro-ROS/micro-ROS-rtt

micro-ROS/nuttx_kconfig_vendor

micro-ROS/microxrcedds_agent-release

micro-ROS/uclibc

micro-ROS/micro-ROS-Agent-release

micro-ROS/NuttX
X

@ralph-lange We should take a look in the Other section of the above table in order to do the repo cleaning.


Explicitly note that existing AccountIdConversion is truncating and add fallible try_into...

Closes: https://github.com/paritytech/substrate/issues/8564
closes: https://github.com/paritytech/substrate/issues/10812
Tired of running into this problem accidentally when writing tests.
The behavior of AccountIdConversion may occasionally lead to duplicate accounts if the seed provided to generate the account is bigger than the encoded AccountId type. In tests, where accounts are often u64, this can happen, and actually lead to hard to debug behaviors with account balances, and stuff like that.
This updates the API so that the existing behavior is explicitly mentioned, and also provides an alternative try_into... function which can handle such a truncation problem, and explicitly return an error when an infallible operation is not needed.
BREAKS API!
Migration is simple:
Whenever you use into_account or into_sub_account, you must now explicitly choose between into_account_truncating or try_into_account, and if you use the latter, handle the situation where we may return None.
Polkadot companion: https://github.com/paritytech/polkadot/pull/4947
cumulus companion: https://github.com/paritytech/cumulus/pull/1262

This is still usefull

People still running into this:
https://substrate.stackexchange.com/questions/2581/into-sub-accountsub-encode-the-same-adress-for-different-sub/2626#2626
I'm gonna take a second look, but lets def get this merged

See what I wrote here as an update to the logic here: https://github.com/paritytech/substrate/pull/10719#discussion_r873301356

bot merge

bot merge

bot merge

bot merge

bot merge

We should have a DecodeExact like this to achieve what we do in this PR cleaner
https://github.com/paritytech/parity-scale-codec/blob/master/src/decode_all.rs#L22


Compatibility With Swift?

Can you make the project compatible with swift?

It is fully compatible with swift, see the swift example.


workflow diagram

Hey Von! Please made a workflow diagram for the repo's readme. I will work on cleaning up the workflow (get to integrate, except for Yolo, which will also have a SD, metadata and route script).

working on this - there seems to be a circular dependency in R/integrate_results_with_enviro.R, which both requires and outputs data/model_data.csv.


When the model makes predictions, what is the relationship between the number of images in the query dataset and the number of database images?

When the model makes predictions, what is the relationship between the number of images in the query dataset and the number of database images?For example, when I use this model to predict, there is only one image in the query dataset, so the image in the database dataset should be the image of the region where the query dataset image is located,to ensure the correctness, how many database images should be at least?

You only need one database image near your query to find the query's position. If your first prediction is correct and the others are wrong, your recall is still 100%.
From the paper: As a metric, we use the recall@N with a 25 meters threshold, i.e., the percentage of queries for which at least one of the first N predictions is within a 25 meters distance from the query, following standard procedure

Think you for your help


Garbage collector do not work on large tables

Fixes https://github.com/silverstripe/silverstripe-session-manager/issues/153

no worries, the change for the collect method was an added benefit. and instead of changing the return type, it's possible to store the result somewhere and add a getResults but that can be another PR. I still think it's valuable to allow to have some insights on what's being collected
For example in my cron tasks module, I store tasks results in the database. This would allow to know when you hit the limit, if you run this frequently enough, etc.
I've merged your changes and fixed some vars that went missing along the way

@lekoala Can you please resolve the merge conflict?


How to wrap Ionic components for use as higher order components (HOC)?

I'm trying to make an Ionic Svelte app, coming from Ionic React.
In React, I wrapped the ion-button component like this:
export type CustomIonButtonWrapper = {
  children: StringOrElementOrNumber | StringOrElementOrNumber[];
  onClick?:
    | ((event: React.FormEvent) => void)
    | (() => Promise<void>)
    | (() => void);
  routerLink?: string;
  id?: string;
  color?: 'danger' | 'tertiary' | 'warning' | 'success';
  type?: 'submit';
  href?: string;
  className?: string;
  fill?: 'outline';
  disabled?: boolean;
  role?: 'button' | 'link';
};

const ButtonStandard: React.FC<CustomIonButtonWrapper> = (
  props: IonicButtonWrapper,
) => {
  const { children, ...otherProps } = props;
  return (
    <IonButton size="small" {...otherProps}>
      {children}
    </IonButton>
  );
};

Here, I restricted the number of props that can be provided to ion-button by adding the CustomIonButtonWrapper type, and then set the button size to small.
This allows me to use the <ButtonStandard> component to control the ion-button component, ensuring I only use the specified props throughout my app.
How can I do something similar in Svelte?  Specifically,

Wrap ion-button in a Svelte component
Enforce a custom type for my ButtonStandard component (do not accept all the props that ion-button does).

I came up with the following but it seems verbose compared to React.  Is there a better way?
<script lang="ts">
	export let onClick:
		| ((event: MouseEvent) => void)
		| (() => Promise<void>)
		| (() => void)
		| undefined = undefined;
	export let id: string | undefined = undefined;
	export let color: 'danger' | 'tertiary' | 'warning' | 'success' | undefined = undefined;
	export let type: 'submit' | undefined = undefined;
	export let href: string | undefined = undefined;
	export let className: string | undefined = undefined;
	export let fill: 'outline' | undefined = undefined;
	export let role: 'button' | 'link' | undefined = undefined;
	export let disabled: boolean = false;
</script>

{#if id}
	<ion-button
		size="small"
		on:click={onClick}
		{id}
		{color}
		{type}
		{href}
		class={className}
		{fill}
		{role}
		{disabled}
	>
		<slot />
	</ion-button>
{:else}
	<!--
    If id is set to undefined, then Svelte sets id to the string "undefined".
    So if id has not been set, then do not set id (to avoid setting it to the string "undefined").
   -->
	<ion-button
		size="small"
		on:click={onClick}
		{color}
		{type}
		{href}
		class={className}
		{fill}
		{role}
		{disabled}
	>
		<slot />
	</ion-button>
{/if}

Related to https://github.com/Tommertom/svelte-ionic-app/issues/93 and https://github.com/Tommertom/svelte-ionic-app/issues/88.
This is an issue because this project offers ion-button as a web component rather than a Svelte component.  I imagine it would be a lot of work (and painful maintenance) to make Svelte components for all the Ionic components.  So I'm wondering if there's another way to wrap the web components to use them as HOC without creating Svelte components?

I dont think it is a lot of work to generate svelte components wrapping ionic (there are definition files in the ionic package you could use for that), but it is not a great idea as you lose two way binding and you cannot style the components directly with css anymore (encapsulation). I considered that in the beginning and it does not work for me.
I dont think there is anything else - webcomponents, for what I know, live in the browser as some sort of native thing. So your question is similar to asking if you can make a HOC of a div or a button.
Why do you want this?

Hmm.  Is there a way to make both ion-button (as a web component) and IonButton (as a Svelte component) available?
In my React app, I use HOC for ion-button, ion-toggle, ion-range, ion-icon, and several others in conjunction with a "handedness" setting.  Users can select if they are right- or left-handed, and then all the UI moves to the appropriate side of the screen.  Because this can get pretty complicated (submit buttons should be on the same side as the user's dominant hand, whereas delete buttons should be on the reverse side), I did this by using my own components that wrap the Ionic components, which works really well and prevents me from setting the wrong value.  So I was trying to do something similar in Svelte but it has turned out to be more complicated than React.

Hmm. Is there a way to make both ion-button (as a web component) and IonButton (as a Svelte component) available?
In my React app, I use HOC for ion-button, ion-toggle, ion-range, ion-icon, and several others in conjunction with a "handedness" setting. Users can select if they are right- or left-handed, and then all the UI moves to the appropriate side of the screen. Because this can get pretty complicated (submit buttons should be on the same side as the user's dominant hand, whereas delete buttons should be on the reverse side), I did this by using my own components that wrap the Ionic components, which works really well and prevents me from setting the wrong value. So I was trying to do something similar in Svelte but it has turned out to be more complicated than React.


Issue while using Localization (IStringLocalizer)

System Details
FluentValidation version: 8.1.3
Web Framework version (ASP.NET Core 2.2):
Issue Description
While using the IStringLocalizer, I can see that requests to get the message from the localizer get fired irrespective of whether the validation has failed or passed. I was assuming it will request the message only when it fails.
We are using a localization framework where it gets localized strings from JSON files. I would not want to make a call to the localizer in case my validation has passed as it is of no use.
public class PersonValidator : AbstractValidator<Person> {   public PersonValidator(IStringLocalizer<Person> localizer) {     RuleFoR(x => x.Surname).NotNull().WithMessage(x => localizer["Key"]);   } }
Here the localizer is a dependency that reads a no of JSON files for the given key and returns the value. For validation on a huge data, it makes it slow.

Hi, typically the error message callback is only invoked if validation fails. But in an MVC project with client-side validation enabled the error message also has to be extracted to pre-load the client-side messages. If you don’t want this to happen then you should disable client-size validation.

@JeremySkinner We are using a .Net core API and we won't need MVC client-side validation.
However, I did try to disable client-side validation but it still behaves the same.
Below is my AddMvc to services.
            services                 .AddMvc().AddViewOptions(options =>                     options.HtmlHelperOptions.ClientValidationEnabled = false)                 .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)                 .AddFluentValidation(fv =>                     fv.RegisterValidatorsFromAssemblyContaining<Startup>());

If you're not using clientside validation then it's probably not that that's causing it. Just to be on the safe side try disabling in the call to AddFluentValidaition too:
.AddFluentValidation(fv => {
  fv.RegisterValidatorsFromAssemblyContaining<Startup>();
  fv.fv.ConfigureClientsideValidation(enabled:false);
});

If you're still seeing the same issue then put a breakpoint inside the WithMessage callback or inside your custom StringLocalizer and retrieve the stack trace, which will show you where it's being called.

Tried disabling in the call to AddFluentValidaition too but the issue still persists. Will update here when I find something after further investigation.

@JeremySkinner
It looks like an issue with FluentValidator. I have created a working sample which is available at https://github.com/Sandeep321/FluentValidationExample.
It's a very simple project where I tried to replicate the issue. I tried the methods as suggested by you but still, it invokes the localizer method every time irrespective of whether the validation has failed or passed.
Repro steps:

Clone the repo mentioned above.
Run the API, it should open "https://localhost:44363/swagger/index.html" by default.
Execute POST - /api/Values/Test with default values in body as: {  "id": 0,  "name": "string"}
In response, you shall see only one element in errors collection as  - Student Id should be greater than 100 (Response is as expected as only one rule is failed)
However, if you put debugger inside Localizer.GetLocalizedString(string message), you will see that it gets invoked for both the rules defined under StudentViewModelValidator. Although only one rule has failed.

I have tried different options to disable client-side validation. You can check those Options as Option 1, Option 2 and Option 3 inside Startup file.
Waiting to hear from you.

Did you retrieve a stack trace as I suggested? Please post that here as a first step as it will be significantly quicker to diagnose than digging through a sample project.

Not sure which stack trace you are referring to. If you are asking of output from debug window, here it is:
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/2.0 POST https://localhost:44363/api/Values/Test application/json-patch+json 33
Microsoft.AspNetCore.Routing.EndpointMiddleware:Information: Executing endpoint 'FluentValidationExample.Controllers.ValuesController.Post (FluentValidationExample)'
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Route matched with {action = "Post", controller = "Values"}. Executing action FluentValidationExample.Controllers.ValuesController.Post (FluentValidationExample)
Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor:Information: Executing ObjectResult, writing value of type 'Microsoft.AspNetCore.Mvc.ValidationProblemDetails'.
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Executed action FluentValidationExample.Controllers.ValuesController.Post (FluentValidationExample) in 3447.6821ms
Microsoft.AspNetCore.Routing.EndpointMiddleware:Information: Executed endpoint 'FluentValidationExample.Controllers.ValuesController.Post (FluentValidationExample)'
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request finished in 3462.7004ms 400 application/problem+json; charset=utf-8

Please have a look at :
at FluentValidationExample.Validators.StudentViewModelValidator..ctor(ILocalizer localizer)
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.ConstructorInfo.Invoke(Object[] parameters)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProviderEngineScope scope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(IServiceCallSite callSite, TArgument argument)    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProviderEngineScope scope)    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.b__0(ServiceProviderEngineScope scope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
at FluentValidation.AspNetCore.ServiceProviderValidatorFactory.CreateInstance(Type validatorType)
at FluentValidation.AspNetCore.FluentValidationModelValidator.Validate(ModelValidationContext mvContext)
at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.ValidateNode()
at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.VisitComplexType(IValidationStrategy defaultStrategy)
at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit(ModelMetadata metadata, String key, Object model)
at Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Validate(ModelMetadata metadata, String key, Object model, Boolean alwaysValidateAtTopLevel)
at FluentValidation.AspNetCore.FluentValidationVisitor.Validate(ModelMetadata metadata, String key, Object model, Boolean alwaysValidateAtTopLevel)
at Microsoft.AspNetCore.Mvc.ModelBinding.ObjectModelValidator.Validate(ActionContext actionContext, ValidationStateDictionary validationState, String prefix, Object model, ModelMetadata metadata)
at Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder.EnforceBindRequiredAndValidate(ObjectModelValidator baseObjectValidator, ActionContext actionContext, ParameterDescriptor parameter, ModelMetadata metadata, ModelBindingContext modelBindingContext, ModelBindingResult modelBindingResult)
at Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder.BindModelAsync(ActionContext actionContext, IModelBinder modelBinder, IValueProvider valueProvider, ParameterDescriptor parameter, ModelMetadata metadata, Object value)
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder.BindModelAsync(ActionContext actionContext, IModelBinder modelBinder, IValueProvider valueProvider, ParameterDescriptor parameter, ModelMetadata metadata, Object value)
at Microsoft.AspNetCore.Mvc.Internal.ControllerBinderDelegateProvider.<>c__DisplayClass0_0.<g__Bind|0>d.MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.AspNetCore.Mvc.Internal.ControllerBinderDelegateProvider.<>c__DisplayClass0_0.g__Bind|0(ControllerContext controllerContext, Object controller, Dictionary2 arguments)    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.BindArgumentsAsync()    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()    at Microsoft.AspNetCore.Mvc.Internal.MvcEndpointDataSource.<>c__DisplayClass21_0.<CreateEndpoint>b__0(HttpContext context)    at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)    at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)    at Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware.Invoke(HttpContext context)    at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)    at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)    at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)    at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)    at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)    at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass4_1.<UseMiddleware>b__2(HttpContext context)    at Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware.Invoke(HttpContext context)    at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.Invoke(HttpContext httpContext)    at Microsoft.AspNetCore.Hosting.Internal.HostingApplication.ProcessRequestAsync(Context context)    at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT1.ProcessRequestAsync()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync()
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer.HandleRequest(IISHttpContext context)
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer.HandleRequest(IISHttpContext context)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer.<>c.b__26_0(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadPoolWorkQueue.Dispatch()

Your call to WithMessage is incorrect. The call to your localizer must be within a callback. Your current implementation immediately calls the localizer as soon as you instantiate the validator.
You have this: WithMessage(localizer.GetLocalizedString("Student Name should be less than 10 chars"));
It must be this: WithMessage(x => localizer.GetLocalizedString("Student Name should be less than 10 chars"));

Thank you so much for spending time and pointing out the problem. Little silly mistake. Yes, it works as expected when the localizer is called within a callback. Updated the code and closing this issue.


Replace "var map" by "let map"

That may be a harsh move without prior discussion. But I give it a try.

We are currently in the process of stabilizing Leaflet 1.8 and eventually working our way up to version 2.0 which will drop support for older browsers.
Most likely our minimum support target for version 2.0 will be ES2015, at which point we'd  want to refactor all of our code (including documentation).
I am closing this PR now as it does not fit into the current timeline and will likely end up out of sync over time. When the time comes that we move to a newer syntax in general help would be appreciated.

Sounds like a good way to proceed 🙂 Thanks!


case insensitive check on partition matching

resolves #886
Problem
The API returns sometimes upper cased fields such timePartitioning.type and in case the user config has also a different casing, we should do a case insensitive check on partition matching.
Solution
It introduce a proper case insensitive check on partition field matching
Checklist

[x] I have read the contributing guide and understand what's expected of me
[x] I have run this code in development and it appears to resolve the stated issue
[x] This PR includes tests, or tests are not required/relevant for this PR
[x] This PR has no interface changes (e.g. macros, cli, logs, json artifacts, config files, adapter interface, etc) or this PR has already received feedback and approval from Product or DX

Thanks for the triage @dbeatty10 ! Could you enable the OK to test to run the ITs too?

Re-opening to make the ok to test label trigger the tests

@mikealfare it looks like both this PR & https://github.com/dbt-labs/dbt-bigquery/pull/866 are failing over tests/functional/adapter/test_basic.py
I couldn't reproduce the issue locally so I wonder if there's an issue with CI?

@github-christophe-oudar rerunning tests to see if it was ci/cd.

It's still failing on those tests and I don't know why 🤔

@github-christophe-oudar great work on this.

Great! Thanks for the swift turnaround on this bugfix 🙌
Looking forward for the next minor release so that anyone can benefit from it 👍


Upgrading to pgFormatter 5.5

Pull Request Test Coverage Report for Build e707482896dca1bd55dd95df320bd3415b26b2ec-PR-5
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 59.42%

Totals

Change from base Build 30bede2d60925c3376a9d5eabb42b6eadd87a970:
0.0%

Covered Lines:
41

Relevant Lines:
69

💛  - Coveralls

Pull Request Test Coverage Report for Build e707482896dca1bd55dd95df320bd3415b26b2ec-PR-5
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 59.42%

Totals

Change from base Build 30bede2d60925c3376a9d5eabb42b6eadd87a970:
0.0%

Covered Lines:
41

Relevant Lines:
69

💛  - Coveralls


No base url

/**
   * Now lets include our router to the main app
   * Make sure that your app has the base url, e.g. /api/ or /v1
   * nacl will detect your resource based on this url.
   */

What if I prefer no base url?

To make it work, I have to do this in helper.js:
resource: function(next, url) {
   var arr = url.match(/([A-Z])\w+/gi);
   if (!arr) {
     return next();
   } else {
     return arr[0];
   }
 }

Express API best practice requires you specify a base URL to differentiate between front-end and back-end routes. However since not all prefer using base URL this can be done through the config by setting property baseUrl to false as compared to the above approach. This will cater for when base URL is specified.
acl.config ({
      baseUrl: false
});

Using these property we can return the appropriate resource in each scenario.

@kahwooi You can now specify your baseUrl in the config as follows
// if you have a base url 'api'
acl.config({
   baseUrl:'api'
});

// if not you can specify baseUrl as '/' or ignore the config entirely
acl.config();

// or

acl,config({
   baseUrl: '/'
});

hope that works well for you, thanks for raising the issue

I do this on http://x.com/test/1:
acl.config({path:'./config/acl.json', baseUrl: false});
but it still it still take the 1, instead of test.


Have any option for resize?

Hi,
Have any option for how object will be resize. I mean I just want to resize the left side while keep right side.
like your demo
http://codepen.io/Reklino/pen/zGxXxa
Thank!!

For anyone else who finds this issue with the same question, the solution lies in adjusting the r-centered-x and/or r-centered-y attributes. When the element is centered, the velocity of the resize needs to be two-fold to keep up with the cursor. It's kinda weird to think about, but you'll notice when you play around with it.


How does it work with UITableViewCell

I have a UITableViewCell that I would like to make Designable. How can I do?

Well There are classes defined in the file that you can use, for instance NibDesignableTableViewCell

Yes indeed, I realised the existence of NibDesignableTableViewCell later on. Sorry about that.