paginatedDataTable showing empty rows at the end if rowCount is less than rowsPerPage

Steps to Reproduce
Go to the following DartPad:
https://dartpad.dev/embed-flutter.html?gh_owner=material-components&gh_repo=material-components-flutter&gh_path=docs/components/dartpad/data_tables/normal&gh_ref=develop
Remove 2 rows (line # 63 & 64):
_Row('Cell A3', 'CellB3', 'CellC3', 3),
_Row('Cell A4', 'CellB4', 'CellC4', 4),

Expected results:
There should be no empty rows at the end!
Actual results:

Hi @s3dibrahim
Thanks for filing the issue!

code sample
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      home: DataTableDemo(),
    );
  }
}

class DataTableDemo extends StatelessWidget {
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Data Tables'),
      ),
      body: ListView(
        padding: const EdgeInsets.all(16),
        children: [
          PaginatedDataTable(
            header: Text('Header Text'),
            rowsPerPage: 4,
            columns: [
              DataColumn(label: Text('Header A')),
              DataColumn(label: Text('Header B')),
              DataColumn(label: Text('Header C')),
              DataColumn(label: Text('Header D')),
            ],
            source: _DataSource(context),
          ),
        ],
      ),
    );
  }
}

class _Row {
  _Row(
    this.valueA,
    this.valueB,
    this.valueC,
    this.valueD,
  );

  final String valueA;
  final String valueB;
  final String valueC;
  final int valueD;

  bool selected = false;
}

class _DataSource extends DataTableSource {
  _DataSource(this.context) {
    _rows = <_Row>[
      _Row('Cell A1', 'CellB1', 'CellC1', 1),
      _Row('Cell A2', 'CellB2', 'CellC2', 2),
      // _Row('Cell A3', 'CellB3', 'CellC3', 3),
      // _Row('Cell A4', 'CellB4', 'CellC4', 4),
    ];
  }

  final BuildContext context;
  List<_Row> _rows;

  int _selectedCount = 0;

  @override
  DataRow getRow(int index) {
    assert(index >= 0);
    if (index >= _rows.length) return null;
    final row = _rows[index];
    return DataRow.byIndex(
      index: index,
      selected: row.selected,
      onSelectChanged: (value) {
        if (row.selected != value) {
          _selectedCount += value ? 1 : -1;
          assert(_selectedCount >= 0);
          row.selected = value;
          notifyListeners();
        }
      },
      cells: [
        DataCell(Text(row.valueA)),
        DataCell(Text(row.valueB)),
        DataCell(Text(row.valueC)),
        DataCell(Text(row.valueD.toString())),
      ],
    );
  }

  @override
  int get rowCount => _rows.length;

  @override
  bool get isRowCountApproximate => false;

  @override
  int get selectedRowCount => _selectedCount;
}

flutter doctor -v
[✓] Flutter (Channel stable, 2.0.4, on Microsoft Windows [Version 10.0.19042.870], locale en-US)
    • Flutter version 2.0.4 at C:\Users\Taha\Code\flutter_stable
    • Framework revision b1395592de (13 days ago), 2021-04-01 14:25:01 -0700
    • Engine revision 2dce47073a
    • Dart version 2.12.2

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Taha\Code\SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = C:\Users\Taha\Code\SDK
    • Java binary at: C:\Users\Taha\Code\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.9.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.9.31129.286
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 4.1.0)
    • Android Studio at C:\Users\Taha\Code\android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[✓] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.3
    • Flutter plugin version 55.0.5
    • Dart plugin version 211.6693.108

[✓] VS Code (version 1.55.2)
    • VS Code at C:\Users\Taha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.21.0

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19042.870]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 89.0.4389.114
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 89.0.774.68

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 2.1.0-13.0.pre.608, on Microsoft Windows [Version 10.0.19042.870], locale en-US)
    • Flutter version 2.1.0-13.0.pre.608 at C:\Users\Taha\Code\flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f0c9710493 (10 hours ago), 2021-04-13 20:29:40 -0500
    • Engine revision 04cd0db032
    • Dart version 2.13.0 (build 2.13.0-232.0.dev)

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Taha\Code\SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = C:\Users\Taha\Code\SDK
    • Java binary at: C:\Users\Taha\Code\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.9.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.9.31129.286
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 4.1.0)
    • Android Studio at C:\Users\Taha\Code\android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[✓] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.3
    • Flutter plugin version 55.0.5
    • Dart plugin version 211.6693.108

[✓] VS Code (version 1.55.2)
    • VS Code at C:\Users\Taha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 10 (API 29) (emulator)
    • sdk gphone x86 (mobile)            • emulator-5556 • android-x86    • Android 11 (API 30) (emulator)
    • Windows (desktop)                  • windows       • windows-x64    • Microsoft Windows [Version 10.0.19042.870]
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome 89.0.4389.114
    • Edge (web)                         • edge          • web-javascript • Microsoft Edge 89.0.774.68

! Doctor found issues in 1 category.

I am also facing this problem. Has anyone found a solution to this?

Still seeing this issue. Any feedback?

If we make PaginatedDataTable.rowsPerPage equal to _rows count. I think issue get's resolved.
Basically if we add PaginatedDataTable.rowsPerPage greater than _rows count it adds extra empty rows.
empty rows added = PaginatedDataTable.rowsPerPage - _rows count .

 class MyApp extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
       title: 'Flutter Demo',
       debugShowCheckedModeBanner: false,
       home: DataTableDemo(),
     );
   }
 }

 class DataTableDemo extends StatelessWidget {
   Widget build(BuildContext context) {
     return Scaffold(
       appBar: AppBar(
         title: Text('Data Tables'),
       ),
       body: ListView(
         padding: const EdgeInsets.all(16),
         children: [
           PaginatedDataTable(
             header: Text('Header Text'),
             rowsPerPage: 2,
             columns: [
               DataColumn(label: Text('Header A')),
               DataColumn(label: Text('Header B')),
               DataColumn(label: Text('Header C')),
               DataColumn(label: Text('Header D')),
             ],
             source: _DataSource(context),
           ),
         ],
       ),
     );
   }
 }

 class _Row {
   _Row(
     this.valueA,
     this.valueB,
     this.valueC,
     this.valueD,
   );

   final String valueA;
   final String valueB;
   final String valueC;
   final int valueD;

   bool selected = false;
 }

 class _DataSource extends DataTableSource {
   _DataSource(this.context) {
     _rows = <_Row>[
       _Row('Cell A1', 'CellB1', 'CellC1', 1),
       _Row('Cell A2', 'CellB2', 'CellC2', 2),
       // _Row('Cell A3', 'CellB3', 'CellC3', 3),
       // _Row('Cell A4', 'CellB4', 'CellC4', 4),
     ];
   }

   final BuildContext context;
   List<_Row> _rows;

   int _selectedCount = 0;

   @override
   DataRow getRow(int index) {
     assert(index >= 0);
     if (index >= _rows.length) return null;
     final row = _rows[index];
     return DataRow.byIndex(
       index: index,
       selected: row.selected,
       onSelectChanged: (value) {
         if (row.selected != value) {
           _selectedCount += value ? 1 : -1;
           assert(_selectedCount >= 0);
           row.selected = value;
           notifyListeners();
         }
       },
       cells: [
         DataCell(Text(row.valueA)),
         DataCell(Text(row.valueB)),
         DataCell(Text(row.valueC)),
         DataCell(Text(row.valueD.toString())),
       ],
     );
   }

   @override
   int get rowCount => _rows.length;

   @override
   bool get isRowCountApproximate => false;

   @override
   int get selectedRowCount => _selectedCount;
 }

Has this been assigned a priority yet?

having the same issue, any solutions?

This issue is even more annoying when check boxes are shown - you get check boxes for empty rows...

please help me , I have the same problem

same issue here

Same for me.

You can control it like this:
rowsPerPage: widget.questions.length > 10 ? 10 : widget.questions.length
Instead of 10 you can set the number you need

This is something I tried but it does not resolve the issue in a manner that meets material design.
The pagination toolbar is then halfway down the page instead of at the bottom of the page.

@GlebBrodskiy see https://github.com/flutter/flutter/issues/80421#issuecomment-1112926398 above

Same issue here!
Why no update from developers even issue is older than a year ?

@TahaTesser, any updates  to this topic?

Please reopen this issue as the fix is unrelated to this issue which is that empty rows are show instead of a blank page.

@aakash-pamnani
Can you please link the correct issue for  https://github.com/flutter/flutter/pull/130389?

@TahaTesser I have linked the correct issue in that PR,
BTW what do you think about this solution?

I don't think this will work as 'remainingRows' will be zero.
There needs to be some kind of expanded material widget between the last row and the footer.

Not the remaining rows the rows that are empty after all rows are done.

1st approch : https://github.com/flutter/flutter/commit/898f899b21b9a86a264144cfeb978653baada897
2nd approch : https://github.com/flutter/flutter/commit/7404c490bf48ed6cd59ab1aa77e3d67c1e5f71a0
Which one is better?

@aakash-pamnani 1st approch looks good.

Please consider if it will be better when last page has less rows than rowsPerPage the table shouldn't add any empty rows or blank space and shows only data?

Please consider if it will be better when last page has less rows than rowsPerPage the table shouldn't add any empty rows or blank space and shows only data?

If we don't add empty space then the table footer will shift up which is not good according to material design


Kustomize doesn't support --load-restrictor LoadRestrictionsNone for remote resources

Describe the bug
When trying to follow these instructions for deploying FarosCE in Kubernetes I'm getting the following issue:
Error: accumulating resources: accumulation err='accumulating resources from './faros': '/private/var/folders/vx/gbhv_rk12vq1zdf76bpn0nhh0000gq/T/kustomize-1233669672/kube/base/faros' must resolve to a file': recursed accumulation of path '/private/var/folders/vx/gbhv_rk12vq1zdf76bpn0nhh0000gq/T/kustomize-1233669672/kube/base/faros': loading KV pairs: env source files: [./config/.env]: security; file '/private/var/folders/vx/gbhv_rk12vq1zdf76bpn0nhh0000gq/T/kustomize-1233669672/kube/base/faros/config/.env' is not in or below '/private/var/folders/vx/gbhv_rk12vq1zdf76bpn0nhh0000gq/T/kustomize-1233669672/kube/base/faros'

This is caused by the fact that we are trying to re-utilize the existing .env configuration file in the root by symlinking it to kube/faros/config/.env. When kustomize parses this files, it attempts to load a resource that is above the path of the  kustomization.yaml file in question which is typically prohibited for security reasons. However this can be bypassed with the flag --load-restrictor LoadRestrictionsNone and that often works but as we have just found out it doesn't seem to hold true for when resources are being referenced remotely like the command above.
Here's a reference to a kustomize Github issue touching on the unexpected behavior.
If one clones the repository and runs
kustomize build --load-restrictor LoadRestrictionsNone kube/base

things work properly, and the --load-restrictor flag is respected
To Reproduce
Steps to reproduce the behavior:

Install kustomize
From a terminal execute kustomize build --load-restrictor LoadRestrictionsNone https://github.com/faros-ai/faros-community-edition/kube/base

Expected behavior
FarosCE K8s manifests are rendered correctly
Screenshots and logs

Deployment

Kustomize 4.5.5

I propose we copy the .env file for now until there is a workaround?


Auth fails when using custom Livewire update endpoint

Package
filament/filament
Package Version
v3.1.35
Laravel Version
v10.39.0
Livewire Version
v3.3.5
PHP Version
PHP 8.3.0
Problem description
I'm currently installing Filament on an existing Livewire project, which has custom update endpoints.
All went well during the installation process, however, when trying to sign into the admin panel with the newly created user, it simply redirects me back to the login page without any error messages.
Removing the custom update endpoints in the LivewireServiceProvider, I am able to sign into the admin panel successfully.
Expected behavior
To be authenticated successfully and redirected to the admin panel.
Steps to reproduce

Install clean Laravel 10 project
Install Livewire 3
Set custom update endpoint in the boot function of LivewireServiceProvider, example:

Livewire::setUpdateRoute(function ($handle) {
    return Route::post('/custom/endpoint/update', $handle);
});

Livewire::setScriptRoute(function ($handle) {
    return Route::get('/custom/livewire/livewire.js', $handle);
});

Install Filament 3
Run php artisan filament:install --panels and fill in default step
Create new Filament User
Attempt to sign into the admin panel using the newly created user.

Reproduction repository
https://github.com/origjinali/livewire-filament-auth-bug
Relevant log output
Apologies if the reproduction repository is not complete, I don't currently have an editor available.

I do not use this feature of Livewire. So please perform your own investigations and see what is happening. The browser console is a good starting point to see errors.

I have had quality time with the issue as well 😆 . It turns out the issue is that setting the updateRoute and scriptRoute manually was somehow overriding all middleware, including the most important one for Auth: web. Adding the web middleware as shown below sorted out the issue.
Livewire::setUpdateRoute(function ($handle) {
    return Route::post('/custom/endpoint/update', $handle)->middleware('web');
});

Livewire::setScriptRoute(function ($handle) {
    return Route::get('/custom/livewire/livewire.js', $handle)->middleware('web');
});

Thanks!


User directed to Create an Account page at Log-in

Background
I have observed this previously, but thought it had been fixed in the Vue upgrade.
Description
When a user logs in, they should be directed to the homepage with links to Current vacancies, their applications, etc. However, on some occasions, the user is taken to the 'Create an Account' page on login - see screenshot below:
Private Zenhub Image

Currently we store the page the user is on when they click the sign in button, so we can send them back there when they have signed in.
So this might be because the user is on the 'Create an account' page and then clicks the Sign in button.
If that's the case then we can handle this scenario and direct the user to the home (vacancies) page instead.

@HalcyonJAC This mirrors the work on Admin that Ko Wei is currently doing, hence he could pick this up in Jan.

I have tested it and it seems that this issue has been fixed.
Private Zenhub Video


Comprehensive testing of TLS 1.3 MVP against OpenSSL and GnuTLS TLS 1.3 servers

Suggested enhancement

Interoperability testing with OpenSSL and GnuTLS. Test with all ecdhe groups (x448 included), cipher suites and signature algorithms supported by OpenSSL/GnuTLS server. Tests to be added in ssl-opt.sh (see ssl-opt.sh in the prototype and in PR https://github.com/hannestschofenig/mbedtls/pull/375 where there is a fair amount of such tests). If key exchange does not work with x448 (not in the scope of the MVP), just remove the support for it and create a ticket to investigate this.

Negative testing against OpenSSL/GnuTLS servers with which the handshake fails due to incompatibility with the capabilities of the MVP: TLS 1.2 or 1.1 server, server sending an HelloRetryRequest message in response to the MVP ClientHello, server sending a CertificateRequest message ... Tests to be added in ssl-opt.sh

Justification
As agreed in tls13-experimental.md.

There are some open PRs.

Still on-going.


Use git-notes to store the git-ps-id meta-data.

I think it might be possible to use git-notes to store the git-ps-id, and keep it in the "official" git metadata store instead of directly on the commit message.
I was wondering your thoughts on this?

e.g. Attach a note (under git-ps) ref for the HEAD commit).
git notes --ref=git-ps add -m "ps-id: 888ce562-1a4d-4724-8039-3073dbe79a35"

git notes --ref=git-ps show HEAD

outputs:
ps-id: 888ce562-1a4d-4724-8039-3073dbe79a35

git log --show-notes=git-ps

outputs:
commit a6c51daf63a6b42de5291a8a14eea4a588b214db (HEAD -> master)
Author: James Walmsley<EMAIL_ADDRESS>Date:   Sat Nov 4 02:56:30 2023 +0000

    feat(zephyr): some usefult commit

Notes (git-ps):
    ps-id: 888ce562-1a4d-4724-8039-3073dbe79a35

But a standard git log would not show this. The notes themselves don't have to be pushed to the remote, but can remain local if desired.

To ensure that rewrites (rebase & amend) preserve the notes:
git config notes.rewriteRef refs/notes/git-ps

I thought about this at one point.
But there are couple problems with this.

I believe I heard that git notes are being deprecated and will eventually be removed
There are scenarios where the users of gps needs to select one of two ps ids. For example, if you have two patches and you decide to squash them together. You have to pick one of the ps-ids to keep and the other to get rid of. So it needs to be something that the users are aware of and can modify.

Also, I think especially with a user base of primarily developers it is generally a better approach to educate than try and hide things from them.
Beyond that, historically it has proven to facilitate the natural spread of Git Patch Stack due to people asking about it in PRs. Which I think is a good thing. Even to the point that I have contemplated actually making it come with a tag line and URL or something.

Ok that makes sense. I was just playing around with it, and there's a few potential complications anyway.
Yes agree the ps-id in the message gets people curious.
I was thinking about scenarios where some developers might be asked not to leave ps-id information in their commit messages.
E.g. for devs who work at corporations that might have overly strict / unreasonable rules.

Yeah, I know we added the HTML comment around it because people worked on teams where people were complaining about it. So the HTML comment hides it in GitHub PRs.
To be honest though. I am more of the mindset of having a tag line to spread the word with a URL to the site now days. It isn't that big of a deal to have a small tagline at the end of the commit, especially if it is a functional tag line.

Since we don't need the ps-id anymore, we should definitely make this a configurable option. I have worked on projects where a clean commit history is necessary, which can make the automatic incusion of psids annoying.

We STILL NEED ps-id. It is how we track a patch when they have different commit shas.

I'm going to close this now, as its obvious notes is really a viable solution to storing the ps-id.


Wait for default ingresscontroller before starting ingress operator

We have a race condition between the HCCO and the ingress operator (which is created by CPO). Both of these components attempt to create a default ingresscontroller object. We need the HCCO to create the default ingresscontroller because when the ingress operator creates it then it does not have the correct publish strategy defined in the hosted cluster... The publish strategy is an immutable field so it can't be updated after creation.
This is solved by using an init container that won't pass until the HCCO creates the default ingresscontroller object which prevents the ingress operator from running until the object exists.

In parallel to this, I'm working to get an env var introduced into the ingress operator that will allow us to disable the default ingresscontroller auto creation (https://github.com/openshift/cluster-ingress-operator/pull/778)

Why not wait for the ingress operator change?

Why not wait for the ingress operator change?

I'm not confident we won't encounter this regardless of the cluster-ingress-operator changes. I can't guarantee there won't be a combination of components that lead to this issue... or that the operator change will make it into the 4.11 release.


Merge dubbo-rpc-xmlrpc into incubator-dubbo

Merge the code in https://github.com/dubbo/dubbo-rpc-xmlrpc into incubator-dubbo

Should I add as a dependency in dubbo-all, right? I did it and I changed the name of the package for org.apache.dubbo (previously was io.github.kimmking) but there's no snapshot in https://repository.apache.org/content/groups/snapshots/org/apache/dubbo/ and this is why the build is failing.
Can u help me?

What is the exact error you got?

The error was:

Could not resolve dependencies for project org.apache.dubbo:dubbo:jar:2.7.2-SNAPSHOT: Failure to find org.apache.dubbo:dubbo-rpc-xmlrpc:jar:2.7.2-SNAPSHOT in https://repository.apache.org/snapshots was cached in the local repository, resolution will not be reattempted until the update interval of apache.snapshots has elapsed or updates are forced

I made a lot of confusion, I was needed:

rename packages from "com.alibaba" to "org.apache"
add xmlrpc as a module in pom.xml of dubbo-rpc

I fixed it. Could u please review my PR? I'm not sure if everything is ok

This will be available from 2.7.2 onwards.


atomic - make sure a dict atom registers a get() even if the key doesn't exist

small change - merging


Rename CatalogTest to GlobalStateMgrTest

What type of PR is this：

[ ] bug
[x] feature
[ ] enhancement
[ ] others

Which issues of this PR fixes ：
Fixes #5672
Problem Summary(Required) ：
Rename CatalogTest to GlobalStateMgrTest

PTAL

[FE PR Coverage check]
:heart_eyes: pass : 0 / 0 (0%)


Doc request: How do we fetch profile and post information based

For TagzApp we're attempting to use FishyFlip to read messages from the firehose and assemble a TagzApp content record based on the Bluesky message.
We're having a hard time identifying the following data points:

Actor Avatar URI
Actor profile page URI
the Bluesky post page URI (something like https://bsky.app/profile/csharpfritz.com/post/3kgj4nty7vp2t)

I'd like to help contribute some docs back to Fishyflip that shows how to extract this information in the firehose sample
I have an integration in process, and need these last few data points to complete it:  FritzAndFriends/TagzApp#350

@csharpfritz  I apologize for the late response! I've been on vacation, so I haven't checked my messages.
I started a sample project to start writing out code to show it, which could eventually be used as a base for written docs. https://github.com/drasticactions/FishyFlip/commit/92907ab6d0d3aa691a7eb9b2878211caaa4ceabd#diff-fa9122cadd2ea8808f8746b016ecae8d70017a741e84f920a5de5f46d08e7a0a
Getting an actors information can depend on if you're logged in or not. Assuming that you are unauthed, most of your requests are made from the "Repo" object.

var handle = "drasticactions.dev";
// Resolve the handle to the ATProtocol DID.
var profile = (await protocol.Identity.ResolveHandleAsync(ATHandle.Create(handle)!)).HandleResult();
// Based on the did, get the full actor record. This contains their profile information, including avatar images.
ActorRecord actorRecord = (await protocol.Repo.GetActorAsync(profile?.Did)).HandleResult();
// The avatar is contained in actorRecord.Value.Avatar, but it's a CID object, pointing to the Avatar blob.
// We can get that through the "Sync" classes GetBlobAsync. We pass in the Actors DID and the Avatars CID link.
// this will return a blob, which contains a JPEG byte array.
Blob avatar = (await protocol.Sync.GetBlobAsync(actorRecord.Uri.Did, actorRecord.Value.Avatar.Ref.Link)).HandleResult();

For getting the post url from the Firehost, you can reconstruct it. I've updated the C# sample to show how, but there could be other ways I don't see. I think this is right though, based on what's there. There could be more helper method I could make for it to be easier.
if (message.Record is Post post)
{
    // The Actor Did.
    var did = message.Commit.Repo;
    // Commit.Ops are the actions used when creating the message.
    // In this case, it's a create record for the post.
    // The path contains the post action and path, we need the path, so we split to get it.
    var url = $"https://bsky.app/profile/{did}/post/{message.Commit.Ops![0]!.Path!.Split("/").Last()}";
    Console.WriteLine($"Post URL: {url}");
}

That should get you a full bsky.app URL.

This worked great for me in TagzApp... but I am still looking for a way to capture the screen name of the Actor who posted the message.  I can get their DisplayName, but I'd also like to fetch their screen name like<EMAIL_ADDRESS>in my case

It's not part of the firehose response, but you can get it by using the ATDid and calling atProtocol.Repo.DescribeRepoAsync(did)). That will return the Handle

Thanks @drasticactions !  I'll give that a try.


feature(links): new links package

Abstract
Links package is responsible to create and parse crypto URLs.
It adds support to the legacy payment request of CIP13, which was missing the amount, memo and message proper validation. The legacy payment request of CIP13 requires some denormalization of the URL to build and parse it properly, since it uses the authority to hold the address.
It also adds support for the CIP99 links proposal, the claim authority to allow airdrops, PoO (Proof of Onboarding) or any kind of token distribution.
Missing
/stake authority, Yoroi for now supports only 1 stake pool delegation, multi delegation is not implemented on the lib side and it is part of CIP13.
/transfer authority with MAT (multi-asset transfer) to support the new CIPXXXX (1399) proposal (only internal for now)
Extra
It adds support for the Receive funnel to create payment request links with amount, memo and message, before only the address was presented to another user when requesting a payment.

Can we add the description from this PR to a README in this package?

#00FF00 done.


Can JpaTelegramMessage save InlineKeyboardMarkup when editing a message?

Can JpaTelegramMessage save InlineKeyboardMarkup when editing a message?

Not at the moment.
But there are plans to refactor message saving.

Time is tight at the moment. I can do some sort of temporary solution within a week. But presumably with the final MessageSource version.

I looked at your PR and it seemed to me that it would be difficult to maintain. I propose a more flexible solution, even though it's a bit more complicated.
If you're happy with this option, I'll merge the PR in the near future.

I solve it temporarily.

#8 I think it's OK.


feat(quantic): new internal property isHovered added to the QuanticResult component

SFINT-4745
New internal property isHovered added to the QuanticResult Component. This property will be set to true whenever the mouse hovers over the result.
This new property will then be used from the result templates, to allow us implement the following behaviour:
https://user-images.githubusercontent.com/86681870/207876955-2259ce7f-3da9-49c2-9f13-7a3913272a4b.mov
Usage in a result template:

Simple and effective 👍 out of scope of this PR but in the SFINT quantic insight panel I think it would look nicer if the background change goes edge-to-edge. So perhaps the left/right padding could be on the result template rather than the outside container. Something to consider.

Sure yeah! I'm fixing this in the InsightRenderer component 👌


Name changes in pna.p4

Names changed in pna.p4 to reflect the removal of pre-control.

I agree that this should go with PR #99, but I thought of keeping them separate in case we agree with changing the architecture (i.e., approve PR #99 and possibly PR#100), but don’t agree with changing the naming convention.

Mario
From: Thomas Calvert @.>
Sent: Monday, December 12, 2022 12:41 PM
To: p4lang/pna @.>
Cc: Mario Baldi @.>; Mention @.>
Subject: Re: [p4lang/pna] Name changes in pna.p4 (PR #101)
@thomascalvert-xlnx commented on this pull request.
Makes sense to rationalise the names. Perhaps a single commit changing the names in both the P4 and MDK files would be cleaner, but assuming that both this and #100 https://github.com/p4lang/pna/pull/100  get approved around the same time the result will be the same.
This change does make all the examples inconsistent, so I think a mass rename might be in order?
—
Reply to this email directly, view it on GitHub https://github.com/p4lang/pna/pull/101#pullrequestreview-1213364556 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AICNJE62EXMAGTHNH3YJW4LWM4FNJANCNFSM6AAAAAAS24LHQE .
You are receiving this because you were mentioned.Message ID: @.***>

Obsolete as we decided not to change the names of the parser, deparser and control blocks


Allow coming soon items to be overwritten

Coming Soon pages are displayed at base_paths that will soon have the actual
content. Whitehall sends the coming soon with a different content-id to the
item that will be published, so until now, publishing-api has been rejecting
the request that tries to publish the actual document.
An alternative might be to change Whitehall to use the same content-id, but
this would mean we'd have to reconcile the existing data in a fairly manual
way.
Once deployed, I think it would be appropriate to republish all documents in
Whitehall that have been rejected by this issue.
/cc @elliotcm

@jamiecobbett Looks like we could do with a unit test for https://github.com/alphagov/publishing-api/blob/master/app/substitution_helper.rb (which was a refactor from the original code).

@elliotcm I've added a test.


Implement split-barriers in Vulkan using events

Use vkCmdSetEvent2KHR to schedule work at event ‘set’ time, rather than the ‘wait’ for barrier information to become available.

Low-importance feature. May look at it in the future.


wip: asynchronously report journey test result

Summary

part of #61
When replaying the script, the journey result is returned to the frontend after reaching the end of journey(either success or fail).
This PR let the electron to return the output journey state change and completion of each step asynchronously so that the frontend can display what stage of test is being performed. For now available test result types are journey/start, journey/end and step/end.

Implementation details

How to validate this change

:broken_heart: Tests Failed

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Reason: null

Start Time: 2022-01-27T17:04:39.282+0000

Duration: 72 min 59 sec

Commit: 2f4860876343f21a9e2ee06bb95dd9ca3c6af165

Test stats :test_tube:

Test
Results

Failed
5

Passed
51

Skipped
0

Total
56

Test errors
Expand to view the tests failures
org.eslint.no-console – /var/lib/jenkins/workspace/m_synthetics-recorder-mbp_PR-143/src/github.com/elastic/synthetics-recorder/electron/execution

Expand to view the error details
 Unexpected console statement.

Expand to view the stacktrace
 line 177, col 5, Warning - Unexpected console statement. (no-console)

org.eslint.@typescript-eslint/no-unused-vars – /var/lib/jenkins/workspace/m_synthetics-recorder-mbp_PR-143/src/github.com/elastic/synthetics-recorder/src/hooks/useSyntheticsTest

Expand to view the error details
 'getCodeForResult' is defined but never used.

Expand to view the stacktrace
 line 27, col 10, Warning - 'getCodeForResult' is defined but never used. (@typescript-eslint/no-unused-vars)

org.eslint.no-console – /var/lib/jenkins/workspace/m_synthetics-recorder-mbp_PR-143/src/github.com/elastic/synthetics-recorder/src/hooks/useSyntheticsTest

Expand to view the error details
 Unexpected console statement.

Expand to view the stacktrace
 line 37, col 5, Warning - Unexpected console statement. (no-console)

org.eslint.@typescript-eslint/no-unused-vars – /var/lib/jenkins/workspace/m_synthetics-recorder-mbp_PR-143/src/github.com/elastic/synthetics-recorder/src/hooks/useSyntheticsTest

Expand to view the error details
 'resultFromServer' is assigned a value but never used.

Expand to view the stacktrace
 line 46, col 13, Warning - 'resultFromServer' is assigned a value but never used. (@typescript-eslint/no-unused-vars)

org.eslint.react-hooks/exhaustive-deps – /var/lib/jenkins/workspace/m_synthetics-recorder-mbp_PR-143/src/github.com/elastic/synthetics-recorder/src/hooks/useSyntheticsTest

Expand to view the error details
 React Hook useCallback has an unnecessary dependency: 'result'. Either exclude it or remove the dependency array.

Expand to view the stacktrace
 line 54, col 5, Warning - React Hook useCallback has an unnecessary dependency: 'result'. Either exclude it or remove the dependency array. (react-hooks/exhaustive-deps)

Steps errors
Expand to view the steps failures

npm build

Took 1 min 10 sec . View more details here
Description: npm run build

:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

I actually just discovered a bug where we're showing the wrong count for steps in the result. I'll investigate tomorrow.

@vigneshshanmugam @lucasfcosta this should be ready for review now, whenever one/both of you has time.


Add filtering methods

@JamesKunstle this PR makes the following contributions:

Filters out projects with single contributors
Fillers out projects that have existed for less than a day
Filters out projects that lack data for the following events: CreateEvent, ForkEvent, IssuesEvent, PullRequestEvent, PullRequestReviewEvent

@christinaexyou - idk why but all my comments were deleted by reviewnb.
here's the synopsis: this is awesome work! One thing that we probably need to be careful of is that for old repos, we haven't collected events in the stream if nothing has happened recently. old events haven't been logged in the db because the github API doesn't expose them. However, if something hasn't been touched in a long time, it's probably not very interesting (might be different for major github mirrors like the linux kernel).
regardless, I'm really into this analysis, and we should use it in our final product.
one additional thing i'd like tacked onto this analysis is to see how many repos are represented at the end- how many repos are we now considering from the ~1million events remaining?

This PR update compares the number of repos in the original DataFrame to the ones in the filtered DataFrame.


xfce-desktop does not launch in Firefox

Granted permissions for audio and video on the site after launching from the App Launcher. This is on CentOS Linux release 8.3.2011 and Firefox version 78.6.0esr.

This is know bug that remote offer comes with h264 while firefox responds with vp8. Gstreamer does not like this.


[DOXFIX] update chinese doc

Can one of the admins verify this patch?

@shengyalan0826 Thanks very much for your translation~~

LGTM

ok to test

Jenkins, add to whitelist

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/11751/
Test PASSed.

Merged build finished. Test PASSed.


ARROW-16026: [C++] Add support for the serial executor to expose an async generator as an iterable

This is based on ARROW-15968 / #12662 and will remain in draft until that PR has merged.
This is needed to enable ARROW-15732 / #12468

arrow-s3fs-test failure is unrelated, see ARROW-16043. It seems the Python test_write_dataset_s3 failure is similar.


Remove Kiki's Tedious Quest Condition

remove https://github.com/guillaumearm/SPT_The_Escape/blob/master/user/mods/Kiki-RemoveTediousQuestConditions

Got it

done


LGPL vs GPL

Comment:
For FFMPEG, we have two builds, one with GPL, one for LGPL.
it is understood that the LGPL build may have fewer features, but it helps other packages retain their choice of license.
What do you think about a similar think for pulseaudio?
FYI: It seems that fftw is used for equalizers. https://www.linuxfromscratch.org/blfs/view/svn/multimedia/pulseaudio.html
xref: https://github.com/conda-forge/ffmpeg-feedstock/pull/138

I don't feel strongly about this. Reading this, I guess we're already shipping a GPL combined work because of linking with fftw? Is there anything downstream that actually cares about the license pulseaudio is using?
It seems to me that the licensing is mainly a concern of the upstream developers, and as packagers (or for the users) we don't care as much as long as the license gives us permission to distribute. The only benefit I see to having a pure LGPL pulseaudio is if there is a downstream package where the author has decided they want to avoid GPL but still needs to use pulseaudio and we can only package that software if there is a pure LGPL pulseaudio.
So if there's a benefit like that, absolutely! If not, I don't see the point but I'd still merge it anyway if someone wants it.

the qt package is my concern. I would like to have an LGPL version of qt.

hmm, i didn't realize that this library was only for the pulseaudio server. Maybe the better solution is to split this package as "server" and "client" since according to your link, the client presuably does not need the fftw  library

Gotcha. Then I'm good with that. I was just about to bring up the server aspect, saying that I don't really know if anyone actually uses it from conda-forge or if the main benefit of this package is the library/client. I'm definitely open to splitting into multiple outputs, especially if that helps clarify licensing.


Reconcile help/API navigation and page titles

On API help pages (eg http://openspending.org/help/api.html ) the headings in the menu down the left hand side are often completely different to the titles of the page those pages load. For example:
Financial data types -> Financial data types in OpenSpending
How we store data -> How does OpenSpending store data?
Overview -> Loading Data into OpenSpending
Cleaning Data -> How Do I Clean My Data?
Extending Data -> How can I extend my data?
Overview -> Guide for developers and designers
Aggregation-> Aggregation API
Resources -> REST resources
Full-text search -> Search API
Personal Tax -> Tax share API
Dataset loading ->  Data loading API
Do you want to help? -> Hacking on OpenSpending
Development process -> Foundations of the Development Process
Code review guidelines -> Lend us your eyeballs!
Some of the page titles have a general similarity to navigation menu link text, but some are way off, which creates confusion when trying to navigate the site.
It would be really useful to reconcile these some way - does anyone have any preferences or shall I just make changes as I see fit?
For consistency of experience, it probably makes sense to keep the navigation text and tweak the page titles?

New site reflects the organization of the Wordpress site.


Add minted DOI

Add minted DOI
In this short PR, the minted DOI is added to the main README.

@gwaybio Thank you for the approval! Merging now!


Build error: Uncaught TypeError: (0 , t.$c) is not a function

Pipeline: https://dev.azure.com/monacotools/Monaco/_build/results?buildId=254913&view=results
PR: https://github.com/microsoft/vscode/pull/204030
Revert: https://github.com/microsoft/vscode/pull/204087
The error is cryptic, but the signature reminds me of the transformation we apply at build time to localization functions  (first argument is a number). Thanks @rzhao271 for distilling it first:
Uncaught TypeError: (0 , t.$c) is not a function

With that suspicion, I reverted @mjbvz's change and the build is green again. Maybe this needs closer look from @TylerLeonhardt.

Closing this since the change was reverted.


Fixes: #26873

ran make -C Documentation builder-image locally to verify that it fixes #26873

/test

Adding needs-backport labels based on the commit which is fixed.

Documentation and Travis are green. Let's merge this to fix CI.


Why is the main controller section commented ? (common library values.yaml)

Hello,
First, I can't thank you more for your huge contributions to the k8s / helm / flux / ... communities !
But I don't know what is the rationale for the main controller section to be commented out in the values.yaml ??
This is the case since 3.0.0-beta1.
The main use case for using the template is to run at least one controller/pod ?
And the very minimal required actions for using the common library should be to fill repo/tag/port, not to uncomment 250+ lines (even if with the correct VIM key sequence it's quite fast =D).

Hi, thanks for the nice words and raising this question!
The main controller/service/ingress sections in the values.yaml file are commented out for several reasons:

In earlier versions, default (main) objects were included within values.yaml file. However, these defaults were obscuring some of the actual behavior of the Helm chart. Commenting them out provides clarity on what configurations are essential for the chart's functionality versus what are examples or placeholders.

Instead of outright removing the default objects, they've been commented out to serve as illustrative examples. This approach allows users to reference them as templates or starting points for their configurations without causing interference with the chart's behavior.

app-template is designed as a framework for deploying applications lacking their own Helm chart. By commenting out the main controller section, it allows users to customize and configure this section according to their own specific requirements of the application being deployed.

In most cases there is no requirement to "uncomment 250+" lines. My most complex set of values (with multiple controllers and services) is only 137 lines.

Thanks for the clarification, those 3 reasons are now clear to me. (And by the way I recently had an issue in 2.X while trying to rename one of those default objects !)
I still have a concern though, as for a beginner in helm chart/libraries (that I was some time ago...), It was very convenient to use the values.yaml file that we had until 2.6, to start testing new apps quickly. Because the file allies both most (all?) the possible attributes with explanations and references and the default objects. So this is why I mentioned that now I (or other people discovering the framework) will need to uncomment those lines if they want to keep the structure of this very "valuable" file, in order to have quick win deployments, and later spend the time to understand the library features and finally simplify the values.yaml.
Maybe it's possible to have a full-featured-values.yaml (somewhere in common or apptemplate) with both attributes documentation & the default objects. And keep the values.yaml (or even strip the documentation that will otherwised be maintained twice) ?

I would also see some value in having some sort of full-featured-values.yaml file.  I appreciated the pre 2.6 default values to get apps running quickly.

I am now struggling to update to 3.0, with consistent errors such as:
2024-12-13T09:57:57.602654653Z: resetting values to the chart's original version
  Warning  UpgradeFailed  7m53s  helm-controller  Helm upgrade failed for release stackspout/vikunja-test with chart<EMAIL_ADDRESS>template: vikunja/template
s/api.yaml:60:4: executing "vikunja/templates/api.yaml" at <include "bjw-s.common.loader.all" $ctx>: error calling include: template: vikunja/charts/common/te
mplates/loader/_all.tpl:9:6: executing "bjw-s.common.loader.all" at <include "bjw-s.common.loader.generate" .>: error calling include: template: vikunja/chart
s/common/templates/loader/_generate.tpl:13:6: executing "bjw-s.common.loader.generate" at <include "bjw-s.common.render.ingresses" .>: error calling include:
template: vikunja/charts/common/templates/render/_ingresses.tpl:23:10: executing "bjw-s.common.render.ingresses" at <include "bjw-s.common.class.ingress" (dic
t "rootContext" $ "object" $ingressObject)>: error calling include: template: vikunja/charts/common/templates/classes/_ingress.tpl:69:30: executing "bjw-s.com
mon.class.ingress" at <.service.name>: nil pointer evaluating interface {}.name

@bjw-s would really appreciate a pointer to upgrade :)

Please don't hijack other people's issues as it will lead to pointless notifications for others subscribed to these issues. Instead, create your own GH issue with a clear problem description.


Remove health readiness workaround when fixed in Camel

The behavior was temporarily fixed in https://github.com/apache/camel-k/pull/5450
However, the properties must be removed when https://issues.apache.org/jira/browse/CAMEL-20244 and we default to the Camel version that has this fixed.

Could this issue have been fixed by https://github.com/apache/camel-k/commit/5ceed9d0fbdbad486117b6318adc8a1797580aaa ?

Good catch, yes.


"Error in if (sum (dist_mat> distance_constraint) / 2 <1)" is reported when running Cicero

hello,
I am currently running an R script with Cicero loaded, but I get an error when running Cicero, as follows：
###############################
[1] "Starting Cicero"
[1] "Calculating distance_parameter value"
Error in if (sum(dist_mat > distance_constraint)/2 < 1) { :
missing value where TRUE/FALSE needed
Calls: doCicero_gascore ... estimate_distance_parameter -> find_distance_parameter
In addition: Warning messages:
1: In order(as.character(dhsinfo$chr), as.numeric(as.character(dhsinfo$bp2))) :
NAs introduced by coercion
2: In make_atac_cds(dt, binarize = T) : NAs introduced by coercion
3: In make_atac_cds(dt, binarize = T) : NAs introduced by coercion
Execution halted
##############################
Will you help me with this problem? thank you very much.
David

@lidenghui92 I'm wondering if you have the correct project. Do you mean: https://cole-trapnell-lab.github.io/cicero-release/docs/ ?

thank you  a lot. I just test the scATAC-pro pipeline:(https://github.com/wbaopaul/scATAC-pro) .The problem described above happend, we try to solve it,but we have no way,so we need your help a lot,thanks for your response.

I don't know either of those, this GitHub repository is for the Cicero package which is part of the accord project (https://docs.accordproject.org). If you're using R you are most likely using this other library with the same name in the link above.

ok, Thank you for your suggestion, thank you again.


Remove unnecessary if in builder/dockerfiles/parser Dump

- What I did
Was poking around this module and noticed some unnecessary code.
- How to verify it
$ go test . -v
=== RUN   TestJSONArraysOfStrings
--- PASS: TestJSONArraysOfStrings (0.00s)
=== RUN   TestTestNegative
--- PASS: TestTestNegative (0.00s)
=== RUN   TestTestData
--- PASS: TestTestData (0.00s)
=== RUN   TestParseWords
--- PASS: TestParseWords (0.00s)
=== RUN   TestLineInformation
--- PASS: TestLineInformation (0.00s)
PASS
ok  	github.com/docker/docker/builder/dockerfile/parser	0.006s

- Description for the changelog
probably not worth a changelog entry
- A picture of a cute animal (not mandatory but encouraged)

LGTM


Can the Visual Studio extension auto-update TS files upon changing a C# class?

We are converting our solution from using Typewriter's Visual Studio extension to using NTypewriter's. One thing I'm seeing that's different is that Typewriter automatically adds/updates TS files when you make a change to a C# file that is configured to render to TS, but NTypewriter seems to require us to find an .nt file in the Solution Explorer, right-click it, and click to "Render" or "Render All", which is more clicks for every change. Is there a way to automate this like Typewriter does where a chance on a C# class automatically updates the corresponding TS file?

I have my setup configured to build the ts files on build. It is a configuration setting in NTypewritter. I find it works much better that typewriter because I used to have typewriter hang visual studio every time I saved. With this set I don’t have that problem at all. On Mar 15, 2023, at 5:48 PM, John @.***> wrote:
We are converting our solution from using Typewriter's Visual Studio extension to using NTypewriter's. One thing I'm seeing that's different is that Typewriter automatically adds/updates TS files when you make a change to a C# file that is configured to render to TS, but NTypewriter seems to require us to find an .nt file in the Solution Explorer, right-click it, and click to "Render" or "Render All", which is more clicks for every change. Is there a way to automate this like Typewriter does where a chance on a C# class automatically updates the corresponding TS file?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>


About the injector and some other stuff.

Hello there.
Which injector should I choose for this .dll?
What exactly is the difference between Vac-Bypass and Vac-Bypass Loader?
Which one should I choose?
There has not been an update since 2020, however, there is an update to the game every week. So can Vac-Bypass still work?
It is stated that only the ReadMe file was changed in an update that came about 20 minutes ago.
Or is there a Vac-Bypass of your choice, first of all? If you have an up-to-date Vac-Bypass that you are absolutely sure of, I would love to use it.
Thank you.

Just because CS:GO Gets updates it doesn't mean that VAC Gets updates

Just because CS:GO Gets updates it doesn't mean that VAC Gets updates

Understood.
There is much talk of CsGhost v4.
So, do you think CsGhost v4 or Krupinski’s Vac–Bypass should be preferred?

you can use both at the same time with no issue
If you were going to only use one i would suggest this bypass as it basically disables VAC :/

you can use both at the same time with no issue
If you were going to only use one i would suggest this bypass as it basically disables VAC :/
(now going to bed so i wont respond for a few hours)

How can you inject this Vac–Bypass? with which injector?

https://github.com/danielkrupinski/VAC-Bypass#loading


Hold time is ignored for waypoints when importing with import_qgroundcontrol_mission

On waypoint import the hold time for a waypoint is ignored.
See https://github.com/mavlink/MAVSDK/blob/37be38dad47d575f29d76f886e7539e4f419ed67/src/plugins/mission/mission_impl.cpp Mission::Result MissionImpl::build_mission_items
All current code to parse a waypoint:
            if (command == MAV_CMD_NAV_WAYPOINT) {
                auto is_fly_through = !(int(params[0]) > 0);
                new_mission_item.is_fly_through = is_fly_through;
            }
            auto lat = params[4], lon = params[5];
            new_mission_item.latitude_deg = lat;
            new_mission_item.longitude_deg = lon;

            auto rel_alt = float(params[6]);
            new_mission_item.relative_altitude_m = rel_alt;

The hold time in params[0] is already used to determine if it is a 'fly-though' waypoint.
But then it is not used to set the hold time in seconds.

Nice catch! Would you mind opening a PR to fix that?

see https://github.com/mavlink/MAVSDK/pull/1184


Clean up new CI actions

Closes #350

I added complete paths for any scripts/files called by the action. If the build fails, we should pull these changes into main and try again.


[Feature request] Provide a short description of the feature here

Idea
i just got Thunderbird Docker setup and find it quite good as it provides all i need but any access control.
Is that intended to have no login screen? How do i prevent someone else in the networt to access my mails?
Or would it be possible to somehow add access control to the package?

This can be achieved via a reverse proxy.
Note that I'm also working in adding a such functionality directly to the docker image.

Access control feature is now available with the latest image.


Typo: "hostname of FQDN"

This is a Bug Report

Problem:
In here,
the section title contains "hostname of FQDN",
but considering the context,
it should be "hostname or FQDN".
(You can see that in the paragraph of that section:)

If you are experiencing issues connecting to SMB shares from Pods using hostname or FQDN,

Proposed Solution:
Update content/en/docs/tasks/configure-pod-container/configure-gmsa.md:
-## Authenticating to network shares usinig hostname of FQDN
+## Authenticating to network shares using hostname or FQDN

(Please notice another typo: usinig => using)

Plus,
In L228, L248, and L260,
-```PowerShell
+```output

Page to Update:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-gmsa/#:~:text=network shares usinig-,hostname of FQDN,-If you are

/language en

/help
/triage accepted

Resolved by #31865 .

Thanks for merging @jihoon-seo


Roll engine 8b5a50c0df76..70068706d0ee (1 commits)

https://github.com/flutter/engine/compare/8b5a50c0df76...70068706d0ee
git log 8b5a50c0df768743dd9858cceb92d1d1de44c35e..70068706d0ee3bc9847632c4d0e467fba49271f8 --no-merges --oneline
70068706d Allow building without python2 (flutter/engine#8605)
The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff (cbracken@google.com), and stop
the roller if necessary.

Auto-roller completed checks. About to merge.


Feature request: next video shortkey

straw-viewer works like a charm for me!
Unless I missed something, I couldn't find a "skip to next video" shortkey while playing multiple videos, e.g. using the -A option.
As a workaround at the moment if I want to skip the playing video I scroll all the way to the end using the arrow up key.

Going back would be nice as well. One option might be to (have the option to) pass all video's at once to the player, then the user can use normal player shortcuts to navigate? That would resolve https://github.com/trizen/youtube-viewer/issues/286 as well.

If you use mpv, you can press Q for closing the current video. Additionally, CTRL+C stops all videos.


COD-000: :wrench: Add some info about options to the Readme

Type of Change

Added some more information about options to the Readme
We should make the entrance to using these templates as simple as possible. ;)
[ ] Bugfix
[ ] Enhancement / new feature
[ ] Refactoring
[x] Documentation

Description

Checklist

[ ] Add relevant labels (for example type of change or patch/minor/major)
[ ] Make sure not to introduce some mistakes
[ ] Update documentation
[ ] Review the Contributing Guideline and sign CLA
[ ] Reference relevant issue(s) and close them after merging

I have read the CLA Document and I hereby sign the CLA


add support for changing the log level dynamically

@PestusAtSAG please have a look and let me know what you think.
One thing I noticed: is it really required to set the initialDelaySeconds to 30 in cumulocity.json? It would speed up development/deployment cycles a lot if it can be reduced...


Ability to Define Custom Biomes

I'm on a server that has custom biomes on it, and I would love to define custom music for these biomes. However, this mod doesn't have an event for them! The ability to define events for biomes would be amazing.

Hello, the issue is not that this mod doesn't have an event for them, the issue is that your mod didn't make an event for them, otherwise it would have detected it properly. This is not as easy as it seems as currently I rely on a vanilla-like behavior with sound events, which needs to be registered on startup. I might do something that allows this in the future, but this needs quite a bit of time to think about to make it work. I will let you know if I succeed doing something for this


Log order wrong when requesting friends logs

When requesting friend logs is active, the log entries are no longer sorted after gc.com. Probably the HashSet juggling in cgBase, 1298-1293

Do you have an example?

Every single cache I tried today, e.g. GC3908A or GC38B0T. If I activate friend logs, the order is different from the web. It is OK again if I deactivate friend logs.

HashSet has a big warning (don't have it in mind, but it's something like this): It doesn't preserve retain the order (because it's a set and uses hashes).

 The problem arises "only" for intraday logs. The order is nearly retained when the log date differs. I'll fix it.

Probably the HashSet juggling in cgBase, 1298-1293

Are you always reading backwards? ;) Sorry, couldn't resist...

Please test ,-)

Unfortunately I did not have the time to test it yesterday. From visual inspection, the order will be preserved, but for the intent of the feature it may not work too well. Now you are tagging existing logs from the bunch loaded generally (the last 35) as friend logs, but most of the time these may not be part of the last 35, so the will be just dropped. Perhaps it is possible to build the loop based on the friend logs and add the ones that do not find a match in the all logs?

@rsudev Thanks for your hint. Now all friend logs will be preserved.
Is it a problem that we only load 35 log entries ? There's no possibility to load more later...

Wait... does this mean, that if there are 20 old friend-logs and 35 new logs then only 15 new logs will be shown now?

No.
35 normal logs PLUS the friend logs that are disjunct from the normal logs. In your example at least 35 logs and at most 55 logs.


Issue of using aggregate function on length batch

My code:
SiddhiManager siddhiManager = new SiddhiManager();
    String executionPlan = "" +
            "define stream cseEventStream (symbol string, price float, volume long);" +
            "" +
            "@info(name = 'query1') " +
            "from cseEventStream[700 > price]#window.lengthBatch(4)" +
            "select symbol, price, avg(price) as avgPrice " +
            "insert expired events into outputStream;";

    ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(executionPlan);
    executionPlanRuntime.addCallback("outputStream", new StreamCallback() {

        @Override
        public void receive(Event[] events) {
            System.out.println("receive events: " + events.length);
            for (Event e:events)
                System.out.println(e);
        }
    });

    InputHandler inputHandler = executionPlanRuntime.getInputHandler("cseEventStream");
    executionPlanRuntime.start();
    int i = 0;
    while (i < 10) {
        float p = i*10;
        inputHandler.send(new Object[]{"WSO2", p, 100L});
        System.out.println("\"WSO2\", " + p);
        inputHandler.send(new Object[] {"IBM", p, 100L});
        System.out.println("\"IBM\", " + p);
        Thread.sleep(1000);
        i++;
    }

So, I think that when event expired, i can get the avg of price for events batch.
but the result is,
"WSO2", 0.0
"IBM", 0.0
"WSO2", 10.0
"IBM", 10.0
"WSO2", 20.0
"IBM", 20.0
"WSO2", 30.0
"IBM", 30.0
receive events: 1
Event{timestamp=1447933077892, data=[IBM, 10.0, 0.0], isExpired=false}
"WSO2", 40.0
"IBM", 40.0
"WSO2", 50.0
"IBM", 50.0
receive events: 1
Event{timestamp=1447933079894, data=[IBM, 30.0, 0.0], isExpired=false}
you can see that the avg of price is 0.

Hi,
Given the Siddhi length batch implementation this is the expected outcome of your query. I am skipping explaining implementation since it will be lengthy. But feel free to ask if you want. Instead I am going to suggest the appropriate query for your requirement.
I assume your requirement is to average each symbols price after collecting four events. You can use the following query for that purpose. Please note 'group by' which will group results by symbol
from cseEventStream[700 > price]#window.lengthBatch(4)
select symbol, price, avg(price) as avgPrice
group by symbol
insert into outputStream;
Thanks
Tishan

@tishan89 , yes, my requirement is as you said, but add 'group by', the issue is yet exit.
I change my query like this:
String executionPlan = "" +
"define stream cseEventStream (symbol string, price float, volume long);" +
"" +
"@info(name = 'query1') " +
"from cseEventStream[700 > price]#window.lengthBatch(4) " +
"select symbol, price, avg(price) as avgPrice " +
"group by symbol " +
"insert expired events into outputStream;";
I get the result:
"WSO2", 0.0
"IBM", 0.0
"WSO2", 10.0
"IBM", 10.0
"WSO2", 20.0
"IBM", 20.0
"WSO2", 30.0
"IBM", 30.0
receive events: 2
Event{timestamp=1447990204484, data=[WSO2, 10.0, 0.0], isExpired=false}
Event{timestamp=1447990204484, data=[IBM, 10.0, 0.0], isExpired=false}
"WSO2", 40.0
"IBM", 40.0
"WSO2", 50.0
"IBM", 50.0
receive events: 2
Event{timestamp=1447990206484, data=[WSO2, 30.0, 0.0], isExpired=false}
Event{timestamp=1447990206484, data=[IBM, 30.0, 0.0], isExpired=false}
you can see that the event is group by symbol, but the avg yet is 0.

@tishan89
Just add 'group by' is unuseful, the result is:
Event{timestamp=1447990778381, data=[WSO2, 10.0, 0.0], isExpired=false}
Event{timestamp=1447990778381, data=[IBM, 10.0, 0.0], isExpired=false}
you can see that the avg yet is 0;
Need remove 'expired events', and the query can reach my goal.
So my understanding is:

For window.length, current events is trigger when a event reach
For window.lengthBatch, current events is trigger when event batch reach rather than one event
For window.length, use avg on expired event is aggregate the all events in current window
For window.lengthBatch, use avg is meanless
Is my understanding right?

Hi,
Yes you have to remove expired events and also add group by to have the accurate output. I have also removed expired events from the provided query. Unless you add group by it will output same average for any symbol. Adding group by will give you the avg per symbol.

Correct
Even for window.length output will not represent all events in current window if you use expired events. Reason is 'expired event' tells siddhi to only output expired events to output stream. When a window is full upon receiving new event(e1) it will first expire the oldest event and then add current event(e1) to the window. So expired event is triggered before current event(e1) resulting in an average without the newly arrived event(e1). Even in the window.length case aggregation on current event will represent the actual events inside the window. For length batch avg on expired events will always return 0.

Closing the issue since answer has provided.


Move visually selected lines up/down

see https://github.com/asvetliakov/vscode-neovim/issues/199#issuecomment-590534030

Why so difficult and use vscode command here? In vim there is much easier way:
" Move up xnoremap <Up> dkP " Move down xnoremap <Down> dkp
If you want to keep visual selection
 xnoremap <Up> dkP[v] xnoremap <Down> dkp[v]

for single line/normal mode: ddkP and ddp respectively

I had used the :m[ove] command in regular vim, and it worked. But in the extension I'm getting weird results, I think because of some commands starting before others complete or something like that. Anyway, I would like to know how to do it by calling vscode's commands. They go faster anyway.

xnoremap <Up> dkP`[V`] works for me although the visual HL sometimes left on shifted line (minor visual glitch, actually it's not selected)
The problem with a few vscode commands that they're trying to manage cursor byself, e.g. the move line command shifts cursor up/down. This confuses neovim sometimes.
btw, here is the dumb vscode version:
function! s:move(up)
        let startline = line("'<")
        let endline = line("'>")
        let diff = endline - startline
       " use blocking request here since we need to wait
        call VSCodeCallRange(a:up ? 'editor.action.moveLinesUpAction' : 'editor.action.moveLinesDownAction', startline, endline, 0)
       " actually awaiting result of command doesn't mean that it was applied, so need a slight delay here
        call wait(40, 0)
        " Shift cursor up/down
        if a:up
                normal! k
        else
                normal! j
        endif
        " Reselect lines
        if abs(diff) > 0
                exe "normal! V" . abs(diff) . 'j'
        else
                normal! V
        endif
endfunction

xnoremap <Up> :<C-u>call <SID>move(1)<CR>
xnoremap <Down> :<C-u>call <SID>move(0)<CR>

This won't be faster than neovim dkP stuff since vscode needs to execute the command, send text change to neovim, reapply selection in neovim

Is there a command that converts visual selections into vscode selection, or are VSCodeNotifyRange and the like the only ways to do it? If there is a way to convert visual selection to vscode selection, it would be much easier to move the lines - I could just make a multicommand (with the multi-command extension) that would call that command, and then the command to move lines up or down. The same would apply for commenting multiple lines as in my other issue.

VSCodeNotifyRange/VSCodeNotifyRangePos do that. As i said previously a change performed by vscode wouldl result into buffer api event change sent to neovim, which would result into resetting cursor position from neovim side, which would result into clearing vscode selections.
Just use vim keybindings for now
xnoremap <Up> dkP`[V`]
xnoremap <Down> dp`[V`]

The HL is a bit broken after moving but it's actually minor visual glitch and doesn't affect real visually selected area

As stated in the documentation, pressing F1 or Ctrl+Shift+P to open command pallet convert visual selection into vscode selection. What does this do under the hood, and is there a way to replicate it? The Highlight glitch is more than minor in my opinion.

What does this do under the hood, and is there a way to replicate it?

It calls VSCodeNotifyRange/VSCodeNotifyRangePos 😄 Well i'm really sorry about your frustration but looks like your task is not fully supported now

As possible workaround you can move lines through vscode keybindings in insert mode. May be something like calling startinsert followed by VSCodeNotifyRange (or reverse) may work for you, along with additional filtering by neovim.mode == insert in keybindings.json, (e.g. while in normal mode - send to neovim, where call startinsert to trigger insert mode along with vscodenotifyrange, then in insert mode the control will be taken by vscode - it should prevent clearing of the cursor selection)

This sound promising, but I can't quite visualize what exactly you mean :-). Could you give me an example?

Sure,
keybindings.json:
    {
        "command": "vscode-neovim.send",
        "key": "ctrl+shift+up",
        "when": "neovim.mode != insert",
        "args": "<Up>"
    },
    {
        "command": "vscode-neovim.send",
        "key": "ctrl+shift+down",
        "when": "neovim.mode != insert",
        "args": "<Up>"
    },
    {
        "command": "editor.action.moveLinesUpAction",
        "key": "ctrl+shift+up",
        "when": "neovim.mode == insert",
    },
    {
        "command": "editor.action.moveLinesDownAction",
        "key": "ctrl+shift+down",
        "when": "neovim.mode == insert",
    },

init.vim
function! s:startMoving()
        let startLine = line("'<")
        let endLine = line("'>")
        startinsert
        call VSCodeCallRange("editor.action.moveLinesUpAction", startLine, endLine, 1)
endfunction

xnoremap <Up> :<C-u>call <SID>startMoving()<CR>
xnoremap <Down> :<C-u>call <SID>startMoving()<CR>

Select something and press Ctrl+shift+up few times (or bind to another keys, neovim mappings correspond to that you've set in the args in keybindings.json) - just tried and it worked good. The only consequence you'll end in the insert mode.
the vimscript function supports only up moving - but it should be straightforward to add up/down argument here

If you added a normal <esc> to the end of the function, would that get rid of the selection too?

It must. You don't need normal mode here because the extension will send a changes which will resync the cursor. But it doesn't communicate with neovim in insert mode at all (except while being in macro recording or for sending escape key). The trick here is to initially convert visual mode to selection and disable neovim communication at all

Ok. Thank you. I will try the workaround.

Thanks, it works. However the insert mode thing is worse then I had hoped, because I have to hit escape instead of jk to leave insert mode, or else it will will delete everything highlighted. I have an idea for a workaround. I'm crossing my fingers. :-)

I use this plugin for lines movement with the following shortcuts:
    // Move lines
    {
        "key": "alt+j",
        "command": "editor.action.moveLinesDownAction",
        "when": "editorTextFocus && neovim.mode != 'visual'"
    },
    {
        "key": "alt+k",
        "command": "editor.action.moveLinesUpAction",
        "when": "editorTextFocus && neovim.mode != 'visual'"
    },
    {
        "key": "alt+j",
        "command": "vscode-neovim.send",
        "when": "editorTextFocus && neovim.mode == 'visual'",
        "args": "<A-j>"
    },
    {
        "key": "alt+k",
        "command": "vscode-neovim.send",
        "when": "editorTextFocus && neovim.mode == 'visual'",
        "args": "<A-k>"
    },
    {
        "key": "alt+h",
        "command": "vscode-neovim.send",
        "when": "editorTextFocus && neovim.mode == 'visual'",
        "args": "<A-h>"
    },
    {
        "key": "alt+l",
        "command": "vscode-neovim.send",
        "when": "editorTextFocus && neovim.mode == 'visual'",
        "args": "<A-l>"
    }

But yes. I expecting the same annoying glitch as here but only for moving line down (moving up works as expected).

@pianocomposer321 I use this mapping eith the combination of  the following helper functions  to move visual selections up and  down. It also works  on vscode(a little bit buggy)
" Move lines up and down without loosing the cursor position
vnoremap J :<C-u>call MoveVisualDown()<CR>
vnoremap K :<C-u>call MoveVisualUp()<CR>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Helper functions
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Moves lines up and down, while keeping the cursor pos
function! MoveLineUp()
    call MoveLineOrVisualUp(".", "")
endfunction

function! MoveLineDown()
    call MoveLineOrVisualDown(".", "")
endfunction

function! MoveVisualUp()
    call MoveLineOrVisualUp("'<", "'<,'>")
    normal gv
endfunction

function! MoveVisualDown()
    call MoveLineOrVisualDown("'>", "'<,'>")
    normal gv
endfunction

function! MoveLineOrVisualUp(line_getter, range)
    let l_num = line(a:line_getter)
    if l_num - v:count1 - 1 < 0
        let move_arg = "0"
    else
        let move_arg = a:line_getter." -".(v:count1 + 1)
    endif
    call MoveLineOrVisualUpOrDown(a:range."move ".move_arg)
endfunction

function! MoveLineOrVisualDown(line_getter, range)
    let l_num = line(a:line_getter)
    if l_num + v:count1 > line("$")
        let move_arg = "$"
    else
        let move_arg = a:line_getter." +".v:count1
    endif
    call MoveLineOrVisualUpOrDown(a:range."move ".move_arg)
endfunction

function! MoveLineOrVisualUpOrDown(move_arg)
    let col_num = virtcol(".")
    execute "silent! ".a:move_arg
    execute "normal! ".col_num."|"
endfunction

this is a modified lua version of @jonpdw's solution
it still has a bug when the selection contains trailing empty newlines 😕
but I'm happy with this
function MoveVisualSelection(direction)
  -- vim.pretty_print(vim.fn.line('.'))
  -- vim.pretty_print(vim.fn.line('v'))

  local cursorLine = vim.fn.line('v')
  local cursorStartLine = vim.fn.line('.')

  local startLine = cursorLine
  local endLine = cursorStartLine

  if direction == "Up" then
    if startLine < endLine then
      local tmp = startLine
      startLine = endLine
      endLine = tmp
    end
  else -- == "Down"
    if startLine > endLine then
      local tmp = startLine
      startLine = endLine
      endLine = tmp
    end
  end

  -- move lines
  vim.cmd("call VSCodeCallRange('editor.action.moveLines" .. direction .. "Action'," .. startLine .. "," .. endLine .. ",1)")

  -- move visual selection
  if direction == "Up" then
    if endLine > 1 then
      startLine = startLine - 1
      endLine = endLine - 1

      -- exit visual mode
      vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<esc>", true, false, true), 'x', true)

      -- select range
      vim.cmd("normal!" .. startLine .. "GV" .. endLine .. "G")
      -- vim.api.nvim_command(tostring(endLine)) -- move cursor
      -- vim.api.nvim_feedkeys("V", 'n', false) -- enter visual line mode
      -- vim.api.nvim_command(tostring(startLine)) -- move cursor
    end
  else -- == "Down"
    if endLine < vim.api.nvim_buf_line_count(0) then
      startLine = startLine + 1
      endLine = endLine + 1

      -- exit visual mode
      vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<esc>", true, false, true), 'x', true)

      -- select range
      vim.cmd("normal!" .. startLine .. "GV" .. endLine .. "G")
    end
  end
end

keymap_fun_ns('v', '<a-up>', function() MoveVisualSelection('Up') end)
keymap_fun_ns('v', '<a-down>', function() MoveVisualSelection('Down') end)

@jonpdw your solution is great except if you hit the top or the bottom of the file, then the Selection change.
on bottom: the selection is just turned to one line.
on top: if you keep K pressed, its going on infinitly and all is messed up.
Here is a proposal to fix it :
   function! MoveVisualSelection(direction)
     ": Summary: This calls the editor.action.moveLines and manually recalculates the new visual selection

    let markStartLine = "'<"                     " Special mark for the start line of the previous visual selection
    let markEndLine =   "'>"                     " Special mark for the end line of the previous visual selection
    let startLine = getpos(markStartLine)[1]     " Getpos(mark) => [?, lineNum, colNumber, ?]
    let endLine = getpos(markEndLine)[1]
    let removeVsCodeSelectionAfterCommand = 1    " We set the visual selection manually after this command as otherwise it will use the line numbers that correspond to the old positions
    let linecount = getbufinfo('%')[0].linecount

    if (a:direction == "Up" && startLine == 1) || (a:direction == "Down" && endLine == linecount)
        let newStart = startLine
        let newEnd = endLine
    else
      call VSCodeCallRange('editor.action.moveLines'. a:direction . 'Action', startLine, endLine, removeVsCodeSelectionAfterCommand )
      if a:direction == "Up"
        let newStart = startLine - 1
        let newEnd = endLine - 1
      else
        let newStart = startLine + 1
        let newEnd = endLine + 1
      endif
    endif

    let newVis = "normal!" . newStart . "GV". newEnd . "G"
    ":                  │  └──────────────────── " The dot combines the strings together
    ":                  └─────────────────────── " ! means don't respect any remaps the user has made when executing
    execute newVis
endfunction

":        ┌───────────────────────────────────── " Exit visual mode otherwise our :call will be '<,'>call
vmap J <Esc>:call MoveVisualSelection("Down")<CR>
vmap K <Esc>:call MoveVisualSelection("Up")<CR>


Suppport: process engine and external worker in a single application:…

… External Task Worker subscriptions are now triggered with an event lister whose order is after the startup of micronaut-camunda-bpm.

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


Basic Examples

Are there not any tutorials or basic examples? I went through the wiki which is quite useful but I am still quite stuck. Trying to implement a basic RecyclerView to use FlexibleAdapter is a simple example that could be done in good detail. Perhaps the learning on top of using Kotlin is making it far harder for me.
I just want sticky headers...

@hammadzz, the new demoApp is far to be ready, however if you follow the Setting Up wiki page should be enough for basic list.


Use a streaming API so CLI can show/rm large numbers of services

:nut_and_bolt: Description: What code changed, and why?
The chef-automate applications show-svcs and remove-svcs commands are limited to 3000ish services at a time because they are based on a unary RPC and hit the grpc message size limit when returning lots of services (show is the first step of remove so remove hits this limit then).
This change uses a streaming RPC to get around the grpc message size limit without introducing the consistency problems you can get with pagination (e.g., we don't cursor over a consistent result set so items can be missing, duplicated, etc.).
:chains: Related Resources
See #2804
:+1: Definition of Done
Acceptance criteria says 10k services can be deleted; I have tested this with 20123 services using the procedure below (with the data generation script changed to 20123)
:athletic_shoe: How to Build and Test the Change
Build automate-gateway, automate-cli and applications-service, start all services.
chef-automate applications show-svcs will now be using the streaming API. To show that this lets you show or delete more than 3000 services, you can create a lot of services with a script like this:
for _ in {1..5000} ; do applications_publish_supervisor_message --sup-id "$(uuidgen)" --application example; done

After that, you can confirm they were all created with a command like:
chef-automate applications show-svcs | wc -l

They can be deleted with something like
chef-automate applications remove-svcs --all --yes  | tail

:white_check_mark: Checklist

[ ] I have read the CONTRIBUTING document.
[ ] Tests added/updated?
[ ] Docs added/updated?
[ ] All commits have been signed-off for the Developer Certification of Origin.

:camera: Screenshots, if applicable

This branch might need rebased because I am getting the below error when trying to build automate-gateway.
go: inconsistent vendoring in /src:
<EMAIL_ADDRESS>is explicitly required in go.mod, but vendor/modules.txt indicates<EMAIL_ADDRESS>
run 'go mod vendor' to sync, or use -mod=mod or -mod=readonly to ignore the vendor directory


Consider publishing the app on FDroid

See https://gitlab.com/fdroid/fdroiddata/blob/master/CONTRIBUTING.md

Upping this proposal, F-Droid is a great alternative to the Play Store

Upping this proposal, F-Droid is a great alternative to the Play Store

That's a good idea! I think we will wait until this ticket https://github.com/howlrapp/howlr-app/issues/20 is done before we more forward with it.

After taking a look at the inclusion rules for F-Droid (https://f-droid.org/en/docs/Inclusion_Policy/) I don't think Howlr can be included:

we use Firebase and Google libraries
we download executable code on-the-fly
though it don't strictly prevent inclusion, our reliance on Telegram and non-distributed server code is an Anti-feature.

Building Expo apps locally is also pretty experimental and I'm not sure the folks at F-Droid could do it. All-in-all it seems to much of a burden, I hope this situation will change someday but in the meantime we are going to close this issue.


Apply patch doesn't work as expected when removing all contents of a file

Diff
===================================================================
--- index.js
+++ index.js
@@ -1,3 +1,0 @@
-this
-
-tos
\ No newline at end of file

Local file content before applying the patch
this

tos

Local file content after applying the patch
this

FYI, fuzzFactor is zero.

Also, applyPatch is returning false boolean at times.

Seems an off-by-one counting, probably related to my problem at #189.


Hook up invites to subscription model

Now that we have live subscription data I can derive invites stuff from that info.
This also makes it possible to remove someone from a team.
While talking about this today I realized we also need to show this info to teammate and allow them to leave the team. I may add that to this PR or do it separately.

will merge once I get the green!


Question: How to configure the project after rewrite java files in 'core' package

I have a really basic question.
After I rewrite the java file 'Auctioneer.java' in the 'net.powermatcher.core' package, I want to run the 'examples.bndrun'. But errors occur.
It shows that ‘......\PowerMatcher\net.powermatcher.core\generated\net.powermatcher.core.jar" does not exist, given error is null ’and '......\PowerMatcher\net.powermatcher.examples\generated\net.powermatcher.examples.jar" does not exist, given error is null'.
So, could you please tell me how to configure the project correctly to avoid these errors?
Thank you very much.

Hi sjtu-jason,
It looks like Eclipse doesn't build the projects. Some things you might want to check:

Are you using Eclipse with the bndtools plugin?
Do you have any errors? If there are errors in other projects that might be a problem.
Did you use the git repository as you workspace? For some reason this has to be the same directory.
Did you check the documentation?

Hope this helps!

Thank you for your reply!

I have installed Bndtools.
There is no error in other projects.
The workspace of the Eclipse is the same as the git repository.
I totally followed the steps of the 'setting up your IDE' chapter of the documentation.

Now the problem still exists:
I am using the git repository of https://github.com/flexiblepower/PowerMatcher.git
After I rewrite the java file 'Auctioneer.java' in the 'net.powermatcher.core' package, the original jar file 'net.powermatcher.core.jar' disappears.
I have to export the 'net.powermatcher.core' package to generate a new jar file, and then write a MANIFEST.MF for it. But the new jar file still cannot be used as a bundle because it shows that 'cannot find OSGI-INF/....XML' files.
So, my question seems to be:

After I rewrite the java file 'Auctioneer.java', is it necessary to build a new bundle?
How to build a new bundle?

I describe my problem again in detail in: http://blog.sina.com.cn/s/blog_e8dcffee0102w90l.html
I tried to solve this problem, but failed. detail: http://blog.sina.com.cn/s/blog_e8dcffee0102w90v.html
Please give me some help.


[DOCS] How to stop/ shutdown taipy gracefully without a long traceback?

Issue Description
Right now, every time I close taipy using CTRL+C, a long traceback gets printed.  What is the proper way to close the app without having this?
Screenshots or Examples (if applicable)
^C is where the interrupt happens
poetry run taipy run DataCheckDashboard.py
[2024-05-29 10:58:09][Taipy][INFO] Application is running in 'debug' mode
[2024-05-29 10:58:09][Taipy][INFO] 'allow_unsafe_werkzeug' has been set to True
[2024-05-29 10:58:09][Taipy][INFO] 'async_mode' parameter has been overridden to 'threading'. Using Flask built-in development server with debug mode
[2024-05-29 10:58:09][Taipy][INFO]  * Server starting on http://<IP_ADDRESS>:2453
/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py:946: ResourceWarning:

subprocess 1302237 is still running

 * Serving Flask app 'Taipy'
 * Debug mode: on
[2024-05-29 10:58:11][Taipy][INFO]  * Server reloaded on http://<IP_ADDRESS>:2453
**^C** /home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py:946: ResourceWarning:

subprocess 1302241 is still running

Traceback (most recent call last):
  File "/home/david/miniconda3/envs/onexus_backend_py38/bin/taipy", line 8, in <module>
    sys.exit(_entrypoint())
  File "/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/site-packages/taipy/_entrypoint.py", line 53, in _entrypoint
    _RunCLI.parse_arguments()
  File "/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/site-packages/taipy/_cli/_run_cli.py", line 53, in parse_arguments
    subprocess.run(
  File "/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py", line 495, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
  File "/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py", line 1020, in communicate
    self.wait()
  File "/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py", line 1083, in wait
    return self._wait(timeout=timeout)
  File "/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py", line 1806, in _wait
    (pid, sts) = self._try_wait(0)
  File "/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py", line 1764, in _try_wait
    (pid, sts) = os.waitpid(self.pid, wait_flags)
KeyboardInterrupt
/home/david/miniconda3/envs/onexus_backend_py38/lib/python3.8/subprocess.py:946: ResourceWarning: subprocess 1302157 is still running
  _warn("subprocess %s is still running" % self.pid,

Proposed Solution (optional)
Either document how to shut it down gracefully or just show shutting down server without showing traceback.
Code of Conduct

[X] I have checked the existing issues.
[ ] I am willing to work on this issue (optional)

Great suggestion, I like this issue!

We can try to catch the Exceptions when exiting with CTRL+C. It will be much cleaner, yes

Hi @trgiangdo @FlorianJacta, I want to work on this issue, could you please assign it to me?

Hi @trgiangdo @david-fortini , could you please guide that how can I reproduce this issue?
Also, @trgiango, could you please guide that for the catching the Exceptions, I've to make changes in the taipy/cli/ dir, am I right?

Hi @yaten2302 , so basically just launch any app and close with CTRL+C.

Issue Description
Right now, every time I close taipy using CTRL+C, a long traceback gets printed. What is the proper way to close the app without having this?

If you launch a Taipy app using taipy run ... command, then the file that handle the app execution is taipy/_cli/_run_cli.py.
However, if launching Taipy app using python ..., I'm not sure if there is anything we can do on Taipy side.

Got it @trgiangdo 👍, so, like, in the file - taipy/_cli/_run_cli.py, I've to make changes in the handle_command(cls) function? I was just checking, it's given like this (the handle_command func):
def handle_command(cls):
        args, _ = _TaipyParser._parser.parse_known_args()
        if getattr(args, "which", None) != "run":
            return

        all_args = sys.argv[3:]  # First 3 args are always (1) Python executable, (2) run, (3) Python file

        external_args = []
        try:
            external_args_index = all_args.index("external-args")
        except ValueError:
            pass
        else:
            external_args.extend(all_args[external_args_index + 1 :])
            all_args = all_args[:external_args_index]

        taipy_args = [f"--taipy-{arg[2:]}" if arg.startswith("--") else arg for arg in all_args]

        subprocess.run(
            [sys.executable, args.application_main_file, *(external_args + taipy_args)],
            stdout=sys.stdout,
            stderr=sys.stdout,
        )

        sys.exit(0)

So, will it help by removing the stdout=sys.stdout in the subprocess.run(...), because ig on executing the subprocess.run(...), the stdout is only which is getting logged to the cli?

If removing stdout, all errors will be lost right? I don't think we want that

Yes @trgiangdo , we don't want that. I thought that the errors are logged from the stderr=sys.stdout? Is it like that? Like, I was just reading the doc of sys, it's showing that stderr is used to capture any exception that occurs, is it like that or by removing the stdout, it'll remove all the errors as well?

You can test it out. Either way, the behavior that we want is:

If the application has any error, exceptions, etc, it needs to be shown in the stdout
Except from KeyboardInterrupt exception, we will exit without showing the error of that specific exception

You can test it out. Either way, the behavior that we want is:

If the application has any error, exceptions, etc, it needs to be shown in the stdout
Except from KeyboardInterrupt exception, we will exit without showing the error of that specific exception

@trgiangdo, could you please guide that how can I test it? Like what command do I've to run?

You can launch any app using the taipy run ..  command as in https://docs.taipy.io/en/latest/manuals/cli/run/, then CTRL+C to see if it works or not

You can launch any app using the taipy run ..  command as in https://docs.taipy.io/en/latest/manuals/cli/run/, then CTRL+C to see if it works or not

@trgiangdo, but by this method, will I be able to test my changes?
Because, let's say that I initialized a taipy project, but then, all the dependencies installed will be those present in the official taipy repo and not mine? Is it like that or am I going wrong somewhere?

Your environment needs to have Taipy installed from your local taipy repository so that the change may take effect

Your environment needs to have Taipy installed from your local taipy repository so that the change may take effect

@trgiangdo, could you please guide that how can I install my local taipy repo into a project?

You can follow the guide for pip regular local project installation here: https://pip.pypa.io/en/stable/topics/local-project-installs/#regular-installs

Hey @trgiangdo, I tried to change the handle_command function, but I'm having some issues, could you please guide that where am I going wrong?

Also, when I'm running this command - C:/Python312/python.exe main.py, it's not showing any KeyboardInterrupt error, but, when I'm running this one - taipy run main.py, it's showing the KeyboardInterrupt error?
Could you please guide that where am I going wrong?

I don't know about this, sorry. Apparently it's not as simple as just catching the KeyboardInterrupt error.
We need to find a better way of doing this

Hey @trgiangdo, actually, when I'm trying to run this command - py -m pip install path/to/taipy, it's showing this error:
Could not install packages due to an OSError: [WinError 2] The system cannot find the file specified: 'C:\\Python312\\Scripts\\taipy.exe' -> 'C:\\Python312\\Scripts\\taipy.exe.deleteme'

I found this stackoverflow thread that could resolve your problem:
https://stackoverflow.com/questions/66322049/could-not-install-packages-due-to-an-oserror-winerror-2-no-such-file-or-direc

I tried this approach and on my previous comment

Apparently it's not as simple as just catching the KeyboardInterrupt error.
We need to find a better way of doing this

There are also some other errors that are raised, so the log is not really clean yet

I tried this approach and on my previous comment

Apparently it's not as simple as just catching the KeyboardInterrupt error.
We need to find a better way of doing this

There are also some other errors that are raised, so the log is not really clean yet

@trgiangdo is the Keyboard Interrupt error still there, like even after using the try except?

yes it's still there along side some other errors

yes it's still there along side some other errors

That's weird! @trgiangdo, maybe I'll try to ask regarding this issue in the Taipy discord server?
If at this point it's difficult to fix this issue, then maybe we can put this on a hault and try fixing the other existing issues. I'll also keep checking about it how to fix this👍

@trgiangdo #1595 fixes this issue. Kindly have a look at the PR.


Implement argument/return validation

Possibly using JSDoc comments somehow? It would be nice if Aether could handle making runtime errors when user code didn't conform to validation.

We are just doing this in the CodeCombat game engine.


Add white background to splash image

I'm going to make an assumption and say that this presentation in GitHub dark mode is not what you intended, and add a white background to your splash image.

It is indeed not what I intended, although big ass white blob in dark mode is also stylistically not great 🙈 ... although perhaps better, all things considered, than the current situation. 😂

Thanks for your contribution. ❤


Resize Images

Need to resize the images so that they aren't so small that it's difficult to see them on a projector but not so large that you can't see the entire "program".

Resized all images to 600px height for consistency and easier reading.


Fix reversed SSR rotations when using orthogonal camera

Fixes: #79002

Negative view space reconstruction was causing reversed screen space reflection rotations when using the orthogonal camera. The fix should not affect perspective.

As discussed on RocketChat. Feel free to force-push to this PR with your additional fix to ensure that the reflections don't use perspective projection. I am happy either way!

Regarding the second commit:
SSR shader were using a view direction value calculated from the view space when raymarching, which produces perspective on the reflection with lower camera z-depths. Using a constant -z view direction solves this issue.
Further explanation and an MRP can be found here: https://github.com/godotengine/godot/issues/79002#issuecomment-2220926110

Looks great! The final step before merging is to squash all the commits together so that the whole PR only contains 1 big commit with all your changes. We like to merge one commit at a time to keep the git history clean and navigable.
If you don't know how to do that, we have a helpful tutorial in the official documentation https://docs.godotengine.org/en/latest/community/contributing/pr_workflow.html#the-interactive-rebase

Oh, I see, that's why you mentioned force pushing 😅 On it.

Thanks! And congrats for your first merged Godot contribution :tada:


chore: Select user manually even if it does not exist on the list of options

What this PR does / why we need it:

This PR adds an option to include manual entry when selecting an account.

Which issue(s) this PR fixes
This PR closes 8377
Verification steps
To view the story, navigate to ManageKafkaPermissions/Empty State

:tada: This PR is included in version 1.40.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket: