Query execution observability

One thing I feel quite limited is the query logger from the original promql engine. It would be great to have observabilities for the queries being executed through the engine and we can see each queries duration, the query plan, detailed stats, etc.
Some more features could be also nice and I am not sure whether it is in scope of this project. Things like slow queries, top queries, etc. That's usually built in in some relational databases and it would be really powerful to collect those query stats like  https://docs.pingcap.com/tidb/dev/top-sql.

What do you think about adding a new option for a query such as RecordDuration bool as a starter which would tell the engine to capture the used time by each operator? Then, we could expose it through Explain() :thinking:

I think Explain is meant to be used for printing out the plan, but it should be possible to extend it. We can also surface the information through a different method, like Profile: https://github.com/thanos-community/promql-engine/blob/main/engine/engine.go#L181

Hello, I would like to work on this as a LFx Mentorship Project.
I have some experience in Golang. I am looking to get more information and resources about Thanos project and this issue, to prepare for LFx Mentorship.

hey @yeya24 @GiedriusS @fpetkovski i would like to contribute to this during lfx mentorship period. I have been working on implementing functions in prom-ql engine in thanos. And, i would like to gain more experience and guidance in my open source journey. I'm looking forward to working with you guys.

Please apply on the LFX website 🤗

We have a link for this now: https://mentorship.lfx.linuxfoundation.org/project/a0958ddf-1fd6-4c8e-887f-adb28639a9f4 🙂

Hi @GiedriusS @yeya24 @fpetkovski , I am interested in learning about this project and want to work on this project under LFX Mentorship.
Please let me know about any materials or resources that I should learn to get a better understanding of the project and its requirements.
Additionally, I was wondering if there is anything else I can do to get started, such as research and learn about the project from the existing documentation.

Helloooo!LFX mentorship brought me here..crossing fingers for great contribution experience.

Hello @GiedriusS  @yeya24  @fpetkovski,
I would love to work on this project. my profile
Please let me know, of any resources or materials I need to know to understand the project better and help me get started.
I have submitted the application for LFX mentorship!

FYI according to #thanos-dev slack, @PradyumnaKrishna got the mentorship from LFX to work on this project. Thank you all for the interest 🙏

In my opinion, there are two ways of going around this: embedding observability information into each operator that implements VectorOperator interface (and making ObservableOperator interface that extends VectorOperator and allows extracting o11y info) or passing around some OperatorTracker in each Series and Next call. The latter seems simpler. For example, it allows easily combining certain statistics such as total time taken or memory used. In the former case, we would have to traverse the whole tree again to add up duration or memory used values.

@saswatamcode  Are the applications open for LFX mentorship Term 2 ?

Hey, I would like to work on this project as a part of LFX Mentorship
I'm currently exploring go and I believe this project will be a great opportunity for me to apply my skills and gain hands-on experience. Looking forward to get more information and resources about Thanos project and this issue, to prepare for the mentorship.

Hello, @GiedriusS, @saswatamcode, I am interested in learning about this project and want to work on this project under LFX Mentorship.
Please let me know about any good first steps or resources that I should learn to get a better understanding of the project and its requirements.
I have submitted my application on the LFX portal

Hey @yeya24 @GiedriusS
I am interested to work on this. I wanted to ask if we provide visualization for every feature in GUI or terminal mode ?
Thank you :)


[move-prover] prepare the loop analysis pass for loop-to-dag transformation

This is a preparation PR that makes the loop-to-DAG transformation easier. It does two things (in two separate commits)

encapsulate loop info in a NaturalLoop struct with loop header, latch, and body information.

This is mostly a clean-up commit. The compute_reducible() function now returns a vector of NaturalLoop which encapsulates the information on loop_header, loop_body, and the loop_latch (latch -> header is the backedge).
It also brings the following checks explicit (i.e., the prover panics)

if the control-flow graph is not reducible
if the loop header block is a dummy block or the first bytecode in the header block is not a label
if two loops share the same header

use invariant instead of assert to mark loop invariant in spec block

We need a special mark for loop invariant propositions because those will be translated to both asserts and assumes (under the loop-to-DAG pass). To prepare for this transition, this commit additionally allows invariant <exp> to be specified in a spec block in function code but transforms the invariant <exp> into an assert <exp> in the loop analysis pass.

Motivation
Prepare for the loop-to-DAG pass
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
cargo xtest

There is no need to review this PR, everything is transferred to #7952, closing it now.


Home & Cryptocurrencies page content continuing off screen

Issue
The Home and Cryptocurrencies crypto tiles are continuing off screen when the screen width is between 800-1001px and between 1208-1301px. This issue is persistent for the 'Show More' button on the Home page for any width >800px.

You can work on the issue


Add unobtrusive locale selection dropdown to onboarding (WIP)

A dropdown locale / language select for areas where phone language settings doesn't usually match spoken language. Primarily in prep for our pilot program. This PR is a work in progress. Brief summary:

Set up with the native picker components for best ease of use. A bit annoying to handle on iOS (especially since I can't debug there)
Uses a list of all prepared languages pulled from the i18next configuration
If a language is manually selected, that choice is put in async storage and the app will override the phone setting with the user setting

Still to do:

I don't have easy access to a macbook/iPhone, so I need some help to verify that the Picker component on iOS is working as expected
Add unicode flags to the language labels
Style both Android and iOS components to match v2 style in incoming PR (see Figma mockup for target)

Screenshots:

Also, can you add unicode to these?  If so, just put a Unicode Flag as the first character on each of these.
http://xahlee.info/comp/unicode_flags.html

Quick update: After some research, it seems to make a lot more sense to ditch the flags in the language picker. Since we're trying to be as politically acceptable as possible, there are too many variables and contentions around flags. This mostly stems from the fact that they represent countries, not languages.
See here for further reading: http://www.flagsarenotlanguages.com/blog/why-flags-do-not-represent-language/
Couldn't even find an unofficial list somewhere. Am going to leave out the flags for this PR.

I agree with leaving out the Flag.  Makes sense.

Where I come from almost every state has its own language :)

#367 redid this in the new UI, closing this one


I.see(), I.seeElement() has undefined with Codeceptjs 3.4.1 when set error into Allure

I.see(), I.seeElement() has undefined with Codeceptjs 3.4.1 when set error into Allure
I.use:
I.see("Successfully Suspended Account");

Details

CodeceptJS version: 3.4.1
NodeJS Version: v18.14.0
Operating System: Ubuntu 20.04.5 LTS
Playwright
Configuration file:

helpers: {
    Playwright: {
      url: process.env.FUNCTIONS_APP_URL,
      show: false,
      restart: true,
      video: true,
      trace: false,
      browser: "chromium",
      windowSize: "1440x900",
      waitForNavigation: "networkidle",
      waitForTimeout: 40000,
      acceptDownloads: true,
      timeout: 20000,
    },
}

I tried this TS test
Feature('My');

const {I} = inject();

Scenario('test something',  ({ I }) => {
    I.amOnPage("/");
    I.seeElement(".animuk")
});

with this TS config:
export const config: CodeceptJS.MainConfig = {
  tests: './*_test.ts',
  output: './output',
  helpers: {
    Playwright: {
      url: 'https://codecept.io/',
      show: true,
      browser: 'chromium',
      waitForNavigation: "networkidle",
      waitForTimeout: 40000,
      timeout: 20000,
    }
  },
  name: 'tmp'
}

and I'm getting the same result with CodeceptJS 3.3.7 and 3.4.1.
There is a few sec waiting unless I.seeElement(".animuk") fails (it fails as expected because the element is not found). The dealy seems to be handled by Playwright.
codeceptjs run --debug|ts
Feb 21 13:57:47     I see element ".animuk"
Feb 21 13:57:51  › <screenshotOnFail> Test failed, try to save a screenshot
Feb 21 13:57:51  › Screenshot is saving to /home/mirao/tmp/output/test_something.failed.png
Feb 21 13:57:52   ✖ FAILED in 7145ms
Feb 21 13:57:52
Feb 21 13:57:52
Feb 21 13:57:52 -- FAILURES:
Feb 21 13:57:52
Feb 21 13:57:52   1) My
Feb 21 13:57:52        test something:
Feb 21 13:57:52
Feb 21 13:57:52       expected visible elements '[]' not to be empty
Feb 21 13:57:52       + expected - actual
Feb 21 13:57:52
Feb 21 13:57:52
Feb 21 13:57:52
Feb 21 13:57:52
Feb 21 13:57:52   Scenario Steps:
Feb 21 13:57:52   - I.seeElement(".animuk") at Test.<anonymous> (./My_test.ts:7:7)
Feb 21 13:57:52   - I.amOnPage("/") at Test.<anonymous> (./My_test.ts:6:7)
Feb 21 13:57:52
Feb 21 13:57:52   Artifacts:
Feb 21 13:57:52   - screenshot: /home/mirao/tmp/output/test_something.failed.png
Feb 21 13:57:52
Feb 21 13:57:52
Feb 21 13:57:52   FAIL  | 0 passed, 1 failed   // 8s

If I use I.waitForElement() it waits for 40 sec unless the step fails :heavy_check_mark:
I also checked I.seeElement(".hero") that succeeds immediately because the element exist :heavy_check_mark: .
Maybe you have a specific scenario when I.seeElement() doesn't work well?

@mirao not the same - you have error that suitable (expected visible elements '[]' not to be empty
Feb 21 13:57:52       + expected - actual)but in my case (not undefined);

I'm using 3.3.7 and observed the same thing, so perhaps it is there for a long time.

weird i bumped into it with  3.4.1 only. in 3.3.7 it was no undefined in allure

yes, sorry, Allure won't be supported from my side
so I can't help here


Streamlining Type Conversion

We've noticed that our current approach to type conversion has inadvertently increased the learning curve and reduced error readability. This is particularly evident in the conversion of DeclareInit and the nested conversion of Template. As a result, more explicit conversions will be needed when using these features.
Our guiding principle for type conversion is to primarily use the From and Into traits. If these are not suitable, we should resort to explicit conversion functions.
Here are the tasks we need to tackle:

[x] Eliminate DeclareInit
[x] Remove StateFrom
[x] Simplify the nested conversion of Template
[x] Streamline the ChildFrom trait

closed by #612


Show correct error message for faulty Betriebsart code

To Reproduce
Upload this Einsendebogen V17: mpc625_BUG Betriebsartcode.xlsx
The portal does not show any of the usual errors or warnings, just the toaster "Es gab einen Fehler beim Validieren." The reason is the faulty Betriebsart code "62724|57624|1499-710,63420-2295,63423-10564,10565|".
Expected:

The faulty Betriebsart code cell should be coloured in red and show the warning "Ungültiger Code. Code ist nicht im AVV DatA-Katalog Nr. 303 enthalten." (error 46)
For the AVV sample number the warning "Das Format der Probenummer nach AVV DatA scheint nicht korrekt zu sein." (warning 72) should be shown.

Note:

If you delete ",10565|" at the end of the code, the warning at the AVV sample number appears and the toaster message does not appear anymore.
If you delete also the "4", (delete "4,10565|" at the end of the uploaded Betriebsart code), the expected Betriebsart code field error also appears. This error message should have appeared from the beginning. Something in the uploaded code produces an error. Deleting only the final pipe did not help.

On the qa system:
The problem in the attached excel sheet is not the faulty Betriebsart code (catalogue 303) but the empty header fields of the sheet.
With completely empty fields it gives an import error.
If a valid email address is added to this field, the excel sheet is imported and shows the expected behaviour.


Apply some idiomatic approach to using a static response and copying it

PR description
Small nit on how to code responding with errors.

Flaky integration test. Merging.


Remove cloud function, which was moved into separate repo

Main reason is deploying the function on merge to master
It will be made slightly more generic and not specific to this project

This PR was released with 0.22.1


Entity Cast Organize

I don't think it is correct to rename AbstractCast to BaseCast.
You should also make changes to the UserGuide.

Since you have created a separate Entity namespace, it would be logical to move the exception and the Entity class itself there.
But the latter will lead to BC.

I just realized that all abstracted classes named Base...., that's why I renamed it to BaseCast

I'm planing to move Entity class to the new namespace, but yet.

I think this is a better structure. I'm on mobile so can't confirm but... these haven't been released yet, right?

Yes, That's why I did it now to avoid BC later

@MGatner  we need to make sure is will be merged before upcoming release

sigh I mean I'm glad we're getting these taken care while we can, but now this is delaying release. Let's do what we can to get this wrapped up ASAP

@paulbalandan, In principle, I have already expressed my opinion above.
This PR does not change the functionality that I proposed.

@paulbalandan, In principle, I have already expressed my opinion above.
This PR does not change the functionality that I proposed.

I am just wondering if you have more to add.

I think we should go ahead and move Entity. You can leave CodeIgniter\Entity as a deprecated class extension of CodeIgniter\Entity\Entity. I'm open to other ideas though.

I would like to see CodeIgniter\Entity as an empty file with only class_exists(...) and class_alias(...) to the new namespace. I just thinking if this would be autoloaded by our Autoloader class.

What if we cleaned current Entity class from all methods and extends it from CodeIgniter\Entity\Entity, and also mark at as deprecated class?

Can we get this squashed? Also happy to squash it on merge, but we don't need 30 commits of the same thing :O

sorry for that, but i cannot push from my local to this PR any more, but once test is fixed, i'll create new clean PR with one commit :D


Timeslots can't be used in constraint instances.

It appears as if the resources for the timeslots do not exist.


servers not starting

when i want start the server it will go online and in a fews seconds offline again pls help :(

I could come from your Minecraft server configuration, do you have any error log ?

My guess is that you're running a recent Minecraft server and haven't set eula=true in the eula.txt file. Minecraft 1.7 and higher require that before starting the server. The console on the Dashboard or Console tab should have information about why the server isn't starting.
If nothing is being logged and your eula.txt is fine, make sure you have the right permissions on the files. They should be owned by and writable by the user running the control panel (likely www-data).


Update build-todo-example-extension.md

The page references MenuBarExtension which does not appear to be part of the API at this time (at least not that I can see in 10.12.0 or the documentation) - If you convert it to MenuExtension and modify the code a bit then it works fine. Uploading what I have done if it's of any use.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


chore(docz-components): upgrade re-resizable to v6

Description
This removes the legacy lifecycle warning from React.
https://github.com/bokuweb/re-resizable/blob/master/CHANGELOG.md#600-2019-08-12
PS: I also ran yarn-deduplicate because the yarn.lock was duplicated a lot 🙈

Thanks @Kerumen for the multiple helpful PRs !
Please feel free to join the docz contributors' slack if you'd like to : https://join.slack.com/t/docz-workspace/shared_invite/enQtNzc4ODc2ODA3NzUxLWI0ZmYwY2NhNjhkNDFjN2UzYzlmMDcwZjQyZGY4MWQ1NmQwZDVlZDE4MmE3N2I4MWRjZTAxZjY4ODk4NGMzZjg

Published to npm as<EMAIL_ADDRESS>


adding anything to 1D market gets chopped off in "yarn print"

In some of the games where there's a legend at the bottom of the market, it's chopped off:

That can be resolved by tucking it tighter here:
transform={`translate(${current} ${1 * data.height + (data.stock.title === false ? 25 : 75)})`}

in market/Market.jsx by changing the 75 to 60, but it exposes an overall problem.  Once I tried adding a roundTracker to it, there's no way to get it to fit onto the page.  It's always chopped off unless you put it over some other element, making it impossible to use.  There also doesn't appear to be a way to expand the canvas you're working with to make room for it.
On 1.5/2D markets. there are ways to make room.  On 1D markets, there is not, making it have to all be done in post-processing.

Note that the chopping is really only visible in "yarn print" results.  On the screen it looks fine, but the PDF it generates is chopped.

This appears fixed. pnpm print 1867 works for me now. So... yay old bugs dissapearing.


Build user login API

Create a login route, using JWT to validate user login

Merged according to acceptance criteria


Objective list / tooltip does not update correctly

I inserted a custom objective into the correct file (Ojectives not the mission script) this time and it works in game.
I changed "Find a Trauma Kit" event 300 to be "Exit The Morgue" and added an event 0301.
Just a minor nitpick though. The custom objective event A1_OBJ_M10_0301 does not show in the drop
downlist which might be by design IDK (are you reading the objectives .txt file?), but even when I change it
manually the tooltip is showing the text of the last event that I was on that is in the list.  Since the event is not
in the list in this case the tooltip should remain blank or if the list is supposed to be updated from the objectives
file then it should show the tip based on the text there in.

Oh I did reload the command editor and reload the map after editing the file but it seems like it didn't update still.

Well... After closing the commands editor  a 2nd time and reloading the list did update.
I don't like making unnecesary tickets.   I think this is a disregard.  It seems to be OK after all.

Another tip as well - if you don't care about localisation, you can always just type the new string right into the script editor and not worry about the whole ID system.

After the debacle with that text and the blank space becoming corrupted characters, I've been leary to directly type into the fields.
I didn't actually type that either it was something in the stock game I think actually(?).
But if it'll work and not break something again I'll consider doing that.

Yeah that one was with a string from the base game. You'll find they don't tend to use the localisation system in places where they were testing things out, or prototyping things.


Dynamic elements in convo.ask attachment template

I have a conversation that asks a series of questions, then takes those answers and performs a database query. I would like the results of that query to be presented as template elements such as in the example below. Does anyone know how I may be able to achieve this?
I am guessing it may be possible through convo.setVar but I'm not exactly sure how. Any help would be greatly appreciated!
controller.hears(['buy a shirt'], 'message_received', function(bot, message) {

    bot.startConversation(message, function(err, convo) {
        convo.ask({
            attachment: {
                'type': 'template',
                'payload': {
                    'template_type': 'generic',
                    'elements': [
                        {
                            'title': 'Classic White T-Shirt',
                            'image_url': 'http://petersapparel.parseapp.com/img/item100-thumb.png',
                            'subtitle': 'Soft white cotton t-shirt is back in style',
                            'buttons': [
                                {
                                    'type': 'web_url',
                                    'url': 'https://petersapparel.parseapp.com/view_item?item_id=100',
                                    'title': 'View Item'
                                },
                                {
                                    'type': 'web_url',
                                    'url': 'https://petersapparel.parseapp.com/buy_item?item_id=100',
                                    'title': 'Buy Item'
                                },
                                {
                                    'type': 'postback',
                                    'title': 'Bookmark Item',
                                    'payload': 'White T-Shirt'
                                }
                            ]
                        },
                        {
                            'title': 'Classic Grey T-Shirt',
                            'image_url': 'http://petersapparel.parseapp.com/img/item101-thumb.png',
                            'subtitle': 'Soft gray cotton t-shirt is back in style',
                            'buttons': [
                                {
                                    'type': 'web_url',
                                    'url': 'https://petersapparel.parseapp.com/view_item?item_id=101',
                                    'title': 'View Item'
                                },
                                {
                                    'type': 'web_url',
                                    'url': 'https://petersapparel.parseapp.com/buy_item?item_id=101',
                                    'title': 'Buy Item'
                                },
                                {
                                    'type': 'postback',
                                    'title': 'Bookmark Item',
                                    'payload': 'Grey T-Shirt'
                                }
                            ]
                        }
                    ]
                }
            }
        }, function(response, convo) {
            // whoa, I got the postback payload as a response to my convo.ask!
            convo.next();
        });
    });
});

Have you tried assigning (global) variables to your answers? That should do the trick.
If you get Answer 1 somewhere, you could set var url1, var title1 and var payload1, then use them appropriately.

Yeah I did try that however it doesn't work because convo messages are precompiled when convo.ask is first run, meaning that if you initialised your template elements collection array as an empty array, then that is what will be printed. Normally you would use convo.setVar to inject a variable set later, however that only works with strings.
The answer actually turned out to be quite easy however, and is documented here: https://github.com/howdyai/botkit/blob/bf2a10edb784d20c99cf5fdc12a6e17480795635/readme.md#multi-stage-conversations
Basically, you need a function to generate a new section of the conversation which you only call in the callback of the previous question. Thanks for taking the time to look at my problem though!


Fix docs for master_get_active_worker_nodes.

This function doesn't assume all nodes in pg_dist_node are active.
e.g.
postgres=# select * from pg_dist_node;
 nodeid | groupid | nodename  | nodeport | noderack | hasmetadata | isactive | noderole | nodecluster
--------+---------+-----------+----------+----------+-------------+----------+----------+-------------
      3 |       3 | localhost |     5435 | default  | f           | f        | primary  | default
      1 |       1 | localhost |     5433 | default  | t           | t        | primary  | default
      2 |       2 | localhost |     5434 | default  | t           | t        | primary  | default
(3 rows)

Time: 0.717 ms
postgres=# select * from master_get_active_worker_nodes();
 node_name | node_port
-----------+-----------
 localhost |      5434
 localhost |      5433
(2 rows)

Time: 0.635 ms

(Assigning for my other github account to look at next week)


Team Swallows Issue #2

Great job!
Just one recommendation,

consider decoupling the generation of the home page from the retrievement of the location and the map rendering.

Done!


Change from System.Data.SqlClient to Microsoft.Data.SqlClient

https://devblogs.microsoft.com/dotnet/introducing-the-new-microsoftdatasqlclient/

The Microsoft.Data.SqlClient package, now available in preview on NuGet, will be the flagship data access driver for SQL Server going forward.
This new package supports both .NET Core and .NET Framework.

currently it throws PlatformNotSupportedException: Strings.PlatformNotSupported_DataSqlClient
might be related to the following:

https://github.com/dotnet/SqlClient/wiki/Frequently-Asked-Questions#11-why-do-i-get-a-platformnotsupported-exception-when-my-application-hits-a-sqlclient-method
https://github.com/dotnet/SqlClient/issues/161

Released in v1.0.0


Remove subscription products

Change Type
Removal
Proposed Changes
Remove https://docs.cloudmydc.com/deployment-tools/cloud-scripting-&-jps/marketplace#subscription-products
CloudMyDC currently does not provide any subscription based products.
Resolve By
2024-01-10

Remove https://docs.cloudmydc.com/deployment-tools/cloud-scripting-&-jps/marketplace#subscription-products


Feature/boost promote

What does this PR?
Where should the reviewer start?
Steps to reproduce
Issue number
Screenshots/Video

@mistikk updated

I think you didnt see all of comment, can you check again @ue

@mistikk fixed


malta.json Updated

I have updated the data of the country of Malta. I have referred the Wiki page of Malta. Some of the data on Malta's Wiki page was confusing. I have done my research on it and wrote the data accordingly.

Hey @RoopakSai15,
You should first get the issue assigned and then start working on it. Anyway, I cannot see your pull request.


Refactor IRenderStateNotationParser

In current implementation render state notation parser extracts state descriptions only, which requires extra effort from the application. It also introduces a lot of additional structs that largely duplicate core structs with only difference that instead of object pointers they use object names (e.g. pVS vs pVSName).
To make the render state notion API more convenient to use it is proposed to change the API as follows:

Add pDevice member to RenderStateNotationParserCreateInfo

This could be a serialization device or any actual rendering device

Add DeviceBits member that will only be used for archiver
Replace all current methods Get*ByName and Get*ByIndex with Create and Create*ByIndex
To make object creation more flexible, add callbacks to override the state:

struct ParsePipelineStateAttribs
{
    const char* Name = nullptr;
    Uint32 Index   = ~0u;

    void (*ModifyPipelineStateCreateInfo)(PipelineStateCreateInfo REF PipelineCI, void* pUserData) = nullptr;
};

VIRTUAL void METHOD(ParsePipelineState)(THIS_
                                        const ParsePipelineStateAttribs REF Attribs,
                                        IPipelineState* ppPSO) CONST PURE;

Similar for other object types.
This should make the parser API much more concise and convenient to use - API objects can be created directly, while required states can be easily overriden

In GLTF viewer, these two functions are copy-pastes of one another.
The entire function should be just one call to pParser->CreatePipelineState()


Improvement to remote function invocation

Description:
Let's say I have a function bigqueryClient() which returns a client object.
This code works;
bigquery2:Client bqClient = bigqueryClient();
var listProjectsResponse = bqClient->listProjects();
The following should work too right?
var listProjectsResponse = bigqueryClient()->listProjects();
It is failing with "Invalid remote function invocation, expected an client object"

@sanjiva @hevayo @kaviththiranga We didn't allow this because we can't render the diagram for this particular scenario. But 2019R1 spec allows this.
One possible solution is we generate an anonymous endpoint (maybe with the function name) and create an arrow to it. But this only works with generating the diagram. The diagram to code will not work.

@hasithaa Basically what you mention is if a function returns a client object consider it as an endpoint. Which we can do.

@hevayo how do we render that? I guess we don't bother drawing a vertical line for that .. there's no point because only one action is possible on that remote object anyway.

@sanjiva Yes, it will be an endpoint line with one action going to it. I guess even though it is only one action it will improve the readability of the diagram since the user can clearly see the program is doing a remote call.  For the name of the endpoint we can use the endpoint type and the name of the function ( which can be weird ).
If a function returns a client object can we consider it as a refrence to that client object ?

This is not supported by the spec. Refer: https://ballerina.io/ballerina-spec/spec.html#action

Actions are an intermediate syntactic category between expressions and statements. Actions are similar to expressions, in that they yield a value. However, an action cannot be nested inside an expression; it can only occur as part of a statement or nested inside other actions. This is because actions are shown in the sequence diagram in the graphical syntax.

Hence closing this issue.


⚠ Bofrost.fr has degraded performance

In 449a461, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1612 ms

Resolved: Bofrost.fr performance has improved in e0500fd after 19 minutes.


DS-2608 v2: allow any metadata for any DSO in XMLUI discovery results

I am submitting this PR as an alternative to https://github.com/DSpace/DSpace/pull/962 The functionality is the same but I've changed the implementation.
Here I've refactored a little the code and created a new template method called renderDSO which contains the generic behaviour for the rendering of results in discovery. The 3 original renders (for the item, collection and community) now contains only their specific behaviour.
I think this change will be useful to return other kind of DSOs among discovery results, something not used right now but very probable in near future. Consider, for example, indexing bundles and bitstreams in search core and showing them in discovery.
If exists, It also adds the parent name for communities and collections as an extra metadata in discovery results.
Please let me know if something should be corrected.
Regards,

Closing as this PR must be recreated on dspace-6_x branch. XMLUI has been removed from master. See this mailing list notice: https://groups.google.com/d/msg/dspace-devel/aEFqSn46ryM/iPRr_IMLCwAJ


Simplify remote URL handling in EnableGitRemoteAccess

don't create a Uri object, as UriBuilder will accept a string
don't ToString() the result, as it happens automatically
use falsyness to check that $Env:SYSTEM_ACCESSTOKEN is set.
skip an uneeded local ($token)

@JayBazuzi Thank you very much for the PR. Do you think you can have a look at the above comments before we can merge this?

I merged this and will fix the open comments in another PR here: https://github.com/iozag/vsts-git-tasks/pull/10


Proposal: Add "Charging Manager" Role to BLE

Would it be possible to add the "Charging Manager" role to the BLE tesla-control integration?
This would allow you to control the entire charging process, e.g. for PV charging, with minimal rights assignment.
Thank you very much!

I have just tried out the "charging_manager" role:
The commands: charging-start, charging-stop and charging-set-amps work without any problems via BLE.
Unfortunately, the following commands do not work via BLE:
wake and charge-port-open.
The following error messages are displayed:
wake: Failed to execute command: vcsec could not execute command: genericError:GENERICERROR_UNAUTHORIZED
charge-port-open: Failed to execute command: MESSAGEFAULT_ERROR_INSUFFICIENT_PRIVILEGES
Are these two problems fixable ?


MS Onedrive Sign-in.

With the latest update I cannot Sign-in into Onedrive application on my Mac anymore.
Deleting the Host file is the only solution I found at the present time.
Thanks.

@Quorum75 which version of the list here you're using? Provide the exact link please.

Thanks for this @Quorum75.
There's really not enough information provided here.
Closing.


Rust now requires MacOS > 10.12

See
https://blog.rust-lang.org/2023/09/25/Increasing-Apple-Version-Requirements.html
This:
https://github.com/cross-rs/cross-toolchains/blob/83b28663ebf6b38436e534652a2522a6963fa132/docker/darwin.sh#L52
needs to be upped to 10.12 in at least some targets, otherwise error looking like this:
          ld: warning: object file (/target/x86_64-apple-darwin/release/deps/libidna-9e0bb8c28bf4f03d.rlib(idna-9e0bb8c28bf4f03d.idna.3875f9ff72356008-cgu.7.rcgu.o)) was built for newer macOS version (10.12) than being linked (10.7)
          Undefined symbols for architecture x86_64:
            "_clock_gettime", referenced from:
                std::sys::unix::time::Timespec::now::h0ebd2e38935918ca in libstd-4b3c9502f998a9c9.rlib(std-4b3c9502f998a9c9.std.ccb858c55971878c-cgu.0.rcgu.o)
            "_getentropy", referenced from:
                std::sys::unix::rand::hashmap_random_keys::ha92d0a2687c22b7a in libstd-4b3c9502f998a9c9.rlib(std-4b3c9502f998a9c9.std.ccb858c55971878c-cgu.0.rcgu.o)
          ld: symbol(s) not found for architecture x86_64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

would be happening (this is from build for x86_64).
Simply upping the value to 10.12 would be more strict than what Rust seems to require now though.
There was no issue for me on aarch64-apple-darwin, and that is in alignment with blog post linked above, as that target is not mentioned as affected by change (aarch64-apple-ios is mentioned, but not darwin).

For myself, I did a "hacky" workaround here - https://github.com/strowk/tisq/commit/afacd74aecd639ca4790950352c4e41b008fcf7f
Basically I have "cross" folder with cloned cross, which has a problematic file under this subpath: "docker/cross-toolchains/docker/darwin.sh". I override this file with that one - https://github.com/strowk/tisq/blob/afacd74aecd639ca4790950352c4e41b008fcf7f/patched-darwin.sh#L52
before building (it is wired in using cargo-make, I was too lazy for xargo other fancy ways).
The only difference is in line 52 there
    TARGET_DIR=/opt/osxcross UNATTENDED=yes OSX_VERSION_MIN=10.7 ./build.sh

is replaced by
    TARGET_DIR=/opt/osxcross UNATTENDED=yes OSX_VERSION_MIN=10.12 ./build.sh # this line is changed 10.7 to 10.12

Result of this is successful build, though obviously it would not work anymore for MacOS < 10.12 (which is not officially supported by Apple themselves anyway).
I suppose alternative to this could be pinning Rust toolchain to something before 1.74 , if old versions of OS are more important for you than new versions of language.

Thank you for your explanation.
Which version of the SDK are you using? I tried a few but all came out with some kind of linker error.


Deploys stop to work

... soon after restarting deis-store-gateway@1.
When deploying app, it hangs on 'Succesfully built image' and never pushes to registry.
When I restart deis-store-gateway@1, next deploy works, but not for long, maybe for 10 minutes or so.
Other components like registry or builder don't require restart, only gateway does.
Ceph is HEALTH_OK, osds/mons/mdses are fine. Restarting them doesn't change things as well.
During deploy I see following in builder logs:
Aug 27 12:38:27 staging-coreos-2 sh[7896]: time="2015-08-27T12:38:27Z" level="error" msg="Error in LookupRemoteImage: HTTP code 404"
Aug 27 12:38:37 staging-coreos-2 sh[7896]: time="2015-08-27T12:38:37Z" level="error" msg="Error in LookupRemoteImage: HTTP code 404"

Don't know if it is related to this problem.
Also OSDs keep emiting to logs on every machine in the cluster:
Aug 27 14:02:11 staging-coreos-2 sh[31819]: 2015-08-27 14:02:11.151154 7f701b8bb700  0 <cls> cls/rgw/cls_rgw.cc:1947: ERROR: rgw_obj_remove(): cls_cxx_remove returned -2

Deis is 1.9, CoreOS is 723.3.


Fetching all SBOMs actually returns all nodes of the SBOM

That's due to a wrongly used relationship definition. As there can only be one relationship, we need to different way. SeaORM seems to solves this via "links".
I have a local fix for this, but want to tackle this in combination with #284.

Closed by #424


Studentbrad/pytest

Pytests (and other minor things)
Description
I want to make it very clear that my changes have no effect on the functionality of JobFunnel.
The last functional change was made by @bunsenmurder.
This is merely a PR for better readability, coordination (among developers) and coverage (with pytests).
Good news! We have about 93% coverage in North American cities!

I believe it is very important that we begin adding coverage to our code given the number of complaints about support in countries outside North America.  This seems more important at the moment than adding new features.
In addition, it seems we are struggling to coordinate commenting styles.  I updated this because it drives me up the wall.  A good word of advice told once to me: Either use punctuation or don't.
This is okay.
This is not okay
this is not okay.
this is okay
I added PR and issue templates because they help keep things a little more consistent.
Context of change

[x] Software (software that runs on the PC)
[ ] Library (library that runs on the PC)
[ ] Tool (tool that assists coding development)
[ ] Other

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?

[x] test_countries.py

test_countries.py grabs 100 random North American cities and succeeds if (and only if) at least one provider can find the location HTML for that city.  This does not mean it must find job postings to succeed; as jobs may not be posted in places like Timbuktu.
Checklist:

[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have added tests that prove my fix is effective or that my feature works.
[x] New and existing unit tests pass locally with my changes.
[x] Any dependent changes have been merged and published in downstream modules.

Awesome work @studentbrad , the testing class is A1 and you gave the code a much needed cleaning.

Excellent contribution - long time coming.

The unit tests as they are currently are far from prefect and will require future initiative to get right.  These tests are considered flaky in pytest terminology but do not fail the entire build because they are not “strict” tests.  However, I will merge so that I am not inhibiting current development efforts.


replace lineBreakMode with ellipsizeMode

lineBreakMode is a non-existing property (or maybe legacy?)
While reading the docs I encountered this prop being used in the example, but it doesn't exist in the codebase anymore.

Sweet! Could you please resolve conflicts?

Updated, but I'm pretty sure the failing test is not related to my change.


mavlink_messages: send TAS instead of IAS

This PR makes the MavlinkStreamVFRHUD send true_airspeed_m_s instead of indicated_airspeed_m_s for HUD on groundstation. This makes especially sense when your airspeed setup needs a scale factor (between indicated to equivalent), as otherwise the HUD displays another airspeed than the one that's used in the control modules.
Alternatively we could also display equivalent and not true airspeed. I would prefer true airspeed, such that it is comparable to the groundspeed.

I don't actually feel that strongly about this however...

VFR_HUD contains indicated airspeed according to the Mavlink spec. https://mavlink.io/en/messages/common.html#VFR_HUD

The attitude controller gain scheduling is wrt indicated airspeed.
https://github.com/PX4/Firmware/blob/6d846143dc7461d9a8ca4fd377763a9f1c04d55c/src/modules/fw_att_control/FixedwingAttitudeControl.cpp#L235-L270

Wouldn't any pilot expect indicated airspeed? (@RomanBapst)

Yes, this would be a break to the spec. If you're going to do this create a PR on MAVLink with a justification that explains why this is not a problem for all the HUD systems out there. You can perhaps add a new extension field for MAVLink 2 messages if you think a HUD might need that too.

@dagar I wasn't aware actually that FW att C still used IAS, made a PR to change that https://github.com/PX4/Firmware/pull/14868.
I reverted to using EAS (which is equal to calibrated airspeed, CAS, on PX4).
@hamishwillee I've created a PR on mavlink https://github.com/mavlink/mavlink/pull/1375. As we only have one unspecified "airspeed" field in VFR_HUD, editing the comment would be enough, but let me know what you think of that.

@dagar https://github.com/mavlink/mavlink/pull/1375 is merged, I guess we can then do the same here.


Helm chart OCI publish

Adds helm-chart-oci-push target and enforce v-prefixed Helm chart versions as primary version.
Additionally, the helm-chart-oci-push target now publishes a non-v-prefixed version which improves Helm compatibility and provides backwards compatibility for some projects that only published a non-v-prefixed version before.

/hold

/lgtm
But make is non-trivial. 😉

/approve
/unhold


Fix pending join workspace isn't visible in the WS list

Details

A pending join workspace is currently not shown in the WS list. This PR fixes it.
Fixed Issues

$ https://github.com/Expensify/App/issues/51000
PROPOSAL: https://github.com/Expensify/App/issues/51000#issuecomment-2419215730
Tests

Same as QA Steps

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

Offline tests

Same as QA Steps
QA Steps

Copy a workspace share link from user B where user A is not a member
As user A:

Open the workspace share/join link
Open the workspace list page
In the workspace list page, verify a pending workspace join is shown

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

PR Author Checklist

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

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

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

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

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

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

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

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

Bump @sobitneupane

@bernhardoj Even after a user's request to join a workspace is declined, the requested workspace continues to be displayed. It only disappears after clearing the cache or re-logging. Previously, this issue didn't occur, as we weren’t displaying the requested workspace at all. How should we handle this issue?

It happened on main too. The workspace list page itself exists on the nav stack and also the URL shows the workspace list page, but somehow the page isn't visible. I think it's a navigation bug.

It happened on main too

I could not reproduce it on main. Can you please attach a video with reproduction steps?

It's the same step
https://github.com/user-attachments/assets/d9593540-34e3-45b8-ad8a-000cad237c83

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

This PR is failing for mWeb and Android because of issue #52394

@IuliiaHerets This issue wasn't introduced by this PR. As we discussed earlier here, it was already reproducible in the main branch.


[WIP] BUG Ensure relObject() safely bails on empty objects

Against 4 (4.1) branch, as this includes a bunch of API changes designed to address weaknesses in the relation API, in as much as I can get away with without breakages.
Replaces #6211,  #7526 (partly)
Marked WIP because I'm still testing and gathering feedback on whether or not the general approach is appropriate.
getComponents() / getManyManyComponents() can now take $ids as a parameter, which is a better solution than modifying properties on a singleton in order to suppress UnsavedRelationList being created.
relField() and relObject() now use the same internal loop for simplicity and consistency. E_USER_ERROR has been replaced with a catchable exception.
Two proposed methods have been added to the RelationField phpdoc, but not added directly in order to respect SemVer.

@tractorcow this looks good - will it be getting any more attention soon? 👼

I think once 4.0.1 is done I'll be giving 4.1 more attention.
I'm not 100% happy with the new getManyManyComponents() parameter changes, but it's probably good enough.

Removing WIP. I think we can merge if everyone is happy with it.

Just a heads up: the changes to the method signatures for getComponents() and getManyManyComponents() apparently caused issues in the SilverShop module which has a model that overrides one or both of those methods. Thankfully adding the extra $id = null param will make it compatible with both 4.0 and 4.1.
Not sure what counts as part of our public API here, and it’s a bit of an edge-case, but just thought it worth mentioning :)

Aren't changes to method signatures strict errors? so they wouldn't be a problem in production?

Yes that’s true, but adding extra args to a method could still be considered a BC-breaking change (e.g. if someone has overridden it and added their own extra arg(s)).
I don’t think this is worth reverting, it’s very low risk and an edge-case as I said, just something to bear in mind

It was strictly a semver violation sorry.


Ctrl+d raises an error instead of exiting

Ctrl+d raises an EOF error message instead of exiting the program.

Fixed by #43


[native_assets_cli] split up target in os and architecture

Closes:

https://github.com/dart-lang/native/issues/64

coverage: 99.075% (-0.3%) from 99.341% when pulling 238d4c791207aa2ea2e9bc6219851d3611d333e0 on target-arch-os into 78cf286e15aec57b51a1bbbbcaada5216ddc626a on main.


Does a "secrets detector" cop make sense as a Security cop for Rubocop?

Is your feature request related to a problem? Please describe.
I'd like a method to detect potential secrets in my Ruby codebase, in a manner that is well integrated with my IDE and build process.
Describe the solution you'd like
A cop in the Security department can be used to analyze source files for things that look like access keys, tokens, and passwords.
Describe alternatives you've considered
There are various scripts that exist. Some of them are centered around the version control systems (like https://github.com/awslabs/git-secrets as an example). Others scan only the current code. However, adding them is adding another tool.
Additional context
When I work in Ruby, I often include Rubocop. My primary thinking is to include an extensible secrets detector in Rubocop to minimize dependencies on other scripts and gems.
I haven't given much thought to feasibility and architecture at this point - just trying to see if anyone has thought of this before and if it may be something to look at.

Seems like a good idea to me.

Thanks, @bbatsov - I want to invest a lot more time thinking about this and seeing what is possible, then. Just wanted to make sure that the idea was good before spending a lot of time on something. I think there are a lot of architectural questions, like how to (or not to) break up different types of secrets detection into different cops, and I think the amount of logic/complexity to detect and configuration necessary may drive this.
I'll probably start thinking this through in a lot more detail. If anyone is aware of any previous work (even something that didn't work) in this area, please let me know. I'd like to take advantage of any existing work that I can.

I spent a little bit of time playing around with Rubocop and the parser. I'm no longer convinced that this is a good idea.
The biggest limitation is that it feels very unnatural to expand this beyond Ruby code files. Secrets can live in configuration files (like YML or .env files) as well as code. In addition, there are lots of different patterns and types of secrets. Another consideration is for multi-language projects that aren't fully covered by Rubocop. I think that implementing a secrets detector in a tool like Rubocop would give a false sense of security and be likely to have false negatives as well as false positives.
Although it adds a separate step to a build process, I'd really recommend something like Yelp/detect-secrets. It has a plugin architecture to support a wide variety of secrets and it's cross-language.
I'm going to give it a little more thought, but I'm struggling to see viability for this type of functionality in Rubocop.


Controller is not initialized correctly when you quickly navigate between screens with the same controller

Describe the bug
For example:
You have a chat list and each element navigates to a ConversationPage via Get.toNamed + arguments (eg you pass the chat title).
The ConversationPage has a ConversationController which is binded in the routes, via Get.lazyPut<ConversationController>(() => ConversationController());.
conversation_page.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:getx_binding_error/app/modules/conversation/conversation_controller.dart';

class ConversationPage extends GetView<ConversationController> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(controller.title)),
      body: SafeArea(
        child: controller.obx(
          (state) {
            return Column(
              children: [
                Expanded(
                  child: ListView.builder(
                    itemCount: controller.messages.length,
                    itemBuilder: (context, index) => Padding(
                      padding: const EdgeInsets.all(25.0),
                      child: Text(controller.messages[index]),
                    ),
                  ),
                ),
              ],
            );
          },
        ),
      ),
    );
  }
}

conversation_controller.dart
import 'package:get/get.dart';

class ChatsController extends GetxController with StateMixin {
  List<String> chats = [];

  @override
  void onInit() {
    super.onInit();
    fillChats();
  }

  Future<void> fillChats() async {
    for (int i = 0; i < 10; i++) {
      chats.add('Chat $i');
    }
    change(null, status: RxStatus.success());
  }
}

conversation_binding.dart
import 'package:get/get.dart';
import 'package:getx_binding_error/app/modules/conversation/conversation_controller.dart';

class ConversationBinding implements Bindings {
  @override
  void dependencies() {
    Get.lazyPut<ConversationController>(() => ConversationController());
  }
}

routes.dart
import 'package:get/get.dart';
import 'package:getx_binding_error/app/modules/chats/chats_binding.dart';
import 'package:getx_binding_error/app/modules/chats/chats_page.dart';
import 'package:getx_binding_error/app/modules/conversation/conversation_binding.dart';
import 'package:getx_binding_error/app/modules/conversation/conversation_page.dart';
import 'package:getx_binding_error/app/routes/routes.dart';

class AppPages {
  static List<GetPage>? allPages = [
    GetPage(name: AppRoutes.chats, page: () => ChatsPage(), binding: ChatsBinding()),
    GetPage(name: AppRoutes.conversation, page: () => ConversationPage(), binding: ConversationBinding()),
  ];
}

chats_page.dart
import 'dart:developer';

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:getx_binding_error/app/modules/chats/chats_controller.dart';
import 'package:getx_binding_error/app/routes/routes.dart';

class ChatsPage extends GetView<ChatsController> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Chats"),
      ),
      body: controller.obx(
        (state) {
          return Column(
            children: [
              Expanded(
                child: ListView.builder(
                  itemCount: controller.chats.length,
                  itemBuilder: (context, index) => InkWell(
                    onTap: () => Get.toNamed(
                      AppRoutes.conversation,
                      arguments: controller.chats[index],
                    ),
                    child: Padding(
                      padding: const EdgeInsets.all(25.0),
                      child: Text(controller.chats[index]),
                    ),
                  ),
                ),
              ),
            ],
          );
        },
      ),
    );
  }
}

Now if you navigate to the first conversation and then quickly go back and navigate to another conversation, you'll see that the title is the one from the previously conversation and you'll get a red error message:
"ConversationController" not found. You need to call "Get.put(ConversationController())" or "Get.lazyPut(()=>ConversationController())"

Basically when you go back, ConversationController is being deleted from the memory and if you quickly navigate to another conversation screen, it is trying to find the ConversationController. Therefore, because the ConversationController is not being initialized again or fast enough before you navigate to another conversation page, you'll get the error.
If you wait for the ConversationController to be deleted from the memory and only then navigate to another chat, the ConversationController is initialized again and everything works fine. But if you don't wait to be complety deleted from the memory, you'll get the error.
Also, I noticed that the functions are still being processed, even if the controller is deleted from the memory. I guess they are still queued somehow in the memory? Not sure if this is a bug or not, but it's a bit weird that if you dispose the controller while doing a function, the function doesn't stop automatically and it continues until the end.
[GETX] "ConversationController" onDelete() called
[GETX] "ConversationController" deleted from memory
I/flutter (20348): Messages filled! // <--- THIS SHOULD NOT BE PRINTED IF YOU DELETE THE CONTROLLER BEFORE THE FUNCTION REACHES THE PRINT METHOD (I guess that's how it should work)

Reproduction code
Download: lib.zip
To Reproduce
As described earlier
Expected behavior
ConversationController to be created and initialized correctly when you navigate quickly between screens that use the same controller.
I tried to replace Get.lazyPut with the Get.put and all the smartManagement options, but they don't fix the issue.
Screenshots
Video: https://user-images.githubusercontent.com/16257821/134400126-19f7d7ab-940c-4695-8bd1-53767fe32fa6.mp4
Flutter Version:
2.2.3
Getx Version:
^4.3.8
Describe on which device you found the bug:
Pixel 3a API 30
Minimal reproduce code
As described & attached above

You write you replaced lazyPut with put but I'd look for some more async operations. Just a guess

You write you replaced lazyPut with put but I'd look for some more async operations. Just a guess

Tried both but dunno. What do you suggest?

Same problem, after close a page, the controller will be deleted but after some delay.
If open the page again before executing delete, it will later delete the controller while it is being used.
SmartManagement.full is so buggy and should not be the default option.

Same problem, after close a page, the controller will be deleted but after some delay. If open the page again before executing delete, it will later delete the controller while it is being used. SmartManagement.full is so buggy and should not be the default option.

One solution would be to add a controller variable and check if it's null => init the controller manually

One solution would be to add a controller variable and check if it's null => init the controller manually

Still does not work with GetBuilder, after deleting the controller, cannot update GetBuilder. The best option is permanent = true so it won't delete the controller automatically.

@jonataslaw can you please check it out?

hey @jonataslaw, can you please review it? it's kinda urgent

I am having same issue, its caused big issue on production code, on debug it sometimes works correctly.

I having same issue, I workaround this case with used page as tag and isRegistered before router
extension GetxExtention on GetInterface {
  S? findOrNull<S>({String? page}) => Get.isRegistered<S>(tag: page) ? Get.find<S>(tag: page) : null;

  Future<T?>? sureToNamed<T>(String page, {dynamic arguments, int? id, bool preventDuplicates = true, Map<String, String>? parameters}) {
    if (findOrNull<T>(page: page) == null) {
      return Get.toNamed(page, preventDuplicates: preventDuplicates, id: id, arguments: arguments, parameters: parameters);
    } else {
      return null;
    }
  }
}

hope this help
^o^

Any Update on this issue??  I'm facing the same issue for controller gets deleted delayed and if tried to open same screen with controller again then UI break with controller not found issue

I having same issue

same issue here , and there is no solution to fix this correctly

Hey @jonataslaw, can you please look into it?

Not tested but I think it could be fixed by deleting the controller on onDispose(). Then hopefully it will not auto-delete the controller when re-open the page.

Not tested but I think it could be fixed by deleting the controller on onDispose(). Then hopefully it will not auto-delete the controller when re-open the page.

Tested , but not works ,  u need to put at least 1 second delay before next navigation , then Getx will create controller again .

Tested , but not works , u need to put at least 1 second delay before next navigation , then Getx will create controller again .

Yes.
After some debugging,
Controller is deleted here in default_route.dart
  @override
  void dispose() {
    super.dispose();
    if (Get.smartManagement != SmartManagement.onlyBuilder) {
      WidgetsBinding.instance!.addPostFrameCallback((_) {
        if (Get.reference != reference) {
          GetInstance().removeDependencyByRoute("$reference");
        }
      });
    }

    // if (Get.smartManagement != SmartManagement.onlyBuilder) {
    //   GetInstance().removeDependencyByRoute("$reference");
    // }

    final middlewareRunner = MiddlewareRunner(middlewares);
    middlewareRunner.runOnPageDispose();
  }

Maybe moving it to didPop() will fix this.
  /// A request was made to pop this route. If the route can handle it
  /// internally (e.g. because it has its own stack of internal state) then
  /// return false, otherwise return true (by returning the value of calling
  /// `super.didPop`). Returning false will prevent the default behavior of
  /// [NavigatorState.pop].
  ///
  /// When this function returns true, the navigator removes this route from
  /// the history but does not yet call [dispose]. Instead, it is the route's
  /// responsibility to call [NavigatorState.finalizeRoute], which will in turn
  /// call [dispose] on the route. This sequence lets the route perform an
  /// exit animation (or some other visual effect) after being popped but prior
  /// to being disposed.
  ///
  /// This method should call [didComplete] to resolve the [popped] future (and
  /// this is all that the default implementation does); routes should not wait
  /// for their exit animation to complete before doing so.
  ///
  /// See [popped], [didComplete], and [currentResult] for a discussion of the
  /// `result` argument.
  @mustCallSuper
  bool didPop(T? result) {
    didComplete(result);
    return true;
  }

@XuanTung95 cant find your code in default_route.dart , what is your getx version ?

@vrman
get-4.2.0\lib\get_navigation\src\routes\default_route.dart
You can put breakpoint on onClose() of GetXController

i remove Getx from my project its not stable , and going to riverpod . and there is no help after 1 year from developers. so many bug report without answer . i think Getx is dead. and its so risky to use it in production.

i remove Getx from my project its not stable , and going to riverpod . there is no help after 1 year for this topic from developers. so many bug report without answer . i think Getx is dead. and its so risky to use it in production.

I think there's just only one developer and that's @jonataslaw

According to @Nipodemos' answer in this issue
"Just to add some context for people who might see this issue in the future:
GetX by default doesn't let you go to a route you're already on. This helps when you accidentally call the push method twice or the user presses the button to the next screen too fast multiple times.
But since there might be use cases where you want to reopen the same screen again (i.e. reopen the page with different parameters), GetX has a preventDuplicates option that you can change when submitting the new route."
So I was facing the same error in the latest version, when the user changes the page quickly in a bottom navigation of a Navigator with onGenerateRoutes.
To make sure I didn't duplicate controllers and/or stack pages, I navigated this way.
await Get.offNamed(pages[index.value], id: 1);
Now I navigate this way
await Get.offNamed(pages[index.value], id: 1, preventDuplicates: true);
And now everything works fine, even if the user flips pages in my bottom navigator mindlessly, with the guarantee of not navigating to a route that is already on the stack, as per @Nipodemos' comment.
You can see this by adding displaying the tag or hashCode of the controller, and you'll see that it's only instantiated once.
Hope this helps to find this issue in the future.

@kauemurakami
https://github.com/jonataslaw/getx/issues/1784

@j-j-gajjar don't work for you ?

@kauemurakami Yes, it's not working for me in 4.6.5 version

@kauemurakami  any update?

Any progress? I'm having the same problem

Hey, I solved the problem, you just need to set fenix to true in lazyput.
please see:
Get.lazyPut<NewsDetailController>(() => NewsDetailController(),
        fenix: true);

Same issue here, now i put 500ms delayed before next navigation in same controller

I have a bottomSheet with lots of listed items inside and experience the same issue.
The bottomSheet will get closed if I navigate to same page & controllers when relative controllers aren't delete on time.

Inside the  initState(), delete the controller using Get.delete<> then call Get.put() again.
late YourController controller;

@override
void initState() {
    super.initState();

    Get.delete<YourController>();
    controller = Get.put(YourController());
}

Find out this one.
https://stackoverflow.com/a/70376462/9519005

In my case, it was related to a FutureBuilder I was using inside GetView. As far as I could tell, the FutureBuilder's future subscription would last through the deletion of the controller, and when navigating to the same page again, SmartManagement would get confused, and delete the controller while building the view. The solution was removing the FutureBuilder, and finding an alternate approach.

Certainly! Here's a refined version of your message:
There is a workaround that helps!
Create a temporary string variable in the controller, and call it in the build method of the widget where you are using this controller.
I'm using the ProfileController in GetView of the ProfileView, so I'm calling print(controller.temp) in the build method of ProfileView.
It's working fine now.

I had the same issue when switching screens too quickly.
My solution is to check the controller's operation and add a delay before proceeding
I'm not sure if this is the best method
if (Get.isRegistered<MyController>()) {
  DialogService.showLoading();
  await Future.delayed(Durations.long2);
  DialogService.hide();
}
Get.toNamed('MyRoute');

I had the same issue when switching screens too quickly.
My solution is to check the controller's operation and add a delay before proceeding
I'm not sure if this is the best method
if (Get.isRegistered<MyController>()) {
  DialogService.showLoading();
  await Future.delayed(Durations.long2);
  DialogService.hide();
}
Get.toNamed('MyRoute');

The best method is to switch to another state management library, lol.


How to set legend name on chart

Hi! I'm working on my project with QXlsx and thanks very much for this sharing!
Just a issue that I found.
After I addSeries and setChartLegend, chart and legend are display on excel successfully, but the legend name I couldn't set.
Is there any method to set these legend name?
Thanks again!!
Jason

i found
xlsx.write(1, 1, "Temperature");   //A1
    xlsx.write(1, 2, "Humidity");   //B1:
    xlsx.write(1, 3, "Solar Load");   //C1
    for (int i=1; i<10; ++i)
    {
        xlsx.write(i+1, 1, i+50);   //A2:A10
        xlsx.write(i+1, 2, i+20); //B2:B10
        xlsx.write(i+1, 3, i+10); //C2:C10
    }
    QXlsx::Chart *lineChart = xlsx.insertChart(43, 3, QSize(300, 300));
    lineChart->setChartType(QXlsx::Chart::CT_LineChart);
    lineChart->setChartTitle(tr("Temp-Hum-Solar Graph"));
    lineChart->setGridlinesEnable(true,false);
    lineChart->setChartLegend(QXlsx::Chart::ChartAxisPos::Bottom,false);
    lineChart->setAxisTitle(QXlsx::Chart::ChartAxisPos::Bottom, "Time in Seconds");
    lineChart->addSeries(CellRange("A1:C10"),nullptr,true,false,true);

    xlsx.saveAs("chart1.xlsx");


Set up redirects for the top 10 RubyForge projects

This involves:

[ ] finding the 10 most “popular” (by downloads? by inbound link volume?) RubyForge-hosted projects
[ ] finding where they’re hosted now (if anywhere)
[ ] setting up redirects for them

https://web.archive.org/web/20130122115131/http://rubyforge.org/top/toplist.php?type=downloads gives the most popular projects by downloads. The top dozen are:
http://rubyforge.org/projects/rubyinstaller/
http://rubyforge.org/projects/rubygems/
http://rubyforge.org/projects/rails/
http://rubyforge.org/projects/instantrails/
http://rubyforge.org/projects/redmine/
http://rubyforge.org/projects/rubot/
http://rubyforge.org/projects/flvtool2/
http://rubyforge.org/projects/railsinstaller/
http://rubyforge.org/projects/rmagick/
http://rubyforge.org/projects/emm-ruby/
http://rubyforge.org/projects/net-ssh/
http://rubyforge.org/projects/rake/
http://rubyforge.org/projects/phprpc/
http://rubyforge.org/projects/codeforpeople/
http://rubyforge.org/projects/sqlite-ruby/
http://rubyforge.org/projects/activesupport/
http://rubyforge.org/projects/seattlerb/
http://rubyforge.org/projects/activerecord/
http://rubyforge.org/projects/ruby-dbi/
http://rubyforge.org/projects/win32utils/

Thanks Chris! Is there any indication how many of these had project pages at <projectname>.rubyforge.org? I hadn’t thought of redirecting the rubyforge.org/projects pages, but maybe that’s worth doing too?

I was trying to establish that by searching (in Google) for e.g. rubyinstaller.rubyforge.org - but no joy so far, I don't think the 'link:' syntax works as you previously noticed. I'm going to take a look at some older ruby books I have to see if there's any pattern!
I think it might be worth redirecting rubyforge.org/projects pages too.

I've also been using this Google search through the text of a version of the "Ruby Cookbook": https://books.google.co.uk/books?id=bJkznhZBG6gC&pg=PA735&lpg=PA735&dq=rake.rubyforge.org&source=bl&ots=AmJ0i6pXUH&sig=CXvdLHaz3yNr57oXakMt6VKZfyQ&hl=en&sa=X&ei=e5ncVP3AO8bPaNrrgYAE&ved=0CFwQ6AEwCQ#v=onepage&q=rubyforge.org&f=false

nokogiri certainly used to be nokogiri.rubyforge.org (https://www.google.co.uk/search?q=nokogiri+rubyforge&oq=nokogiri+rubyforge&aqs=chrome..69i57.4198j0j7&sourceid=chrome&es_sm=119&ie=UTF-8#q="nokogiri.rubyforge.org")

Lots of older gems on rubygems.org still point their homepage etc.. at rubyforge.  I wonder if it is possible to get a complete dump of gemspecs from rubygems and do some automatic parsing / generation of redirects?
For example I was just looking at https://rubygems.org/gems/log4r and its homepage is listed as http://log4r.rubyforge.org/.
Doing:
➜  reviews-and-advice git:(RAD-412-transactions) ✗ gem specification log4r --remote

gives:
--- !ruby/object:Gem::Specification
name: log4r
version: !ruby/object:Gem::Version
  version: 1.1.10
platform: ruby
authors:
- Colby Gutierrez-Kraybill
autorequire:
bindir: bin
cert_chain: []
date: 2012-01-02 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
  name: bundler
  requirement: !ruby/object:Gem::Requirement
    requirements:
    - - ">="
      - !ruby/object:Gem::Version
        version: 1.0.0
  type: :development
  prerelease: false
  version_requirements: !ruby/object:Gem::Requirement
    requirements:
    - - ">="
      - !ruby/object:Gem::Version
        version: 1.0.0
- !ruby/object:Gem::Dependency
  name: rake
  requirement: !ruby/object:Gem::Requirement
    requirements:
    - - "~>"
      - !ruby/object:Gem::Version
        version: 0.8.7
  type: :development
  prerelease: false
  version_requirements: !ruby/object:Gem::Requirement
    requirements:
    - - "~>"
      - !ruby/object:Gem::Version
        version: 0.8.7
description: 'See also: http://logging.apache.org/log4j'
email<EMAIL_ADDRESS>executables: []
extensions: []
extra_rdoc_files: []
files: []
homepage: http://log4r.rubyforge.org
licenses: []
metadata:
post_install_message:
rdoc_options: []
require_paths:
- lib
required_ruby_version: !ruby/object:Gem::Requirement
  requirements:
  - - ">="
    - !ruby/object:Gem::Version
      version: '0'
required_rubygems_version: !ruby/object:Gem::Requirement
  requirements:
  - - ">="
    - !ruby/object:Gem::Version
      version: '0'
requirements: []
rubyforge_project:
rubygems_version: 2.2.2
signing_key:
specification_version: 3
summary: Log4r, logging framework for ruby
test_files: []

Obviously you don't want to do this by hand, but maybe we could have a word with the rubygems folks to get the data in one go.

Admittedly this isn't all the info for all the links on the log4r ruby gems page.  That page also has links to source-code, docs, bug-tracker, etc.. many of which are on rubyforge.  Perhaps there's some other source of data to be extracted/obtained from rubygems.

Maybe it's possible to get a one-off partial database dump from the @rubygems/rubygems.org admins? Something similar to this:
Linkset
  .where(Linkset::LINKS.map{|l| "#{l} LIKE :rf" }.join(" OR "), rf: "%.rubyforge.org%")
  .joins(:rubygem).references(:rubygem)
  .select("#{Linkset::LINKS.join ','}, rubygems.name AS gemname")
  .inject([]){|memo,set|
    memo[set.gemname] = set.attributes.slice(*Linkset::LINKS)
    memo
  }.to_yaml

Sorry for any typos, I'm writing this on my potato phone ;-)
/cc @qrush & Co.


[BUG] CF Bypass ERROR

Describe the bug
Bypassing cloudflare just throws an error:
<--- Executing Block BYPASS CF --->
ERROR: Specified argument was out of the range of valid values.
Parameter name: Unknown operator:
To Reproduce
Steps to reproduce the behavior:

Add BYPASS CF Block
Use this URL: http://host-engine.com/xc/index.php
Run the block
See error

Expected behavior
CF Bypassed with related cookies showing up.
Screenshots

Version

Version 1.1.4 # 344

I will close this issue, please keep track of https://github.com/openbullet/openbullet/issues/435 instead


'Add to email list' SendGrid function added (both ES6 and old fashioned js).

With awesome help from @kbrandwijk!

@heymartinadams Can you update let to const in the ES6 example for constants (like sg)? Also, have you tested the sg promise wrapper resolve/reject syntax?

you guys rock 🎸 💯


[Aspire.Hosting.Testing] Cannot pass DistributedApplicationOptions when using DistributedApplicationTestingBuilder.CreateAsync

DistributedApplicationTestingBuilder.CreateAsync overload that accepts an Action for the options is internal.
https://github.com/dotnet/aspire/blob/1f3c78a798a62eac4aca41195f6b3de5d571131a/src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs#L82-L87
We should consider making this public. One example use of this is to use the DistributedApplicationOptions to override the container registry for tests.
cc @mitchdenny @ReubenBond @eerhardt @sebastienros

I think this would be a useful change.


PNG: adapt cLLi/mdCv letter case

I am not the only one playing with letter case :).

The use of lower/upper-casing to signal stuff is a bit exotic design :)


RFC: Enable device by using dts, not Kconfig

The most drivers use Kconfig to select which device compiled and which not currently. eg:
(CONFIG_GPIO_STM32_PORTA is a variable defined in Kconfig)
#ifdef CONFIG_GPIO_STM32_PORTA
GPIO_DEVICE_INIT_STM32(a, A);
#endif /* CONFIG_GPIO_STM32_PORTA */

#ifdef CONFIG_GPIO_STM32_PORTB
GPIO_DEVICE_INIT_STM32(b, B);
#endif /* CONFIG_GPIO_STM32_PORTB */

#ifdef CONFIG_GPIO_STM32_PORTC
GPIO_DEVICE_INIT_STM32(c, C);
#endif /* CONFIG_GPIO_STM32_PORTC */

And the 'status = "ok"' in dts seems useless because the drivers doesn't need the defines generated from dts. Drivers use  the peripheral's base address, irq number and other informations provide by HAL.
#define GPIO_DEVICE_INIT_STM32(__suffix, __SUFFIX)			\
	GPIO_DEVICE_INIT("GPIO" #__SUFFIX, __suffix,			\
			 GPIO##__SUFFIX##_BASE, STM32_PORT##__SUFFIX,	\
			 LL_APB2_GRP1_PERIPH_AFIO |			\
			 STM32_PERIPH_GPIO##__SUFFIX,			\
			 STM32_CLOCK_BUS_GPIO)

In the above code, GPIOA_BASE,_STM32_PERIPH_GPIOA... are provided by stm32cube.
How about replace this informations by using the marcos generated from dts? Remove all Kconfig variables such as CONFIG_GPIO_STM32_PORTB, use the peripheral base address generated from dts to determined which device should compiled.
Here is a example in drivers/spi/spi-sam.c:
#define SPI_SAM_DEFINE_CONFIG(n)					\
	static const struct spi_sam_config spi_sam_config_##n = {	\
		.regs = (Spi *)CONFIG_SPI_##n##_BASE_ADDRESS,		\
		.periph_id = CONFIG_SPI_##n##_PERIPHERAL_ID,		\
		.pins = PINS_SPI##n,					\
	}

#define SPI_SAM_DEVICE_INIT(n)						\
	SPI_SAM_DEFINE_CONFIG(n);					\
	static struct spi_sam_data spi_sam_dev_data_##n = {		\
		SPI_CONTEXT_INIT_LOCK(spi_sam_dev_data_##n, ctx),	\
		SPI_CONTEXT_INIT_SYNC(spi_sam_dev_data_##n, ctx),	\
	};								\
	DEVICE_AND_API_INIT(spi_sam_##n,				\
			    CONFIG_SPI_##n##_NAME,			\
			    &spi_sam_init, &spi_sam_dev_data_##n,	\
			    &spi_sam_config_##n, POST_KERNEL,		\
			    CONFIG_SPI_INIT_PRIORITY, &spi_sam_driver_api)

#if CONFIG_SPI_0_BASE_ADDRESS
SPI_SAM_DEVICE_INIT(0);
#endif

#if CONFIG_SPI_1_BASE_ADDRESS
SPI_SAM_DEVICE_INIT(1);
#endif

So we don't need select which spi port we used in Kconfig, can use dts select spi port directly.
&spi0 {
    status = "ok";
};

I'm reviving this old issue to continue discussion on how to handle per-instance Kconfigs.
I can see the following options:

Keep per-instance Kconfig options. Do not do any devicetree integration at all.
Keep per-instance Kconfig options whenever an SoC driver maintainer wants them. These should default to 'y' if the right node label is enabled. We cannot use DT_INST instance numbers here because their relationship to nodes is undefined. This also likely means the device driver will not use DT_INST APIs unless we do something more clever to establish this relationship.
Remove per-instance Kconfig options as a general policy; let node status properties control which device instances get created.

Thoughts on these? Did I miss anything?
cc @carlescufi @MaureenHelm @henrikbrixandersen @erwango @mnkp @galak @anangl @pabigot @nashif

I feel like the ship has sailed on #1.  I'd argue that #2 should not be allowed and that we are moving towards #3 already.
For example - here's a rough idea for serial drivers, the majority of cases that are under 15 lines are just singletons to enable/disable the driver.
[galak@spiff zephyr]$ wc -l drivers/serial/Kconfig*
  128 drivers/serial/Kconfig
    8 drivers/serial/Kconfig.altera_jtag
   27 drivers/serial/Kconfig.cc13xx_cc26xx
   10 drivers/serial/Kconfig.cc32xx
   12 drivers/serial/Kconfig.cmsdk_apb
   11 drivers/serial/Kconfig.esp32
   14 drivers/serial/Kconfig.gecko
   13 drivers/serial/Kconfig.imx
   14 drivers/serial/Kconfig.leuart_gecko
   13 drivers/serial/Kconfig.litex
   12 drivers/serial/Kconfig.mcux
   18 drivers/serial/Kconfig.mcux_flexcomm
   18 drivers/serial/Kconfig.mcux_lpsci
   12 drivers/serial/Kconfig.mcux_lpuart
   11 drivers/serial/Kconfig.miv
   10 drivers/serial/Kconfig.msp432p4xx
   70 drivers/serial/Kconfig.native_posix
  353 drivers/serial/Kconfig.nrfx
   42 drivers/serial/Kconfig.ns16550
    7 drivers/serial/Kconfig.nsim
   23 drivers/serial/Kconfig.pl011
   23 drivers/serial/Kconfig.psoc6
  104 drivers/serial/Kconfig.rtt
   39 drivers/serial/Kconfig.rv32m1_lpuart
   19 drivers/serial/Kconfig.sam0
   72 drivers/serial/Kconfig.sifive
   39 drivers/serial/Kconfig.stellaris
   14 drivers/serial/Kconfig.stm32
   13 drivers/serial/Kconfig.uart_sam
   12 drivers/serial/Kconfig.usart_sam
   12 drivers/serial/Kconfig.xlnx

I would definitely go for 3) as well.
I would like to stress, however, that it must still be possible to disable a driver (not its instances, those should be handled through devicetree) through Kconfig.

I would like to stress, however, that it must still be possible to disable a driver (not its instances, those should be handled through devicetree) through Kconfig.

+1

I would definitely go for 3) as well.
I would like to stress, however, that it must still be possible to disable a driver (not its instances, those should be handled through devicetree) through Kconfig.

+1

I think we can safely call this issue closed at this point :tada:
If anyone is aware of a device driver that isn't allocating instances from devicetree, I think we should treat that as a bug or deficiency in that particular driver.

If anyone is aware of a device driver that isn't allocating instances from devicetree, I think we should treat that as a bug or deficiency in that particular driver.

Fair, there are still some driver classes like IEEE 802154 that dont utilize devicetree, but I'm fine w/closing this and opening specific bugs for those drivers.


Publish to CocoaPods

Thanks for all your work on this project.
Could you please publish the packages to CocoaPods? podspec's currently don't support specifying a dependency that isn't published on CocoaPods.org, so currently you can't install these packages as a dependency of another package.
Thanks!

I will raise the subject on our weekly dev call and get back to you. The libs are already taken on CocoaPods.org so we can't update them at the moment.
Are you able to use SPM or Carthage alternatively, or you really need CocoaPods?

@mickael-menu any update here?

@jspizziri Yes, if possible we'd like to avoid the extra load of maintaining the podspecs on the CocoaPods repository.
According to @aferditamuriqi, React Native works with Carthage and also custom Pods. However I couldn't find any information about Carthage support and saw this issue.
@aferditamuriqi Would you mind chiming in and explain how you would address this? Thank you.

@mickael-menu ,  I've never seen anyone use Carthage in React Native, and I work with it extensively on a number of projects. @aferditamuriqi can you please provide documentation on this?
Regarding the overhead of maintaining the podspecs, I'm not sure I'm following. There are already podspecs in the repository, the only thing that needs to be done is to identify an official CocoaPod package name. Then all you need is a GitHub action to automatically publish whenever you release a new version. The only work would be to set it up initially. Or are you saying you want to completely drop support for Cocoapods altogether (i.e. remove the podspecs from the repo)?
I may be out of the loop, and I know Carthage's popularity is growing, but AFAIK CocoaPods still has the most adoption. If it's not supported then it means people who can't use it (like the RN community currently) won't be able to use the awesome work you all have done here.
Would you be open to automating the publishing process via GitHub hooks? You could probably the bumping of the podspec file updates too if that's the concern.

Hi @jspizziri I will try to answer all of your questions.

yes we are not actively supporting v on the Readium swift projects. We had decided this over a year ago to drop support for CocoaPods. We do support Carthage and SPM.

The PodSpecs we have in the repo are still there as some contributors have taken the time to keep those up to date, but when no contributions on updates on the PodSpecs are made, we will be removing them.

React Native and Dependency Management:
You can have more than one dependency manager in the same project. in a few of my react native projects, i left the podfile as is, which takes care of all that comes from react native, and added Carthage as well. same as in any project you will run the pod tools and you will run the Carthage commands as well. you will need to follow the Carthage instructions the same way as in any other project that uses only Carthage.
Also you could even combine all 3 CocoaPods, Carthage and SPM in one project. there is nothing hacky or different about adding different dependency managers.

If you really prefer to use CocoaPods and do not want to use our recommended Carthage or SPM, then make sure you link the CocoaPods with the links to the PodSpecs in the Github, and link those first before any other pods.
Bottom line, I personally do not recommend using the Readium dependencies in a React Native project via CocoaPods.

@aferditamuriqi ,
Thanks for the additional information. I'm aware you can combine different package managers, but I don't really see that as a  good solution. React Native doesn't support Carthage meaning users would have to use CocoaPods and Carthage like you said, which IMHO is a poor user experience at the very least. The bottom line is that until Carthage or SPM overtake CocoaPods in the RN world, it's not great.
If you're allowing the community to continue to maintain the spec files then what would be the drawback of simply having an official release on CocoaPods.org? As I said before, the release could be entirely automated, so I'm not sure how it creates overhead for the core Readium team.
As you mention, you'll deprecate them when there are no community members maintaining them. But this conversation is effectively about me wanting to help maintain them for the purposes of leveraging this package more easily in the React Native world. However, there's a fundamental problem, the specs as they are don't work because not being properly published to CocoaPods.
If I'm willing to help automate the publishing/release to CocoaPods and have a vested interest in keeping the specs up to date would that not qualify in your mind for community maintenance?
Thanks again for all your help! I just don't want to maintain a fork of the project exclusively for the purpose of publishing it to CocoaPods.

@jspizziri
I understand  your point of view on this. But over the last 5 years we are working on, evolving  and implementing the Readium toolkit, we didn't see the demand of fully supporting CocoaPods and as mentioned before a decision has been made on that. Aside from the Readium toolkit itself there are a number of dependencies that are as well not published through CocoaPods, and that's not something we are planning to do. Not to mention the LCP repos which are no where to be published publicly. The minimum on support we have is the PodSpecs in this repo. And this is the part where contributions are accepted.
On another note, which organization are you representing and is this organization a member of the Readium Foundation? You can sure join our calls as a member and contributor to get a better understanding of goals etc.   I am sorry this is not what you were expecting.

@aferditamuriqi , thats unfortunate but thanks for communicating it. If the react-native wrapper I'm writing gains traction hopefully that decision can be revisited in the future.
I work here, here's our GitHub. We're not a member of the Readium Foundation and I only found out about the project a week ago or so, but it's by far the most complete implementation that I've come across and I appreciate all the architectural rigor behind it.
I'm not entirely sure what being a member of the Foundation would offer, the hierarchy of Readium vs ERDLab, etc isn't super clear to me.

@jspizziri We sure can revisit in the future. and i am really sorry i couldn't provide a better outcome for you. But please keep us posted and we can make adjustments eventually if your wrapper gains traction.
I see, that makes sense, as i hadn't seen you yet in other channels. Great though you found out about the Readium project and feel free to ask any questions. As of the member ship, i will forward you to @llemeurfr so he can better address your question.

Just an FYI https://www.npmjs.com/package/react-native-readium

Hi all! Just wanted to chime in here and say: I'm starting a new project and hoping to use react-native-readium! I'm using Expo (I don't have an Apple machine, so I have to use some sort of cloud build service), which I believe would Just Work™ (at least, with development builds) if the Readium Swift libraries could be found by CocoaPods. As it is, I'm struggling to figure out the correct incantations to modify the Podfile to point directly at the GitHub repos.
Anyway, all that to say, if you would be open to reconsidering CocoaPods support, I would appreciate it greatly!


LocalVideoTrack and LocalAudio track not publishing

What kind of problem do you need help?
LocalVideoTrack and LocalAudio track not publishing if user leave the channel and rejoin the same channel in next js chrome browser but it's working fine if I am using in private window of browser

@Snehasish7080 pls give me some error logs when you are encounter issues in next js chrome browser

@guoxianzhe it is not showing any kind of error but when joining in first time the publis successful message can be shown in console but when we try to rejoin the same session there no message regarding publish. And these are the current scenario logs.
10:59:07:714 Agora-SDK [INFO]: [client-7f128] Joining channel success: channel: 669dfd4209f23fa94c0413926708b739321849e54ebad740,uid:<PHONE_NUMBER>
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:726 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.onICEConnectionStateChange(checking)
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:727 Agora-SDK [DEBUG]: [lock-P2PConnection-mutex-23] is not locked, current queue 0. From P2PConnection.connect
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:727 Agora-SDK [DEBUG]: [lock-P2PChannel-mutex-15] is not locked, current queue 0. From P2PChannel.connect
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:727 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.onConnectionStateChange(connecting)
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:747 Agora-SDK [INFO]: [client-7f128] [pc-1] selectedcandidatepairchange: local {"candidateType":"prflx","protocol":"udp"}, remote {"candidateType":"host","protocol":"udp","address":"<IP_ADDRESS>","port":4715} )
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:747 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.onDTLSTransportStateChange(connecting)
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:748 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.onICEConnectionStateChange(connected)
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:748 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.onICETransportStateChange(connected)
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:749 Agora-SDK [DEBUG]: [client-7f128] [pc-1] local candidate count 1
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:780 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.onDTLSTransportStateChange(connected)
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:782 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.onConnectionStateChange(connected)
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:921 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.SelectedLocalCandidateChanged({"candidateType":"unknown","address":"unknown","port":0,"protocol":"unknown"} -> {"candidateType":"prflx","protocol":"udp"})
4b7a68ae.f4cf781d1ea02768.js:1 10:59:07:921 Agora-SDK [INFO]: [client-7f128] [p2pId: 1]: P2PConnection.SelectedRemoteCandidateChanged({"candidateType":"unknown","address":"unknown","port":0,"protocol":"unknown"} -> {"candidateType":"host","address":"<IP_ADDRESS>","port":4715,"protocol":"udp"})
4b7a68ae.f4cf781d1ea02768.js:1 10:59:08:140 Agora-SDK [DEBUG]: [lock-P2PChannel-mutex-15] is locked, current queue 1. From P2PChannel.updateRemoteRTPCapabilities
4b7a68ae.f4cf781d1ea02768.js:1 10:59:08:141 Agora-SDK [DEBUG]: [lock-P2PConnection-mutex-23] is locked, current queue 1. From P2PConnection.updateRemoteRTPCapabilities
4b7a68ae.f4cf781d1ea02768.js:1 10:59:08:141 Agora-SDK [DEBUG]: [lock-P2PChannel-mutex-15] is not locked, current queue 0. From P2PChannel.updateRemoteRTPCapabilities
4b7a68ae.f4cf781d1ea02768.js:1 10:59:08:141 Agora-SDK [DEBUG]: updateRemoteCodec, from vp9,av1,vp8,h264 to vp8,h264
4b7a68ae.f4cf781d1ea02768.js:1 10:59:08:147 Agora-SDK [DEBUG]: [lock-P2PConnection-mutex-23] is not locked, current queue 0. From P2PConnection.updateRemoteRTPCapabilities
4b7a68ae.f4cf781d1ea02768.js:1 11:01:07:715 Agora-SDK [DEBUG]: preload channel 669dfd4209f23fa94c0413926708b739321849e54ebad740, uid is<PHONE_NUMBER>

@Snehasish7080 Yes, I didn't see any publish action being triggered in the logs after you joined the channel. How does your code handle rejoining the channel? Are you triggering publish again?

@guoxianzhe  I am using
usePublish([
    localMicrophoneTrack,
    localCameraTrack,
    screenVideoTrack,
    screenAudioTrack,
  ]);

hook for this currently

@Snehasish7080
you can only publish 1 video track in one RTCProvider, you sholud publish localCameraTrack in AgoraRTCProvider and publish screenVideoTrack in AgoraRTCScreenShareProvider

@guoxianzhe there is only one  RTCProvider  and I am publishing one video track as on page load it will re initiate everything.
Currently I am doing like this.
const AgoraComponent = () => {   const client = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" });   client.enableAudioVolumeIndicator();   return (     <StrictMode>       <AgoraRTCProvider client={client}>         <AgoraRTCScreenShareProvider client={client}>           <VideoComponent client={client} />         </AgoraRTCScreenShareProvider>       </AgoraRTCProvider>     </StrictMode>   ); };
 <VideoComponent client={client} /> is containing all the necessary code for the video track and other things. And I am in next js.


Encryption?

Currently, we're using EC2 for our app servers and gralog2 server, and unlike syslog, GELF seems to lack security, leaving us reluctant to use it.  Any plans for security/encryption of GELF log messages?
Cheers.

Any progress on encryption? Included in Version 1.1 ?

I also wanted to bump this. Is there encryption out pf the box available now? i.e. GELF HTTPS
thanks!

Duplicate of #37. Also note that there was a PR (#39) a while back, which unfortunately has not yet been merged to master.

Any ideas about when we will have the ssl feature?

@kaiomagalhaes I just opened #45 with a new implementation of this. It works for me but it would be great to get additional feedback from someone else, too :)

I'm proud to announce that I just pushed a new version which supports TLS on TCP connections. We'll shortly release the gem version 3.0, until then you can point your Gemfile to Github. Feedback welcome!


Don't die on connection failures

Currently, the exporter dies when it can't talk to Nagios. Instead, nagios_up  should get set to 0.
Example logs:
Nov 21 12:35:20 nagiosxi prometheus-nagios-exporter[588317]: time="2022-11-21T12:35:20-05:00" level=fatal msg="Get \"https://nagiosxi-1/nagiosxi/api/v1/system/status?apikey=<redactedAPIKey>"
Nov 21 12:35:20 nagiosxi systemd[1]: prometheus-nagios-exporter.service: Main process exited, code=exited, status=1/FAILURE
Nov 21 12:35:20 nagiosxi systemd[1]: prometheus-nagios-exporter.service: Failed with result 'exit-code'.
Nov 21 12:35:20 nagiosxi systemd[1]: prometheus-nagios-exporter.service: Consumed 2min 15.040s CPU time.
Nov 21 12:35:20 nagiosxi systemd[1]: prometheus-nagios-exporter.service: Scheduled restart job, restart counter is at 52.
Nov 21 12:35:20 nagiosxi systemd[1]: Stopped Nagios Exporter.

The issue is the log.Fatal here: https://github.com/wbollock/nagios_exporter/blob/main/nagios_exporter.go#L245-L247