Page doesn't identify what to do if the "New" function is greyed out.

I'm trying to add an account category, but my "NEW" option is greyed out.  There's nothing on this page that indicates what would cause this (permissions etc, or other functionality that would lock the users ability to add new account  categories).  I've tried using both business manager and accountant rolls.

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

ID: 96d2116f-83ee-acf5-48f8-73abc4a00287
Version Independent ID: 3f257051-6e66-67ef-40c9-add293f6b2e4
Content: Learn About General Ledger and COA - Business Central
Content Source: business-central/finance-general-ledger.md
Service: dynamics365-business-central
GitHub Login: @edupont04
Microsoft Alias: edupont

Hello Chris,
Thank you for your feedback! This sounds strange, so if you choose the Edit List action, does the New action then become activated? That's the experience I have in the Account Categories list, at least. I hope that helps?

Hi Eva.
No it doesn’t.  We use the Wiise implementation (Australianised BC) so we are wondering if they have somehow managed to flag a setting so that it prevents the ‘business manager’ user from adding new G/L Account Categories.  The problem for us is when you go to the help page relating to this topic, there’s nothing on the page to guide you IF the ‘new’ is greyed out.  If you want to improve this page, put a small box in that says something like “your user must be a member of XYZ group to have privileges to add or edit G/L Account groups.  Get your administrator to do ABC to if required” (clearly you wouldn’t get me writing your help doco… but you get my drift, at least something to guide the user or admin as to EXACTLY what permission group is required to edit IF its something related to permissions.  It may be something different, but ‘good’ help files will have something to point me in the right direction.  Currently I’m paying a consultant to contact Wiise, who will probably have to contact Microsoft, to relay the problem back to the consultant so that I can pay them to tell me the answer to something that….. Microsoft should have had on their help page 😉
Eva I hope this is taken in the right manner --… can you consider updating this page (in fact there’s probably a benefit to having a block at the bottom of any Microsoft functionality help page) that gives you a short run down on the required permissions ‘required’ to access or edit the functionality.  Netsuite used to do this fairly well (I’m an old NS customer), but Microsoft hasn’t baked this into it’s help system yet, so functionality vs permissions is a bit of a black box!
Cheers
Chris Pope
Pacsource Pty ltd
Unit 84, 1470 Ferntree Gully Road
Knoxfield, Victoria 3180, Australia
T. +61.3.9763.4500
M. +61.447.888.777
E<EMAIL_ADDRESS>Disclaimer ; The information in this email including any attachments is confidential and may be legally privileged. If an addressing or transmission error has misdirected this email please notify the author by replying to this email and destroy the original message. If you are not the intended recipient, any use, disclosure, copying or distributions prohibited and may be unlawful. Distribution of this email to other parties may result in criminal prosecution.
From: Eva Dupont @.>
Reply to: MicrosoftDocs/dynamics365smb-docs @.>
Date: Tuesday, 8 June 2021 at 10:41 pm
To: MicrosoftDocs/dynamics365smb-docs @.>
Cc: Chris Pope @.>, Author @.***>
Subject: Re: [MicrosoftDocs/dynamics365smb-docs] Page doesn't identify what to do if the "New" function is greyed out. (#568)
Hello Chris,
Thank you for your feedback! This sounds strange, so if you choose the Edit List action, does the New action then become activated? That's the experience I have in the Account Categories list, at least. I hope that helps?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/dynamics365smb-docs/issues/568#issuecomment-856731107, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AK2G73RCTTICX7B7JDZCOPLTRYFWXANCNFSM46EJELDA.

Hi Chris,
Once again, thank you for your feedback! Out of the box, you should be able to work with account categories if you have the Business Manager or Accoutant role. However, Wiise may have made changes that are out of my reach to even know about. They are supposed to make it easy for you to know if they tweak built-in functionality, and it sounds like they might have done that here (tweak, but not document, that is).
As for you very valid suggestion that add a definition of just which permissions are required to carry out a task, I have to turn thumbs-down on that. The reason is that if list the required permissions, then your admin (or Wiise, in this case) can overrule that. Or one my colleagues can roll out an update that changes those permissions.
We consider it one of our product's advantages that it is so adaptable, whereas some of our competitors are more rigid and therefore can be perceived as more predictable as to how what works.
To meet you in the middle ground the way that we Danes prefer, I'll add a blurb about permissions to this article. But I encourage you to get your admin to check if you have effective permissions to the G/L Account Category table (they can do that from the Users page). To me, it sounds like you don't, for some reason. But if you do, and the New action remains disabled, then you guys have to go through Product Support.

Hey Eva.
Your in Denmark?  Lovely country!  Our major EU distributor is in Hedensted.
I understand your point you have made (and I appreciate your detailed, transparent response).
You are correct – Wiise has made changes by adding a tool called Wiisdom (financial reporting), and for this reason they have removed the ability to add G/L Account Categories (we received this knowledge overnight… very very annoying!!)
Regarding defining which permissions are required – I’m talking permissions, not Role.  I am the administrator of our tenant.  I had a problem recently where I could not edit data in Excel (as is explained in all the help files).  It simply would not do it…. Found out later after going through Wiise support that I had to add a permission to the Business Manager role.
Reading the standard Business Central User Guide – Microsoft do not appear to publish any detail about various ‘permissions’ and there are heaps of them! (9291 of them to be precise…. ).  Where (as an Admin) do I determine what permissions affect a user?  Where’s the bible on permissions (i.e. where can I go to identify exactly what the Media Set permission does?). It’s a bit of a black box without any structured documentation – a bit like the wild west!  This is probably outside your scope (I understand), but as an admin it makes it near on impossible to work out what ‘permissions’ need to be included or removed to enable/prevent a certain function.  Microsoft has given us ‘massive flexibility and functionality’ and then appears not to have defined anything (i.e. have at it… just see if it breaks!).
Perhaps I’m missing something!  At the end of the day the Administration question is this:  “I cannot add G/L Account Categories, what permission controls this?”  If I needed to look it up, where would I locate the information that would help me identify the related permissions?
Make sense?
Chris Pope
Pacsource Pty ltd
Unit 84, 1470 Ferntree Gully Road
Knoxfield, Victoria 3180, Australia
T. +61.3.9763.4500
M. +61.447.888.777
E<EMAIL_ADDRESS>Disclaimer ; The information in this email including any attachments is confidential and may be legally privileged. If an addressing or transmission error has misdirected this email please notify the author by replying to this email and destroy the original message. If you are not the intended recipient, any use, disclosure, copying or distributions prohibited and may be unlawful. Distribution of this email to other parties may result in criminal prosecution.
From: Eva Dupont @.>
Reply to: MicrosoftDocs/dynamics365smb-docs @.>
Date: Thursday, 10 June 2021 at 12:49 am
To: MicrosoftDocs/dynamics365smb-docs @.>
Cc: Chris Pope @.>, Author @.***>
Subject: Re: [MicrosoftDocs/dynamics365smb-docs] Page doesn't identify what to do if the "New" function is greyed out. (#568)
Hi Chris,
Once again, thank you for your feedback! Out of the box, you should be able to work with account categories if you have the Business Manager or Accoutant role. However, Wiise may have made changes that are out of my reach to even know about. They are supposed to make it easy for you to know if they tweak built-in functionality, and it sounds like they might have done that here (tweak, but not document, that is).
As for you very valid suggestion that add a definition of just which permissions are required to carry out a task, I have to turn thumbs-down on that. The reason is that if list the required permissions, then your admin (or Wiise, in this case) can overrule that. Or one my colleagues can roll out an update that changes those permissions.
We consider it one of our product's advantages that it is so adaptable, whereas some of our competitors are more rigid and therefore can be perceived as more predictable as to how what works.
To meet you in the middle ground the way that we Danes prefer, I'll add a blurb about permissions to this article. But I encourage you to get your admin to check if you have effective permissions to the G/L Account Category table (they can do that from the Users page). To me, it sounds like you don't, for some reason. But if you do, and the New action remains disabled, then you guys have to go through Product Support.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/dynamics365smb-docs/issues/568#issuecomment-857761456, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AK2G73STTXQF5ACMQLMRLKLTR55QJANCNFSM46EJELDA.

Hi Chris,
Yes, Hedensted is a very popular hub for distribution :-)
Anyway, I'll be adding this blurb to the article:

Access to create and edit accounts and account categories
In a small organization, such as the CRONUS demonstration company, most users can edit the chart of accounts, except users with a TEAM MEMBER license. However, in larger organizations, access to edit the chart of accounts is limited by roles and permissions. If you are an administrator, or you have the Business manager or Accountant role, you can check the permissions for all users to make sure the right people have access to the relevant tables. For more information, see To get an overview of a user's permissions.

I understand and respect that you are looking for a very different way of determining who can do what and who cannot. But this is as close as I can get right now.


.value improvements

Fixes #2063.

@Zirro Done. Also incorporated #2065 into the test suite.

@TimothyGu Seems like you've got a failure in a number input test there?

@Sebmaster It seems to either be an HTML spec bug or a WPT issue. Will file tickets for more details on it.

@TimothyGu Should we just ignore the test for now? It's an additional one right, no regression?

I think we should make jsdom go against spec for now, matching the test, to get increased test coverage, with a TODO comment to fix when the spec/tests get themselves straightened out.

CI fixed.


Implementing clstm's network architecture in Keras

I wish to implement clstm's network architecture in Keras, to facilitate extension and modifications to the network, and also to add gpu support.
I'm pretty much a newbie to NNs, and I'm trying to wrap my head around the code and the inner workings of clstm. It would greatly help my effort if someone can answer these questions:

What is the exact architecture/topology of the network implemented in clstm? (I mean, what layers, what do they consist of and in which order).

How does it encode the images to be used as input to the network? Is it just the raw pixels of the image with varying width/height?

What other things would I need to know in order to implement this in Keras or a similar framework like tensorflow?

@tmbdev Tom, maybe you can share some insights for this questions. Moreover, I think you are already doing something with tensorflow.

You might want to look at ocropy's lstm.py code, because I think it will be easier to understand. It was written by the same author who wrote clstm.

Keras already implements/utilizes LSTM nets (the network architecture) and Connectionist Temporal Classification (the loss function used for training) from both theano and tensorflow. See https://github.com/fchollet/keras/pull/3436 for more details.

I already have an LSTM-based OCR for TensorFlow that works like CLSTM, but TensorFlow (and by extension, Keras) support for LSTMs is still less than ideal.

@tmbdev Can you link to the repo containing the tensorflow code? Did you mean this?

No, that's a multidimensional add-on to TensorFlow. The LSTM code is experimental and in a bunch of iPython notebooks. I'm working on a Torch version right now, which I think will work better.

@tmbdev  any progress ?

@tmbdev I am also interested in torch or tensorflow/keras based implementation of clstm. Is there any update from your end?

https://github.com/ferjad/tlstm


%all% tags have no separator.

I really think this will be the last thing I run into but I noticed that %all% displays the tags with no spaces inbetween each one. Again, not sure where to go to fix it, but I'm sure it would be easy, right? I tested 3.4.1 and didn't see the same problem. I thought it might be in image.cpp but nothing I'm trying is working.

I could reproduce this, but only in the context of the commands (%all% in filenames is working fine).
Also, in the image.cpp file, the place where the contents of %all% is decided (as well as all other tokens) is line 641:
replaces.insert("all", QStrP(details["alls"].join(" "), ""));

With details["alls"] being a list containing all the tags. There's no real reason for it to not contain spaces.
Sorry for the messy code, I wrote a lot of this a
I'll investigate again, this one issue looks pretty strange as it only happens for commands.

This should now be fixed.
Note that you might want to use %allo% instead of %all% to make sure of the tag separator as well as the use of the underscores in the tag names (unlike %all% which might contain tags with underscores replaced by spaces, depending on your settings).
I updated the wiki accordingly.

It's fixed for sure, and thanks for the tip on %allo%. I just ran into it because I was experimenting with Gelbooru and discovered that something was really off with the tags after executing a recent download. You mentioned that your code was messy, but I wouldn't know the difference as I'm not very familiar with C++. I know it's an excellent language, I just don't personally have much experience with it.


chore(repo): clippy / fmt

#57  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @Evalir and the rest of your teammates on  Graphite


"from" attribute in CVE not taken into account

Describe the bug
When looking for CVEs belonging to a specific CPE, dependency check seems to ignore the "from" attribute in CVE-data.
Version of dependency-check used
The problem occurs using version 6.0.2 of the maven plugin.
Log file
Most interesting line of the log files:
struts-core-1.3.10.jar<EMAIL_ADDRESS>cpe:2.3:a:apache:struts:1.3.10:*:*:*:*:*:*:*) : CVE-2011-5057, CVE-2012-0391, CVE-2012-0392, CVE-2012-0393, CVE-2012-0394, CVE-2012-0838, CVE-2012-1007, CVE-2013-1965, CVE-2013-1966, CVE-2013-2115, CVE-2013-2134, CVE-2013-2135, CVE-2014-0094, CVE-2014-0113, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-0785, CVE-2016-1181, CVE-2016-1182, CVE-2016-4003

To Reproduce
Steps to reproduce the behavior:

create an empty maven project
add this pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>DependencyCheckTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts-core</artifactId>
            <version>1.3.10</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.owasp</groupId>
                <artifactId>dependency-check-maven</artifactId>
                <version>6.0.2</version>
                <configuration>
                    <format>ALL</format>
                    <skipProvidedScope>true</skipProvidedScope>
                    <skipTestScope>true</skipTestScope>
                    <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
                    <failOnError>false</failOnError>
                </configuration>

                <executions>
                    <execution>
                        <goals>
                            <goal>aggregate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

build the maven project:

mvn install

look at the report /target/dependency-check-report.csv, it contains 21 CVE for struts-core-1.3.10.jar (CPE = cpe:2.3:a:apache:struts:1.3.10:*:*:*:*:*:*:*), e.g.:

CVE-2011-5057
CVE-2014-0094
CVE-2016-0785

All three example CVEs are listed at NVD under "Known Affected Software Configurations" with

cpe:2.3:a:apache:struts:*:*:*:*:*:*:*:*, From (including) 2.0.0, Up to (excluding) 2...

Expected behavior
This example uses struts-1.3.10, which is not in the range "from 2.0.0 up to 2....". So I would expect dependency check to evaluate the CVE's "from" property and therefore to not list those three example CVEs in the list of detected vulnerarbilities.
Additional context
Same behaviour with dependency-check version 5.2.4.
This is kind of a "false positive", but I think, the "ignore 'from' attribute" is a general problem, so I picked the label "bug".

This is not a bug - but rather expected behavior. ODC core does take into account the version ranges within the NVD. If you take a look at the CVEs you are saying are FP - in the report they are clearly marked as being from the OSS Index. The OSS Index has vulnerabilities not in the NVD and they may have done additional research on the version ranges. If you feel these CVEs are false positives please contact the OSS Index.

Thank you for your explanation. :+1:


Tab bar icon display issues on some iPad devices

This issue covers two problems identified on some iPad devices.

The tab bar icons at the bottom of the screen are not centered vertically.
The User Settings icon on the right is askew.

Screenshot from an iPad Pro 12.9":

Screenshot from an iPhone 6+ showing the desired layout:

PR #333 submitted to dev branch.

Verified and merged into v6.1-rc, closing.


What is the purpose of  column?

I am trying to compute MOT metrics. I logically assumed that the conf column describes the confidence of an observation (a float between 0 and 1).
However, recently I've found out that setting the conf column in a prediction dataset to random values between 0 and 1 always results in the same metric values. Therefore, it seems like this column is useless. Does somebody have the same issue?
PS: in my ground truth dataset the conf column contains only values of 1.

This might be a possible copy of issue. Confidence column is usually ignored for evaluation. It just tells how sure the detector is about the presence of object. In ground truth it is set to 1 because human annotator is 100% confident that the object is present there.

yes it is not used at all in tracking evaluation here. In previous MOTChallenge 'detection' (not tracking) benchmarks, this was used, and thus it is a remnant of that.


Simplify @FrankDocGroup and have alternative for MessageStoreSender

Goes together with https://github.com/ibissource/iaf/pull/4904.


New Feature Flag to allow users to modify a column's data type from the new dataset editor

Is your feature request related to a problem? Please describe.
When users are creating a new dataset, if that dataset contains a field with a long, complex data type, users will get an error because the field type is too long. To get around this issue, users must change the field type to JSON. This can currently only be done (in the UI) through the Legacy Datasource Editor. It should be possible to do this through the new dataset editor as well.
In the new dataset editor, even if a user wanted to simply change the column's data type from one data type to another, it is not currently possible. To do it, they need to go into the Legacy Datasource Editor, again, this should be possible in the new dataset editor.
Describe the solution you'd like
Within the front-end code, there is a prop for the ColumnCollectionTable component named allowEditDataType. It is currently always set to false, but if you manually change it to true and reload, you can modify the column's data type in the new dataset editor. So it seems like the implementation was almost complete, it was just never finished off.
My solution would include creating a new feature flag which would allow users to simply modify the config file instead of having to dig into the front-end code to enable this feature. I would also create unit tests to make sure that the UI behaves as expected when the flag is either enabled or disabled.
Current dataset editor:

Proposed dataset editor with feature flag enabled:

Describe alternatives you've considered
Considering the prop is already in the component, I did not consider any other alternatives as the solution is pretty straightforward.
Additional context
I have actually implemented the new feature flag and will create a PR for it to be added to master. When it has been created, I will link it here:

Hi @geido! Would you be able to provide some feedback if any for this issue? Thank you :)

After some investigation, it turns out that the issue we were running into can be solved one of two ways. The first of the two ways is to cast the variable in the virtual dataset SQL statement to avoid it being assigned the wrong data type.
The second way to avoid the issue mentioned in the use case was actually solved by this PR: https://github.com/apache/superset/pull/17360/files. Instead of having the column type set to be a maximum of 32 characters, it switches the type to TEXT which does not have a limit.
Since the issue can now be avoided without having to make modifications to the code, we decided to close this PR (and the corresponding issue).


Removed "cachethq/docker:base-5a0320b" base image and replaced with debian:jessie

Checkout https://github.com/CachetHQ/Docker/issues/35 for details.

Thanks @andygrunwald I will review this later tonight


ci(dependabot): configuration file

If we would like to enable the dependabot automation process to bump the version of the packages automatically, then it's required this particular file.
How does it work?
There is a weekly pipeline that will care for all the projects with this particular file ci/dependabot.yml and if so it will run the validation and PR creations.
For instance
I ran the below command locally
docker run -ti \
    --rm -e GITHUB_ACCESS_TOKEN=${GITHUB_ACCESS_TOKEN} \
    -e PROJECT_PATH=v1v/apm-agent-python \
    -e PACKAGE_MANAGER=pip docker.elastic.co/observability-ci/dependabot
NOTE: Inheriting Faraday::Error::ClientError is deprecated; use Faraday::ClientError instead. It will be removed in or after version 1.0
Faraday::Error::ClientError.inherited called from /src/dependabot-script/vendor/ruby/2.6.0/gems/octokit-4.14.0/lib/octokit/middleware/follow_redirects.rb:14.
Fetching pip dependency files for v1v/apm-agent-python
Parsing dependencies information
Done
...

Actions

[ ] Verify if this particular dependabot is a good candidate to be enabled in this project.
[ ] Assign?

Generally speaking, this is not super useful for our use case. We only have 2 dependencies (3 on Python 2.7), all of them are un-pinned (this is so we don't interfere with whatever version of these libraries the user requires in their project).
As for test requirements, for most of them we are either

purposefully using old versions, for matrix tests (e.g. to test older Django versions)
can't upgrade to newer versions of the libraries due to them not supporting Python 2.7 anymore (e.g. pytest)

We might want to take another look once we dropped Python 2.7 support, but then we'd have to somehow limit it to https://github.com/elastic/apm-agent-python/blob/master/tests/requirements/reqs-base.txt

:green_heart: Build Succeeded

Expand to view the summary

Build stats

Build Cause: [Branch indexing]

Start Time: 2020-04-28T14:08:41.449+0000

Duration: 36 min 22 sec (2181826)

Commit: c80916a1d22f33f2d1ab77ad2017b859c0a352b4

Test stats :test_tube:

Test
Results

Failed
0

Passed
9088

Skipped
6248

Total
15336

I'll close this PR now for the time being, as we are still gathering details about what's the tool to be used.


all ecies error are treated as fatal

Describe the feature
discovered during #11244 and #11254
https://github.com/paradigmxyz/reth/blob/2e05ec008a85576c146afb8325cfc48e1785da10/crates/net/network/src/error.rs#L217-L217
these include various variants that are not "fatal"
https://github.com/paradigmxyz/reth/blob/2e05ec008a85576c146afb8325cfc48e1785da10/crates/net/ecies/src/error.rs#L26-L87
TODO
we need more detailed matching here and only treat hard crypto errors as fatal.
see https://github.com/paradigmxyz/reth/blob/2e05ec008a85576c146afb8325cfc48e1785da10/crates/net/network/src/error.rs#L123-L123
Additional context
No response

Hey, I'd like to work on this


v0.1

@willow-ahrens here's some things I'd like your thoughts on:

Function traits. The GraphBLAS spec only has a couple required traits, essentially: Monoid and Semiring. I think we want more than that for sure. I've mentioned a few desirable things. One thing I mention is I think we want to define these on the set/eltype.
Fill. I think any fill within the domain should be possible, but I also really require a NoValue fill. This would be very similar to Missing but it needs to "do the sparse/graph thing", which isn't exactly what Missing will do.
Would the mapsparse interface proposed be doable for Finch? Am I getting to close to wrapper hell there?
Level formats are an open question for me, but not required immediately for SuiteSparse:GraphBLAS.

And then finally, we should hash out exactly how we determine who executes what. How much of that can we do with dispatch (hopefully all of it).

Note, the proposed function stubs are very incomplete right now.

Perhaps executors are not the right idea, maybe this should be done at the type level as it is with CuArrays. Let's discuss that part more in person.

In reply to the numbered comments:

I am planning to do something along the lines of isassociative(::typeof(+), ::Float64) = true. I may also make compilation contexts, so that we can compile with different rulesets, and cache that compilation across sessions. We would want to do isassociative(::typeof(+), ::Float64, ::MyContext) = true. This would allow users to also have isassociative(::typeof(+), ::Float64, ::MyStricterContext) = false I had meant to add more discussion about this on issue https://github.com/willow-ahrens/Finch.jl/issues/29.
I think we can define such a NoValue fill. Would it be NoValue + 3 = 3? One could also imagine using wrapper functions to handle NoValues more formally, like Or(+)(NoValue, 3) = 3
mapsparse is doable for Finch. I was considering how mapsparse would differ from map, and realized that the main difference is just that mapsparse is helping users define simplification rules for f. If we wanted to implement with Finch, mapsparse(f, (A ∩ B) ∪ C) becomes

@finch @loop i...
  D[i...] = ifelse(
    A == default(A) && B == default(B) || C == default(C),
    f(A[i...], B[i...], C[i...]),
    f(default(A), default(B), default(C)))

Constructing $D$ is tricky, which brings me to...
4. I think level format traits are most useful when they declare properties about levels. Consider the problem of automatically constructing a sparse output for a broadcast. It would be great if we could just collect info about whether each input is sparse (with what fill) or dense or run length in each level, then do some simple reasoning based on that to construct an output format. We might also ask whether the dimension is randomly accessible. Finch assumes everything is ordered and unique, but you could add those properties too if you'd like. This file is doing basically that https://github.com/willow-ahrens/Pigeon.jl/blob/master/src/transform_reformat.jl.
On executors: To avoid reinventing the wheel I suggest we follow the BroadcastStyle approach. Every datatype can declare which executor they support, and we can use a tournament to resolve conflicts, and allow users to ask for a specific executor with a corresponding style. As an example, we might make a pattern matching executor to match against known kernels before falling back to something more general.

Just to briefly comment on NoValue I think I need to define the semantics better. At the very least it operates as identity for monoids, and the identity for both monoids of a semiring.

A thought on map with styles: Can we define an abstract type StyledArray that we can overload on Vararg{Union{AbstractArray, StyledArray}} so that map dispatches to mapstyled?


Refactor internals.join_managers to reduce overhead in homogeneous case

Could achieve 15-20% savings over the current code, unnecessary computations are being performed in the float-only case

This was done here: https://github.com/wesm/pandas/commit/e3eac6791dd5d9a64e9e892f9615094059ac7f1a. I don't think it's possible to squeeze much more perf out with the current implementation / design


Queue Now button does not work

Clicking the queue now button returns a 303 status and redirects to the overview page and the job remains in the delayed tab.

+1
I am facing the same issue. It just redirects to the overview on pressing the queue now button.
The Logs are exactly similar to @enricostano's Logs
Started POST "/resque/delayed/queue_now" for <IP_ADDRESS> at 2015-01-27 02:15:14 -0600
Started GET "/resque/overview" for <IP_ADDRESS> at 2015-01-27 02:15:14 -0600
Started GET "/resque/reset.css" for <IP_ADDRESS> at 2015-01-27 02:15:14 -0600
Started GET "/resque/ranger.js" for <IP_ADDRESS> at 2015-01-27 02:15:14 -0600
Started GET "/resque/style.css" for <IP_ADDRESS> at 2015-01-27 02:15:14 -0600
Started GET "/resque/jquery-1.3.2.min.js" for <IP_ADDRESS> at 2015-01-27 02:15:14 -0600
Started GET "/resque/jquery.relatize_date.js" for <IP_ADDRESS> at 2015-01-27 02:15:17 -0600
Started GET "/resque/poll.png" for <IP_ADDRESS> at 2015-01-27 02:15:17 -0600

I have been investigating a little bit more about this issue. The main problem is regarding a conflict between process locks. Usually the Resque webapp and the scheduler are running in different process ids. When you click Queue now button, the enqueue_delayed_items_for_timestamp is called in Resque webapp process. This function calls the master lock check and the acquire function is rejected because Resque scheduler process has the lock.
      # Enqueues all delayed jobs for a timestamp
      def enqueue_delayed_items_for_timestamp(timestamp)
        item = nil
        loop do
          handle_shutdown do
            # Continually check that it is still the master
            if master? # <- Here is the `Queue now` issue
              item = Resque.next_item_for_timestamp(timestamp)
              if item
                log "queuing #{item['class']} [delayed]"
                handle_errors { enqueue_from_config(item) }
              end
            end
          end
          # continue processing until there are no more ready items in this
          # timestamp
          break if item.nil?
        end
      end

This function is called when the time to execute a job has arrived too. We need a solution to differentiate them.
What do you think about to ignore the master? check in this function when is called from the Queue now button?

@fcsonline I have the same feeling as you. master? should be ignored when this function is called from the Queue now button.


Show the configure drop-down when no editable domains exist

Under Automate, if no writable domains are available, the "configuration" drop-down is simply hidden and it's not clear what to do next. Giving the user some guidance may be preferable.
Before

After

https://bugzilla.redhat.com/show_bug.cgi?id=1347162
/cc @h-kataria

@h-kataria please review

verified in UI, looks good.


Dinobots Budget #2

Scope
We have been working on the solver for the last 3mo. The solver is now stable and generating revenue. We have reduced server variable costs and added new token swaps. We would like to ask for budget for the next 6mo to continue growing.
Plan
Our main goal is to be profitable.
There are several initiatives we are looking into and we want to make sure we improve the speed of development by getting together once per mo.
Deadline
2023/12/01
People

Pata (full-time)
Poolpi (full-time - responsible)

Money
We are requesting a 285k budget for six months.
Breakdown:

20k per month per full-time contributor x 6 months
500 per month for server cost x 6 months
7k per month for external contributions and general expenses

Total
>>> 20*2*6+0.5*6+7*6
285.0

Amount
285_000
Wallet address
eth:0x2C01B4AD51a67E2d8F02208F54dF9aC4c0B778B6
Reporting
Once

What's the purpose of the 7k for ext. contributors and general expenses? 42k for the entire budget request seems like a lot in terms of discretionary funds. Can you provide some detail about these expenses?

What's the purpose of the 7k for ext. contributors and general expenses? 42k for the entire budget request seems like a lot in terms of discretionary funds. Can you provide some detail about these expenses?

Sure.
The plan is to get a 3rd contributor.
7k will give us enough buffer to pay for their salary without creating a new budget request before this proposal deadline.


[C++][Parquet] lz4-hadoop doesn't support block compression

Describe the bug, including details regarding any error messages, version, and platform.
platform: Ubuntu 22.04, x86_64
arrow: release-17.0.0-rc2
According to the
https://github.com/apache/hadoop/blob/release-3.4.1-RC1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java#L82
and
https://github.com/apache/hadoop/blob/release-3.4.1-RC1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/Lz4Codec.java#L92
the lz4-hadoop should be implemented with block stream, which means that the input may be split into blocks, each block will be compressed with lz4.
The outputs will be like that
- 4-byte big endian uncompressed_size of all blocks
- 4-byte big endian compressed_size of the flowing block
< lz4 compressed block >
- 4-byte big endian compressed_size of the flowing block
< lz4 compressed block >
- 4-byte big endian compressed_size of the flowing block
< lz4 compressed block >
... repeated until uncompressed_size from outer block is consumed ...
The implement of lz4-hadoop decompression in arrow seems only accept one block, as it will return kNotHadoop immediately if the maybe_decompressed_size of the first block is not equal to expected_decompressed_size(actually, it is the size of all blocks's decompressed_size).
https://github.com/apache/arrow/blob/release-17.0.0-rc2/cpp/src/arrow/util/compression_lz4.cc#L509
Code Example
Java write
import org.apache.hadoop.fs.Path;
import org.apache.parquet.column.ParquetProperties;
import org.apache.parquet.example.data.Group;
import org.apache.parquet.example.data.GroupFactory;
import org.apache.parquet.example.data.simple.SimpleGroupFactory;
import org.apache.parquet.hadoop.ParquetFileWriter;
import org.apache.parquet.hadoop.ParquetWriter;
import org.apache.parquet.hadoop.example.ExampleParquetWriter;
import org.apache.parquet.hadoop.metadata.CompressionCodecName;
import org.apache.parquet.schema.MessageType;
import org.apache.parquet.schema.MessageTypeParser;

import java.io.IOException;

public class WriteParquetFileExample {
    public static void main(String[] args) {
        MessageType schema = MessageTypeParser.parseMessageType(
                "message Pair {\n" +
                        "  required binary field1;\n" +
                        "  required int32 field2;\n" +
                        "}"
        );

        GroupFactory factory = new SimpleGroupFactory(schema);
        ParquetWriter<Group> writer;
        try {
            writer = ExampleParquetWriter.builder(new Path("/path/to/example.parquet"))
                    .withWriteMode(ParquetFileWriter.Mode.CREATE)
                    .withWriterVersion(ParquetProperties.WriterVersion.PARQUET_1_0)
                    .withCompressionCodec(CompressionCodecName.LZ4)
                    .config("io.compression.codec.lz4.buffersize", "65536")
                    .withType(schema)
                    .build();
            for (int i = 0; i < 65536; i++) {
                Group group = factory.newGroup();
                group.add("field1", "abcdefghijklmn___________" + i);
                group.add("field2", i);
                writer.write(group);
            }
            writer.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

C++ read
#include <arrow/io/file.h>
#include <arrow/pretty_print.h>
#include <arrow/record_batch.h>
#include <parquet/arrow/reader.h>

int main(int argc, char** argv) {
    parquet::ReaderProperties reader_props;
    std::string file_path = "/path/to/example.parquet";
    std::unique_ptr<parquet::ParquetFileReader> file_reader = parquet::ParquetFileReader::OpenFile(file_path, false, reader_props);
    std::unique_ptr<::parquet::ParquetFileReader> reader = ::parquet::ParquetFileReader::OpenFile(file_path);
    std::unique_ptr<::parquet::arrow::FileReader> out;
    auto st = parquet::arrow::FileReader::Make(arrow::default_memory_pool(), std::move(reader), &out);
    assert(st.ok());

    for (int i = 0; i < out->num_row_groups(); ++i) {
        auto row_group = out->RowGroup(i);
        std::unique_ptr<::arrow::RecordBatchReader> batch_reader;
        auto status = out->GetRecordBatchReader(&batch_reader);
        std::cout << status.message() << std::endl;
        assert(status.ok());
        std::shared_ptr<arrow::RecordBatch> _batch;
        status = batch_reader->ReadNext(&_batch);
        std::cout << status.message() << std::endl;
        assert(status.ok());
        arrow::PrettyPrint(*_batch, 0, &std::cout);
    }

    return 0;
}

Create the parquet file with java and read the file with c++ will get the error Corrupt Lz4 compressed data. from arrow status message.
Component(s)
C++

cc @pitrou @wgtmac does this in spec or we have similar problem before? 🤔

We see here the problem with the "lz4-hadoop" codec: its spec only exists as Java source code. That's it's superseded by LZ4_RAW.

IIRC, LZ4_HADOOP has been deprecated in the Parquet spec. We should use LZ4_RAW in favor of LZ4_HADOOP at all times.

This can be handled like the code below you mind. If you want this you can add it here and add a file in parquet-testing? @Polepoint ?

This can be handled like the code below you mind. If you want this you can add it here and add a file in parquet-testing? @Polepoint ?

:ok_hand:  I will try.


Project roadmap?

I was wondering what scope do you have in mind with this project?
Are you planning to cover storage, ingress, high availability, helm, etc

Nothing in mind. Maybe we should evolve from Setup a simple Kubernetes cluster in Digital Ocean using Terraform to something more comprehensive.
What do you propose?

Steps to add Block Storage on DigitalOcean. (Flocker)

I've changed my mind a little. The beauty of this project was simplicity. It was easy to setup and understand. I think now it would be better to have a second project with more advanced topics for people who mastered this one.
I'm very interested in multi master (HA) and persistent storage for a database. Although there are existing projects. For example: https://github.com/Capgemini/kubeform.

I like the way you worded it. I wouldn't mind if there is a k8s-do-TF-advanced elsewhere, where we say in our README: "OK, This will get you on your feet quickly. If you want advanced features though, please visit this repository!"


Validator should have a capcha

... to prevent abuse by robots trying to just up the hit count on a site, potentially as part of a DDOS attack.

Feel free to re-open this but I haven't observed this behavior in the intervening time.


Section-by-section dynamic rendition?

I've been really enjoying the theme!
This is a feature request (which I think doesn't exist yet).
Right now the sections are displayed continuously. We can change the spacing between sections with [design.spacing]. However, it would be great to have a different option to render the sections, to put in config.toml for example:

Only the first section is shown when the site is opened
When a person scrolls and reaches the bottom of the first section, then the second section opens up and the header of the second section is on top of the page
This goes on and goes backwards as well

Right now, even if you use the menu buttons to navigate between sections, you don't get the section header to be on top of the page. It's sometimes very low on the page, below the midpoint in many cases.

Thanks for your suggestion. Hugo is designed to generate the full page and is not well suited to this task. However, Academic is open source and can be modified to attempt to meet your requirements.

@gcushen would you mind sharing with me how I can go about doing something like that myself then? What do I need to modify or add in this case?
Thank you.


Set focus to command box after navigation

Since our app involves navigation, the command box does not always stay in focus. For example, if the user adds a person, they are navigated to the contact details window, but they have to click on the command box before they type their next command.
Let's set focus in the command box after each navigation event to make our CLI faster and avoid any clicking unless necessary.
Closes #128

Codecov Report

Merging #131 (4dbf76d) into master (90f0167) will decrease coverage by 0.08%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master     #131      +/-   ##
============================================
- Coverage     51.92%   51.84%   -0.09%
  Complexity      599      599
============================================
  Files           116      116
  Lines          2571     2575       +4
  Branches        305      305
============================================
  Hits           1335     1335
- Misses         1147     1151       +4
  Partials         89       89

Impacted Files
Coverage Δ

src/main/java/seedu/address/ui/CommandBox.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/ui/MainWindow.java
0.00% <0.00%> (ø)

Continue to review full report at Codecov.

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


Added Calendar layout example

Type of changes

[ ] Bug fix
[ ] New feature
[ ] Documentation / docstrings
[ ] Tests
[x] Other - Examples

Checklist

[x] I've run the latest black with default args on new code.
[ ] I've updated CHANGELOG.md and CONTRIBUTORS.md where appropriate.
[ ] I've added tests for new code.
[x] I accept that @willmcgugan may be pedantic in the code review.

Description
Added example for calendar layout using Columns and Tables.

@willmcgugan do I need to add myself to CONTRIBUTORS.md?

@willmcgugan calendar.py has name collision with std python calendar module. can we go with calendar2.py or calendar_layout.py ?

Thanks!


Save all project files with UTF8 (NOBOM)

Make sure all files are saved with utf8 without BOM so we don't see changes in files made by VS when we touch file that was previously saved with utf8 bom, because VS saves project files without BOM, as dictated by this setting:
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2
charset = utf-8

@evangelink, do you prefer to continue having the project files with or without BOM? By default VS sets BOM, but we override it in .editorconfig.

@Evangelink, do you prefer to continue having the project files with or without BOM? By default VS sets BOM, but we override it in .editorconfig.
Which every you choose it is about the same amount of changed files, to make them all consistent.

I have copied the configuration that was active on either runtime or roslyn (I don't recall) but I don't have any strong preference.


Migrate wazuh.yml configuration to opensearch_dashboard.yml

Description
As part of the Reporting revamp objective, we need to migrate wazuh.yml configuration to opensearch_dashboard.yml file. Moreover, we want to rename the opensearch_dashboard.yml file to wazuh_dashboard.yml.
Objective

https://github.com/wazuh/wazuh-dashboard/issues/164

References

Define plugin settings: https://github.com/opensearch-project/security-dashboards-plugin/blob/main/server/index.ts#L295-L315

Configuration Management
There are different types of configurations: global and context-specific (plugin).
Currently, the configuration located in the wazuh.yml file is centralized in one place, regardless of the context in which it is managed.
When moving the configuration to the opensearch_dashboards.yml file, it is essential to consider whether it will be defined in the core or in a specific plugin.
The configurations defined to date are as follows:

export const PLUGIN_SETTINGS = {
  'alerts.sample.prefix': {
    title: 'Sample alerts prefix',
    description: 'Define the index name prefix of sample alerts. It must match the template used by the index pattern to avoid unknown fields in dashboards.',
  },
  'checks.api': {
    title: 'API connection',
    description: 'Enable or disable the API health check when opening the app.',
  },
  'checks.fields': {
    title: 'Known fields',
    description: 'Enable or disable the known fields health check when opening the app.',
  },
  'checks.maxBuckets': {
    title: 'Set max buckets to 200000',
    description: 'Change the default value of the plugin platform max buckets configuration.',
  },
  'checks.metaFields': {
    title: 'Remove meta fields',
    description: 'Change the default value of the plugin platform metaField configuration.',
  },
  'checks.pattern': {
    title: 'Index pattern',
    description: 'Enable or disable the index pattern health check when opening the app.',
  },
  'checks.setup': {
    title: 'API version',
    description: 'Enable or disable the setup health check when opening the app.',
  },
  'checks.template': {
    title: 'Index template',
    description: 'Enable or disable the template health check when opening the app.',
  },
  'checks.timeFilter': {
    title: 'Set time filter to 24h',
    description: 'Change the default value of the plugin platform timeFilter configuration.',
  },
  'configuration.ui_api_editable': {
    title: 'Configuration UI editable',
    description: 'Enable or disable the ability to edit the configuration from UI or API endpoints. When disabled, this can only be edited from the configuration file, the related API endpoints are disabled, and the UI is inaccessible.',
  },
  'cron.prefix': {
    title: 'Cron prefix',
    description: 'Define the index prefix of predefined jobs.',
  },
  'cron.statistics.apis': {
    title: 'Includes APIs',
    description: 'Enter the ID of the hosts you want to save data from, leave this empty to run the task on every host.',
  },
  'customization.enabled': {
    title: 'Status',
    description: 'Enable or disable the customization.',
  },
  'enrollment.dns': {
    title: 'Enrollment DNS',
    description: 'Specifies the Wazuh registration server, used for the agent enrollment.',
  },
  'enrollment.password': {
    title: 'Enrollment password',
    description: 'Specifies the password used to authenticate during the agent enrollment.',
  },
  hideManagerAlerts: {
    title: 'Hide manager alerts',
    description: 'Hide the alerts of the manager in every dashboard.',
  },
  hosts: {
    title: 'Server hosts',
    description: 'Configure the API connections.',
  },
  'ip.ignore': {
    title: 'Index pattern ignore',
    description: 'Disable certain index pattern names from being available in index pattern selector.',
  },
  'ip.selector': {
    title: 'IP selector',
    description:  'Define if the user is allowed to change the selected index pattern directly from the top menu bar.'
  },
'wazuh.updates.disabled': {
    title: 'Check updates',
    description: 'Define if the check updates service is active.'
  },
  'timeout': {
    title: 'Request timeout'
  },
  'wazuh.monitoring.creation': {
    title: 'Index creation',
    description: 'Define the interval in which a new wazuh-monitoring index will be created.'
  },
  'wazuh.monitoring.enabled': {
    title: 'Status',
    description: 'Enable or disable the wazuh-monitoring index creation and/or visualization.'
  },
  'wazuh.monitoring.frequency': {
    title: 'Frequency',
    description: 'Frequency, in seconds, of API requests to get the state of the agents and create a new document in the wazuh-monitoring index with this data.'
  },
  'wazuh.monitoring.pattern': {
    title: 'Index pattern',
    description: 'Default index pattern to use for Wazuh monitoring.'
  },
  'wazuh.monitoring.replicas': {
    title: 'Index replicas',
    description: 'Define the number of replicas to use for the wazuh-monitoring-* indices.'
  },
  'wazuh.monitoring.shards': {
    title: 'Index shards',
    description: 'Define the number of shards to use for the wazuh-monitoring-* indices.'
  },
  'vulnerabilities.pattern': {
    title: 'Index pattern',
    description: 'Default index pattern to use for vulnerabilities.'
  }
}

</details>

Configuration Management
There are various types of configurations, including global and context-specific (plugin). Currently, the configuration located in the wazuh.yml file is centralized in one location, regardless of the context in which it is managed.
When transferring the configuration to the opensearch_dashboards.yml file, it is crucial to determine whether it will be defined in the core or within a specific plugin.
The configurations defined to date are as follows:

export const PLUGIN_SETTINGS = {
  'alerts.sample.prefix': {
    title: 'Sample alerts prefix',
    description: 'Define the index name prefix of sample alerts. It must match the template used by the index pattern to avoid unknown fields in dashboards.',
  },
  'checks.api': {
    title: 'API connection',
    description: 'Enable or disable the API health check when opening the app.',
  },
  'checks.fields': {
    title: 'Known fields',
    description: 'Enable or disable the known fields health check when opening the app.',
  },
  'checks.maxBuckets': {
    title: 'Set max buckets to 200000',
    description: 'Change the default value of the plugin platform max buckets configuration.',
  },
  'checks.metaFields': {
    title: 'Remove meta fields',
    description: 'Change the default value of the plugin platform metaField configuration.',
  },
  'checks.pattern': {
    title: 'Index pattern',
    description: 'Enable or disable the index pattern health check when opening the app.',
  },
  'checks.setup': {
    title: 'API version',
    description: 'Enable or disable the setup health check when opening the app.',
  },
  'checks.template': {
    title: 'Index template',
    description: 'Enable or disable the template health check when opening the app.',
  },
  'checks.timeFilter': {
    title: 'Set time filter to 24h',
    description: 'Change the default value of the plugin platform timeFilter configuration.',
  },
  'configuration.ui_api_editable': {
    title: 'Configuration UI editable',
    description: 'Enable or disable the ability to edit the configuration from UI or API endpoints. When disabled, this can only be edited from the configuration file, the related API endpoints are disabled, and the UI is inaccessible.',
  },
  'cron.prefix': {
    title: 'Cron prefix',
    description: 'Define the index prefix of predefined jobs.',
  },
  'cron.statistics.apis': {
    title: 'Includes APIs',
    description: 'Enter the ID of the hosts you want to save data from, leave this empty to run the task on every host.',
  },
  'customization.enabled': {
    title: 'Status',
    description: 'Enable or disable the customization.',
  },
  'enrollment.dns': {
    title: 'Enrollment DNS',
    description: 'Specifies the Wazuh registration server, used for the agent enrollment.',
  },
  'enrollment.password': {
    title: 'Enrollment password',
    description: 'Specifies the password used to authenticate during the agent enrollment.',
  },
  hideManagerAlerts: {
    title: 'Hide manager alerts',
    description: 'Hide the alerts of the manager in every dashboard.',
  },
  hosts: {
    title: 'Server hosts',
    description: 'Configure the API connections.',
  },
  'ip.ignore': {
    title: 'Index pattern ignore',
    description: 'Disable certain index pattern names from being available in index pattern selector.',
  },
  'ip.selector': {
    title: 'IP selector',
    description:  'Define if the user is allowed to change the selected index pattern directly from the top menu bar.'
  },
'wazuh.updates.disabled': {
    title: 'Check updates',
    description: 'Define if the check updates service is active.'
  },
  'timeout': {
    title: 'Request timeout'
  },
  'wazuh.monitoring.creation': {
    title: 'Index creation',
    description: 'Define the interval in which a new wazuh-monitoring index will be created.'
  },
  'wazuh.monitoring.enabled': {
    title: 'Status',
    description: 'Enable or disable the wazuh-monitoring index creation and/or visualization.'
  },
  'wazuh.monitoring.frequency': {
    title: 'Frequency',
    description: 'Frequency, in seconds, of API requests to get the state of the agents and create a new document in the wazuh-monitoring index with this data.'
  },
  'wazuh.monitoring.pattern': {
    title: 'Index pattern',
    description: 'Default index pattern to use for Wazuh monitoring.'
  },
  'wazuh.monitoring.replicas': {
    title: 'Index replicas',
    description: 'Define the number of replicas to use for the wazuh-monitoring-* indices.'
  },
  'wazuh.monitoring.shards': {
    title: 'Index shards',
    description: 'Define the number of shards to use for the wazuh-monitoring-* indices.'
  },
  'vulnerabilities.pattern': {
    title: 'Index pattern',
    description: 'Default index pattern to use for vulnerabilities.'
  }
}

Configuration Availability Types
It is also important to define the availability requirements for each type of configuration. We can categorize them into several types:

Static: Changes take effect only after a restart.
Dynamic: Modifications can be made at any time, and the configuration should take effect without requiring a restart.

Categorizing Configurations
These criteria necessitate categorizing all available configurations to decide which implementation approach to use. Here are some options:

Using the initializerContext of OSD: This retrieves the configuration defined in opensearch_dashboards.yml and makes it available to plugins for use.

Creating an Endpoint: This allows for obtaining the configuration at any time through an HTTP call. Performance considerations must be taken into account for this solution.

Developing an Interface: This would create a hybrid solution between the aforementioned methods, facilitating easier resolution of issues when modifications are made to native OpenSearch methods (especially when using initializerContext).

Configuration Overview Table
Here’s a table summarizing the types of configurations and their characteristics:

Configuration Type
Description
Implementation Options

Global
Applies across all contexts
- Using initializerContext

Context-Specific
Applies only within a specific plugin or core
- Creating an Endpoint

Static
Requires restart for changes to take effect
- Developing an Interface

Dynamic
Takes effect immediately upon modification

This table provides a clear overview of the different types of configurations, their descriptions, and possible implementation options, making it easier to understand and decide on the appropriate approach for configuration management.

Configurations categorizations
Steps to transform the JSON into a Markdown table:

Extract name, title and description from PLUGIN_SETTINGS
Create table headers
Format each entry as a row
Leave type, deprecated and annotations columns empty

Config
Title
Description
Type
Deprecated
Annotations

alerts.sample.prefix
Sample alerts prefix
Define the index name prefix of sample alerts. It must match the template used by the index pattern to avoid unknown fields in dashboards.

checks.api
API connection
Enable or disable the API health check when opening the app.

checks.fields
Known fields
Enable or disable the known fields health check when opening the app.

checks.maxBuckets
Set max buckets to 200000
Change the default value of the plugin platform max buckets configuration.

checks.metaFields
Remove meta fields
Change the default value of the plugin platform metaField configuration.

checks.pattern
Index pattern
Enable or disable the index pattern health check when opening the app.

checks.setup
API version
Enable or disable the setup health check when opening the app.

checks.template
Index template
Enable or disable the template health check when opening the app.

checks.timeFilter
Set time filter to 24h
Change the default value of the plugin platform timeFilter configuration.

configuration.ui_api_editable
Configuration UI editable
Enable or disable the ability to edit the configuration from UI or API endpoints. When disabled, this can only be edited from the configuration file, the related API endpoints are disabled, and the UI is inaccessible.

cron.prefix
Cron prefix
Define the index prefix of predefined jobs.

cron.statistics.apis
Includes APIs
Enter the ID of the hosts you want to save data from, leave this empty to run the task on every host.

cron.statistics.index.creation
Index creation
Define the interval in which a new index will be created.

cron.statistics.index.name
Index name
Define the name of the index in which the documents will be saved.

cron.statistics.index.replicas
Index replicas
Define the number of replicas to use for the statistics indices.

cron.statistics.index.shards
Index shards
Define the number of shards to use for the statistics indices.

cron.statistics.interval
Interval
Define the frequency of task execution using cron schedule expressions.

cron.statistics.status
Status
Enable or disable the statistics tasks.

customization.enabled
Status
Enable or disable the customization.

customization.logo.app
App main logo
This logo is used as loading indicator while the user is logging into Wazuh API.

customization.logo.healthcheck
Healthcheck logo
This logo is displayed during the Healthcheck routine of the app.

customization.logo.reports
PDF reports logo
This logo is used in the PDF reports generated by the app. It's placed at the top left corner of every page of the PDF.

customization.reports.footer
Reports footer
Set the footer of the reports.

customization.reports.header
Reports header
Set the header of the reports.

enrollment.dns
Enrollment DNS
Specifies the Wazuh registration server, used for the agent enrollment.

enrollment.password
Enrollment password
Specifies the password used to authenticate during the agent enrollment.

hideManagerAlerts
Hide manager alerts
Hide the alerts of the manager in every dashboard.

hosts
Server hosts
Configure the API connections.

ip.ignore
Index pattern ignore
Disable certain index pattern names from being available in index pattern selector.

ip.selector
IP selector
Define if the user is allowed to change the selected index pattern directly from the top menu bar.

pattern
Index pattern
Default index pattern to use on the app. If there's no valid index pattern, the app will automatically create one with the name indicated in this option.

timeout
Request timeout
Maximum time, in milliseconds, the app will wait for an API response when making requests to it. It will be ignored if the value is set under 1500 milliseconds.

vulnerabilities.pattern
Index pattern
Default index pattern to use for vulnerabilities.

wazuh.monitoring.creation
Index creation
Define the interval in which a new wazuh-monitoring index will be created.

wazuh.monitoring.enabled
Status
Enable or disable the wazuh-monitoring index creation and/or visualization.

wazuh.monitoring.frequency
Frequency
Frequency, in seconds, of API requests to get the state of the agents and create a new document in the wazuh-monitoring index with this data.

wazuh.monitoring.pattern
Index pattern
Default index pattern to use for Wazuh monitoring.

wazuh.monitoring.replicas
Index replicas
Define the number of replicas to use for the wazuh-monitoring-* indices.

wazuh.monitoring.shards
Index shards
Define the number of shards to use for the wazuh-monitoring-* indices.

wazuh.updates.disabled
Check updates
Define if the check updates service is active.

How to create configuration at the tenant level
The tenant configuration is displayed on the Dashboard Management > Advanced Settings section

export const CONTEXT_DEFAULT_SIZE_SETTING = 'context:defaultSize';
export const CONTEXT_STEP_SETTING = 'context:step';
export const CONTEXT_TIE_BREAKER_FIELDS_SETTING = 'context:tieBreakerFields';

export const uiSettings: Record<string, UiSettingsParams> = {
  [CONTEXT_DEFAULT_SIZE_SETTING]: {
    name: i18n.translate('discover.advancedSettings.context.defaultSizeTitle', {
      defaultMessage: 'Context size',
    }),
    value: 5,
    description: i18n.translate('discover.advancedSettings.context.defaultSizeText', {
      defaultMessage: 'The number of surrounding entries to show in the context view',
    }),
    category: ['discover'],
    schema: schema.number(),
  },
  [CONTEXT_STEP_SETTING]: {
    name: i18n.translate('discover.advancedSettings.context.sizeStepTitle', {
      defaultMessage: 'Context size step',
    }),
    value: 5,
    description: i18n.translate('discover.advancedSettings.context.sizeStepText', {
      defaultMessage: 'The step size to increment or decrement the context size by',
    }),
    category: ['discover'],
    schema: schema.number(),
  },
  [CONTEXT_TIE_BREAKER_FIELDS_SETTING]: {
    name: i18n.translate('discover.advancedSettings.context.tieBreakerFieldsTitle', {
      defaultMessage: 'Tie breaker fields',
    }),
    value: ['_doc'],
    description: i18n.translate('discover.advancedSettings.context.tieBreakerFieldsText', {
      defaultMessage:
        'A comma-separated list of fields to use for tie-breaking between documents that have the same timestamp value. ' +
        'From this list the first field that is present and sortable in the current index pattern is used.',
    }),
    category: ['discover'],
    schema: schema.arrayOf(schema.string()),
  },
};

Register the uiSetting on the plugin lifecycle methods
export class DiscoverServerPlugin implements Plugin<object, object> {
  public setup(core: CoreSetup) {
    core.uiSettings.register(uiSettings);
    return {};
  }

  public start(core: CoreStart) {
    return {};
  }

  public stop() {}
}

### Use the uiSettings

```ts

 core.uiSettings.get(CONTEXT_TIE_BREAKER_FIELDS_SETTING)

Adding plugin advanced settings
https://github.com/user-attachments/assets/ff7d45ee-8ac1-43d7-acf9-929e0be72431

const HIDE_MANAGER_ALERTS_SETTING = 'hideManagerAlerts';

export const uiSettings: Record<string, UiSettingsParams> = {
    [HIDE_MANAGER_ALERTS_SETTING]: {
      name: i18n.translate('wazuhCore.advancedSettings.hideManagerAlerts', {
        defaultMessage: 'Hide manager alerts',
      }),
      type: 'boolean',
      value: true,
      description: i18n.translate('wazuhCore.advancedSettings.hideManagerAlertsText', {
        defaultMessage: 'Hide the alerts of the manager in every dashboard.',
      }),
      category: ['wazuhCore'],
      schema: schema.boolean()
    },
}

Get the settings values
 core.uiSettings.get('hideManagerAlerts')

Tasks

[ ] Create providers types on public/server context
[ ] Adapt configurationStore on public/server context
[ ] Test configuration getter on public/server context
[ ] Check configuration availability on other plugins (like main)
[ ] Fix configurationStore and configuration service unit tests
[ ] Check all settings definition

Transform the plugin settings to ui settings (In progress ⏳ )
Creating an adapter to reuse the constant already defined in the wazuh plugin
https://github.com/user-attachments/assets/70071ce7-90cd-4f9c-9fda-05466232e2b8

Transform the plugin settings to plugin core config (.yml)

Creating an adapter to reuse the constant already defined in the wazuh plugin
Reuse the validate function to create the core config definitions
When the hosts settings don't exists the server throws an error


Setup project

Set up Gitflow
Set up webpack
Set up a JavaScript testing library (Jest)

Status: Approved 🟢
Hi, @rashedarman
Your project is complete! There is nothing else to say other than... it's time to merge it 💯

Set up Gitflow correctly ✔
Set up webpack correctly ✔
Set up a JavaScript testing library (Jest) correctly ✔


[HOWTO] open inside terminal instead new window

I want to edit a file inside a tmux split but the usual command
emacs -nw
Keeps opening a new window.
I'm using chemacs with doom as default profile

Please include your M-x doom/info. The emacs config cannot change whether emacs is opened in a GUI or TTY frame. Something else on your system is the issue. Two likely possiiblities are:

You've aliased emacs to emacsclient -c in your shell config,
You are using an emacs binary provided by the Emacs cask or Emacs.app bundle on MacOS. If I remember correctly, these are wrappers around emacs and you cannot open emacs in the terminal with them,

Hi
No mac.
I'm on ubuntu eoan with chemacs script to keep spacemacs and doom separated
my alias:
alias doom="nohup emacs --with=profile doom &"
<details>

emacs   version    26.3
        features   XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK2 X11 XDBE XIM THREADS
        build      oct 14, 2019
        buildopts  ()
        windowsys  x
        daemonp    server-running
doom    version    2.0.9
        build      HEAD -> develop, origin/develop, origin/HEAD 90c0dd6b3 2019-12-01 22:46:45 -0500
system  type       gnu/linux
        config     x86_64-pc-linux-gnu
        shell      /usr/bin/zsh
        uname      Linux 5.3.0-24-generic #26-Ubuntu SMP Thu Nov 14 01:33:18 UTC 2019 x86_64
        path       (~/.local/bin/ ~/bin/ /usr/local/mysql/bin/ /usr/local/sbin/ /usr/local/bin/ /usr/sbin/ /usr/bin/ /sbin/ /bin/ /usr/games/ /usr/local/games/ /snap/bin/ ~/.fzf/bin/ /usr/local/libexec/emacs/26.3/x86_64-pc-linux-gnu/)
config  envfile    envvar-file
        elc-files  0
        modules    (:completion company helm ivy :ui neotree doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup +all +defaults) pretty-code treemacs unicode vc-gutter vi-tilde-fringe window-select workspaces :editor (evil +everywhere) file-templates fold multiple-cursors rotate-text snippets :emacs dired electric ibuffer vc :tools (eval +overlay) flycheck (lookup +docsets) magit pass pdf :lang data emacs-lisp markdown (org +dragndrop +ipython +pandoc +present) python sh :app calendar (rss +org) write :config (default +bindings +smartparens))
        packages   (n/a)
        elpa       (n/a)
</details>

Tried a new cleaner alias. no success so far. Still opening a new window
alias doom='emacs --with-profile doom'

Same issue for me, however I'm using https://github.com/railwaycat/homebrew-emacsmacport
and as @hlissner pointed out it might have issues.
That said, using emacs -nw opens a terminal based emacs frame


Document compatibility with Python and Ansible ?

I am using molecule in gitlab-ci and it fails because a warning is interpreted as a job error.
This happens during the ASK [Wait for instance(s) deletion to complete] step when using python 3.7 + ansible 2.8.3 + molecule 2.20.2:
"stderr": "/root/.ansible/tmp/ansible-tmp-1565252767.211244-274908763512157/AnsiballZ_docker_container.py:18: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses\n  import imp\n",

This warning does not happen when using python 3.6 + ansible 2.8.3 + molecule 2.20.2 so this is just what I will do.
The question/request is: Is there a documentation about molecule compatibility with python and ansible ? Some kind of table indicating which version of python and ansible I should use with molecule.

That's probably related to https://github.com/ansible/ansible/issues/55213.
We support whatever Ansible supports, AFAIK. Does Ansible have a documentation page on this? We should link to that. Otherwise, I would be OK with adding a "we support what ansible supports" clause to the documentation.


Moving cache object over to using Requests

Fixes #40
This changes the map store from storing url's and Response objects to storing url to a Response, Request pair.
This is then used to return the Request object as the key for cache entries and Response object for the value. This changes the current behavior of returning String's which isn't to spec.

This looks great. This could break existing tests for people (hopefully not), so I'll likely publish a major version change for this. I might hold off for a week or two for publish to see if we can include some other PRs.

@zackargyle could you ping me when it goes live please

@gauntface I went ahead and published it as a bug fix: @1.2.4. Should be available now.


introducing mina-automation for component level testing

Added test library which can testing  on component level some auxiliary apps (especially those which are single threaded and can be used as cli). I've added tiny feature which auto-detect if environment in which we run test is CI or local development. mina-automation library which should be a corner stone for developing tests with single node or small test for corner cases test (which scope is to narrow to promote it to integration test).

!ci-build-me

!ci-build-me

!ci-build-me


Get user by id ?

Hi,
since user id is available into the api response, is possible to get user by id instead screen_name ?
Thank

The endpoint we use (UserByScreenName) only takes a username as a parameter, so adding user ids as an input would need a few changes. There is a graphql endpoint UserByRestId which would be used to implement this functionality.

I would LOVE this option. is it something doable?


Fix instruction timings for LD (C),A and LD A,(C) and STOP

I accidentally merged to my own respository, so there is an extraneous commit, but hopefully that isn't an issue.
Here's my original commit message:
"According to the StackExchange answer given at https://stackoverflow.com/a/41422692,
the instructions are 1 byte long, not 2. It seems like there was an error in the original documentation.
This should hopefully help future Gameboy emulator developers that make use of this wonderful gem."

Hi @qrvd the information in the JSON file is generated via the opcodes.rb in the bin directory from external sources.
I'm going to check if the issue is on the side of the script or upstream and get back to you.

I also think the size for the "LD (C), A" commands, should be 1. I didn't find anything in the GameBoyProgrammingManual.pdf that would say otherwise.
For the STOP command, there is actually a hardware bug that may cause the command after STOP being executed twice, that is why Nintendo recommends to add 0x00 (NOP) after 0x10 (STOP), any other use is discouraged
-> Effectively the opcode for STOP is "0x10 0x00"
-> "0x10 0x10" would lock up execution

Is there any way to contact http://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html to correct the LDCA size?

要和熊云鹏一起写这个吗？


Cleanup: remove some unused/redundant code related to #557

Cleanup: remove some unused/redundant code related to #557

We don't ever use HoverModalParams from the editor so we should just remove the ability to pass in parameters to kak-lsp. We never need to use the serialization as of now.
style is no longer used
context comes with struct HoverModalParams so it can be removed
We never need to serialize/deserialize the struct HoverModal

If we every find a use for these things they can be added again.

thanks


App stops after 5 minutes on Android with the screen turned off

Hi! First of all, wonderful plugin, thanks to the devs.
Now there is a problem with my app. I am trying to create an activity tracker (running, bicycle...), and I need a background gps tracking system to track user position and speed in the background.
The problem is that after exactly 5 minutes with the screen turned off (a person running will keep their phone in their pocket, with the screen turned off), the app stops working and tracking the position. Running it in an Android 10 emulator.
I have a brand new project with the same code as in the installation guide, plus integrated shared preferences plugin to store data.
What I've tried is disabling battery optimizations on stock Android emulator, but still nothing. However the app isn't killed when the screen isn't turned off. The notification (although not permanent/uncancellable, this may be the cause) is present. The app works fine on iOS even with the screen turned off.
I am really lost and don't have any idea on what to do since nobody else seems having this problem.
I am thinking to send regular notifications every 4 minutes to wake up the phone, but I don't know if the app may be allowed on the play store/app store, and don't know if it would work since there is already the default notification which is updated every 2 seconds.
I've tried running adb logcat to see if the system is going into some battery optimization sleep mode, but not even a hint:
11-30 03:04:31.841  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:31.903 22510 23088 I flutter : SendPort
11-30 03:04:31.903 22510 22669 I flutter : on receive isolate data
11-30 03:04:31.903 22510 22669 I flutter : LocationDto{latitude: 37.4219983, longitude: -122.084, accuracy: 20.0, altitude: 5.0, speed: 0.0, speedAccuracy: 0.0, heading: 0.0, time:<PHONE_NUMBER>000.0, isMocked: false}
11-30 03:04:31.904 22510 22669 I flutter : Instance of 'SharedPreferences'
11-30 03:04:31.904 22510 22669 I flutter : position saved to prefs
11-30 03:04:31.905 22510 22669 I flutter : updated notification
11-30 03:04:32.844  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:32.844  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:33.848  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:33.848  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:33.910 22510 23088 I flutter : SendPort
11-30 03:04:33.911 22510 22669 I flutter : on receive isolate data
11-30 03:04:33.911 22510 22669 I flutter : LocationDto{latitude: 37.4219983, longitude: -122.084, accuracy: 20.0, altitude: 5.0, speed: 0.0, speedAccuracy: 0.0, heading: 0.0, time:<PHONE_NUMBER>000.0, isMocked: false}
11-30 03:04:33.911 22510 22669 I flutter : Instance of 'SharedPreferences'
11-30 03:04:33.911 22510 22669 I flutter : position saved to prefs
11-30 03:04:33.912 22510 22669 I flutter : updated notification
--- THE APP HAS BEEN KILLED BY NOW ---
11-30 03:04:34.853  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:34.853  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:35.238  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:35.238  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:35.247  2257  2257 W View    : requestLayout() improperly called by com.android.keyguard.AlphaOptimizedLinearLayout{43d94cf V.E...... ......ID 7,0-48,61 #7f0a041c app:id/wifi_group} during layout: running second layout pass
11-30 03:04:35.857  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:35.857  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:36.860  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:36.860  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:37.863  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:37.863  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:38.868  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:38.868  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:39.868  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8
11-30 03:04:39.869  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: b: input svInfo.flags is 8
11-30 03:04:40.870  1750  2445 E GnssHAL_GnssInterface: gnssSvStatusCb: a: input svInfo.flags is 8

Also, this is what the adb shell dumpsys activity services (to show running services) looks like (including only results where the app name com.skuu.test_gps is mentioned):
adrianivascu@MBP-di-Adrian ~ % adb shell dumpsys activity services
ACTIVITY MANAGER SERVICES (dumpsys activity services)
  User 0 active services:
  ...
  * ServiceRecord{f8bc66c u0 com.skuu.test_gps/rekab.app.background_locator.IsolateHolderService}
    intent={act=START cmp=com.skuu.test_gps/rekab.app.background_locator.IsolateHolderService}
    packageName=com.skuu.test_gps
    processName=com.skuu.test_gps
    permission=android.permission.FOREGROUND_SERVICE
    baseDir=/data/app/com.skuu.test_gps-PSh_UuDdM8JXBTFISzogVA==/base.apk
    dataDir=/data/user/0/com.skuu.test_gps
    app=ProcessRecord{273e00f 22510:com.skuu.test_gps/u0a136}
    isForeground=true foregroundId=1 foregroundNoti=Notification(channel=app.rekab/locator_plugin pri=1 contentView=null vibrate=null sound=null defaults=0x0 flags=0x6a color=0xff9e9e9e vis=PRIVATE)
    createTime=-2m24s858ms startingBgTimeout=--
    lastActivity=-659ms restartTime=-2m24s857ms createdFromFg=true
    startRequested=true delayedStop=false stopIfKilled=false callStart=true lastStartId=69

  * ServiceRecord{ae77366 u0 com.google.android.gms/com.google.android.location.internal.GoogleLocationManagerService}
    intent={act=com.google.android.location.internal.GoogleLocationManagerService.START pkg=com.google.android.gms}
    packageName=com.google.android.gms
    processName=com.google.android.gms.persistent
    baseDir=/data/app/com.google.android.gms-VMmaef8awA98_Pupd2d0Xw==/base.apk
    dataDir=/data/user/0/com.google.android.gms
    app=ProcessRecord{2379889 12582:com.google.android.gms.persistent/u0a97}
    createTime=-2h34m56s969ms startingBgTimeout=--
    lastActivity=-2m24s149ms restartTime=-2h34m56s969ms createdFromFg=true
    startRequested=true delayedStop=false stopIfKilled=false callStart=true lastStartId=3
    Bindings:
    * IntentBindRecord{a1fb84a CREATE}:
      intent={act=com.google.android.location.internal.GoogleLocationManagerService.START pkg=com.google.android.gms}
      binder=android.os.BinderProxy@ce433bb
      requested=true received=true hasBound=true doRebind=false
      * Client AppBindRecord{28f30d8 ProcessRecord{273e00f 22510:com.skuu.test_gps/u0a136}}
        Per-process Connections:
          ConnectionRecord{9b9a6be u0 CR WACT com.google.android.gms/com.google.android.location.internal.GoogleLocationManagerService:@214d979}
    All Connections:
      ConnectionRecord{9b9a6be u0 CR WACT com.google.android.gms/com.google.android.location.internal.GoogleLocationManagerService:@214d979}

  Connection bindings to services:
  * ConnectionRecord{9b9a6be u0 CR WACT com.google.android.gms/com.google.android.location.internal.GoogleLocationManagerService:@214d979}
    binding=AppBindRecord{28f30d8 com.google.android.gms/com.google.android.location.internal.GoogleLocationManagerService:com.skuu.test_gps}
    conn=android.os.BinderProxy@214d979 flags=0x81

Active foreground apps - user 0:
  #0: com.skuu.test_gps
    mNumActive=1 mAppOnTop=false mShownWhileTop=true mShownWhileScreenOn=true
    mStartTime=-2m24s682ms mStartVisibleTime=-2m24s682ms
adrianivascu@MBP-di-Adrian ~ %

Thank you.

Hi @Ivaskuu
Thank you for opening an issue;

Does your app work fine when you put it in the background (pressing the home button), what if you terminate it? (removing from recent apps) - (both scenario screen is on)

Does the example app works fine for you? even when the screen is off?

Can you create a repo and share a working example of your code?

@mehdok thanks for such a quick answer!
The app works fine if simply put in background with the screen on, but callback onReceiveIsolateData isn't being called anymore, the console only shows a print I've put in the callback method.
Now not even the example app works. It has the same problem, after 53 logs it simply stops. I've tried with and without default Android 10 battery optimizations for the app on and off and nothing changed (it got up to 61 logs without battery optimization).
Once it stops working, after waking up the screen and reopening the app (which was killed), the status is Running. But no further log in the console and no other positions saved in the list.
On stack overflow, solutions say to add START_STICKY, which you have already done. Could it be a problem with the emulator? It's a new fresh install of Android 10 with the google play services available.

@mehdok thanks for such a quick answer!
The app works fine if simply put in background with the screen on, but callback onReceiveIsolateData isn't being called anymore, the console only shows a print I've put in the callback method. Thinking I did some mistakes or didn't pay enough attention I've cloned the example app, but not even the example app works as expected. It has the same problem, after 53 logs it simply stops. I've tried with and without default Android 10 battery optimizations for the app on and off and nothing changed (it gets up to 61 logs without battery optimization). However app runs indefinitely if in background or closed. The problem presents itself only with the screen turned off (closed the app, waited to get to 110 logs, turned off screen and service stoped at 118).
Once it stops working, after waking up the screen and reopening the app (which was killed), the status is Running. But no further log in the console and no other positions saved in the list.
On stack overflow, solutions say to add START_STICKY, which you have already done. Could it be a problem with the emulator? It's a new fresh install of Android 10 with the google play services available.

It could be the emulator. If you can test the code on a real device we can consider other possibilities;
Usually, we have this problem with Chinese rom on a real device because their buttery monitor is too harsh;

Hi, I'm facing the same problem on the real device i.e the background locator stops after 5 min when the screen is locked.

@tanvish99
Does the problem occur only when the screen is turned off?
What if you kill the app and leave the screen on? Is everything ok?

Yes the problem is only when the screen is turned off. Everything works fine if the screen is on and the app is killed.
If the app is killed and the screen is turned off it stops working after 5 min but as soon as the phone is unlocked it does all the tasks all at once. I think it stores it in some cache and it updates all at once. Because I'm writing some data to the document in  firebase firestore, so once the phone is unlocked it performs 15 to 20 writes at once. The same is the case with onBackgroundMessage function of Firebase Messaging plugin. It too stops after 5 min when the phone is locked.

I believe that you have a problem with the battery monitor, please try to exclude the app and it's service from every monitoring process or even pin the app, or change sleep parameters in your phone if it has one;

I checked that too and I tested in several devices and all of them have the same problem.

I see, I have some free time this weekend and I can check it out. Until then I would be more than happy to see more extra info, suggestion or logs;

Hi @mehdok

I am facing same problem. It's stop sending location when screen is lock. I tried on emulator and huawei Y9 Prime. Both has same issue.

Is this issue resolved?

I can not replicate this behavior, so it's not possible for me to fix this problem;
My only suggestion is the sleep time and battery monitor apps;
But if anyone has any useful data or suggestion I would be more than happy to hear it;

I can replicate this behavior in my app too, but on my case the background locator already stops after 3 minutes when the screen is locked. On iOS everything is working fine.
@mehdok Might there be a misconfiguration with the specified AndroidSettings? My goal was to receive location updates as soon as the location changes by 1 meter.
BackgroundLocator.registerLocationUpdate(
    _handleLocationChange,
    iosSettings: IOSSettings(accuracy: bgLocator.LocationAccuracy.NAVIGATION, distanceFilter: 0, showsBackgroundLocationIndicator: true),
    autoStop: false,
    androidSettings: AndroidSettings(
        accuracy: bgLocator.LocationAccuracy.NAVIGATION,
        interval: 0,
        wakeLockTime: 120,
        distanceFilter: 1,
        androidNotificationSettings: AndroidNotificationSettings(
            notificationChannelName: 'Location Service',
            notificationTitle: notificationTitle,
            notificationMsg: notificationMessageShort,
            notificationBigMsg: notificationMessage,
            notificationIcon: 'ic_notification',
            notificationIconColor: Colors.primary
        )
    )
);

I can replicate this behavior in my app too, but on my case the background locator already stops after 3 minutes when the screen is locked. On iOS everything is working fine.
@mehdok Might there be a misconfiguration with the specified AndroidSettings? My goal was to receive location updates as soon as the location changes by 1 meter.
BackgroundLocator.registerLocationUpdate(
    _handleLocationChange,
    iosSettings: IOSSettings(accuracy: bgLocator.LocationAccuracy.NAVIGATION, distanceFilter: 0, showsBackgroundLocationIndicator: true),
    autoStop: false,
    androidSettings: AndroidSettings(
        accuracy: bgLocator.LocationAccuracy.NAVIGATION,
        interval: 0,
        wakeLockTime: 120,
        distanceFilter: 1,
        androidNotificationSettings: AndroidNotificationSettings(
            notificationChannelName: 'Location Service',
            notificationTitle: notificationTitle,
            notificationMsg: notificationMessageShort,
            notificationBigMsg: notificationMessage,
            notificationIcon: 'ic_notification',
            notificationIconColor: Colors.primary
        )
    )
);

I just checked the example app and it seems like the example is running into the same issues too.
Steps to reproduce:

Start an emulator running on Android 11.0

Clone the example app
Run the example app on the emulator
Click the "Start" button
Grant "Allow all the time" location permissions
Turn of the screen
Wait about 3-5 minutes (it's 3 minutes on my case but others reported 5 minutes) and watch the debug console
The output should stop
Extra: Turn on the screen again. The device should record multiple location updates at once and then continue with the recording as it should.

This is my output of the app. As you can see, the recording stopped at iteration 37. After turning on the screen again multiple records for iteration 38 were tracked and the continued with iteration 75.

I did some research and there might be some issues targeting devices with an API 29+? See here for reference: https://developer.android.com/about/versions/10/behavior-changes-10

I just checked the example app and it seems like the example is running into the same issues too.
Steps to reproduce:

Start an emulator running on Android 11.0

Clone the example app
Run the example app on the emulator
Click the "Start" button
Grant "Allow all the time" location permissions
Turn of the screen
Wait about 3-5 minutes (it's 3 minutes on my case but others reported 5 minutes) and watch the debug console
The output should stop
Extra: Turn on the screen again. The device should record multiple location updates at once and then continue with the recording as it should.

This is my output of the app. As you can see, the recording stopped at iteration 37. After turning on the screen again multiple records for iteration 38 were tracked and the continued with iteration 75.

I did some research and there might be some issues targeting devices with an API 29+? See here for reference: https://developer.android.com/about/versions/10/behavior-changes-10

@ferdinandfrank

Might there be a misconfiguration with the specified AndroidSettings? My goal was to receive location updates as soon as the location changes by 1 meter.

I don't think that setting could cause this behavior, but it would be nice if you could give it more interval time than zero.

@ferdinandfrank

Might there be a misconfiguration with the specified AndroidSettings? My goal was to receive location updates as soon as the location changes by 1 meter.

I don't think that setting could cause this behavior, but it would be nice if you could give it more interval time than zero.

@Ivaskuu @tanvish99 @Husnain-Asharf @ferdinandfrank
Thank you all for providing information to solve this bug, please test the latest version and let me know if you have any problem;
Feel free to open this issue anytime;

@Ivaskuu @tanvish99 @Husnain-Asharf @ferdinandfrank
Thank you all for providing information to solve this bug, please test the latest version and let me know if you have any problem;
Feel free to open this issue anytime;

@mehdok Thank you for trying to fix this issue!
Unfortunately it seems like the changes didn't fix the issue. I still have the same issue on the example app.
Did it work for you when you tried to replicate the issue?

Start an emulator running on API level >= 29 (Android 10.0 or Android 11.0)
Clone the example app
Run the example app on the emulator
Click the "Start" button
Grant "Allow all the time" location permissions
Turn off the screen
Wait about 3-5 minutes (it's 3 minutes on my case but others reported 5 minutes) and watch the debug console
The output should stop
Extra: Turn on the screen again. The device should record multiple location updates at once and then continue with the recording as it should.

Do you need any further information to fix this issue? I would love to help but I am not really that familiar with Android or Kotlin.

@mehdok Thank you for trying to fix this issue!
Unfortunately it seems like the changes didn't fix the issue. I still have the same issue on the example app.
Did it work for you when you tried to replicate the issue?

Start an emulator running on API level >= 29 (Android 10.0 or Android 11.0)
Clone the example app
Run the example app on the emulator
Click the "Start" button
Grant "Allow all the time" location permissions
Turn off the screen
Wait about 3-5 minutes (it's 3 minutes on my case but others reported 5 minutes) and watch the debug console
The output should stop
Extra: Turn on the screen again. The device should record multiple location updates at once and then continue with the recording as it should.

Do you need any further information to fix this issue? I would love to help but I am not really that familiar with Android or Kotlin.

@ferdinandfrank  Yes, the steps you provided are good I successfully replicated the issue, and the link you have provided helped a lot too. apparently, the only necessary changes are to target the latest Android SDK (SDK 30) and add android:foregroundServiceType = "location" to the service declaration in the manifest.
<service android:name="rekab.app.background_locator.IsolateHolderService"
            android:permission="android.permission.FOREGROUND_SERVICE"
            android:exported="true"
            android:foregroundServiceType = "location"/>

With these changes, the problem for me is fixed.
Please check this and let me know if there is a problem.

@ferdinandfrank  Yes, the steps you provided are good I successfully replicated the issue, and the link you have provided helped a lot too. apparently, the only necessary changes are to target the latest Android SDK (SDK 30) and add android:foregroundServiceType = "location" to the service declaration in the manifest.
<service android:name="rekab.app.background_locator.IsolateHolderService"
            android:permission="android.permission.FOREGROUND_SERVICE"
            android:exported="true"
            android:foregroundServiceType = "location"/>

With these changes, the problem for me is fixed.
Please check this and let me know if there is a problem.

@mehdok It seems like the issues are gone when I just minimize the app without locking the screen. But when I lock the screen the service stops working after 3 minutes.
It might be just an issue with the emulator. I will test it on a physical device today.

@mehdok It seems like the issues are gone when I just minimize the app without locking the screen. But when I lock the screen the service stops working after 3 minutes.
It might be just an issue with the emulator. I will test it on a physical device today.

@ferdinandfrank
Please note that in this situation (when the emulator screen is off) AndroidStudio will stop showing logs after 3 minutes (more or less), but if you open the app you can see that locations are logged properly.
But it would be really nice to test on a real device with Android 10 or 11.

@ferdinandfrank
Please note that in this situation (when the emulator screen is off) AndroidStudio will stop showing logs after 3 minutes (more or less), but if you open the app you can see that locations are logged properly.
But it would be really nice to test on a real device with Android 10 or 11.

@ferdinandfrank
Hmm, you are receiving a bunch of location at the same time, that's really strange.
I'm really out of ideas and I would appreciate any idea or piece of documents that could explain this behavior.

Can you confirm that this happens only on Android >= 10?
Does this behavior is happening in all 3 possible states (App minimized, App terminated, the phone screen is off) or some of them?

@ferdinandfrank
Hmm, you are receiving a bunch of location at the same time, that's really strange.
I'm really out of ideas and I would appreciate any idea or piece of documents that could explain this behavior.

Can you confirm that this happens only on Android >= 10?
Does this behavior is happening in all 3 possible states (App minimized, App terminated, the phone screen is off) or some of them?

@mehdok
Thank you very much for analyzing this further!

I can confirm that this happens only on Android >= 10. Everything seems to work on Android <=9, at least on the emulator.
The issue only occurs when the phone screen is off. When the screen is on everything works fine, even when the app is minimized or terminated.

@mehdok
Thank you very much for analyzing this further!

I can confirm that this happens only on Android >= 10. Everything seems to work on Android <=9, at least on the emulator.
The issue only occurs when the phone screen is off. When the screen is on everything works fine, even when the app is minimized or terminated.

@ferdinandfrank
Thank you for the information, I have some free time this weekend to work on this;

@ferdinandfrank
Thank you for the information, I have some free time this weekend to work on this;

I'm working on a permanent solution. But you can set the interval to a large number (like 60 seconds), it will solve the problem temporarily;

I'm working on a permanent solution. But you can set the interval to a large number (like 60 seconds), it will solve the problem temporarily;

@ferdinandfrank
Please check the new version, the problem must be solved;

@ferdinandfrank
Please check the new version, the problem must be solved;

@mehdok
You are a hero! It works, thank you for fixing it! :)

@mehdok
You are a hero! It works, thank you for fixing it! :)

Hi i am on the version
background_locator: ^1.6.6
I have been notified by the users that the app doesn't give location updates on Vivo V9 which has  FunTouch OS based on  Android 8.0 version.
The notification goes away as soon as the screen is turned off. Also the same thing happens when the app is killed on this device.
I tried to simulate similar scenarios on my Redmi note 8 pro and everything was working fine. I noticed that if I use the default speed booster of the mobile it kills the app as well as the location service running in the background.
Can you please help me out some way. @mehdok @ferdinandfrank @tanvish99

Is there a way to restart the service when the app is in a killed state and when the OS somehow kills the location update service of our app?
will the dispose callback of the BackgroundLocator.registerLocationUpdate method be of any helpful in that area?