From private repo

@PRMerger18 : Thanks for your contribution! The author, @mestew, has been notified to review your proposed change.


Lack of get_view_names

workspace    | The above exception was the direct cause of the following exception:
workspace    |
workspace    | Traceback (most recent call last):
workspace    |   File "/usr/share/hue/desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py", line 99, in decorator
workspace    |     return func(*args, **kwargs)
workspace    |   File "/usr/share/hue/desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py", line 498, in autocomplete
workspace    |     for t in assist.get_view_names(database):
workspace    |   File "/usr/share/hue/desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py", line 602, in get_view_names
workspace    |     return self.db.get_view_names(database)
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/reflection.py", line 773, in get_view_names
workspace    |     return self.dialect.get_view_names(
workspace    |   File "<string>", line 2, in get_view_names
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/reflection.py", line 97, in cache
workspace    |     ret = fn(self, con, *args, **kw)
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/dialects/postgresql/base.py", line 3283, in get_view_names
workspace    |     return self._get_relnames_for_relkinds(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/dialects/postgresql/base.py", line 3255, in _get_relnames_for_relkinds
workspace    |     return connection.scalars(query).all()
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1346, in scalars
workspace    |     return self.execute(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1414, in execute
workspace    |     return meth(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 489, in _execute_on_connection
workspace    |     return connection._execute_clauseelement(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1638, in _execute_clauseelement
workspace    |     ret = self._execute_context(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1842, in _execute_context
workspace    |     return self._exec_single_context(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1983, in _exec_single_context
workspace    |     self._handle_dbapi_exception(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2325, in _handle_dbapi_exception
workspace    |     raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1964, in _exec_single_context
workspace    |     self.dialect.do_execute(
workspace    |   File "/usr/share/hue/build/env/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 747, in do_execute
workspace    |     cursor.execute(statement, parameters)
workspace    | sqlalchemy.exc.InternalError: (psycopg2.errors.InternalError_) QueryError: Item not found: Invalid column: relpersistence
workspace    |
workspace    | [SQL: SELECT pg_catalog.pg_class.relname
workspace    | FROM pg_catalog.pg_class JOIN pg_catalog.pg_namespace ON pg_catalog.pg_namespace.oid = pg_catalog.pg_class.relnamespace
workspace    | WHERE pg_catalog.pg_class.relkind = ANY (ARRAY[%(param_1)s]) AND pg_catalog.pg_class.relpersistence != %(relpersistence_1)s AND pg_catalog.pg_namespace.nspname = %(nspname_1)s]
workspace    | [parameters: {'param_1': 'v', 'relpersistence_1': 't', 'nspname_1': 'public'}]
workspace    | (Background on this error at: https://sqlalche.me/e/20/2j85)
workspace    |

Need to override:
https://github.com/sqlalchemy/sqlalchemy/blob/5147bf8e3cb321b8728b3af5bb0b2644995b3793/lib/sqlalchemy/dialects/postgresql/base.py#L3265-L3272

It works well on sqlalchemy 1.4 but failed on 2.0. We should either fix this bug or remark that we are only compatible with 1.4 version.


Reverts "Roll Flutter Engine from aa98a9d2e86f to 3b92bb6eda19 (4 revisions) (#133224)"

Reverting for failing wide gamut test https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios wide_gamut_ios/3186/overview

Taking a look.

@zanderso the issue was that the original description looks to have been modified or Github changed the format of the body when it opens the revert. I'll take a look to make sure it is not the later.


Use environments

Refs: #112

It's a shame that you can't really see what this does until after we deploy to dev.


Revert back what goodbyedpi do

Hello, I'm just a user that has been using your dns redirecting. I just want to know how to revert everything back like the previous setting before running the bat file. I kinda noobs in C++ so I think it'll be quite a hassle to check one by one the code.
I'll appreciate it since all my visited website now started as I open from Russia currently :'(
Please help. anw I try reading the code while waiting the answer. sorry for the trouble.

 I figured it out please close this issue. 👍


[Android][Column/ColumnSet rendering] Custom Column rendering forces use of FlexBox Layout

Platform

[ ] Android

Version of SDK
main
Details
Column rendering is tightly couple to flexbox layouts. This doesn't allow customers to override column rendering using other types of layouts

Columns can be overriden other types of Layouts, at least it supports LinearLayouts.


NuGet Package restore failed for project AspNetIdentity_2fa

Getting the following build error when trying to compile the latest version of AspNetIdentity_2fa project:
NuGet Package restore failed for project WebHost: Unable to find version '2.1.2-build00267' of package 'IdentityServer3'..

just pull a newer version from nuget.


support insecure bind

support insecure bind like hypercorn does. This is especially useful when developing locally.

(See #311)

Please reopen this, this was my intent. I need both at the same time to locally replicate an issue I'm facing with hypercorn in production.


fix(deps): depend on release-please ^5.2.1 to support merge commits

I was pleasantly surprised when I've discovered that as of few hours ago, merge commits are now supported in release-please - big thanks @bcoe!
All I did here was I've ran npm update followed by npm build - I hope that's what I was supposed to do but if not, I'm happy to do it some other way.
I marked that as a fix, but I'm not sure whether incorporating upstream fixes should itself be a fix.

@mateuszpodraza thanks for the contribution, it's awesome to have other folks contributing.
Yes, all that should be necessary is running npm run build, I'll land this now 👍


gatsby develop fails - "Cannot query field "references""

Great starter, thanks for sharing! ✌
I get this when running gatsby develop:
ERROR in
/home/jeff/shadow/projects/barcadia-wordpress/src/pages/news/{contentfu
lPost.url}.js
  26:9  error  Cannot query field "references" on type
"ContentfulPostContent"  graphql/template-strings

I'm a Contentful noob, but as far as I can make out, references is reserved for paid Contentful plans, and as such the data isn't present upon syncing with a free account.
A quick fix for me was to remove this content from the Graphql query in src/pages/news/{contentfulPost.url}.js
Resulting in this:
export const data = graphql`
    query postQuery($id: String) {
        contentfulPost(id: { eq: $id }) {
        title
        introduction
        content {
            raw
        }
        createdAt(formatString: "DD MMMM, YYYY")
        }
    }
    `

Apart from one missing image, I haven't noticed any drastic impact and it's got me up and running.

References in this context relates to embedded assets in content (things like images...). It's different to the paid-for option you see in Contentful. The demo was built using the free version of Contentful so you shouldn't come across anything that is not available to you.
By the looks of it, graphql throws an error if none of the posts have embedded assets.
In my example one of the posts, Toolkit has an embedded asset, but the others do not so it does not cause an error. I'll need to test this theory locally but I imagine this is what is happening.
I'll need to see if there is a way of creating some sort of fallback, checking if none of the posts have embedded content as a way of preventing the error.

Thanks for the update, @bigupjeff. Resolved the errors on my end as well.
Image imports were hitting timeout limits resulting in missing referenced images causing fetch errors with 404's.

There was an error in your GraphQL query:
Cannot query field "references" on type "ContentfulPostContent"

Hi there. I had to remove the reference field from the query as well.
While I was messing with the post on Contentful, I figured the references field is a paid feature also.
@bagseye  So is it possible to add images to a post in Contentful within the free plan?

I solved it 🥳🥳
Go to Contentful > Content Model > Post > Content (Rich Text) > Settings
Make sure the Asset is activated in the Embedded entries & assets.
And then the references field is enabled in the GraphiQL

@salihayazdir 's solution worked for me - BUT before it did, I had to add some media to one post

I'm getting the following errors :
(node:19866) MaxListenersExceededWarning: Possible EventEmitter memory leak
detected. 11 end listeners added to [PassThrough]. Use
emitter.setMaxListeners() to increase limit


⚠ Itaca Gallery has degraded performance

In 861646b, Itaca Gallery ($SITE_TCGLR) experienced degraded performance:

HTTP code: 200
Response time: 7106 ms

Resolved: Itaca Gallery performance has improved in b160c2d after 18 minutes.


Import of CycloneDX Scan fails if description of CVE is missing

Bug description
Hey,
we are trying to implement a process in which we scan all our docker images with trivy. The resulting CycloneDX should be send to DefectDojo. Some Images had a CVE such as https://security-tracker.debian.org/tracker/TEMP-0290435-0B57B5. This CVE did not have a description in the beginning, after a few days debian added one. Anyways, in DefectDojo the description field seems to be mandatory but the specification of CycloneDX does not state any requirements on the fields of the vulnerability objects https://cyclonedx.org/docs/1.5/json/#vulnerabilities_items_description. We were not able to import those CycloneDX SBOMs using the API /api/v2/reimport-scan/
Thats beeing said I think such a requirement should also not be expected on CycloneDX SBOM imports.
Steps to reproduce

Create SBOM using trivy

trivy image --format cyclonedx --cache-dir .trivycache/ --scanners vuln --no-progress <some docker image>

Add to vulnerabilities list:

    {
      "id": "TEMP-0290435-0B57B5",
      "source": {
        "name": "debian",
        "url": "https://salsa.debian.org/security-tracker-team/security-tracker"
      },
      "ratings": [
        {
          "source": {
            "name": "debian"
          },
          "severity": "low"
        }
      ],
      "advisories": [
        {
          "url": "https://security-tracker.debian.org/tracker/TEMP-0290435-0B57B5"
        }
      ],
      "affects": [
        {
          "ref": "pkg:deb/debian/tar@1.30%2Bdfsg-6?arch=amd64&distro=debian-10.12",
          "versions": [
            {
              "version": "1.30+dfsg-6",
              "status": "affected"
            }
          ]
        }
      ]
    },

Send sbom to defect-dojo using reimport or import api endpoint:

curl -v -X POST --header "X-CSRFToken: $TOKEN" -H 'Content-Type: multipart/form-data' --header "Authorization: Token $TOKEN" \
              -F "active=true" \
              -F "verified=true" \
              -F "scan_type=CycloneDX Scan" \
              -F "product_name=test_product" \
              -F "engagement_name=test_engangement" \
              -F "product_type_name=test_type" \
              -F "auto_create_context=true" \
              -F "file=@sbom_file" \
  'https://<defect-dojo-host>/api/v2/reimport-scan/'

Check in server logs for 'django.db.utils.IntegrityError: null value in column "description" violates not-null constraint'

Expected behavior
Import should be possible without giving a description in a vulnerability entry, at least since specification does not mention any requirements on this key.
Deployment method (select with an X)

[ ] Docker Compose
[x] Kubernetes
[ ] GoDojo

Environment information

Operating System: Ubuntu 22.04
DefectDojo version 2.29.4

Logs
[04/Jan/2024 15:12:59] ERROR [dojo.api_v2.exception_handler:56] null value in column "description" violates not-null constraint
DETAIL:  Failing row contains (26640, tar:1.30+dfsg-6 | TEMP-0290435-0B57B5, 2024-01-04, 0, null, Low, null, null, null, null, null, **URL:** https://security-tracker.debian.org/tracker/TEMP-029043..., t, t, f, f, f, f, f, 0, null, S3, 2024-01-04 15:12:59.112358+00, null, null, null, null, null, t, f, 2024-01-04 15:12:59.42694+00, null, null, null, 7, null, 7, null, 162, null, f, null, null, null, null, null, null, null, tar, 1.30+dfsg-6, null, TEMP-0290435-0B57B5, f, null, 2024-01-04 15:12:59.426904+00, null, null, null, null, null, null).
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/.instana/python/instana/instrumentation/pep0249.py", line 51, in execute
    result = self.__wrapped__.execute(sql, params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.errors.NotNullViolation: null value in column "description" violates not-null constraint
DETAIL:  Failing row contains (26640, tar:1.30+dfsg-6 | TEMP-0290435-0B57B5, 2024-01-04, 0, null, Low, null, null, null, null, null, **URL:** https://security-tracker.debian.org/tracker/TEMP-029043..., t, t, f, f, f, f, f, 0, null, S3, 2024-01-04 15:12:59.112358+00, null, null, null, null, null, t, f, 2024-01-04 15:12:59.42694+00, null, null, null, 7, null, 7, null, 162, null, f, null, null, null, null, null, null, null, tar, 1.30+dfsg-6, null, TEMP-0290435-0B57B5, f, null, 2024-01-04 15:12:59.426904+00, null, null, null, null, null, null).

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/rest_framework/mixins.py", line 19, in create
    self.perform_create(serializer)
  File "/app/dojo/api_v2/views.py", line 3472, in perform_create
    serializer.save(push_to_jira=push_to_jira)
  File "/app/dojo/api_v2/serializers.py", line 2548, in save
    ) = importer.import_scan(
        ^^^^^^^^^^^^^^^^^^^^^
  File "/app/dojo/importers/importer/importer.py", line 345, in import_scan
    new_findings = self.process_parsed_findings(test, parsed_findings, scan_type, user, active=active,
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/dojo/decorators.py", line 48, in __wrapper__
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/celery/local.py", line 182, in __call__
    return self._get_current_object()(*a, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/celery/app/task.py", line 411, in __call__
    return self.run(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/dojo/importers/importer/importer.py", line 111, in process_parsed_findings
    item.save(dedupe_option=False)
  File "/app/dojo/models.py", line 2937, in save
    super(Finding, self).save(*args, **kwargs)
  File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 812, in save
    self.save_base(
  File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 863, in save_base
    updated = self._save_table(
              ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 1006, in _save_table
    results = self._do_insert(
              ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 1047, in _do_insert
    return manager._insert(
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 1791, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1660, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", line 67, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
    with self.db.wrap_database_errors:
  File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/.instana/python/instana/instrumentation/pep0249.py", line 51, in execute
    result = self.__wrapped__.execute(sql, params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
django.db.utils.IntegrityError: null value in column "description" violates not-null constraint
DETAIL:  Failing row contains (26640, tar:1.30+dfsg-6 | TEMP-0290435-0B57B5, 2024-01-04, 0, null, Low, null, null, null, null, null, **URL:** https://security-tracker.debian.org/tracker/TEMP-029043..., t, t, f, f, f, f, f, 0, null, S3, 2024-01-04 15:12:59.112358+00, null, null, null, null, null, t, f, 2024-01-04 15:12:59.42694+00, null, null, null, 7, null, 7, null, 162, null, f, null, null, null, null, null, null, null, tar, 1.30+dfsg-6, null, TEMP-0290435-0B57B5, f, null, 2024-01-04 15:12:59.426904+00, null, null, null, null, null, null).

Sample scan files
Thats just a scan with trivy from ubuntu:latest and I added a vulnerability without description.
ubuntu.json
Additional context (optional)
First I was thinking to raise an issue at trivy but it seems wrong that the specification of CycloneDX does not mention a requirement on this field.

This can be closed @mtesauro

We still experience this bug in version 2.34.4.
The input is a CyclonDX report which does not generate a description in the XML format.
16/May/2024 13:22:55] ERROR [dojo.api_v2.exception_handler:36] null value in column "description" of relation "dojo_finding" violates not-null constraint
We've concluded that after looking at the codebase that there are 2 xml parser functions (legacy for CycloneDX 1.0, and a new on for a higher CDX version).
This fix has only been merged on the legacy function after the refactor earlier this year. As we're using CycloneDX version 1.4+ the issue still persists.

manage_vulnerabilty_xml() (New function)
manage_vulnerability_legacy() (Legacy function)

Hi @k0mand1r,
could you please add a sample file? Than, I can submit a bugfix.
Best

@k0mand1r It's also quite possible that whatever tool generated that XML file isn't valid per the CycloneDX spec - this wouldn't be the first time a tool produced "ClycloneDX-like" output that didn't pass a validation test.
I'd suggest you use the cyclonecx tool to validate your XML files to ensure they are actually valid (and should be parsed by DefectDojo's parser). If it's valid and DefectDojo can't parse it, then there's definitely an issue with our parser. If it's not valid ClycloneDX, then that's on the tool that output the XML file.
You can get the CLI tool at: https://github.com/CycloneDX/cyclonedx-cli
I've used it, it works great.


Implement Gerstner Waves using compute shaders

This change should result in identical behaviour to what we had before, but is a prelude to a fix for #279 which will be the result of a change to texture formats, but needs compute gerstner shaders in order to be implemented efficiently.

All TODOs should be marked as:
TODO(TRC)
There is some cleanup and refactoring left to do, but the functionality itself is ready to test.

Closing this as it wasn't needed for what we were doing in the end. It isn't a high priority issue.


RAT-349: Fix NPE on addDefaultLicenses=false

The place where the NPE occurs is here
https://github.com/apache/creadur-rat/blob/21b726a0945f905d67ef8854950aa1e4530873a3/apache-rat-core/src/main/java/org/apache/rat/Reporter.java#L56
Because no config is set the stylesheet is null which NPEs on the .get().
If you normally set a config without a styleSheet something similar is done.

@nielsbasjes  thanks for the fix, but I am concerned that something else is wrong.
If I run  RAT from the CLI and givie it the command line option --no-default-licenses it reports
Exception in thread "main" org.apache.rat.ConfigurationException: You must specify at least one license
	at org.apache.rat.ReportConfiguration.validate(ReportConfiguration.java:495)
	at org.apache.rat.Report.main(Report.java:155)

How did you manage to get a null stylesheet while still having isStyleReport() return true?

Check this because that is how I found this problem https://github.com/apache/creadur-rat/pull/194
I wanted the test to only allow my custom  license and it crashes with an NPE.

Thanks for the finding.


Open lightbox from another link

anyway to open the image in the carousel from an external link?
So i have a carousel of images, but below it I also have a list of connected comments that one of the images might have been in. if you click the comment, I want that image to open in the lightbox gallery.

You can trigger click on the relevant carousel element?


Elm 0.19

Hello! Do you intend to upgrade and maintain an Elm 0.19 version?
I can try to contribute with PRs if needed.

Yep! See https://github.com/elm-explorations/test/issues/13 - if you'd like to contribute a PR there to move things over, I would be happy to review it! ❤

Please don't open a PR -- there is a lot of work that is needed to be done to port this to 0.19. I'm in the process already of working on this.

Oops, sorry! My mistake. 😅

@eeue56 @rtfeldman Thank you for the information and your work!
It may be better to leave this issue open so other people can find it, but feel free to close it if you think that is better. 👍

Not trying to bug anybody, but is there anything we can help with or any status?

https://m.twitch.tv/avh4

See https://github.com/elm-explorations/test/pull/41

The linked issue is merged, does that mean this can be closed? :)

It can be closed although this package itself was not upgraded. But the functionality was merged into elm-explorations/elm-test and updated for 0.19, so you can use it. This repository should be marked as deprecated and point to elm-test.


Bump minimum supported CodeQL version to 2.4.5 to address flaky tests

This PR bumps the minimum supported CLI version to 2.4.5. This is the earliest CodeQL version supported by the earliest supported version of GHES, i.e. GHES 3.1.
Bumping to this version resolves some flaky tests caused by the "We still have not reached idleness" deadlock, as this deadlock is fixed in 2.4.5.
Merge / deployment checklist

[x] Confirm this change is backwards compatible with existing workflows.
[x] Confirm the readme has been updated if necessary.
[x] Confirm the changelog has been updated if necessary.

Nice. Do we definitely want to do a minor version bump for this? I guess it is a breaking change, but it goes against our pattern of bumping the minor version after a GHES release.

We've made similar deprecations for the CLI in a patch version: https://github.com/github/codeql-cli-binaries/releases/tag/v2.7.5.  Given the GHES versioning constraints I'll drop the version bump.


Multiple Sorts don't work right

When you have multiple sorts going using client-side sorting, it doesn't work quite right.  Perhaps we should only have 1 sort available.

similar to #29

I would recommend that multi column sorting by a required feature. It's not unusual for users to want to sort by at least two columns. Ex. Date & Price, Name & Date, etc.
Typically this is done by last one in has priority and the rest are secondary sorts that remember what they were last toggled too.
I do think that having a configuration option to remember N number of column sort history would be nice.

fixed now


curl can't complete handshake with blocked websites (TLS v1.2 0x16 0x03 0x03)

Operating system / операционная система
Windows 10 22H2
Running as service / Запуск программы как сервис
I installed it as a service / Установил как сервис Windows
Describe the bug / Опишите ошибку программы
The blocked websites work fine in the Firefox browser, but curl can't access them.
Here is an example:
>curl -v https://rutracker.org
* Host rutracker.org:443 was resolved.
* IPv6: (none)
* IPv4: <IP_ADDRESS>, <IP_ADDRESS>
*   Trying <IP_ADDRESS>:443...
* Connected to rutracker.org (<IP_ADDRESS>) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: D:\curl\bin\curl-ca-bundle.crt
*  CApath: none
* LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to rutracker.org:443
* Closing connection
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to rutracker.org:443

Additional information / Дополнительная информация
No response

Provide the pcap dumps of both Firefox and cURL.
https://github.com/ValdikSS/GoodbyeDPI/wiki/How-to-make-traffic-dump-with-Wireshark

GoodbyeDPI does not handle "TLSv1.2" record version handshakes yet.
https://github.com/ValdikSS/GoodbyeDPI/blob/4a82fd442dcdd69de731fb717fb055f8547083fa/src/goodbyedpi.c#L1132

Try it, it should work.
https://github.com/ValdikSS/GoodbyeDPI/actions/runs/9307102451
Please report if it still doesn't.

It works, thanks!


Autocompletion not working for numpy

Environment data

VS Code version: 1.45.1
Extension version (available under the Extensions sidebar): 2020.5.78807
OS and version: Linux Mint 19.3
Python version (& distribution if applicable, e.g. Anaconda): 3.7.7
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): conda
Relevant/affected Python packages and their versions: numpy==1.18.1
Relevant/affected Python-related VS Code extensions and their versions: No
Jedi or Language Server? (i.e. what is "python.jediEnabled" set to; more info microsoft/vscode-python#3977): Jedi
Value of the python.languageServer setting: Microsoft

Expected behaviour
Autocompletion for numpy.random.u should return at least uniform, as it's obviously there

Here's an output from interactive console in gnome-terminal upon pressing Tab

Actual behaviour
uniform is not listed along with many other functions

And even after typing numpy.random.u there are no suggestions

Steps to reproduce:

create conda environment with python==3.7.7 and numpy conda create -n test python==3.7.7 numpy and set it as active in vscode
Create test file (test.py in my case)
Enter some code containing numpy import mine is

import numpy
a = numpy.random.u

Trigger automplete (Ctrl+Space)

However this doesn't happen when I use virtualenv environment

See #1847

Yes, thanks.


Images in ListView blocks rendering?

I have a ListViewItem.js which have an inner image
<TouchableHighlight underlayColor="#ccc" onPress={this._navigateToDetail}>
  <View style={styles.container}>
    <View style={styles.leftCol}>
      <Image style={styles.couponImage} source={{uri: 'http://placehold.it/80x80'}}/>
    </View>
    <View style={styles.rightCol}>
      <Text style={styles.couponTitle}>{this.props.coupon.title}</Text>
      {companyTitle}
    </View>
  </View>
</TouchableHighlight>

The internet access was very slow, so the <Image/> seems to block the list rendering process. List cannot show up.
I tried to console.log in **ListViewItem#render`, and it only output once. It was expected to output six times.
Also I tried to reset contents in simulator, but it doesn't work. Is there any solution for this? Do I have to manually fetch image?   @vjeux

@tjwudi The react is based on asyc and threads
so image cannot block direcly the app.
can you provide more information about react version and your code thanks

@tjwudi any luck at resolving this issue?

Closing until we hear back from @tjwudi!


possibly emacs die(freeze) when focus out for a long time

I'm suffering the freezing of emacs several times when I'm leaving my PC with emacs opened, and the screen saver will appear, after a long time when I'm back, emacs freezed, buffer display nothing and cannot response to any key.
When I'm adding below line:
(add-hook 'focus-in-hook '(lambda()
                            (when (boundp 'tern-idle-time)
                              (setf tern-idle-time 2.5))
                            ))
(add-hook 'focus-out-hook '(lambda()
                             (when (boundp 'tern-idle-time)
                               (setf tern-idle-time 1e10))
                             ))

Things to be fine, without any freezing any more.
So maybe this can be added into tern?
That is, when focus out of the buffer, tern should not parse buffer any more.
Or some similar solution from core?
Thanks!

Firstly, the idle timer will fire only once, no matter how long the machine/editor is idle, so I don't think this is the actual problem. Your solution, in any case, doesn't do what you think it does, since tern-idle-time is only evaluated when tern-mode is enabled, so changing it in a hook like that will do exactly nothing.
I'd like to figure out what is actually happening. Have you tried having a verbose tern server running (tern --verbose --persistent in the project dir, before using Emacs/Tern in that project) and seeing what that outputs when a hang occurs?

OK! I'll try and figure out  where the real problem is.
When the hang does, the whole frame just freezed, with blank buffer and no charaters on the screen.
Does tern can log into a file?

Does tern can log into a file?

No, but you can start a server yourself, and look at its output.


JSX spread doesn't apply style changes (within store)

Describe the bug
Spreading a store containing a style property on a JSX element doesn't update with any changes within style (unless the style reference itself changes.
This was picked up when using a store and reconcile to update the store with new style properties (among other things).  It seems style retains the same reference and the spread doesn't apply the changes within that.
To Reproduce
This playground example demonstrates the issue.  After 1 second the store gets updated and the ul should move.
Possible workarounds:

removing reconcile.  But that results in the whole store content being replaced.
specifically spreading the style like <ul {...menuProps} style={{...menuProps.style}}>.  But that is no good if the JSX is being written by someone else consuming the store object from a library.

Expected behavior
The spread should apply the changes within style.

It seems that using reconcile shouldn't cause it to break; reactivity should still be triggered.

reconcile is working correctly, its just the equality check happens at the wrong place for nested objects in spreads. Style and classList are both affected.

How is it working correctly? When someone updates data (with reconcile or not) they expect the template to update.

The only reason it is working without reconcile is the whole store content is changing - including a new style object.
The issue seems to be more with spread not digging into the style object (or classList) to look for changes (so not reactive within the style object).
The only way reconcile could help with that would be to replace the style object with a new one if any of its properties changed.
If everything was super-fine grained then I guess each prop within the style object would independently update - but I think style is applied atomically instead of property-by-property (as least by spread).

I get that this is "how it works" currently, but it is something that definitely feels unexpected.
A question is, what is the intent when a user spreads?
In that example, ultimately the template does read the individual style properties in order to apply them to the DOM, so it might also be an easy assumption that the Proxy path reactivity will pick up the change to each style value regardless if the style object ref changed or not.

Yes. It is s bug with spread. I just wanted to note reconcile is working as expected.

Thanks @ryansolid.  Unfortunately 1.2.4 doesn't seem to have resolved this issue.
I am now seeing console warnings Cannot mutate a Store directly. which seem to be coming from within a Solid function called style() on a line that does delete prev[s];

Interesting. I wasn't expecting previous to become a store. It is created from a non-proxy and I thought it was only ever mutated directly. DOM Expressions where I did the fix has no knowledge of proxies so I didnt see this. Im going to need to find where that happens.

It looks like this line prevProps[prop] = value at the bottom of assign() is saving style (which is a prop of the top-level store being spread across the component).
The screenshot below is actually 2nd time through but the proxy for style was definitely assigned by the bottom line first time through.

Yeah that's it.. I was thinking I fixed this with the early exit.. but when I refactored for the other bug fix I pulled the function out.

Just confirming 1.2.5 has fixed this issue for me.  Thanks @ryansolid!


[FEATURE] Upgrade torch

Any particular reason why this application needs to use torch version 2.0.0 when there are much newer releases available, such as 2.3.0?

Yes, installation restrictions because the python package manager has
opinions about how things should be installed. Workarounds increase cost
and complexity. Also unfortunately there are times when 2.0.0 and 2.3.0
might just not be perfectly compatible.
If you need the newer torch version, it probably works and you can install
it with cmd_windows.bat terminal.
On Mon, May 6, 2024, 9:06 PM Ashley Kleynhans @.***>
wrote:

Any particular reason why this application needs to use torch version
2.0.0 when there are much newer releases available, such as 2.3.0?
—
Reply to this email directly, view it on GitHub
https://github.com/rsxdalv/tts-generation-webui/issues/309, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABTRXI2HFLI5HQNDH7OBYSLZA7BBRAVCNFSM6AAAAABHJPJ762VHI2DSMVQWIX3LMV43ASLTON2WKOZSGI4DCNBUGI2TINQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Fix mono build: Update msbuild used to bootstrap

The current build being used to bootstrap does not support $(MSBuildRuntimeType) == Mono, which breaks mono builds.
I have an existing build that works, but that is from April.

@rainersigwald @AndyGerlicher

@radical Is the build up to date? I can just upload that to our main repo release and change cibuild.cmd to point to the new address.

@cdmihai No, it is an old build in fact. The current xplat does not build with mono, but I can build it locally with a hack. So, I will upload a new .zip with it.

As far as I knew, the xplat branch can build three msbuild flavors, and each flavor requires a different bootstrap msbuild:

the Full Framework flavor requires VS MSBuild, discovereable via the VS developer command console
the .Net Core msbuild brings down a .net core bootstrap msbuild via the build tools nuget package
the Mono flavor requires a Mono bootstrapped MSBuild which we currently keep in a zip file in our Github repo

Are you saying that the Mono flavor no longer requires the Mono bootstrap msbuild?

I think @radical is saying that the Mono flavor cannot currently be built with the old Mono bootstrapper. Plus I think there's another issue that was being chased down.
However, I can build the Mono flavor with desktop MSBuild--it'd be pretty great if we could get the bootstrap zip built that way and have it be less of a special snowflake! I have a patched private official build that builds Mono and copies the results to a share, but I haven't tried zipping it up and using it as the bootstrapper yet.

Yeah, xplat cannot be built with the current Mono bootstrapper.
And the second issue is when referencing System.Secuirty.Principal.Windows in src/XMakeTasks/UnitTests/project.json, we end up with two references to the same "reference" assembly being passed to the compiler. And mcs seems to fail on that (https://bugzilla.xamarin.com/show_bug.cgi?id=49139), whereas csc works.

Could we please use the build from my repo here to releases here? This and the PR #1462, would fix the mono build and then we can enable the mono CI. This can be a temporary thing and whenever we have a official build, like Rainer mentioned, then we can change this.

Copied it: https://github.com/Microsoft/msbuild/releases/tag/mono-hosted-msbuild-v0.03
I think you have to update the download URL in the cibuild.sh script right?

Awesome, thank you! Yes, I have opened PR #1480 to update cibuild.sh .


Fix app in the load test tools comparison

Motivation:
The current implementation has performance issues and throughput decreases over time. This is likely causes by the lack of indexes on the h2 database. See the findByXXX repository methods.
Modifications:
Go with in memory maps with direct access by key instead of an h2 database.
Result:
Way faster and stable application under test.
On my test environment, Gatling outperforms JMeter (didn't try The Grinder):
Simulation com.baeldung.RewardsScenario completed in 23 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...

================================================================================
---- Global Information --------------------------------------------------------
> request count                                     499997 (OK=499997 KO=0     )
> min response time                                      0 (OK=0      KO=-     )
> max response time                                    461 (OK=461    KO=-     )
> mean response time                                     5 (OK=5      KO=-     )
> std deviation                                          6 (OK=6      KO=-     )
> response time 50th percentile                          4 (OK=4      KO=-     )
> response time 75th percentile                          5 (OK=5      KO=-     )
> response time 95th percentile                          7 (OK=7      KO=-     )
> response time 99th percentile                         13 (OK=13     KO=-     )
> mean requests/sec                                20833.208 (OK=20833.208 KO=-     )
---- Response Time Distribution ------------------------------------------------
> t < 800 ms                                        499997 (100%)
> 800 ms < t < 1200 ms                                   0 (  0%)
> t > 1200 ms                                            0 (  0%)
> failed                                                 0 (  0%)
================================================================================

$ apache-jmeter-5.3/bin/jmeter -Jjmeter.reportgenerator.overall_granularity=1000 -n -t TestPlan.jmx -l log.jtl -e -o ~/jmeter-reports
Creating summariser <summary>
Created the tree successfully using TestPlan.jmx
Starting standalone test @ Thu Oct 15 16:15:05 CEST 2020<PHONE_NUMBER>736)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary + 341050 in 00:00:24 = 14091.8/s Avg:     5 Min:     0 Max:   218 Err: 341050 (100.00%) Active: 100 Started: 100 Finished: 0
summary + 158950 in 00:00:08 = 20761.5/s Avg:     3 Min:     0 Max:   143 Err: 158950 (100.00%) Active: 0 Started: 100 Finished: 100
summary = 500000 in 00:00:32 = 15694.6/s Avg:     4 Min:     0 Max:   218 Err: 500000 (100.00%)
Tidying up ...    @ Thu Oct 15 16:15:37 CEST 2020<PHONE_NUMBER>657)

Awesome, great work!
Feel free to give my map based version a try, just to make sure the h2 app is not the bottleneck. Otherwise, feel free to close this PR.
Thanks a lot for your help and patience with this!

@slandelle The time is slightly lower, but I'll keep the H2 version and include that in the text.
I've updated the article now: https://www.baeldung.com/gatling-jmeter-grinder-comparison, though it may take a few hours to see the latest version.
Thanks for all the help.
FYI, the "click here" link on this page: https://gatling.io/open-source/start-testing/ leads to the 3.3.1 zip. The "Download Gatling" link lower on the page here: https://gatling.io/open-source/ leads to the latest 3.4.1 version.

I've updated the article now: https://www.baeldung.com/gatling-jmeter-grinder-comparison, though it may take a few hours to see the latest version.

Thanks a lot!

FYI, the "click here" link on this page: https://gatling.io/open-source/start-testing/ leads to the 3.3.1 zip. The "Download Gatling" link lower on the page here: https://gatling.io/open-source/ leads to the latest 3.4.1 version.

Oh, thanks a lot. Fixed!

sorry to bother, but it looks like the updated article is still not online. Manual validation? Also, have you updated the performance grades in 5?

Hi @slandelle  It takes a while for the cache to update, though I'm not sure of the exact time. You could try clearing cache/incognito window or a different computer/phone if you can.
Yes, section 5 is updated as well.

You could try clearing cache/incognito window

Already tried with no luck :) I'll let you know, thanks!


Build failed: permission denied

Details
Build failed on creating directory in /usr/share folder
creating /usr/share/timmy
error: could not create '/usr/share/timmy': Permission denied

The file setup.py contains data_files section with absolute paths.

Read the Docs username: adobdin

I've added to setup.py the following lines:
if os.environ.get("READTHEDOCS", False):
    rqfiles = None
    package_data = False


Can't get migration files with -j ts option (TypeScript file)

Hi there,
first of all thank your for this awesome package!
I would like to use it with TypeScript and it falls with an error.
First I have generated a migration file:
npx node-pg-migrate create add-extensions -m migrations/ddl -j ts
Next It contains a few extensions:
import { MigrationBuilder } from "node-pg-migrate";

export const shorthands = undefined;

export const up = (pgm: MigrationBuilder) => {
  pgm.createExtension(["uuid-ossp", "citext"], { ifNotExists: true });
};

export const down = (pgm: MigrationBuilder) => {
  pgm.dropExtension(["uuid-ossp", "citext"], { ifExists: true });
};

Finally when it comes to migrate into database with the following command:
npx node-pg-migrate up -m migrations/ddl -t pgmigrations_ddl -j ts
this error raises:
Error: Can't get migration files: /home/user/server/migrations/ddl/1538298922730_add-extensions.ts:1
(function (exports, require, module, __filename, __dirname) { import { MigrationBuilder } from "node-pg-migrate";
                                                                     ^

SyntaxError: Unexpected token {
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at loadMigrationFiles (/home/anna/development/graffi/server/node_modules/node-pg-migrate/lib/runner.js:61:11)
error Command failed with exit code 1.

The same process with JavaScript works fine. Maybe I should make a build before migrating?

False alarm! I am vary sorry, the solution was already here: https://github.com/salsita/node-pg-migrate/blob/master/docs/transpiling.md


[Release] sdk/resourcemanager/machinelearning/armmachinelearning/3.0.0

https://github.com/Azure/sdk-release-request/issues/3291

The breaking changes have been approved by this PR and major version release is acceptable.


How make union of events?

If merge api gives us event that triggered if one of set fire, may be need api like if all events of set will be fired?
analogy with Promise.race() [merge]  and Promise.all() [union]

You can use combineEvents from patronum


Weird Output On Completion Of lean data download

Command Used
lean data download --dataset "US Equities"  --data-type "Bulk" --resolution "Daily"  --start "20230101" --end "20231231"

IMHO That is likely dumping the zip contents to the screen due to invalid use of reserved file name con.csv

Downloaded twice and can't reproduce this issue, could of been some download corruption maybe, can u reproduce @rjra2611? Maybe we could validate the file before trying to unzip

Downloaded twice and can't reproduce this issue, could of been some download corruption maybe, can u reproduce @rjra2611? Maybe we could validate the file before trying to unzip

Tried with lean 1.0.202 -- LGTM


Create BMC guide on ASUS servers...

step by step instructions to set up BMC on ASUS servers
prerequesites
important notes
security suggestions

flush out process
gather security recomendatatoins
collect media
create media
add media and page to github
add sidebar links
proofread
send over to email chain


USBTMC read loop doesn't work when reading entire buffer at once

The code in the USBTMC driver to split up a large read into smaller ones doesn't work when you read the whole buffer at once.
For example, consider the case where you read one byte (the case I hit with the DS1000D/E): then bytes_fetched == bytes_requested is true after the first loop iteration (which is not good, it should have terminated). Amusingly, the timeout kind of makes the situation worse, because when the read times out it returns -1, which means m_data_in_staging_buf ends up being zero.
I'm not sure of the 'right' way to fix this, I'm not sure what legacy driver problem the loop is trying to avoid. Locally, I just changed the #if 0 to #if 1, to use the non-workaround code, which works fine.

After spending a fair amount of hours with a combination of Siglent scopes, Tek scopes, USBTMC, VXI-11, and GPIB, and the Linux kernel, the only certainty is that the whole ecosystem of test and measurement protocols is riddled with bugs, very much broken, and that the only way to make sure a configuration works is to test that specific configuration and fix things that are broken. However, if you do that in a generic way, chances are high that you'll break other configurations in the process.
The USBTMC kernel driver for older Linux kernels (e.g. the default kernel for Ubuntu 18.04) has explicit work-arounds for Rigol oscilloscopes (see rigol_quirk), The USBTMC driver on my Siglent scope completely hangs when it sees something it doesn't like, such as data packet requests larger than 2032 bytes (only a scope reboot helps), etc.
Weirdness in the code that you're looking at must be seen in that context: my first goal was to get something going that more or less works for my specific configuration, with the hope that others would step in with their configuration to make things better overall.
I wrote down some unstructured notes here: https://github.com/tomverbeure/siglent_remote/blob/master/README.md.
The way forward is probably to have specific command line configuration parameters that allows the user to select this or that code path and hope that things eventually work.

For example, consider the case where you read one byte (the case I hit with the DS1000D/E): then bytes_fetched == bytes_requested is true after the first loop iteration (which is not good, it should have terminated). Amusingly, the timeout kind of makes the situation worse, because when the read times out it returns -1, which means m_data_in_staging_buf ends up being zero.

That looks indeed like a bug. Not sure what I never hit that case.
I have no objections against changing the #if 0 to #if 1 for now.

Thanks for the detailed response and the notes! I appreciate having the driver in the first place, being able to fix it by just switching the #if constant is also amazing.
It sounds like a parameter might make sense for now, and then in the longer-term, some kind of quirks system.


Pinch zooming support

The Android emulator uses right click and drag to simulate pinch zooming. An alternative would be ctrl-mouse wheel.

Pinch zooming with a touchscreen also doesn't work.

Pinch zooming support would be a great idea!
Ctrl+← and Ctrl+→ could be used since ↓↑ are taken by volume control.
Would be great for people with low/no motor ability in their hands.
(I can't move from the shoulders down and greatly appreciate what you've done with scrcpy)

It would be great to have the ability to pinch zoom.  Another alternative could be using the mouse wheel.
Scrcpy is really great!

Would be great if this can be added!

another vote for this feature

+1! Scrcpy is awesome and this is the only feature missing for me!

Oeh i see some references to this pr, but i cannot find if this is implemented...
Any idea?

Hi, I just implemented an experimentation, on branch virtualfinger.
While the Ctrl key is held, the first left-click adds an immobile "virtual finger" at this position.
Moving the mouse moves another cursor. The left click may be released and pressed as necessary to control the second finger.
Releasing Ctrl releases the virtual finger.

A simpler (and maybe more intuitive) alternative could be to always put the "virtual finger" in the center of the screen, so that "unzooming" is more natural.
As a drawback, it would not be possible to zoom on a widget which takes only a portion of the screen (which is not in the center), but it may be worth it.

OK cool, so what do we have to do to try this virtualfinger?

 Running Ubuntu 19.04 scrcpy v1.10 dev branch.
The mirroring and screen shots continue to work, but the mouse events are not passed not even single and normal clicks
Sent from my Galaxy Note2 using FastHub

You need to recompile the server too.

Thanks, will check that way

@rom1v, no hope, the same error again

The problem is that it is not really usable without a visual feedback (to display which locations are actually clicked)

would it be possible to hook into the same touch events that the os shows for finger inputs? For example I have the developer option "show touch location" turned on. This works for my finger but not when I click with scrcpy, can scrcpy "use" that same method of tapping the ui that would produce these visual aids people could just turn on in dev options?
Im guessing not

+1 definitely a great feature

i cant wait for this feature, for gaming this will be very helpful

I'm still waiting for  day by day this feature released. It's really helpful for any app/game need Zoom in/out by mouse.
Any update so far for this great feature?

Pinch zooming seems to be the only input feature missing from scrcpy. Hopefully it gets implemented because this is very nice software.

Hi,
I finally worked on this feature today.
The problem with my previous attempts is that I wanted to be able to zoom from any point (not only the center of the screen), but it's a UX nightmare. Therefore, I took the same approach as the Android emulator, and just scale/rotate relative to the center of the screen. That way, it's easy to zoom/unzoom.
Just hold Ctrl when you lelf-click to enable pinch-to-zoom (it is disabled when left-click is released). (I used Ctrl because that's what the Android emulator does.)
The branch is pinch_zoom.
Here is a Windows binary to test (replace in your v1.15.1 release):

scrcpy.exe
SHA256: 1b38173837da14e5b134582ba75aa38e166903aaa592cb0b8b10d6ba8a1e61ce

Implemented in v1.16.

Anyone else experiencing problem with pinch-zooming maps? Currently experienced in both Google Maps and OSMand.
I seem to not be able to zoom out or in very much because at a certain point the action turns into its opposite, sometimes with the map rotating around itself a full round.
One must hold the mouse pointer at the very pinpoint accurate point where the pointer originally was pressed to be able to keep zooming out or in to farther lengths without turning the map around and/or reversing the zoom operation. For short-step zoom actions there is no such problem.

Currently experienced in both Google Maps and OSMand.
I seem to not be able to zoom out or in very much because at a certain point the action turns into its opposite, sometimes with the map rotating around itself a full round.

To zoom out, you need to start at the edges (top, bottom, left or right) and moves towards the center.
Imagine that this mode adds a finger inverted through the center:

(This is a capture from Android emulator, unfortunately scrcpy does not provide any visual feedback, hence the confusion.)

Would you reconsider to reverse the mouse drag directions actions ? i.e to make pulling the mouse towards me zoom out and pulling away from me zoom in ? or maybe the app would need at some point an INI-style configuration file for to reconfigure all the keys.

i.e to make pulling the mouse towards me zoom out and pulling away from me zoom in ?

What do you mean by "towards" or "pulling away"? The screen is 2D and you are in another dimension :smile:

Would you reconsider to reverse the mouse drag directions actions ?

In fact, this feature does not implement "zoom in/out", nor choose any drag direction, it just injects additional touch events at a location inverted through the center of the screen. Then the Android app normally reacts to the touch events from the mouse and the virtual finger.

Good afternoon.
I think the issue is not the zoom of the screen.
And yes, simulate the pinch movement.
An easy way would be:
When pressing a key (alt), two fingers are pressed, pressing the screen from a distance "R" from the mouse position captured with (x, y).
And depending on the scroll of the mouse, these fingers move apart or get closer to the mouse position.
I think the ideal would be diagonally as some photo editors stretch vertically or horizontally. And diagonally this would maintain the proportion.
So you pass the responsibility to the application. If he has zomm the app interacts with the fake fingers. Otherwise the application does nothing.
I think it would not be difficult to simulate the pinch and not the zoom, leave that to the application that is running.
It probably won't work for all cases, but I think it would be a solution for most.

@edulourenzo Isn't more or less what is implemented in v1.16? (except it does not use the mouse scroll)

And what would be the command to make the zoom pinch movement

Ctrl+click-and-move.
More details: https://github.com/Genymobile/scrcpy/releases/tag/v1.16

AWESOME! been waiting for this feature for a long time, i love scrcpy but it always lacked that one major feature, thanks alot to all developers, you are doing a great job!

is it no longer working? I'm on linux

Yes, it is working: https://github.com/Genymobile/scrcpy#pinch-to-zoom
Which version of scrcpy do you use?

i use
$ scrcpy --version
scrcpy 1.12.1

dependencies:
 - SDL 2.0.10
 - libavcodec 58.54.100
 - libavformat 58.29.100
 - libavutil 56.31.100


Port _CShims UUID to Swift

This is a spike for my own learning to see what's involved in removing the C-backed UUID implementation in favour of a Swift version.
I'm happy to revise this, as I realise that the implementation of some of this isn't ideal.

One interesting security feature of our UUID implementation is that it is designed to do its work in constant time regardless of the content of the UUID. e.g., for equality checking. This is done in order to defeat timing attacks. We would need to verify we keep that behavior with a new implementation.


ci: Update and build on PR

There's still the issue with linux-libc-dev:i386. I will look into that

Finally it's working🎉


ThinQ Oven Support

I'm currently working on Oven implementation, I need collect device data first
I already published test version for Oven v1.3.0-oven.1, this version is still not implemented anything, just register Oven as supported device and collecting data
How to install testing version
Select Install Previous Version in Homebridge UI X, choose version started with v1.3.0-oven.x

How to collect device data ?
turn on homebridge debug mode first, then install and setting plugin oven version (v1.3.0-oven.x)
make sure in your homebridge log showing something like this
[9/23/2021, 12:59:27 PM] [LGThinQ] [Oven] Setting up device!
[9/23/2021, 12:59:29 PM] [LGThinQ] Adding new accessory: 47e159a5-*****: Oven (OVEN LSGL6337F.*****)
[9/23/2021, 12:59:29 PM] [LGThinQ] Start MQTT listener for thinq2 device
[9/23/2021, 12:59:32 PM] [LGThinQ] Successfully connected to the MQTT server.

your Oven is ready now, then make some cook, preheat, adjust temperature ... anything you can do in your oven
every action you did, you may got debug log [9/23/2021, 1:11:41 PM] [LGThinQ] mqtt message received:, that is what I need, please upload all debug log
Wanna help ?
I already pushed Oven source code to dev/oven branch, feel free to make PR if you wanna help
Discussed in https://github.com/nVuln/homebridge-lg-thinq/discussions/28

Originally posted by rrhoade2 July 23, 2021
Are there any plans to add support for the recent LG ThinQ Ovens at some point in the future? I'm wondering specifically about cooktop and oven statuses and oven pre-heat notifications. Thanks!

Oven model is WLC389PC. Homebridge debug logging attached.
lg_thinq_oven_debug_logging.log.zip

Hello nVuln,
I am currently working on an Oven implementation using your plugin as base, but so far I am only able to get the current status of the oven (I show different options using a TV accessory and the inputs of the TV as different Status messages), however, cannot figure out how to send commands to the oven to start cooking or set timers.
Could you help me out figuring out how to send commands to the oven? When I am done I will be happy to share the code. In addition that I will be also modifying it to support a Microwave as well.
Here is an example of what I have for the oven and what I did for a dishwasher I have.
homebridge.log.txt
DiswahwerAndOvenJSCode.zip
Kind regards,

@carlosgamezvillegas you can use a network traffic capture tool to try capture command sent from lg thinq app
you can use proxyman.io on mac or fiddler on windows
again, thank you very much for your work,

Hello nVuln,
I finished the code to add an LG range with a single oven and an Over the Range Microwave (with Air Fryer). It needs testing but here is the code in case you would like to implement the changes to your code. I also update the Dishwasher to correct some of the bugs I had
LG_OVen_CG.zip
let me know if you have any questions
Kind regards,

Hello nVuln,
Unfortunately I don't know how to use Typescript or convert the javascript code I wrote to Typescript.
For what is worth here are the files I changed to make the Oven, Microwave and Dishwasher work:
Modified Files.zip
And here is the  whole thing in case I missed something
latest version:
homebridge-lgthinq.zip
kind regards,

Hello nVuln,
Unfortunately I don't know how to use Typescript or convert the javascript code I wrote to Typescript.
For what is worth here are the files I changed to make the Oven, Microwave and Dishwasher work: Modified Files.zip And here is the whole thing in case I missed something
latest version:
homebridge-lgthinq.zip
kind regards,

thank you so much for your hard work ❤
I'll convert your modified js to typescript, it need a bit time, I'll update here when I'm done
again thank you so much 🥰

Hello nVuln,
That is awesome. Just hold off on the conversion if you can. I have discovered and solved new bugs so the version I sent to you last is outdated already.  I will send you the lasted version on Monday.
Kind regards,

Hello nVuln,
That is awesome. Just hold off on the conversion if you can. I have discovered and solved new bugs so the version I sent to you last is outdated already. I will send you the latest version on Monday.
Kind regards,

I just created new branch migrate-carlosgamezvillegas to update progress
for now I just finished Oven: https://github.com/nVuln/homebridge-lg-thinq/blob/migrate-carlosgamezvillegas/src/devices/Oven.ts
also I merged some duplicate code, fixed some typo and syntax too, typescript is similar js
you can checkout new branch, then run npm install & npm run build, compiled code will be in dist folder
I still working on DIshwasher and Microwave, will be update soon

updated Dishwasher: https://github.com/nVuln/homebridge-lg-thinq/blob/migrate-carlosgamezvillegas/src/devices/Dishwasher.ts
I'm working on Microwave too, found this duplicate key on sendOvenCommand function
"cmdOptionSetTargetTimeMinute": Math.floor(this.ovenCommandList.ovenSetDuration % 3600 / 60),
"cmdOptionSetTargetTimeMinute": Math.floor(this.ovenCommandList.ovenSetDuration % 60),

so I'll wait your latest version

Hello nVuln,
Thank you for catching bugs and making corrections, I am not the best at programming so you will notice a lot of redundancies and/or unnecessary things in the code. I have fixed some of the bugs but the code is definitely not optimized but at least is working. The major thing I did in this version is to add   addOptionalCharacteristic(this.platform.Characteristic.ConfiguredName) to all the accessories so Homekit labels the accessories correctly instead of naming all of them with the same name.
Let me know if you have any questions,
Kind regards,
homebiridge-ThinQ.zip

Hello again,
Please ignore the last files I sent, use this ones instead.
Homebridge-ThinQV2.zip
Thank you,

@carlosgamezvillegas I published tag 1.6.0-test.1 implemented your new code, can you test it?
I have question, Microwave use same snapshot.ovenState key like Oven ?

@nVuln, yes, the microwave sues the same ovenState, I think it is because the Microwave that I have is also a convection oven.
By the way, I installed the plugin and I think I had a bug in the Dishwasher.js
please find the lines below and change this.startTime for this.courseDuration
Bug:
this.courseDuration = this.createInputSourceService('Cycle Duration', 'CataNico-Always20', 4, this.courseTimeString, this.showTime);
this.startTime.getCharacteristic(this.platform.Characteristic.ConfiguredName)
Correction:
this.courseDuration = this.createInputSourceService('Cycle Duration', 'CataNico-Always20', 4, this.courseTimeString, this.showTime);
this.courseDuration.getCharacteristic(this.platform.Characteristic.ConfiguredName).
@beslergr, @rdnewt please try the plugin and let us know if you see something wrong
Kind regards,

@carlosgamezvillegas seems to work in terms of basic functionality. For the microwave, I can turn it on, but doesn't seem like any of the switches work (that or I'm just clueless on how to do it).
For the oven, it works, but only Bake mode.

@beslergr
The microwave that I have has also a convection oven so if the Microwave only has the microwave function most of the buttons are going to be useless to you.
For the oven, if it is just running Bake mode only it might be because it is the default setting, the way it it works is very similar to the ThinQ app.

Select Bake mode
Select Temperature
Select Bake time (for security if Bake time is not selected it is going use the default duration)
Select probe temperature (optional)
Keep warm (optional)
Turn on the Send command switch to send to command to the Range

Steps 1-5 can be done in any order and must be completed within 2 minutes, after that all the accessories are going to update to reflect the current state of the Range
The timer works independently, after selecting the timer duration just "turn on" the Valve so the command can be sent.
I hope this helps and if you have any other feedback please let me know.

I’ve got an LG Studio microwave with way too many buttons to know what they all do, but I know there’s a convection option, Air Fry option, and others. What is the basic work through to, say, if I want to set the microwave for 1 minute, power level 60? The oven I was able to figure out, but I can’t get the microwave to really do much, outside of running the fan and turning on the lights.

On Jul 5, 2023, at 6:54 PM, carlosgamezvillegas @.***> wrote:
@beslergr https://github.com/beslergr
The microwave that I have has also a convection oven so if the Microwave only has the microwave function most of the buttons are going to be useless to you.
For the oven, if it is just running Bake mode only it might be because it is the default setting, the way it it works is very similar to the ThinQ app.
Select Bake mode
Select Temperature
Select Bake time (for security if Bake time is not selected it is going use the default duration)
Select probe temperature (optional)
Keep warm (optional)
Turn on the Send command switch to send to command to the Range
Steps 1-5 can be done in any order and must be completed within 2 minutes, after that all the accessories are going to update to reflect the current state of the Range
The timer works independently, after selecting the timer duration just "turn on" the Valve so the command can be sent.
I hope this helps and if you have any other feedback please let me know.
—
Reply to this email directly, view it on GitHub https://github.com/nVuln/homebridge-lg-thinq/issues/87#issuecomment-1622641770, or unsubscribe https://github.com/notifications/unsubscribe-auth/AXYX2HAOZRXJC4IUAVHGWDTXOXWARANCNFSM5ES5QRKQ.
You are receiving this because you were mentioned.

I think it is a security measure fromG, I cannot start the microwave from the ThinQ app either, I always have to physically touch the start bottom in the microwave. This way we don’t accidentally run the microwave with metal inside (the air fry addons) or run the oven with plastic inside like the steam accessory.

Bug: this.courseDuration = this.createInputSourceService('Cycle Duration', 'CataNico-Always20', 4, this.courseTimeString, this.showTime); this.startTime.getCharacteristic(this.platform.Characteristic.ConfiguredName)
Correction: this.courseDuration = this.createInputSourceService('Cycle Duration', 'CataNico-Always20', 4, this.courseTimeString, this.showTime); this.courseDuration.getCharacteristic(this.platform.Characteristic.ConfiguredName).

I just fixed this and published new tag 1.6.0-test.2

Hello nVuln,
I made some corrections and additions to the Dishwasher, Microwave, and Oven. Please see the latest version here.
ThinQ-07-12-2023.zip
Kind regards,

@carlosgamezvillegas I just came back from business trip today, I looked into your new code, just saw this function
udpServer() {
        this.server = udp.createSocket({ type: 'udp4', reuseAddr: true });
        this.server.on('error', (error) => {
            this.platform.log.debug(error);
            this.server.close();
        });
        // emits on new datagram msg
        this.server.on('message', (msg, info) => {
            let nest = msg.toString();
            // let nestMessage = JSON.parse(nest);
            if (nest.includes('temperature')) {
                // this.platform.log('Data from Nest: ', nest)
                // this.platform.log(typeof nest)
                nest = JSON.parse(nest);
                if (typeof nest?.temperature == 'number') {
                    this.localTemperature = 0.5 * Math.round(2 * nest?.temperature);
                }
                if (typeof nest?.humidity == 'number') {
                    this.localHumidity = Math.round(nest?.humidity);
                }
            }
            if (this.ovenTempControl.getCharacteristic(this.platform.Characteristic.CurrentTemperature).value !== this.ovenCurrentTemperature()) {
                this.ovenTempControl.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.ovenCurrentTemperature());
            }
            if (this.ovenTempControl.getCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity).value !== this.localHumidity) {
                this.ovenTempControl.updateCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity, this.localHumidity);
            }
            // this.platform.log('Data from Nest (object): ', nestMessage)
        });
        //emits when socket is ready and listening for datagram msgs
        this.server.on('listening', () => {
            let address = this.server.address();
            let port = address.port;
            let family = address.family;
            let ipaddr = address.address;
            //this.platform.log('Microwave is listening at port ' + port);
            // this.platform.log('Oven ip ' + ipaddr);
            // this.platform.log('Oven is IP4/IP6 : ' + family);
        });

        //emits after the socket is closed using socket.close();
        this.server.on('close', () => {
            this.platform.log('Socket is closed !');
        });
        this.server.bind(1900, '<IP_ADDRESS>');
    }

Hello nVulnIgnore that update I forgot to remove that.  I use that to get the temperature readings from my Nest thermostat and use the values when the oven is not in use. I have a new version with more big fixes anyway that I should be sending soon.Kind regards,Carlos GamezOn Jul 24, 2023, at 19:54, nVuln @.***> wrote:
@carlosgamezvillegas I just came back from business trip, I looked into your new code, just saw this function
udpServer() {
this.server = udp.createSocket({ type: 'udp4', reuseAddr: true });
this.server.on('error', (error) => {
this.platform.log.debug(error);
this.server.close();
});
// emits on new datagram msg
this.server.on('message', (msg, info) => {
let nest = msg.toString();
// let nestMessage = JSON.parse(nest);
if (nest.includes('temperature')) {
// this.platform.log('Data from Nest: ', nest)
// this.platform.log(typeof nest)
nest = JSON.parse(nest);
if (typeof nest?.temperature == 'number') {
this.localTemperature = 0.5 * Math.round(2 * nest?.temperature);
}
if (typeof nest?.humidity == 'number') {
this.localHumidity = Math.round(nest?.humidity);
}
}
if (this.ovenTempControl.getCharacteristic(this.platform.Characteristic.CurrentTemperature).value !== this.ovenCurrentTemperature()) {
this.ovenTempControl.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.ovenCurrentTemperature());
}
if (this.ovenTempControl.getCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity).value !== this.localHumidity) {
this.ovenTempControl.updateCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity, this.localHumidity);
}
// this.platform.log('Data from Nest (object): ', nestMessage)
});
//emits when socket is ready and listening for datagram msgs
this.server.on('listening', () => {
let address = this.server.address();
let port = address.port;
let family = address.family;
let ipaddr = address.address;
//this.platform.log('Microwave is listening at port ' + port);
// this.platform.log('Oven ip ' + ipaddr);
// this.platform.log('Oven is IP4/IP6 : ' + family);
});
    //emits after the socket is closed using socket.close();
    this.server.on('close', () => {
        this.platform.log('Socket is closed !');
    });
    this.server.bind(1900, '<IP_ADDRESS>');
}

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Hello nVuln,
Please ignore that update, I forgot to remove that.  I use those lines to get the temperature readings from my Nest thermostat to use the values when the oven is not in use. I have a new version with more bug fixes anyway that I should be sending soon.
Kind regards,

Hello nVuln,
Here are the latest updates to the  Microwave, Oven, and Dishwasher. Hopefully I didn't miss anything this time.
ThinQ-07-25-2023.zip

I already updated your latest version, if everything working fine, I'll release it on next a few days

Please use the latest version below. I corrected some typos.
ThinQ-08-16-2023.zip
Kind regards,

Please use the latest version below. I corrected some typos. ThinQ-08-16-2023.zip
Kind regards,

already applied this version too, hope everything working fine now


[B] Error while installing

rv 3.3.0
os 10.11.6
Brackets 1.13
I get an error when im installing, something about restart error. See screengrab, not sure you need more info

PS i noticed this in the Inspector
Failed to load resource: net::ERR_FILE_NOT_FOUND /utils/DeprecationWarning.js:88 Deprecated: Do not use $().on/off() on Brackets modules and model objects. Call on()/off() directly on the object without a $() wrapper.     at new jQuery.fn.init (/brackets.js:467:36)     at n (file:///Applications/Brackets.app/Contents/www/thirdparty/thirdparty.min.js:19:405)     at handleActiveEditorChange (file:///Users/romboutversluijs/Library/Application%20Support/Brackets/extensions/user/pflynn.charcount/main.js:57:13)     at Object.trigger (/utils/EventDispatcher.js:229:40)     at _notifyActiveEditorChanged (/editor/EditorManager.js:161:17)     at _handleCurrentFileChange (/editor/EditorManager.js:178:9)     at Object.trigger (/utils/EventDispatcher.js:229:40)     at eval (/view/MainViewManager.js:1118:29)     at Pane.trigger (/utils/EventDispatcher.js:229:40)

Hmmm th pflynn is something else i guess, its not related. Ill check if i can do something im not into this code though.


EPIC: re-design of db seed feature

prisma db seed is currently a Preview feature.
During this phase, we noticed different issues caused by the complexity of the current implementation.
The Migrations Team decided to remove the complexity and make it a lot easier to understand for users and to maintain.
The new implementation is in https://github.com/prisma/prisma/pull/8146
How it will work is that a prisma.seed property in the package.json of your project will be required if you want to use prisma db seed.
The CLI will give examples that can be copy-pasted.
If you are currently using the previous implementation of prisma db seed and upgrade to this new version then it will throw an error with an upgrade help message which should be easy to fix (add prisma.seed to the package.json)
package.json example for a JavaScript project
  "prisma": {
    "seed": "node prisma/seed.js"
  }

package.json example for a TypeScript project
  "prisma": {
    "seed": "ts-node prisma/seed.ts"
  }

Example of a prisma/seed.js
async function main() {
  await new Promise((resolve) => setTimeout(resolve, 100))
  console.log('Hello from seed.js')
}

main()
  .then(() => console.log('Goodbye from seed.js'))
  .catch((e) => {
    console.error(e)
    process.exit(1)
  })

What needs to done for releasing the "new" db seed:

[ ] Review and merge https://github.com/prisma/prisma/pull/8146
[ ] QA db seed
[ ] Update docs https://github.com/prisma/docs/pull/2055
[ ] https://github.com/prisma/prisma/issues/8033
[ ] e2e https://github.com/prisma/e2e-tests/issues/1806
[ ] Update https://github.com/prisma/prisma/issues/5161
[ ] Close issues and let users know that they can use the new version https://github.com/prisma/prisma/issues?q=is%3Aissue+label%3A"topic%3A+db+seed"+is%3Aopen

It's possible to try it out with a specific version of the Prisma CLI like this:
npm install -D<EMAIL_ADDRESS>
# Then run
prisma db seed --preview-feature

# db seed is also integrated in
prisma migrate reset
prisma migrate dev

Or by using npx with the specific version:
npx<EMAIL_ADDRESS>db seed --preview-feature

Note this will work and is cleaner IMO:
"prisma": {
    "seed": "ts-node prisma/seed"
  }

May I suggest that the error handling part (copied from the above example)
main()
  .then(() => console.log('Goodbye from seed.js'))
  .catch((e) => {
    console.error(e)
    process.exit(1)
  })

may be moved to Prisma's cli code, i.e one only exports the main method and prisma takes care of the invocation. The main reason is that sometimes you do not want to exit in case there is an error during seeding. For example, if one uses generate --watch or jest --watch using seed to initialize tests. In the former case you prefer to be notified about the error, and in the latter the test should fail -- however, you don't really want to exit the calling process.

Hi @tobiasdiez indeed, exiting and not the best in some cases. This is just an example and in this implementation here you are free to change it as you need.
We removed the "magic" around export and invocation to simplify but that also means you can write a small layer that does that in your project.

Closing, rest is tracked in https://github.com/prisma/prisma/issues/8628
I'll create an issue to have better suggestion for ESM module projects help output.


Added a CHANGELOG entry for v1.8

We need to mention config(style_17=True) and/or hv.extension(config=dict(style_17=True)) in our release notes/CHANGELOG.

Yes, definitely should be listed in the backwards compatibility section.

I would also like to mention holoviews.rc with this in it:
import holoviews as hv
hv.extension.case_sensitive_completion=True

@philippjfr If you are happy with my tweaks, please merge.

Looks good, merging.


OCPBUGS-37201: Make sure credentials are wrapped in double quotes

The CSI driver uses the gcfg library to read the INI configuration file generated by this operator. However, that library will truncate passwords containing inline comments (like commas).
To avoid that, we make sure that the INI file we render contains credentials values wrapped in double quotes.
CC @openshift/storage

/jira refresh

/lgtm

/label acknowledge-critical-fixes-only

/retest-required

/retest-required
: [OLM][invariant] alert/KubePodNotReady should not be at or above info in ns/openshift-marketplace expand_less 	0s
{  KubePodNotReady was at or above info for at least 10m38s on platformidentification.JobType{Release:"4.17", FromRelease:"", Platform:"vsphere", Architecture:"amd64", Network:"ovn", Topology:"ha"} (maxAllowed=0s): pending for 0s, firing for 10m38s:

Jul 19 17:52:05.706 - 506s  W namespace/openshift-marketplace pod/redhat-operators-vhbdp alert/KubePodNotReady alertstate/firing severity/warning ALERTS{alertname="KubePodNotReady", alertstate="firing", namespace="openshift-marketplace", pod="redhat-operators-vhbdp", prometheus="openshift-monitoring/k8s", severity="warning"}
Jul 19 17:58:19.706 - 132s  W namespace/openshift-marketplace pod/redhat-operators-zxjgz alert/KubePodNotReady alertstate/firing severity/warning ALERTS{alertname="KubePodNotReady", alertstate="firing", namespace="openshift-marketplace", pod="redhat-operators-zxjgz", prometheus="openshift-monitoring/k8s", severity="warning"}}

/retest-required

/retest-required

/hold

I am just wondering, if why not we do the same thing for username value. I know probably vCenter has rules for what a valid username can be and it can't be all wild west like password, but It just seems safer to do same thing for username. What do you think?
Sorry about last minute hold.

I am just wondering, if why not we do the same thing for username value. I know probably vCenter has rules for what a valid username can be and it can't be all wild west like password, but It just seems safer to do same thing for username. What do you think?
Sorry about last minute hold.

/hold cancel
Added username as well.

/retest-required

/lgtm


Do we allow renaming the entire study?

I have come across some code in the StudyElement and the Study Properties classes trying to rename the study. I remember that we tried to get this to work and failed. It was difficult to rename the study files while the study is in use. I think the files are locked until the program closes. This needs some investigation if we want to be able to rename the study.

I don’t think we need to worry about being able to rename the study right now. That capability does not exist for FDA 1. I think if users need to update something about the name, that can happen in the study description.

On Nov 22, 2021, at 11:23 AM, codymccoy @.***> wrote:

I have come across some code in the StudyElement and the Study Properties classes trying to rename the study. I remember that we tried to get this to work and failed. It was difficult to rename the study files while the study is in use. I think the files are locked until the program closes. This needs some investigation if we want to be able to rename the study.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Ok, sounds good to me. It seems like it would be simple on the surface, but we couldn't figure it out last time we tried to do it.

I hear you. Thanks for bringing this up.


Missing Code of conduct.md file

Hi there!
I recommend adding a CODE_OF_CONDUCT.md file to your repository. This file would serve as a guide for potential contributors, providing them with a clear set of expectations, guidelines, and behavior standards for participating in your project. It plays an essential role in creating a welcoming and inclusive environment for everyone involved.
I would like to work on this issue. Please assign it to me under GSSoC'23.
Thank you! @varun-singhh

Not required


Header bar customization

Hi, first I would like to say that I really found this plugin very good, I've been using it in several projects and It have saved me thousand hours!! So KUDOS to the devs!!
I have a request, I would like to have more customisation, specifically in the Header to be able to achieve some complex requirements as the one I show in the image.

Right now the Header has an this alignment mainAxisAlignment: MainAxisAlignment.spaceAround,  that doesn't allow to move the album selector.
Specifically the changes I'm requesting are:

Allow the developer to set the Header bar alignment
Allow the user to hide the button on MediaCount.multiple

Thanks in advance!!

hey @reliance-engineer ,
Thank you so much for you appreciation.
I've just released 1.0.0 version of this package where you can add custom header using HeaderBuilder.
Check the doc for details.
Ask me anything if you need help.
Also sorry for being late...

Thank you so much!!