[$2000] Inconsistent behaviour for Manage Member's search & Invite member's search

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

Action Performed:

Open the app
Navigate to Settings > Workspaces > Select any workspace
Manage members
Write something in Search
Click Invite members then Go back
Notice that the search value is still present
Now go to Invite members > Write something in Search > Go back
Click on Invite members again > You'll notice that previous search value is not present

Expected Result:
Behavior should be consistent for all sections
Actual Result:
Different behavior is being observed
Workaround:
unknown
Platforms:

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

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

Version Number: 1.2.78-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:
https://user-images.githubusercontent.com/43996225/222875673-fe2c7c52-60ba-4e63-b144-6a08344d819e.mp4
https://user-images.githubusercontent.com/43996225/222875678-51440bce-4b4e-4d23-8e3b-5b53f1227a0f.mp4
Expensify/Expensify Issue URL:
Issue reported by: @daraksha-dk
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1677844622336169
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~011d403a6a3312983b
Upwork Job ID:<PHONE_NUMBER>742793216
Last Price Increase: 2023-03-14

Triggered auto assignment to @anmurali (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

@anmurali Whoops! This issue is 2 days overdue. Let's get this updated quick!

Job added to Upwork: https://www.upwork.com/jobs/~011d403a6a3312983b

Current assignee @anmurali is eligible for the External assigner, not assigning anyone new.

Triggered auto assignment to Contributor-plus team member for initial proposal review - @sobitneupane (External)

Triggered auto assignment to @iwiznia (External), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

This is where the issue was previously discussed

It is not really inconsistent behaviour. If you go back from the 'manage members' page, the search text will get cleared.
The reason it doesn't clear when you go into 'invite members' page is the 'manage members' page is not unmounted.
The app has to be keep the page in memory, so the user can go back to it.
It is unmounted when you go back from the 'manage members' page, which is what happens when you go back from the 'invite members' page.

Proposal
Please re-state the problem that we are trying to solve in this issue.
The issue at hand pertains to inconsistent behavior observed in Manage Member's search and Invite Member's search, where the inputs are sometimes empty, and sometimes carry over their previous value. This inconsistency needs to be resolved.
What is the root cause of that problem?
The root cause of this issue is related to memory management in React. While this behavior is not necessarily problematic, it is expected that a visited page will be stored for easy access when a user revisits it. In this case, when a user inputs text in the text input, the current page (i.e., members page) and all its values are stored. When the user navigates to the next page (i.e., invite members), the browser mounts the invite members page with all its components. When the user navigates back from invite to members, the browser uses the saved copy of the page.
What changes do you think we should make in order to solve the problem?
To ensure consistency and resolve the issue, it is suggested to clear the data ( input value) in the Manage Member's search in the componentWillUnmount(). This solution is chosen because users expect that no data will be saved in a search bar when they leave a page.
https://github.com/Expensify/App/blob/7e8e8a1d881914abe7c13768eb13e4930cb8546b/src/pages/workspace/WorkspaceMembersPage.js#L380-L384

Proposal
Please re-state the problem that we are trying to solve in this issue.
The current issue is that when a user navigates back from the Invite member page, the search text is cleared.
What is the root cause of that problem?
The cause of this issue is that the current component WorkspaceInvitePage is not needed anymore when navigating back. When a component is not needed, it's get unmounted by React and all its states are lost. In our case this will clear the search term.
What changes do you think we should make in order to solve the problem?
To address the root cause of the problem, we can temporarily save the search term state in the local storage. Here's what we can do:

Save the search value in the local storage when the WorkspaceInvitePage component will unmount.
Retrieve the search value from the local storage when the WorkspaceInvitePage component is being initiated.
Remove the search term value from the local storage when the parent component WorkspaceMembersPage will unmount.

https://user-images.githubusercontent.com/2527288/223730958-8233e6f4-e727-44de-ac8a-e2d00413d358.mov
What alternative solutions did you explore? (Optional)
No alternative solutions were explored.

@sobitneupane - thoughts on these proposals?

@you1996 Thanks for your proposal.
I don't think use of componentWillUnmount will work here as WorkspaceMembersPage is not unmounted on navigating to WorkspaceInvitePage.

@moezh Thanks for your proposal.
But I believe the expected result is to remove the search term from WorspaceMembersPage not retain value in WorkspaceInvitePage

Proposal
Please re-state the problem that we are trying to solve in this issue.
Inconsistent behaviour for Manage Member's search & Invite member's search
What is the root cause of that problem?
When we move into the Invite Page, the Member Page is still mounted so the search value remains. But when back from the invite Page, the invite Page is unmount immediately so the search value in the invite page doesn't remain
What changes do you think we should make in order to solve the problem?
We should clear the input value when clicking the Invite Button

Why would we want to remove the search value after navigating forward? The expected behavior only mentioned "Behavior should be consistent for all sections" but does not tell which behavior. Looking at the last step, they expect the search value at invite members page is saved. Saving/clearing the search value seems like a feature request to me which should be discussed whether it is required because it affects the UX of the app.

@iwiznia It's a inconsistency bug across the app. I would say expected behavior should be search terms should get cleared.

ok that makes sense to me.

Thanks for the proposal @tienifr.
Proposal from @tienifr looks good to me.
🎀👀🎀 C+ reviewed
cc: @iwiznia

Proposal
Sorry a bit late for my proposal. There's another case of search value not cleared.
Please re-state the problem that we are trying to solve in this issue.
Inconsistent behaviour for Manage Member's search & Invite member's search
What is the root cause of that problem?

When go to Invite page from Manage page
When press back button on Manage page after deep linking manage members directly from address bar

Saved state search value in Manage page is not cleared because component is not unmounted
Why not unmounted?
This is default behavior of navigation in react-navigation
https://user-images.githubusercontent.com/108292595/225509087-1ee7cc55-037b-48f7-960b-95a75693e822.mov
What changes do you think we should make in order to solve the problem?

clear search value on Invite button click: this.updateSearchValue('')
https://github.com/Expensify/App/blob/366f0d064f50a614ca42aca3586beba6bfaba8c7/src/pages/workspace/WorkspaceMembersPage.js#L116-L118

there are 2 solutions to fix: (I prefer Solution 2 to be consistent with Invite page)
https://github.com/Expensify/App/blob/366f0d064f50a614ca42aca3586beba6bfaba8c7/src/pages/workspace/WorkspaceMembersPage.js#L345-L347
Solution1: clear search value on back button click: this.updateSearchValue('')
Solution2: use Navigation.goBack() instead just to close modal, similar to Invite page:
https://github.com/Expensify/App/blob/366f0d064f50a614ca42aca3586beba6bfaba8c7/src/pages/workspace/WorkspaceInvitePage.js#L313

Looks like something related to react-navigation may have been mentioned in this issue discussion.
As a reminder, please make sure that all proposals are not workarounds and that any and all attempt to fix the issue holistically have been made before proceeding with a solution. Proposals to change our DeprecatedCustomActions.js files should not be accepted.
Feel free to drop a note in #expensify-open-source with any questions.

Yep, to me too. @anmurali can you hire @tienifr please?

Has my proposal been reviewed?

Thanks @situchan for pointing out the issue.
As pointed out by @situchan, when we navigate directly to the Manage Member page with the link and press back button, search value doesn't clear.
@iwiznia Proposal from @situchan solves both the issue. Should we go with his proposal?
@tienifr Please don't create PR until we hear from @iwiznia.
cc: @iwiznia @anmurali

@sobitneupane @situchan This is a behavior of react-navigation. If we want to clear the search value when we navigate directly to the Manage Member page with the link and press back button, we also need to fix in other places like General Settings in workspace. I think we should handle it in other issue since in this issue we just to clear the search value when user clicks invite button and go back

Search value not cleared itself is not an issue.
This issue is just created for consistency between Manage members and Invite members page.
So IMO in this issue, we should fix all possible inconsistency issues (back button behavior), not only search value.

But It can cause the inconsistency between Manage Members and General Settings. So I suggest we should use Navigation.goBack whenever we call onBackButtonPress function (AboutPage, General Settings, AddPaymePage, TimezoneInitialPage,...)

But It can cause the inconsistency between Manage Members and General Settings. So I suggest we should use Navigation.goBack whenever we call onBackButtonPress function (AboutPage, General Settings, AddPaymePage, TimezoneInitialPage,...)

I agree with this.
Currently, navigating animation is reversed when visit deep link and press back button, which means user feels like opening new page instead of closing.

@iwiznia @anmurali @sobitneupane this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!

Sorry for the slow response. I agree that calling Navigation.goBack sounds better. Do you agree @sobitneupane ?

@iwiznia I think we should add this.updateSearchValue('')  instead (i.e, Solution1 for step2 in @situchan 's proposal) because if we call Navigation.goBack, after refresh, instead of going to previous page, RHN will exit.
https://github.com/Expensify/App/blob/366f0d064f50a614ca42aca3586beba6bfaba8c7/src/pages/workspace/WorkspaceMembersPage.js#L345-L347

@sobitneupane  @iwiznia  Besides removing the input in the MemberPage when the Invite Button is clicked as I mentioned in here,
We have considered two options to address the edge case raised by @situchan  in here

Using Navigation.goBack when the back button is clicked on some pages  (ex: generalSetting, issueCard, ReimburseExpense, ManageMember, ....). All these pages are using Navigation.navigate(ROUTES.getWorkspaceInitialRoute(policyID)); so after refreshing, the user will still return to the WorkspaceInitialPage when they click the back button. If using Navigation.goBack instead, after refreshing the user will return to the ReportPage when they click the back button
As @sobitneupane mentioned, We still use Navigation.navigate as before. In addition, we will remove the search value when the back button is clicked on all workspace pages that have input. But currently we still have some pages using Navigation.goback like InvitePage, Get assistance Page,... So that, if we come up with this way, should we update these pages to use `Navigation.navigate for consistency?

@hoangzinh that introduces another inconsistency.
When you click ? (Get assistance) icon, it goes to Get assistance page and when navigate back, input value clears.
This doesn't happen on any other pages across the app.

@iwiznia, @anmurali, @sobitneupane Whoops! This issue is 2 days overdue. Let's get this updated quick!

@iwiznia @anmurali @sobitneupane this issue is now 3 weeks old. There is one more week left before this issue breaks WAQ and will need to go internal. What needs to happen to get a PR in review this week? Please create a thread in #expensify-open-source to discuss. Thanks!

@iwiznia Bump https://github.com/Expensify/App/issues/15661#issuecomment-1476697209

because if we call Navigation.goBack, after refresh, instead of going to previous page, RHN will exit.

Oh, that's no good... ok let's go with updateSearchValue from @situchan

If 🟢 on my proposal - Solution1 for step2, can you please assign me to the issue so I can raise PR?

Thanks @iwiznia. Will raise PR soon

Reviewing label has been removed, please complete the "BugZero Checklist".

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.2.92-2 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/16603

If no regressions arise, payment will be issued on 2023-04-07. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.

[ ] External issue reporter
[ ] Contributor that fixed the issue
[ ] Contributor+ that helped on the issue and/or PR

As a reminder, here are the bonuses/penalties that should be applied for any External issue:

Merged PR within 3 business days of assignment - 50% bonus
Merged PR more than 9 business days after assignment - 50% penalty

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[ ] [@sobitneupane / @iwiznia] The PR that introduced the bug has been identified. Link to the PR:
[ ] [@sobitneupane / @iwiznia] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
[ ] [@sobitneupane / @iwiznia] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
[ ] [@anmurali] Determine if we should create a regression test for this bug.
[ ] [@sobitneupane] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
[ ] [@anmurali] Link the GH issue for creating/updating the regression test once above steps have been agreed upon:

@iwiznia, @anmurali, @sobitneupane, @situchan Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

@iwiznia, @anmurali, @sobitneupane, @situchan Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

@sobitneupane - can you take care of your checklist items?

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[x]  The PR that introduced the bug has been identified. Link to the PR:

https://github.com/Expensify/App/pull/15123

[x]  The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:

https://github.com/Expensify/App/pull/15123#issuecomment-1502660981

[ ]  A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

https://expensify.slack.com/archives/C049HHMV9SM/p1681186634307459

Regression Test Proposal

Navigate to Settings > Workspaces > Select any workspace
Go to Manage members
Write something in search input
Click Invite button
Click back button on Invite members page
Verify that search value is cleared on Manage members page

Do we agree 👍 or 👎

@iwiznia, @anmurali, @sobitneupane, @situchan Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

@sobitneupane agree with that regression test (I now realize I should've commented and not reacted to your comment). Can you take care of creating that new regression test?
@anmurali I think you need to pay here?

Did we pay this already? If so, can we close this?

Sent contracts to them all, will pay and close this once they accept them

@anmurali Thanks. Accepted the offer.

@anmurali accepted, thanks!

Everyone's paid
https://github.com/Expensify/Expensify/issues/276730


Added Lowest Common Ancestor.

Coverage remained the same at 100.0% when pulling 57a3b3f3ca8844c695a7fef39c5c488df8911724 on lowest-common-ancestor-of-a-binary-tree into c4200d718597cdd31bbc323010d0fb6bc8cdeccc on master.


Adding rolling maintenance

Fixes #363

@blueorangutan package

@davidjumani a Jenkins job has been kicked to build primate packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark:centos :heavy_check_mark:debian :heavy_check_mark:archive.
QA: http://primate-qa.cloudstack.cloud:8080/client/pr/424 (JID-2014)

@blueorangutan package

@davidjumani a Jenkins job has been kicked to build primate packages. I'll keep you posted as I make progress.

Ref added https://github.com/apache/cloudstack-primate/issues/162


If I can freely change the UI layout size by dragging with the mouse, I believe this kind of interaction would make me prefer it more.

https://github.com/Stability-AI/StableSwarmUI/assets/131615326/bc899020-f053-4481-91b4-57565803c962

You. Uh. Can do that. I have no idea what's going on with your clicks? Dragging those bars is the point of those bars, that's why they highlight and give you the lil draggable mouse icon thingy.
Is there something unusual about your browser, or are you accidentally holding down weird keys like control or something?


Recipe Conflict with Refined Relocation

Hey there is an recipe conflict between your two mods, relocator and iron construction block, i report it on both. :) https://github.com/Dynious/RefinedRelocation/issues/272

use minetweaker or other similar mods

already done but... if any of you can fix it in his mod it would be better :/ like that

im not changing it, it would be a pita to change every recipe conflict that comes up, this is not the first. it's what minetweaker is for.

well... and no i have ic2 and it's work fine.


README: Fix broken anaconda badge/link

Description
Update broken anaconda badge link, change
https://anaconda.org/conda-forge/teachopencadd/badges/installer/conda.svg
to
https://anaconda.org/conda-forge/teachopencadd/badges/downloads.svg
Status

[x] Ready to go

CI is passing for docs as was the purpose of this PR; notebook fails must be addressed in separate PRs.


Should there be a way to adjust the style of inlay hints in the README?

The default style of inlay hints may not be suitable for everyone.
It may be convenient to add custom css styles in LSP-rust-analyzer.sublime-settings to solve this issue.

Inlay hints in default style:

Inlay hints after adjusting the style:

The css code I use:
    body {{
        padding: 0;
        margin: 0 -1.4em -2.2em -1.2em;
        border: 0;
        font-size: 0.8em;
        position: relative;
        top: -0.82rem;
        line-height: 0.8em;
    }}

Related: https://github.com/sublimelsp/LSP-rust-analyzer/issues/19

Is it possible to actually toggle the inlay hints on or off? that's all I really want for now.

Looks at the options it provides.

Is it possible to actually toggle the inlay hints on or off? that's all I really want for now.

Looks at the options it provides.

Sorry but can you be specific which option?  I looked at LSP -> Settings and also lsp-rust-analyzer -> Settings and did not see anything about hints in either one.

Nevermind, I found the option rust-analyzer.inlayHints.enable


make plugin_dir() handle short plugin names properly

if a short plugin name such as "marvel" is passed instead of a full plugin name, the first element
of the name is returned. This allows calling plugin_dir() on the short plugin name as well, so that
we can stick with the same naming conventions even when passing an url
as discussed on IRC.

Jenkins standing by to test this. If you aren't a maintainer, you can ignore this comment. Someone with commit access, please review this and clear it for Jenkins to run; then  say 'jenkins, test it'.

Jenkins standing by to test this. If you aren't a maintainer, you can ignore this comment. Someone with commit access, please review this and clear it for Jenkins to run; then  say 'jenkins, test it'.

Hi @Xylakant I've been adding some more fixes lately which should solve all the situations.
Could you verify that the master branch works as expected for you if you have the time?
Thanks!


Bump tools service to 154

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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 41.565%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
26992

Relevant Lines:
58915

💛  - Coveralls

Please always :

Include a description of why you're updating the version
If other commits that aren't yours are included in the bump then also tag the owners of those commits so they're aware (in this case it's just loc stuff so it should be fine. But good to be in the habit of that regardless)


Size video

Verify the maximum size for videos and for documents
Actual Behavior
Steps to Reproduce the Problem

The maximum size should be 50GB has setted here: https://github.com/open-education-polito/fare-platform/blob/master/docker/nginx/conf.d/default.conf#L122


test: join server processes

Codecov Report
All modified lines are covered by tests :white_check_mark:

Comparison is base (12b4145) 87.54% compared to head (49d3593) 87.75%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #264      +/-   ##
==========================================
+ Coverage   87.54%   87.75%   +0.21%
==========================================
  Files          19       19
  Lines         923      923
==========================================
+ Hits          808      810       +2
+ Misses        115      113       -2

see 2 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


feat: improve how ddev describe or ddev st show exposed ports

This PR improves:

provides ports in a list, rather and on a CSV, as projects with a lot of ports doesn't displays nicely.
gives a clear distinction between privately exposed ports (namely InDocker and the Host ports.
Ports are sorted by the internal container ports

I've always been bothered by this. More often than not I want to clearly find what are the mappings of the local port to the remote ports. Also, onn some projects I exposed quite a bit of ports, and there are duplicate ports on the hosts
This is the second time I bring this up, couldn't find my previous issue though, but I hadn't worked on it back than.
On this project, for example, I exposed port 4000. As I have many ports I couldn't really tell  which host port was connected to container port 4000. I can find it with docker ps or some other inspection tools ,but it would be great if it was there and provided by ddev.

Hope this doesn't takes as much as ddev debug match-constraint 😄
Showing example of how it is displayed currently, vs the PR:
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Project: foo ~/Sites/bar/foo https://foo.ddev.site                                                                                │
│ Docker platform: orbstack                                                                                │
│ Router: traefik                                                                                │
├──────────┬──────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────────────────┤
│ SERVICE  │ STAT │ URL/PORT                                                                                │ INFO               │
├──────────┼──────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────┤
│ web      │ OK   │ https://foo.ddev.site                                                                                │ drupal10 PHP8.2    │
│          │      │ InDocker: web:30006,30007,30010,30013,30018,4000,80,30001,30003,30011,30014,30015,30020,30004,30009,30016,443,8025,30019,30000,30002,30005,30008,30012,30017                                                                                │ nginx-fpm          │
│          │      │ Host: <IP_ADDRESS>:32884,32884,32894,32894,32897,32897,32890,32890,32893,32893,32896,32896,32898,32898,32895,32895,32878,32878,32803,32879,32879,32881,32881,32882,32882,32887,32887,32888,32888,32891,32891,32892,32892,32899,32899,32880,32880,32883,32883,32885,32885,32886,32886,32889,32889,32804 │ docroot:'web'      │
│          │      │                                                                                │ Perf mode: mutagen │
│          │      │                                                                                │ NodeJS:18.18.2     │
├──────────┼──────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────┤
│ db       │ OK   │ InDocker: db:3306                                                                                │ mariadb:10.11      │
│          │      │ Host: <IP_ADDRESS>:32800                                                                                │ User/Pass: 'db/db' │
│          │      │                                                                                │ or 'root/root'     │
├──────────┼──────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────┤
│ Mailpit  │      │ Mailpit: https://foo.ddev.site:8026                                                                                │                    │
│          │      │ Launch: ddev mailpit                                                                                │                    │
├──────────┼──────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────┤
│ All URLs │      │ https://foo.ddev.site, https://*.foo.ddev.site,                                                                                │                    │
│          │      │ https://<IP_ADDRESS>:32804, http://foo.ddev.site,                                                                                │                    │
│          │      │ http://*.foo.ddev.site, http://<IP_ADDRESS>:32803                                                                                │                    │
└──────────┴──────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────┘

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Project: foo ~/Sites/bar/foo https://foo.ddev.site                                                       │
│ Docker platform: orbstack                                                                                │
│ Router: traefik                                                                                │
├──────────┬──────┬───────────────────────────────────────────────────────────────────┬────────────────────┤
│ SERVICE  │ STAT │ URL/PORT                                                          │ INFO               │
├──────────┼──────┼───────────────────────────────────────────────────────────────────┼────────────────────┤
│ web      │ OK   │ https://foo.ddev.site                                             │ drupal10 PHP8.2    │
│          │      │ InDocker:                                                         │ nginx-fpm          │
│          │      │   - web:8025                                                      │ docroot:'web'      │
│          │      │ Host:                                                             │ Perf mode: mutagen │
│          │      │   - <IP_ADDRESS>:32803->80                                           │ NodeJS:18.18.2     │
│          │      │   - <IP_ADDRESS>:32804->443                                          │                    │
│          │      │   - <IP_ADDRESS>:32878->4000                                         │                    │
│          │      │   - <IP_ADDRESS>:32879->30000                                        │                    │
│          │      │   - <IP_ADDRESS>:32880->30001                                        │                    │
│          │      │   - <IP_ADDRESS>:32881->30002                                        │                    │
│          │      │   - <IP_ADDRESS>:32882->30003                                        │                    │
│          │      │   - <IP_ADDRESS>:32883->30004                                        │                    │
│          │      │   - <IP_ADDRESS>:32884->30005                                        │                    │
│          │      │   - <IP_ADDRESS>:32885->30006                                        │                    │
│          │      │   - <IP_ADDRESS>:32886->30007                                        │                    │
│          │      │   - <IP_ADDRESS>:32887->30008                                        │                    │
│          │      │   - <IP_ADDRESS>:32888->30009                                        │                    │
│          │      │   - <IP_ADDRESS>:32889->30010                                        │                    │
│          │      │   - <IP_ADDRESS>:32890->30011                                        │                    │
│          │      │   - <IP_ADDRESS>:32891->30012                                        │                    │
│          │      │   - <IP_ADDRESS>:32892->30013                                        │                    │
│          │      │   - <IP_ADDRESS>:32893->30014                                        │                    │
│          │      │   - <IP_ADDRESS>:32894->30015                                        │                    │
│          │      │   - <IP_ADDRESS>:32895->30016                                        │                    │
│          │      │   - <IP_ADDRESS>:32896->30017                                        │                    │
│          │      │   - <IP_ADDRESS>:32897->30018                                        │                    │
│          │      │   - <IP_ADDRESS>:32898->30019                                        │                    │
│          │      │   - <IP_ADDRESS>:32899->30020                                        │                    │
├──────────┼──────┼───────────────────────────────────────────────────────────────────┼────────────────────┤
│ db       │ OK   │ InDocker: db                                                      │ mariadb:10.11      │
│          │      │ Host:                                                             │ User/Pass: 'db/db' │
│          │      │   - <IP_ADDRESS>:32800->3306                                         │ or 'root/root'     │
├──────────┼──────┼───────────────────────────────────────────────────────────────────┼────────────────────┤
│ Mailpit  │      │ Mailpit: https://foo.ddev.site:8026                               │                    │
│          │      │ Launch: ddev mailpit                                              │                    │
├──────────┼──────┼───────────────────────────────────────────────────────────────────┼────────────────────┤
│ All URLs │      │ https://foo.ddev.site, https://*.foo.ddev.site,                   │                    │
│          │      │ https://<IP_ADDRESS>:32804, http://foo.ddev.site,                    │                    │
│          │      │ http://*.foo.ddev.site, http://<IP_ADDRESS>:32803                    │                    │
└──────────┴──────┴───────────────────────────────────────────────────────────────────┴────────────────────┘

edited description after my latest commit

Could you please check test coverage?

What do you mean, adding test? All tests passed and this is just presentation logic.

Could you take a look at the "All URLs" and see if it might be possible to do something similar there? It's the exact same class of problem. Not trying to expand scope, but it does look like exactly the same problem. (The label is also ambigous, it's really just showing the primary http and https ports for the webserver.)

I don't mind, but what do you have in mind? It's not the same problem because as you said what it's showing is at least clear enough. If I were to suggest something it could be:

Remove it altogether as the main urls are shown on each section anyway.
Change it to something Summary, or even leave All URLs but show a list with only the https versions of the sites with the domains. I wonder how many use it without https and with <IP_ADDRESS>.

I was checking a bit at the logic and saw the alternatives to with and without router and with and without http, but I would just show either based on that same logic rather than showing all. Further more I think (haven't looked properly) that the url that is shown on the section will change depending on those factors already, so again, I wonder if All URLs is necessary.

What do you mean, adding test? All tests passed and this is just presentation logic.

See if TestCmdDescribe can be slightly improved to check this usage. Or consider it. I'm not insisting. "this is just presentation logic" -- well, all of ddev describe is presentation :)

I don't mind, but what do you have in mind? It's not the same problem because as you said what it's showing is at least clear enough. If I were to suggest something it could be:

Remove it altogether as the main urls are shown on each section anyway.
Change it to something Summary, or even leave All URLs but show a list with only the https versions of the sites with the domains. I wonder how many use it without https and with <IP_ADDRESS>.

The router logic is quite different, this info can't be removed, it is not covered in each section. The "All URLs" has both by-URL and by-IP URLs, and they're unrelated to the ones in the web section, because they show what the router is doing, and that's the normal situation.

The other great and obscure thing here is it makes that second column possibly shorter, resulting in less wrapping on smaller terminals.

Added test coverage

Could you take a look at the "All URLs" and see if it might be possible to do something similar there? It's the exact same class of problem. Not trying to expand scope, but it does look like exactly the same problem. (The label is also ambigous, it's really just showing the primary http and https ports for the webserver.)

I changed All URLs for Project URLs, found it less missleading.. but we can not do that. Regardless I would do any further work on that, if any, on a separate issue.
@rfay question on testings.. The tests pass locally if I run make testcmd TESTARGS="-run TestCmdDescribe"
However, on Go Land it fails and I noticed the output is the previous version, like it's not using the built ddev but rather my local one?

The tests in the cmd directory most often use the ddev in the path, yours is probably not this one. Docs have this case,
https://ddev.readthedocs.io/en/stable/developers/building-contributing/#testing

To run a test (in the cmd package) against a individually-compiled DDEV binary, set the DDEV_BINARY_FULLPATH environment variable, for example DDEV_BINARY_FULLPATH=$PWD/.gotmp/bin/linux_amd64/ddev make testcmd.

Thanks for your work on this!
My normal working situation is I have a symlink in /usr/local/bin/ddev that normally points to my locally built version, but I use a script to point it to the homebrew version. So I'm almost always using the locally built version.

The trailing comma I can fix. The other comment not sure what you want me
to do with it
Reply might be shorter than usual / Respuesta más resumida que de costumbre
Enviado desde el celular / Sent from Mobile
On Sat, 9 Nov 2024 at 17:53 Randy Fay @.***> wrote:

@.**** requested changes on this pull request.
Just took a quick look, and I like it, but changing the entire format of
the ddev describe -j host_ports is a breaking change I would think. I
know it wouldn't affect many people, but we try not to do that. I don't
think it's parseable either.
"host_ports": "33025->80, 33024->443, 5332->5222, 5555->5777, 32780->12445",
—
Reply to this email directly, view it on GitHub
https://github.com/ddev/ddev/pull/6699#pullrequestreview-2425583180, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFFP53RKI4KHNTFLSSBD5LZ7ZY53AVCNFSM6AAAAABRLOJVS2VHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDIMRVGU4DGMJYGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Ah, there's no trailing comma, you just copy over a portion of it, right? What did you mean with it's not parseable?

Tests pass!

Sorry, I wasn't clear. This completely changes host_ports from a list of ports to a list of mappings. That's the problem, not trailing commas.

I understand..  well, your call here. I can go back to the previous version only for json output, or I can add a new element, host_ports_mapping and print that instead of that on the non json part.

        "host_ports": "32803,32804,32878,32879,32880,32881,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32895,32896,32897,32898,32899",
        "host_ports_mapping": "32803->80,32804->443,32878->4000,32879->30000,32880->30001,32881->30002,32882->30003,32883->30004,32884->30005,32885->30006,32886->30007,32887->30008,32888->30009,32889->30010,32890->30011,32891->30012,32892->30013,32893->30014,32894->30015,32895->30016,32896->30017,32897->30018,32898->30019,32899->30020",

host_ports_mapping is a great idea, but it should probably be a json map instead of plain text "->"

I started working on this, is this oK:
        "host_ports_mapping": [
          {
            "exposed_port": "80",
            "host_port": "32803"
          },
          {
            "exposed_port": "443",
            "host_port": "32804"
          },
          {
            "exposed_port": "4000",
            "host_port": "32878"
          },
          {
            "exposed_port": "30000",
            "host_port": "32879"
          },

And also, something I should mention that maybe you missed and just to make sure you are OK with it is that I also changed the content of exposed_ports.. previously it included the ones that are also exported to the host, now I am only shoing those that are not "only" exposed in the container. A mapped port to the port is always exposed in the contianer as well obviously. That was my reasoning. So one option is that you are ok with it and we leave it like that, or I can leave exposed ports for json the same way as before and do some extra logic on the table to remove them.

I definitely like that for host_ports_mapping. Will look closely when I test at exposed_ports.

Worked on this

well, not sure why the static validation is failing. seems something completely out of this PR.

I think you don't have the latest golangci-lint, you'll probably get the same results then. Newest is 1.62.0. I had 1.61.0. Annoyingly they keep "improving" its behavior over time :)

Rebased to fix the golangci-lint check.

Something's wrong here. It shows only port web:8025 for inDocker, should be 80 (primary), 443, 8025.
$ ddev describe
┌───────────────────────────────────────────────────────────────────────────────────────┐
│ Project: d11 ~/workspace/d11 https://d11.ddev.site                                    │
│ Docker platform: orbstack                                                             │
│ Router: traefik                                                                       │
├──────────────┬──────┬────────────────────────────────────────────┬────────────────────┤
│ SERVICE      │ STAT │ URL/PORT                                   │ INFO               │
├──────────────┼──────┼────────────────────────────────────────────┼────────────────────┤
│ web          │ OK   │ https://d11.ddev.site                      │ drupal PHP8.3      │
│              │      │ InDocker:                                  │ apache-fpm         │
│              │      │   - web:8025                               │ docroot:'web'      │
│              │      │ Host:                                      │ Perf mode: mutagen │
│              │      │   - <IP_ADDRESS>:32768->80                    │ NodeJS:20          │
│              │      │   - <IP_ADDRESS>:32769->443                   │                    │
├──────────────┼──────┼────────────────────────────────────────────┼────────────────────┤
│ db           │ OK   │ InDocker: db                               │ mariadb:10.11      │
│              │      │ Host:                                      │ User/Pass: 'db/db' │
│              │      │   - <IP_ADDRESS>:32770->3306                  │ or 'root/root'     │
├──────────────┼──────┼────────────────────────────────────────────┼────────────────────┤
│ Mailpit      │      │ Mailpit: https://d11.ddev.site:8026        │                    │
│              │      │ Launch: ddev mailpit                       │                    │
├──────────────┼──────┼────────────────────────────────────────────┼────────────────────┤
│ Project URLs │      │ https://d11.ddev.site,                     │                    │
│              │      │ https://<IP_ADDRESS>:32769,                   │                    │
│              │      │ http://d11.ddev.site,                      │                    │
│              │      │ http://<IP_ADDRESS>:32768                     │                    │
└──────────────┴──────┴────────────────────────────────────────────┴────────────────────┘

It's not "wrong" as in it's how I intended it.
This is how docker ps shows the ports:
8025/tcp, <IP_ADDRESS>:33016->80/tcp, <IP_ADDRESS>:33017->443/tcp

I basically did the same thing. On the InDocker part, you only see the ports that are "exclusively" exposed in docker (expose in docker compose lingo), and on the host you see all ports mapping from host to container (ports in docker compose lingo). There you have 80 and 443. For me, showing 80 and 443 on the InDocker part was completely redundant.

@rfay you'll obviously have the last call here, but I would like to insist in something like what I am suggesting because I ddev st a lot and adding back those ports to in decker would get me back to a broken table when there are a lot of ports or a very long table if I do it line by line and I duplicate things
So what about this, for the basic example (only a bare ddev and only showing the URL/PORT column of the web service):
Instead of:
https://a.ddev.site
InDocker: web:443,80,8025
Host: <IP_ADDRESS>:33042,33041

what about:
https://a.ddev.site
InDocker -> Host:
  - web:80 -> <IP_ADDRESS>:33041
  - web:443 -> <IP_ADDRESS>:33042
  - web:8025

Thus, combining the two, giving priority to what's on the container, but making it very clear which host port is mapped to it.
🤞🏻 you are OK with this.

Or:
InDocker <- Host:
  - web:80 <- <IP_ADDRESS>:33041
  - web:443 <- <IP_ADDRESS>:33042
  - web:8025

Oh, those are improving things significantly! I like
https://a.ddev.site
InDocker -> Host:
  - web:80 -> <IP_ADDRESS>:33041
  - web:443 -> <IP_ADDRESS>:33042
  - web:8025

quite a lot. And now it's not just providing information, it's providing context. I can go with this. Try not to break the json version.
Now if we could explain to people what's going on with the router too. Not sure they'll ever understand. (out of scope)

You prefer -> to <-? The latter is more semantically correct :)
json will remain the same as before (I need to fix this)

You prefer -> to <-? The latter is more semantically correct :)

Well, that depends on which way you're looking at the traffic!
- web:80 -> <IP_ADDRESS>:33041 seems to imply to me that port 80 is connected to 33041. Also, people are annoyed by backward arrows :)

I am curious on how many people use ddev st -j, do you have any stats on that?

I am curious on how many people use ddev st -j, do you have any stats on that?

No stats, I imagine it's few. Mostly probably wrapped in scripts that determine things about a project. There have been a few of those tossed around over the years.

And if it matters, I noticed that host_ports are not sorted:

it mattered.. fixed that and added testing for being sort.

rebased

@stasadev mentioned in our meeting today how absolutely thrilled he is with this ❤


table expected, got user data

I'm on latest daily nvim build. And latest cmp. O get this error in dap-repl:

Any ideas how to fix it?

My bad I thought I saw  cmp-dap in the error. Closing.

After all I think this may by caused by
enabled = function ()
    return vim.api.nvim_buf_get_option(0, "buftype") ~= "prompt"
      or require("cmp_dap").is_dap_buffer()
  end,

Which enabled cmp in repl, which gives now error. Is there any way to disable all sources, except cmp-dap for  dap-repl?

Same as described in #1. This is not an error by cmp-dap but cmp-buffer. As far as I'm aware a user can't disable certain sources per buffer. Happy to be corrected though :smile:
I'd suggest opening a bug report there so that prompt buffers can be handled properly or the source can be disabled for them

Ok.  I think I saw people requesting similar feature for cmp-dap  (ability to limit certain sources per filetype).  Closing this then.

you could setup cmp-dap just for dap-repl using filetype
require("cmp").setup.filetype("dap-repl", {
    sources = {
        { name = "dap" }
    }
})

Thanks. It seem it works!


Add orchestrator to control flow.

I believe they will migrate to undertaker in 4.0, because orchestrator is not user-friendly.

Yup

A ok. Ty


Defining related fields on an interface throws a type mismatch error

Describe the Bug
When defining an interface with that contains any related field, an error is thrown where the type is identified to be a DjangoModelType but is (correctly) a Strawberry type.
In the example below, we are passing in CardNode (a strawberry type) as the related field, but error thinks it is a DjangoModelType.
Code:
@strawberry.interface
class MyInterface(MyBaseClass):
  card: "CardNode"

@strawberry.django.type(Card)
class CardNode:
  name: auto

Error:
❌ Interface field MyInterface.card expects type CardNode! but MyInterface.card is type DjangoModelType.```
## System Information

 - Operating system: macOS
 - Strawberry version (if applicable): 0.133.5
 - Strawberry Django version: 0.5.3

## Additional Context
Strawberry discord thread: https://discordapp.com/channels/689806334337482765/1029471127963172894

Hi @fireteam99 ,
Is MyBaseClass your django base model?
What I usually do is to have an abstract model mixin and define an interface out of it with a code like this:
class SomeModelMixin(models.Model):
    class Meta:
        abstract = True

    some_field = models.CharField(...)

@strawberry.django.type(is_interface=True)
class SomeModelInterface:
    some_field: strawberry.auto

@strawberry.django.type(ConcreteModel)
class ConcreteModelType(SomeModelInterface):
    ...

I'm using strawberry-django-plus's @interface for that, which is basically a shortcut. I don't remember if I had any special handling for it, so if the example above doesn't work we can probably try to port the code that handles it to this repo :)

Hi @bellini666, MyBaseClass is a django graphene type that maps to a django base model. The MyInterface  interface I am try to create maps to an abstract django model which inherits from the MyBaseClass model.
I tried your suggestion with the is_interface arg but got a different error:
@strawberry.interface
class MyInterface(AbstractDjangoModel, is_interface=True):
  card: "CardNode"

@strawberry.django.type(Card)
class CardNode:
  name: auto

Error:
AttributeError: 'NoneType' object has no attribute 'expandtabs'

Hmmm so when I tried @strawberry.django.type(is_interface=True) it complained: TypeError: type() missing 1 required positional argument: 'model'
But when I tried to pass my abstract Django model as the type I got the expandtabs error again:
AttributeError: 'NoneType' object has no attribute 'expandtabs'

@fireteam99 sorry, in a hurry I wrote it wrong. The model should be passed as the first argument to the strawberry.django.type function. I edited my response with the correct solution

@bellini666 ah gotcha. I tried that but I'm still getting the expandtabs error...

Hi @fireteam99 ,
Its been a while, and since then strawberry django went through a major refactor with a lot of fixes and improvements. Does this issue still happen?

@bellini666 thanks for the heads up! Will update and report back

Hey @bellini666, I'm happy to report that this issue appears to be fixed! I tested on versions:
strawberry-graphql = "==0.199.2"
strawberry-graphql-django = "==0.16.0"


Should avoid publishing an artifact if the task that created it was skipped

In the process of making Ivy publish compatible with the configuration cache, we saw this old issue come back to life, or at least that regression test that we have for it started to fail. The test was temporarily disabled. The present issue is meant so we investigate and fix it again.

I wouldn't make publishing lenient, as that opens the door to all kinds of silent and confusing behavour when things are misconfigured. Instead, I would think about making publishing stricter (ie fail if any registered artifact is not present) and instead look at ways to give people more control over overriding the conventions.

It looks like this was reported in haste, these commits by @bamboo addressed the regression less than an hour after this was reported:

https://github.com/gradle/gradle/commit/c98c782ca1263550fde851061a657301d65fd7ac
https://github.com/gradle/gradle/commit/8f50c5d7f87dde91ed9802f129236a37df6aa248


Send a sessionToken back on /users/me.

Looks like we were not sending a token back on /users/me, but all SDKs expect that we do - so send it.
No security implications, since the token was already sent to us and we validated it.
Fixes #624

Another great candidate for UsersController :grin:

LGTM


[CT-106] [Bug] Docker image build process is broken

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
On building I get:
ERROR: Could not find a version that satisfies the requirement dbt-postgres (unavailable) (from versions: 0.13.0a1, 0.13.0a2, 0.13.0rc1, 0.13.0, 0.13.1a1, 0.13.1a2, 0.13.1, 0.14.0a1, 0.14.0a2, 0.14.0rc1, 0.14.0, 0.14.1a1, 0.14.1rc1, 0.14.1rc2, 0.14.1, 0.14.2, 0.14.3rc1, 0.14.3, 0.14.4, 0.15.0b1, 0.15.0b2, 0.15.0b3, 0.15.0rc1, 0.15.0rc2, 0.15.0, 0.15.1rc1, 0.15.1rc2, 0.15.1, 0.15.2, 0.15.3rc1, 0.15.3, 0.16.0b1, 0.16.0b2, 0.16.0b3, 0.16.0rc1, 0.16.0rc2, 0.16.0rc3, 0.16.0rc4, 0.16.0, 0.16.1rc1, 0.16.1, 0.17.0b1, 0.17.0b2, 0.17.0rc1, 0.17.0rc2, 0.17.0rc3, 0.17.0rc4, 0.17.0, 0.17.1rc1, 0.17.1rc2, 0.17.1rc3, 0.17.1rc4, 0.17.1, 0.17.2b1, 0.17.2rc1, 0.17.2, 0.18.0b1, 0.18.0b2, 0.18.0rc1, 0.18.0rc2, 0.18.0, 0.18.1b1, 0.18.1b2, 0.18.1b3, 0.18.1rc1, 0.18.1, 0.18.2rc1, 0.18.2, 0.19.0b1, 0.19.0rc1, 0.19.0rc2, 0.19.0rc3, 0.19.0, 0.19.1b2, 0.19.1rc1, 0.19.1rc2, 0.19.1, 0.19.2rc1, 0.19.2rc2, 0.19.2, 0.20.0b1, 0.20.0rc1, 0.20.0rc2, 0.20.0, 0.20.1rc1, 0.20.1, 0.20.2rc1, 0.20.2rc2, 0.20.2, 0.21.0b1, 0.21.0b2, 0.21.0rc1, 0.21.0rc2, 0.21.0, 0.21.1rc1, 0.21.1rc2, 0.21.1, 1.0.0b1, 1.0.0b2, 1.0.0rc1, 1.0.0rc2, 1.0.0rc3, 1.0.0, 1.0.1rc1, 1.0.1)
ERROR: No matching distribution found for dbt-postgres (unavailable)

Expected Behavior
I'd expect to have docker image
Steps To Reproduce

Clone fresh git repo
docker build -t tmp -f docker/Dockerfile

Relevant log output
[3/9] STEP 2/2: RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_postgres_ref}#egg=dbt-postgres&subdirectory=plugins/postgres"
Collecting dbt-postgres
  Cloning https://github.com/dbt-labs/ to /tmp/pip-install-epfngjko/dbt-postgres_8d7eb22fbdbe4b06bf3a20348f72b0c7
  Running command git clone --filter=blob:none -q https://github.com/dbt-labs/ /tmp/pip-install-epfngjko/dbt-postgres_8d7eb22fbdbe4b06bf3a20348f72b0c7
  remote: Not Found
  fatal: repository 'https://github.com/dbt-labs/' not found
WARNING: Discarding git+https://github.com/dbt-labs/#egg=dbt-postgres&subdirectory=plugins/postgres. Command errored out with exit status 128: git clone --filter=blob:none -q https://github.com/dbt-labs/ /tmp/pip-install-epfngjko/dbt-postgres_8d7eb22fbdbe4b06bf3a20348f72b0c7 Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement dbt-postgres (unavailable) (from versions: 0.13.0a1, 0.13.0a2, 0.13.0rc1, 0.13.0, 0.13.1a1, 0.13.1a2, 0.13.1, 0.14.0a1, 0.14.0a2, 0.14.0rc1, 0.14.0, 0.14.1a1, 0.14.1rc1, 0.14.1rc2, 0.14.1, 0.14.2, 0.14.3rc1, 0.14.3, 0.14.4, 0.15.0b1, 0.15.0b2, 0.15.0b3, 0.15.0rc1, 0.15.0rc2, 0.15.0, 0.15.1rc1, 0.15.1rc2, 0.15.1, 0.15.2, 0.15.3rc1, 0.15.3, 0.16.0b1, 0.16.0b2, 0.16.0b3, 0.16.0rc1, 0.16.0rc2, 0.16.0rc3, 0.16.0rc4, 0.16.0, 0.16.1rc1, 0.16.1, 0.17.0b1, 0.17.0b2, 0.17.0rc1, 0.17.0rc2, 0.17.0rc3, 0.17.0rc4, 0.17.0, 0.17.1rc1, 0.17.1rc2, 0.17.1rc3, 0.17.1rc4, 0.17.1, 0.17.2b1, 0.17.2rc1, 0.17.2, 0.18.0b1, 0.18.0b2, 0.18.0rc1, 0.18.0rc2, 0.18.0, 0.18.1b1, 0.18.1b2, 0.18.1b3, 0.18.1rc1, 0.18.1, 0.18.2rc1, 0.18.2, 0.19.0b1, 0.19.0rc1, 0.19.0rc2, 0.19.0rc3, 0.19.0, 0.19.1b2, 0.19.1rc1, 0.19.1rc2, 0.19.1, 0.19.2rc1, 0.19.2rc2, 0.19.2, 0.20.0b1, 0.20.0rc1, 0.20.0rc2, 0.20.0, 0.20.1rc1, 0.20.1, 0.20.2rc1, 0.20.2rc2, 0.20.2, 0.21.0b1, 0.21.0b2, 0.21.0rc1, 0.21.0rc2, 0.21.0, 0.21.1rc1, 0.21.1rc2, 0.21.1, 1.0.0b1, 1.0.0b2, 1.0.0rc1, 1.0.0rc2, 1.0.0rc3, 1.0.0, 1.0.1rc1, 1.0.1)
ERROR: No matching distribution found for dbt-postgres (unavailable)
error building at STEP "RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_postgres_ref}#egg=dbt-postgres&subdirectory=plugins/postgres"": error while running runtime: exit status 1

### Environment

```markdown
- OS: linux
- Python: -
- dbt: main

What database are you using dbt with?
No response
Additional Context
No response

Hi @korjavin , sorry you're having some issues with the docker image.
Here's a few things that might help sort this out.

The command provided docker build -t tmp -f docker/Dockerfile isn't a valid docker command because it lacks a path.  If you want to build the full image you're probably looking for something like this: docker build -t <tag_name> path/to/folder/that/contains/the/Dockerfile. The -f flag is meant to be used when you want to break the Dockerfiles-must-be-named-Dockerfile naming convention.

While I wasn't able to reproduce your error, the log message makes it look as if the build arg dbt_postgres_ref has been somehow unset or never set in the first place.  That's pretty odd given that it's hard coded directly into the dockerfile.  Is there by chance some way that could have been broken in your environment?

Hi @iknox-fa, I experienced the same issue as described above and it seems logical to me.
As far as I am aware, ARGs are only persisted within the scope of the preceding FROM statement, unless an ARG is referenced in a FROM line (i.e. version number). See also this.
https://github.com/dbt-labs/dbt-core/blob/aafa1c7f473988bb1771b7cf5b120efab44a8144/docker/Dockerfile#L59
From this line onwards, all ARGs declared above are out of scope again.
This works for me:
##
# dbt-core
##
FROM base as dbt-core
ARG<EMAIL_ADDRESS>
RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_core_ref}#egg=dbt-core&subdirectory=core"

##
# dbt-snowflake
##
FROM base as dbt-snowflake
ARG<EMAIL_ADDRESS>
RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_snowflake_ref}#egg=dbt-snowflake"```

+1. @iknox-fa, what tool are you using for docker builds (e.g. Engine, Desktop*, podman, etc)?
I'm reproducing this issue on Docker Engine 20.10.12.
From the ref [0]:

An ARG instruction goes out of scope at the end of the build stage where it was defined. To use an arg in multiple stages, each stage must include the ARG instruction.

Same as with @thenaturalist, just moving the ARG lines into their respective stages worked for me, since the base stage wasn't using those.
[0] - https://docs.docker.com/engine/reference/builder/#scope

@Khouderchah-Alex Thanks for chiming in and sorry for the delayed reply.  I've been doing all of my testing in Docker Desktop v 20.10.8 which should be functionally almost identical to Docker Engine 20.10.12.
Can you provide the exact docker build command and whatever pertinent env vars you're using that causes the error?

No special vars, just a plain docker build -t $TAG ..
Given the documentation about ARG scoping, I'm tempted to say the bug is with Docker Desktop rather than Engine, but I'm not familiar enough with the project to say for sure.

@korjavin Can you try the following? docker build -t $TAG --target dbt-all .  The docker file was only intended to be used in conjunction with a target specified.  This is documented, but sadly the PR for said docs has been held up and it's on the site yet.
Additionally, I've tested this in linux, windows, and macos and I still can't reproduce it.. even doing it without a tag creates a valid image (although it forces docker to do a TON of extra work).

Trying:
$git clone ...
$cd <root>
$docker build -t tmp --target dbt-all ./docker/

 <skip a lot>

 Step 19/39 : RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_core_ref}#egg=dbt-core&subdirectory=core"
 ---> Running in d384693f9402
Collecting dbt-core
  Cloning https://github.com/dbt-labs/ to /tmp/pip-install-h42yrkxl/dbt-core_fa3e85a74e6b4072ba794ea699793158
  Running command git clone --filter=blob:none --quiet https://github.com/dbt-labs/ /tmp/pip-install-h42yrkxl/dbt-core_fa3e85a74e6b4072ba794ea699793158
  remote: Not Found
  fatal: repository 'https://github.com/dbt-labs/' not found
  error: subprocess-exited-with-error

  × git clone --filter=blob:none --quiet https://github.com/dbt-labs/ /tmp/pip-install-h42yrkxl/dbt-core_fa3e85a74e6b4072ba794ea699793158 did not run successfully.
  │ exit code: 128
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× git clone --filter=blob:none --quiet https://github.com/dbt-labs/ /tmp/pip-install-h42yrkxl/dbt-core_fa3e85a74e6b4072ba794ea699793158 did not run successfully.
│ exit code: 128
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

sigh. Well, I'm out of ideas here.  I'll see if I can wrangle some better docker types to help out tomorrow.

I think I found the error. Is Dockerfile config. Due Docker create a new build stage, isn't able to keep the ARG variables after a FROM statement. So I've done is declare every variable again before after every RUN statement. Dockerfile as below:
`##
Generic dockerfile for dbt image building.
See README for operational details

Top level build args
ARG build_for=linux/amd64

base image (abstract)

FROM --platform=$build_for python:3.10.3-slim-bullseye as base
N.B. The refs updated automagically every release via bumpversion
N.B. dbt-postgres is currently found in the core codebase so a value of dbt-core@<some_version> is correct
ARG<EMAIL_ADDRESS>ARG<EMAIL_ADDRESS>ARG<EMAIL_ADDRESS>ARG<EMAIL_ADDRESS>ARG<EMAIL_ADDRESS>ARG<EMAIL_ADDRESS>special case args
ARG dbt_spark_version=all
ARG dbt_third_party
System setup
RUN apt-get update
&& apt-get dist-upgrade -y
&& apt-get install -y --no-install-recommends
git
ssh-client
software-properties-common
make
build-essential
ca-certificates
libpq-dev
&& apt-get clean
&& rm -rf
/var/lib/apt/lists/*
/tmp/*
/var/tmp/*
Env vars
ENV PYTHONIOENCODING=utf-8
ENV LANG=C.UTF-8
Update python
RUN python -m pip install --upgrade pip setuptools wheel --no-cache-dir
Set docker basics
WORKDIR /usr/app/dbt/
VOLUME /usr/app
ENTRYPOINT ["dbt"]

dbt-core

FROM base as dbt-core
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_core_ref}#egg=dbt-core&subdirectory=core"

dbt-postgres
##a
FROM base as dbt-postgres
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_postgres_ref}#egg=dbt-postgres&subdirectory=plugins/postgres"

dbt-redshift

FROM base as dbt-redshift
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_redshift_ref}#egg=dbt-redshift"

dbt-bigquery

FROM base as dbt-bigquery
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_bigquery_ref}#egg=dbt-bigquery"

dbt-snowflake

FROM base as dbt-snowflake
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_snowflake_ref}#egg=dbt-snowflake"

dbt-spark

FROM base as dbt-spark
RUN apt-get update
&& apt-get dist-upgrade -y
&& apt-get install -y --no-install-recommends
python-dev
libsasl2-dev
gcc
unixodbc-dev
&& apt-get clean
&& rm -rf
/var/lib/apt/lists/*
/tmp/*
/var/tmp/*
ARG<EMAIL_ADDRESS>ARG dbt_spark_version=all
RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_spark_ref}#egg=dbt-spark[${dbt_spark_version}]"

dbt-third-party
##a
FROM dbt-core as dbt-third-party
ARG dbt_third_party
RUN python -m pip install --no-cache-dir "${dbt_third_party}"

dbt-all

FROM base as dbt-all
RUN apt-get update
&& apt-get dist-upgrade -y
&& apt-get install -y --no-install-recommends
python-dev
libsasl2-dev
gcc
unixodbc-dev
&& apt-get clean
&& rm -rf
/var/lib/apt/lists/*
/tmp/*
/var/tmp/*
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache "git+https://github.com/dbt-labs/${dbt_redshift_ref}#egg=dbt-redshift"
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache "git+https://github.com/dbt-labs/${dbt_bigquery_ref}#egg=dbt-bigquery"
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache "git+https://github.com/dbt-labs/${dbt_snowflake_ref}#egg=dbt-snowflake"
ARG<EMAIL_ADDRESS>ARG dbt_spark_version=all
RUN python -m pip install --no-cache "git+https://github.com/dbt-labs/${dbt_spark_ref}#egg=dbt-spark[${dbt_spark_version}]"
ARG<EMAIL_ADDRESS>RUN python -m pip install --no-cache "git+https://github.com/dbt-labs/${dbt_postgres_ref}#egg=dbt-postgres&subdirectory=plugins/postgres"
`

I had run into the same issue.
I guess @iknox-fa has "BuildKit" enabled, and that allows extra feature in Dockerfile, like reusing ARG across multiple stages, skipping not-required stages.
I have a fix to Dockerfile, but I don't want to sign CLA, so I post it here.

Move the "base" image FROM statement after ARG dbt_third_party.
Insert ARG dbt_<component>_ref before each RUN statement referencing that argument.
Insert all seven ARG dbt_<component>_ref in "dbt-all" target.
Move dbt-third-party target to the end of Dockerfile, so it won't be called unless specified in the command line.

Note: an "ARG" after second FROM without values will get the default value, see reference 1.
The test.sh also need a fix to work with the latest Dockerfile.

Either bump the version to latest 1.3.0b1
or remove those version specific tests.

With the fixes above, this Dockerfile will work with both docker and podman, BuildKit(env variable DOCKER_BUILDKIT=1) is no longer needed.
References:

Understand how ARG and FROM interact, see "An ARG declared before a FROM is outside of a build stage, so it can’t be used in any instruction after a FROM. To use the default value of an ARG declared before the first FROM use an ARG instruction without a value inside of a build stage"
Containerfile(5) man page, see "Note that a second FROM in a Containerfile sets the values associated with an Arg variable to nil and they must be reset if they are to be used later in the Containerfile"
What is Podman? Podman is a daemonless, open source, Linux native tool designed to make it easy to find, run, build, share and deploy applications using Open Containers Initiative (OCI) Containers and Container Images.

@iknox-fa cc @iknox any update on this?
I think the issue has been scoped out, the root cause found.
Could either a) the Dockerfile be updated or b) the Docs be ammended to make it clear that Buildkit needs to be enabled?

Hi @iknox-fa, I experienced the same issue as described above and it seems logical to me.
As far as I am aware, ARGs are only persisted within the scope of the preceding FROM statement, unless an ARG is referenced in a FROM line (i.e. version number). See also this.
https://github.com/dbt-labs/dbt-core/blob/aafa1c7f473988bb1771b7cf5b120efab44a8144/docker/Dockerfile#L59
From this line onwards, all ARGs declared above are out of scope again.
This works for me:
##
# dbt-core
##
FROM base as dbt-core
ARG<EMAIL_ADDRESS>
RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_core_ref}#egg=dbt-core&subdirectory=core"

##
# dbt-snowflake
##
FROM base as dbt-snowflake
ARG<EMAIL_ADDRESS>
RUN python -m pip install --no-cache-dir "git+https://github.com/dbt-labs/${dbt_snowflake_ref}#egg=dbt-snowflake"```

Hello,
I had the same issue yesterday using your Dockerfile structure.
I have resolved the issue using the solution provided by @thenaturalist (moving arguments after the "FROM base" definition line)
Regards

I have a PR to fix this issue https://github.com/dbt-labs/dbt-core/pull/9590


Appstudio update test-custom-default-branch-rmfu

Pipelines as Code configuration proposal
To start the PipelineRun, add a new comment with content /ok-to-test
For more detailed information about running a PipelineRun, please refer to Pipelines as Code documentation Running the PipelineRun
To customize the proposed PipelineRuns after merge, please refer to Build Pipeline customization

Pipelines as Code CI has failed.There was an error creating the PipelineRun: test-simple-build-uqzm-on-pull-request-
creating pipelinerun test-simple-build-uqzm-on-pull-request- in namespace build-e2e-mkhr-tenant has failed.
Tekton Controller has reported this error: the namespace of the provided object does not match the namespace sent on the request

Pipelines as Code CI has failed.There was an error creating the PipelineRun: test-simple-build-lqle-on-pull-request-
creating pipelinerun test-simple-build-lqle-on-pull-request- in namespace build-e2e-mkhr-tenant has failed.
Tekton Controller has reported this error: the namespace of the provided object does not match the namespace sent on the request

Pipelines as Code CI has failed.There was an error creating the PipelineRun: test-annotations-gcoj-on-pull-request-
creating pipelinerun test-annotations-gcoj-on-pull-request- in namespace build-e2e-mkhr-tenant has failed.
Tekton Controller has reported this error: the namespace of the provided object does not match the namespace sent on the request

Pipelines as Code CI has failed.There was an error creating the PipelineRun: test-annotations-dtnt-on-pull-request-
creating pipelinerun test-annotations-dtnt-on-pull-request- in namespace build-e2e-mkhr-tenant has failed.
Tekton Controller has reported this error: the namespace of the provided object does not match the namespace sent on the request

Pipelines as Code CI has failed.There was an error creating the PipelineRun: test-simple-build-nyrh-on-pull-request-
creating pipelinerun test-simple-build-nyrh-on-pull-request- in namespace build-e2e-mkhr-tenant has failed.
Tekton Controller has reported this error: the namespace of the provided object does not match the namespace sent on the request

Pipelines as Code CI has failed.There was an error creating the PipelineRun: test-simple-build-imul-on-pull-request-
creating pipelinerun test-simple-build-imul-on-pull-request- in namespace build-e2e-mkhr-tenant has failed.
Tekton Controller has reported this error: the namespace of the provided object does not match the namespace sent on the request


Add godotandroid to the list of modules

Add godotandroid modules to the list of godot engine modules.
It has been tested with godot engine 2.1.5, but it should work properly with godot engine 3

I still think it would be a good addition, it was just missed by @Calinou and I.

I'm not sure if it should be added if it only works with Godot 2.1. Most users are using currently 3.1, and I've been meaning to remove 2.1-only projects from the list.

I';m gonna open it later once the module ported to 3.1


Adding ChefSpec matchers for plist_file LWRP

This is a ChefSpec matcher which is usually used by another cookbook dependent on this one for an LWRP to test that LWRP without stepping into this cookbook's actual LWRP code.
The purpose is so unit tests really are only testing the "unit" of code (the cookbook) that they reside in.  While integration tests can test the actual result of the cookbook when run on a test virtual machine.
This is so other cookbooks can simply test that they define a plist_file with some state, and then ChefSpec can match against that defined resource & action.  So, as long as the unit tests within this cookbook work to test & actually step into the LWRP to exercise it's code, then other cookbooks can just simply trust this one to self test and perform its responsibility appropriately.
For example, a cookbook might define & test it's usage of plist_file like this:
example_cookbook/recipes/edit_plist.rb:
example_plist_file = Pathname.new("#{node['etc']['passwd'][node['current_user']]}/Library/Preferences/plist_file_example.plist")

plist_file example_plist_file.basename do
  file example_plist_file
  push "test1", "a", 1
  push "test1", "b", {:c => 'foo'}
  owner node['current_user']
  mode "0600"
  action :update
end

spec/spec_helper.rb:
require 'chefspec'
require 'chefspec/berkshelf'

## Gets rid of const redefinition warnings
def create_singleton_struct name, fields
  if Struct::const_defined? name
    Struct.const_get name
  else
    Struct.new name, *fields
  end
end

at_exit { ChefSpec::Coverage.report! }

example_cookbook/spec/unit/recipes/edit_plist_spec.rb:
require 'spec_helper'

describe "example_cookbook::edit_plist" do
  let(:chef_run) {
    klass = ChefSpec.constants.include?(:SoloRunner) ? ChefSpec::SoloRunner : ChefSpec::Runner
    klass.new do |node|
      create_singleton_struct "EtcPasswd", [ :name, :passwd, :uid, :gid, :gecos, :dir, :shell, :change, :uclass, :expire ]
      node.set['etc']['passwd']['brubble'] = Struct::EtcPasswd.new('brubble', '********', 501, 20, 'Barney Rubble', '/Users/brubble', '/bin/bash', 0, '', 0)
      node.set['current_user'] = 'brubble'
    end.converge(described_recipe)
  }

  it "updates info into plist file" do
    expect(chef_run).to update_plist_file('plist_file_example.plist')
  end
end

I suppose with newer versions of ChefSpec, this change is no longer needed, as it will usually auto-create LWRP matchers.


Changes in language and code visual

This pull request addresses improvements in the code base by refining the language used across comments and documentation to enhance clarity. Additionally, I have made visual adjustments to the code formatting for better readability and consistency. These changes ensure that both developers and users can navigate the project more easily while maintaining code standards.

Updated variable names for better understanding.
Improved comment descriptions for clarity.
Reformatted sections of code to align with the coding style guide.
Please review the changes and let me know if further adjustments are needed.

http://www.askpython.com/python-modules/what-does-dot-mean-in-python-import

I've already deleted the unnecessary files.


Image Gallery

Image Gallery
I want to create an image gallery template, for the purpose of Hactoberfest. Please assign it.
Thank you.

Image Gallery I want to create an image gallery template, for the purpose of Hactoberfest. Please assign it. Thank you.

Please add the screenshot of the gallery template , then you are good to go

@Susaksham

Do you want open each image on full page or I can open below these images

Do you want open each image on full page or I can open below these images

Anything you want guys then send i video of the app

@Programming-School-Pro-Coding When i click on it will opens below

Is it okay or do want to open it new tab

No, It's Okay

Please add a hactoberfest label.

#94 fix few issues in the PR @hamzailyas237


FIXED : nexasite logo on footer should take to the top #77 #93

Added hyperlink to the footer logo.

@Artemiskgg1 Ma'am could you please add gssoc label..It would be really helpful for me...Thanks :)


[Error] Network error  "Connection to the host has been lost"

Hi, I installed successfully the server following the instruction but I'm getting every time a network error when trying to join the server.
I checked the log and everything seems just fine, the auto-shutdown also works fine and the API is returning that the server is running.
When I try to create the map and start playing it creates the map but doesn't let me connect to the server :
Status of the server, the game seems to be created :

When trying to connect :

Tell me if you need a particular log.
Thanks in advance

Hi just find out what happened, I was having some mods activated and it seems that the server was blocking my connection because of these mods

Thanks for the update!


Select all rows after paging

Hi,
Is it possible to select all rows, and to keep the selection while paging changes.
I mean, I want to select all rows and until the box of the 'select all' is checked I want all my rows to be highlight(to be selected).
I tried to following code and it's not working:
scope.gridApi.selection.setMultiSelect(true);
scope.gridApi.grid.selection.selectAll = true;
scope.gridApi.selection.selectAllVisibleRows();
I also tried to select each row in the paging manually by using toggleRowSelection and it's not working either.
Is there any idea how should I do this?
Looking forward to you answer,
Best!

I don't see why it shouldn't be possible. just keep the selected rows in your scope and reselect them on paging events
You can use the gridApi.selection.on.rowSelectionChanged to keep track of the selected rows (you can save the UID/index)
And then when you have a paging event just reset the selected rows using row.isSelected = true for each row you have in the array.
Hope that helps

Unfortunately. it still not working.
I tried to debug it and I saw that the event rowSelectionChanged  is never occurs.
Any ideas?

I noticed that the selectAllVisibleRows event occurs before the new data loaded so I added a timeout and it solved the issue.
Thanks.


Add android chrome functionality

Codecov Report

Merging #113 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master    #113   +/-   ##
======================================
  Coverage    0.31%   0.31%
======================================
  Files           4       4
  Lines         954     954
======================================
  Hits            3       3
  Misses        951     951

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 a789e65...33b235f. Read the comment docs.

Thanks!


Unidentified architecture

Hello,
Environment

Raspberry Pi 3 B
flutter-pi

Problem
When launch my program with dart_periphery, I have red screen with the message No pre-build c-periphery library for UNKNOWN available!.
I deduce that the integration of the system_info library in the librairy.so file fails to determine the AARCH64 architecture of my RPI.
I also notice that the system_info library is marked as discontinued.

Please try following fix
1.) Downlad the 64-bit lib: https://github.com/pezi/dart_periphery/raw/main/lib/src/native/libperiphery_aarch64.so

To load a custom library call
setCustomLibrary(String absolutePath)
before any dart_pheriphery call.
This method can be helpful in any case of a problem and for a currently not supported platform.

I must replace the system_info package

Hi,
I was already using the 1st solution.
I solved the problem temporarily by defining the AARCH64 on line 15 of librairy.so instead of automatic detection.

Hi!
I updated the system_info package to the succesor system_info2 package. Same problem.
The reason is simple - on the Raspian OS 64-Bit
cat /proc/cpuinfo

used to gather the cpu infos, fails because there is no entry
model name	: ARMv7 Processor rev 4 (v7l)
available - Raspian OS 32-Bit

BUT this works as designed:
https://github.com/raspberrypi/linux/issues/3991

Currently had the same issue and made some changes to the library.
Some suggestions from my side for the library.dart file:
First I would try to remove the whole system_info package it's  nice to have but shouldn't stop users from using your package. In general the whole platform check is nice but it probably should be an opt-in debug feature since all these system detection packages depend on plain simple string comparison of some typical system string. Means once this string changes nobody can use the library because it won't initialize at all. All just because some simple string changed - which will happen from time to time.
Once the system detection is an opt-in debug feature the user should already have way more control. Now to the custom libraries. I wanted to use my own customLibrary but I couldn't because these options are again pretty late in the if chain. Again the platform and library detection is a nice feature but just as a fallback. When there is a setCustomLibrary() option the user can use then it should have the highest priority otherwise there is no sense in making this public at all.
Anyways thanks for the great package :) I'm currently developing a little flutter-pi application and needed a nfc/rfid scanner for it. I wrote a PN532 driver with help of your library in dart. Once it is finished it would be cool to add it to your library. I will make a pull request then and probably have a look in the rest of the library too. When I can help with anything else let me know.

I will try to replace system_info by a system uname call - current only an experiment. Shows aarch64 on PI OS 64 bit image.  But I must clarify how robust this solutions works on different systems.
uname man page
struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* Operating system release
                                     (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
};

import 'dart:ffi';
import 'package:ffi/ffi.dart';

typedef NativeCall = int Function(Pointer<Int8>);

final DynamicLibrary nativeAddLib = DynamicLibrary.open("libc.so.6");
NativeCall uname = nativeAddLib
    .lookup<NativeFunction<Int32 Function(Pointer<Int8>)>>("uname")
    .asFunction();

main() {
  var len = 6 * 257;
  var data = calloc<Int8>(len);
  // TODO - error checking
  uname(data);

  var utslen = 0;
  label:
  for (int i = 0; i < len; ++i) {
    if (data[i] == 0) {
      for (int j = i + 1; j < len; ++j) {
        if (data[j] != 0) {
          utslen = j;
          break label;
        }
      }
    }
  }
  print(utslen);
  var start = utslen * 4;
  StringBuffer buf = StringBuffer();
  for (int i = start; i < len; ++i) {
    if (data[i] == 0) {
      break;
    }
    buf.write(String.fromCharCode(data[i]));
  }
  print(buf.toString());
}

I understand that this is an awesome feature and probably saves some minutes debugging but why make it so complicated? Don't get me wrong meaningful error/exception messages are awesome but this solution seems to create more headaches than it solves. You only want to prevent users from using this plugin on platforms that are different from Linux (or am I missing some extremely import case here?). Keep it simple write it into your plugin description and make the plugin Linux only then this is shown on pub.dev.
The error message that pops up on non Linux systems is already pretty meaningful (something along the lines "can't load a dynamic library which is compiled for ..... on a ...... system").
I don't know it just seems to introduce more errors than it actually solves. For example take this line from your solution: DynamicLibrary.open("libc.so.6"); If I'm not wrong only Linux systems use .so extension for dynamic libraries though you would have the same problem again just in a different place and who knows what else might go wrong.
A simple good explanation in the installation page makes much more sense to me I guess but again maybe I miss some case here I didn't had much time to dive deeper into your whole package at this point.

I solved the problem temporarily by defining the AARCH64 on line 15 of librairy.so instead of automatic detection.

This works for me, thank you very much @AlbanDurrheimer

A new version of 0.8.26 is available.
Changes:

replace system_info package by native uname() call to detect the cpu architecture.
New method void setCPUarchitecture(CPU_ARCHITECTURE arch) to set the enviroment, this skips the auto detection
Workflow reworked, uname() is called only in the auto detection branch.

Thanks to @UliPrantz
Next step, I will rework the docmentation and teh examples, using void setCPUarchitecture(CPU_ARCHITECTURE arch), to make that auto detection can fail.

Thank you @pezi.
I just did a quick test just by loading the library and it seems to work.
However, since the library variable is now set to an empty string, the library is no longer loaded automatically.
Also, useSharedLibray or setCustomLibrary do not work if you use the Flutter-pi environment, because it is not the first condition checked in the getPeripheryLib function.

I reworked the libraray code (version 0.8.29) for flutter-pi and tested the code on a Pi3 unit

auto detection should work
following two methods overrule the auto detection

// enum CPU_ARCHITECTURE { X86, X86_64, ARM, ARM64 }
void setCPUarchitecture(CPU_ARCHITECTURE arch)
void setCustomLibrary(String absolutePath)

useSharedLibray() fails, this method is path unware and therefore should work,  I will investigate why this method fails.


Activate message always shows at startup

[x] I'm sure this issue is not a duplicate?

After upgrading to 7.13.0 i always get this message on startup:

I have tried reactivating and reinstalling the extension. I have the following settings:
"vsicons.dontShowNewVersionMessage": true,
"vsicons.dontShowConfigManuallyChangedMessage": true

Thank you 😄

This is because you currently have active another file icon theme and vscode-icons installed also. For now, disable vscode-icons for the time you don't use it.
This issue is tracked in #1176.

Duplicate of #1176
(github styling)


Can't launch

Hi,
I installed TriPlayer 1.1.1 and when I try to launch the application with 1 MP3 file, it stays on  Preparing your library screen and nothing happens even after an hour.
I installed the latest version of atmosphere and hekate.
What can I do to solve this problem?

Same issue over here, I can't figure out what's wrong with it. It launched fine the first time, and ever since it seems to be stuck on this screen. I'll try running with a debugger if I can figure that out, but for now this is all the info I have

Update: I had a song with invalid characters in the name, so triplayer had issues reading the file (see #18). This issue lies unresolved 💀 but there's probably someone that fixed it with a PR


mupx setup cannot connect to docker daemon (MongoDB)

When running mupx setup on a freshly provisioned VM, I get the following error:
Started TaskList: Setup (linux)
[register.pacificyearlymeeting.org] - Installing Docker
[register.pacificyearlymeeting.org] - Installing Docker: SUCCESS
[register.pacificyearlymeeting.org] - Setting up Environment
[register.pacificyearlymeeting.org] - Setting up Environment: SUCCESS
[register.pacificyearlymeeting.org] - Copying MongoDB configuration
[register.pacificyearlymeeting.org] - Copying MongoDB configuration: SUCCESS
[register.pacificyearlymeeting.org] - Installing MongoDB
[register.pacificyearlymeeting.org] x Installing MongoDB: FAILED

	-----------------------------------STDERR-----------------------------------
	Cannot connect to the Docker daemon. Is the docker daemon running on this host?
	-----------------------------------STDOUT-----------------------------------
	Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
	----------------------------------------------------------------------------

The docker daemon does not appear to be starting properly in the earlier step.

+1

@Shutik in my case, it turned out that my host was running OpenVZ with a version of the Linux kernel (2.6) lower than the Docker minimum requirement (3.3).

+1

+1

@brylie thanks, i'm updated kernel and it works


serializers: inject ui config in aggregation buckets

Coverage increased (+0.5%) to 86.095% when pulling 166b5849ffa12690a51557a9a74dc871b8c0cc1d on zzacharo:override-agg-labels into 575d586294d19a2a4538b1a062f3b59ca313a87e on inveniosoftware:master.

Coverage increased (+0.5%) to 86.095% when pulling 166b5849ffa12690a51557a9a74dc871b8c0cc1d on zzacharo:override-agg-labels into 575d586294d19a2a4538b1a062f3b59ca313a87e on inveniosoftware:master.


Warnings on load, invalid UIDs - using text paths instead

Hi, unsure what's the problem, but I have a bunch of warnings on load

Copy Pasta
Godot Engine v4.2.2.stable.official (c) 2007-present Juan Linietsky, Ariel Manzur & Godot Contributors.
--- Debug adapter server started ---
--- GDScript language server started on port 6005 ---
Add Autoload
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/menu.tscn:3 - ext_resource, invalid UID: uid://cnhtsuf78gsy7 - using text path instead: res://addons/scene_manager/icons/GuiChecked.svg
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/menu.tscn:5 - ext_resource, invalid UID: uid://bt1mtu3gbmwqc - using text path instead: res://addons/scene_manager/icons/FileDialog.svg
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/ignore_item.tscn:3 - ext_resource, invalid UID: uid://dw322nmqpqwfq - using text path instead: res://addons/scene_manager/icons/ImportFail.svg
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/scene_item.tscn:4 - ext_resource, invalid UID: uid://brxxaey30q7uk - using text path instead: res://addons/scene_manager/icons/GuiTabMenuHl.svg
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/scene_item.tscn:6 - ext_resource, invalid UID: uid://b4xi5nvjb3rhr - using text path instead: res://addons/scene_manager/icons/PlayOverlay.png
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/sub_section.tscn:4 - ext_resource, invalid UID: uid://dsgnkxtiko66g - using text path instead: res://addons/scene_manager/icons/GuiOptionArrowRight.png
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/sub_section.tscn:6 - ext_resource, invalid UID: uid://dw322nmqpqwfq - using text path instead: res://addons/scene_manager/icons/ImportFail.svg
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/scene_list.tscn:4 - ext_resource, invalid UID: uid://dw322nmqpqwfq - using text path instead: res://addons/scene_manager/icons/ImportFail.svg
  scene/resources/resource_format_text.cpp:448 - res://addons/scene_manager/scene_list.tscn:5 - ext_resource, invalid UID: uid://d250i5cu8lgbd - using text path instead: res://addons/scene_manager/icons/eye_open.png
Add Autoload
Add Autoload
Following a PhysicsBody2D node will likely result in jitter - on lower physics ticks in particular.
Once Godot 4.3 is released, will strongly recommend upgrading to that as it has built-in support for 2D Physics Interpolation.
Until then, try following the guide on the documentation site for better results.
This tip can be disabled from within Project Settings / Phantom Camera / Tips / Show Jitter Tips

Hello,
Thanks for taking your time to open an issue when observed an odd behavior.
Sorry to answer so late too, I just don't have free time right now.
I will come at this about 2 weeks later and will fix it hopefully.

I have the same problem:

Hi again,
I checked out this log message and it seems to be a Godot logging problem from these issues:
https://github.com/godotengine/godot/issues/64881
https://github.com/dialogic-godot/dialogic/issues/1155
And it seems like others are having the same problem.
If any solutions found, I will fix this with the solution but it seems like in the new Godot version the problem will be gone hopefully.

I was running into these warning using Godot Engine v4.3.beta3.
After reading through some related issues, I found out that it's indeed pointing to some invalid UIDs.
The problems can be solved by opening the scenes with invalid UIDs in Godot Editor (in my case 4.3beta3) and saving them again.
Can't explain the details but saving the scenes seems to fix the UIDs and the warnings are gone 🥳

Hi, I had the same problem, too when updating my project to Godot 4.3 rc3.
Mostly materials (textures) in particles were affected. Deleting the import file of the texture didn't help. Not even assigning a completely new texture to the material did help, according to the warning message now the new texture has the invalid UID.
After a lot of trying around I tried something with success:
go into the material settings, to the albedo/ texture input and make the texture unique (see screenshot).
In my case doing that solved the problem!

Hi again,
Thanks for the solution @substract.
I can't replicate this situation on my end, please report if it is still the case in Godot 4.3 or it's fixed.
@snewell92 @JelmerBerghs @soeren-spindler

Just to confirm it happened to me in Godot 4.3 with some textures of a theme for a project I'm working on.
@substract solution fixed it.

At this point, I don't know if we should close this and accept @substract 's answer or not.

Created a fresh project with 4.3.
No warning so far.

Thanks @soeren-spindler
If it is fixed in fresh projects and others can fix by substract's answer, I think it's better to close this now.
Thanks everyone. 🙏


Can you provide an example?

Sorry to double-post, I just saw the other issue was closed. Would you be able to provide an example of EazyZoom disabled by default and toggle to enable the zoom? I can't quite get it to function properly.

If you paste your code here I'll take a look.

Enable Zoom

Take a look at what you're doing on the first few lines:
var $easyzoom = $('.easyzoom').easyZoom();

So you're getting a collection of elements that match the selector and instantiating the plugin for each. The collection is being assigned to the variable $easyzoom;
var api2 = $easyzoom.filter('.easyzoom--with-toggle').data('easyZoom');

You're filtering the collection gathered previously, retrieving the API for the first element in the collection and assigning it the the variable api2.
api2.teardown();

You're tearing that instance down.

Here's what I'd suggest you do:

Don't instantiate plugin instances you're going to teardown immediately
Check there are elements matching the selector .easyzoom--with-toggle
Associate each toggle button with the easyzoom instance it is meant to control (E.G. using a data attribute, see below).

$('.toggle').on('click', function() {
  var instanceID = $(this).data('controls');
  var api = $(instanceID).data('easyZoom');
  ...
});


[server][controller] WC field handling optimizations

Replaced several lookups by field name to use field position instead in write compute code paths. There are probably more such opportunities left. This is just one pass for cases where the safety of the usage is more obvious.
Also moved CollectionTimestampBuilder to tests since it was meant from the start to be a test-only class.
How was this PR tested?

CI
Does this PR introduce any user-facing changes?

[ ] No. You can skip the rest of this section.
[ ] Yes. Make sure to explain your proposed changes and call out the behavior change.

Thanks for the change!
I think it is good, but just want to confirm: This optimization can only be used for in place update right? My concern is if it is used in a different record or different version of schema, position might not match, is that right?

Thanks for the review!
The rule for using this technique correctly is this:
You can only a field's position if that field was extracted from the schema of the record you're using it on. So for example, in many places, we operate on two records: the value and the timestamp (RMD) record; if the field came out of the schema of the value record, then the field's position can be used to call get and set on the value, but when getting and setting on the RMD we still have to do it by name (or else extract a different field instance from the RMD schema).


Add custom API docs lint checker

Jira issue:
https://glia.atlassian.net/browse/MOB-3172
What was solved?
Have created a lint checker that will detect any public classes that have no in-code documentation
Release notes:

[ ] Feature
[x] Ignore. This change is for internal use
[ ] Release notes (Is it clear from the description here?)
[ ] Migration guide (If changes are needed for integrator already using the SDK - what needs to be communicated? Add underneath please)

Additional info:

[x] Tests updated? Added? Unit, acceptance, snapshots?
[ ] Logging for future troubleshooting of client issues added?

Screenshots:
It might not show in the editor right away needs to have the project built or re-build first.

When a lint report is generated

It is a bit more complicated than a simple yes or no.
This lint check will not affect normal builds. But ideally, it should highlight this error in code in AndroidStudio. See screenshots in the PR description and also this part could be relevant to your question

Found a problem with the detection of Kotlin in code docs. Made a small fix. Please review these changes to the PR: https://github.com/salemove/android-sdk-widgets/pull/976/commits/4a6481f4a5682a21b77b634bff748d60d9343a0f