Feature Request: AI-Based Tagging, Note Optimization, and RAG-style Vector Search

Describe the solution you'd like
First of all, I want to express how much I appreciate the software. It's lightweight, responsive, and works seamlessly across both mobile and web platforms. It's incredibly easy to use, and I’m really impressed by its performance.
That said, I would like to request the following features to further enhance the user experience:
AI-Based Tagging:
It would be great to have an AI that can either select appropriate tags from an existing list or suggest new ones based on the content of a note. This could help automate the organization process and save time.
AI-Powered Proofreading and Optimization:
An AI tool that can automatically proofread and optimize the phrasing, vocabulary, and logical flow of notes would be very useful. This would make the content more coherent and polished without manual editing.
RAG-style Vector Search:
A retrieval-augmented generation (RAG) based fuzzy vector search would be extremely beneficial. It would enable better search results and improve content discovery by utilizing semantic understanding.
Type of feature
User Experience (UX)
Additional context
I understand that some previous AI features were removed during the restructuring process. I would like to inquire if there are any plugin capabilities that would allow me to write and add such features myself.
Thank you very much for considering my request!

Just wanted to chime in on your feature requests. I'm a user of Memos myself, not the developer.
I get that Memos is all about keeping things simple and user-friendly, and the AI features you're talking about might not be the right fit for the main app.
Memos does have Webhook support, though. You could totally write your own Webhook server to add those AI features you're interested in.
I've actually already a Webhook Server for my own use: https://github.com/RyoJerryYu/memos-webhook-py . It includes some LLM features where you can write prompts, use Zhipu AI, and update Memos with the AI's responses. That might cover your AI-based Tagging and AI-Powered Proofreading and Optimization needs.
The downside is that I built this server with my personal setup in mind, so you might need fork it and tweak it to work with your setup.
Additionally, while Webhooks can effectively integrate Memos content into a vector database, they don't provide a search interface themselves. To utilize the RAG Search functionality, you might also need to implement a custom frontend interface.

I just wanted to chime in and add that since API is also available, you can use something like n8n to implement all the LLM-based functionality you'll ever need, perhaps in even a better way than if it was added directly to Memos.

What you said is very reasonable.
I am currently studying solutions in the direction of webhooks and n8n.
Before, I switched to blinko because of these functions. Later, I found that the customizability there is not strong, but it is barely available. At the same time, the system resource consumption is higher than that of memos.
At present, I hope to implement combinations on the basis of memos.
If you have more example code, I am very happy to learn and refer to it, which makes my implementation process easier. Thank you very much.

What you said is very reasonable. I am currently studying solutions in the direction of webhooks and n8n.
Before, I switched to blinko because of these functions. Later, I found that the customizability there is not strong, but it is barely available. At the same time, the system resource consumption is higher than that of memos.
At present, I hope to implement combinations on the basis of memos.
If you have more example code, I am very happy to learn and refer to it, which makes my implementation process easier. Thank you very much.

I can't give you anything concrete, since I didn't add Memos functionality to my TG assistant, but I would probably do something like this:
JSON For the workflow
{
  "name": "[TOOL] Memos",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1,
      "position": [
        -200,
        0
      ],
      "id": "ae2e1c97-b9e9-4d09-ae2c-3008a44b3e95",
      "name": "Execute Workflow Trigger"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -420,
        -180
      ],
      "id": "db884151-b619-4e43-8697-fd8eec59b200",
      "name": "When clicking ‘Test workflow’"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-globals.globalConstants",
      "typeVersion": 1,
      "position": [
        120,
        -180
      ],
      "id": "cf7c91b0-f335-4e11-ae16-38aea6afb1d6",
      "name": "Global Constants",
      "credentials": {
        "globalConstantsApi": {
          "id": "YiZ3y54TW3iUeYnc",
          "name": "Global Constants account"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.command }}",
                    "rightValue": "getall",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "getall"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "9fd61451-e4c0-4f76-8fa6-464915dd1ddc",
                    "leftValue": "={{ $json.command }}",
                    "rightValue": "get",
                    "operator": {
                      "type": "string",
                      "operation": "equals",
                      "name": "filter.operator.equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "get"
            }
          ]
        },
        "options": {
          "allMatchingOutputs": true
        }
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        300,
        -180
      ],
      "id": "d5c0f960-e155-4bd2-9ec6-3da121aab250",
      "name": "Switch",
      "alwaysOutputData": false
    },
    {
      "parameters": {
        "url": "={{ $json.constants.memos_uri }}/api/v1/memos",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "pageSize",
              "value": "100"
            }
          ]
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('Global Constants').item.json.constants.memos_token }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        580,
        -200
      ],
      "id": "bc3458fa-6692-4bb9-9bbc-8e1a20c6883c",
      "name": "Get All Memos"
    },
    {
      "parameters": {
        "url": "={{ $json.constants.memos_uri }}/api/v1/memos/{{ $json.arguments.id }}",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "pageSize",
              "value": "100"
            }
          ]
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('Global Constants').item.json.constants.memos_token }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        580,
        -20
      ],
      "id": "cce3d5b0-1fbe-43d4-9b81-d7351d5186ce",
      "name": "Get Specific Memo"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "9e2f3dd0-93dc-43d7-b093-82022ee57d27",
              "name": "command",
              "value": "get",
              "type": "string"
            },
            {
              "id": "236d2f5e-f375-43ce-bb92-d83eb0320b2b",
              "name": "arguments",
              "value": "{'id':'3'}",
              "type": "object"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -200,
        -180
      ],
      "id": "f4584bce-4357-4575-ba71-04aa70d89b64",
      "name": "Test Params"
    }
  ],
  "pinData": {},
  "connections": {
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Test Params",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Global Constants": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Workflow Trigger": {
      "main": [
        [
          {
            "node": "Global Constants",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Get All Memos",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Specific Memo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test Params": {
      "main": [
        [
          {
            "node": "Global Constants",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ea21b937-0f09-436d-bb13-9571ee971a47",
  "meta": {
    "instanceId": "bc5203f69c8f3fd7c5d69eb8bfb4301d2a24ea6f4c3598b007ffc921d39b239f"
  },
  "id": "wp0Z2UkgZC5WPE22",
  "tags": []
}

Edit: I just found this https://github.com/laxtiz/n8n-nodes-memos

This has helped me see the direction clearly. I will see how to implement it on this basis. Thank you very much.


KPT live apply assumes no status is successful

We've seen instances where kpt live apply assumes that a resource is successfully created and reconciled, when in reality it is not. What I believe happened was that the resource was created and due to a controller slowdown, the status subresource was never set. Thus, without any status field, KPT assumes the resource to have been successfully reconciled. Normally the status subresource would be populated with the ready condition unset, and KPT treats that resource as unreconciled as expected.
My expectation is that kpt live apply should block reconciliation until the status is ready for resources that have a ready condition. I understand, however, that it's non-trivial as having a conditions field in the status subresource doesn't guarantee that there's a ready condition (nor reconciling/stalled). This is somewhat related to #452 where the ready condition was first acknowledged by KPT.
Am I correct in my interpretation of the recommendation for CRDs that having an observedGeneration field in the status would automatically solve this? Or is it still timing-dependent on first creation, when the status has not been set yet? If KPT reads the CRD to figure out what status fields to expect, then I'd assume there's no dependency on timing (but only observed generation would work; not conditions since they're not cemented in the CRD).
This interaction happened to be between KCC and KPT, but it can happen to any resource.

Here's an ordered list to clarify the chronology of the events:

kpt live apply .
MyResource my-resource is created
KPT reads my-resource.status and there are no conditions that indicate problems
MyResource my-resource is current
The MyResource controller starts reconciling and sets a non-ready condition.

The 5th step needs to happen before step 3, otherwise we end up in this state where the reconciliation thinks the resource is current.

@seans3 @mortent you are the experts here I believe.

@fsommar So the challenge here is that kpt live doesn't have any way to discover which conditions (if any) are used by a resource. The openapi schema can tell us whether the resource has a conditions field in the status object, but it doesn't contain information about which conditions will be set by the controller or the semantics of those conditions.
So what kpt live does today, is to assume that any resource without any conditions (and that isn't a "known" type) is already reconciled. This is to make sure that resources that doesn't have conditions doesn't end up being stuck in InProgress forever. But as you have discovered, the challenge with this is that it becomes a race between the controller adding conditions and kpt live polling the resource. The solution to this is to use the observedGeneration pattern, as it allows kpt live (or any other observer of the resource) to know whether the controller have seen the latest changes to the resources and therefore have updated the status.
Every resource has the metadata.Generation field that is set to 1 the first time the resource is created and then incremented every time there is a change to the spec of the resource. With the observedGeneration pattern, the controller just copies the value from metadata.Generation into status.ObservedGeneration on every reconcile. For kpt live on newly created resources, it means that if it sees that the metadata.Generation is 1 and the status.ObservedGeneration is 0, then we know the controller hasn't seen the resource yet and thus the status must be InProgress.
We are aware that there are some issues when using KCC resources with kpt live and we are working with the KCC team to find a solution.

@mortent Using the observedGeneration pattern would avoid the race since kpt live looks up the structure of the resource to determine whether it has a status.observedGeneration field? If that's already the case, then I believe we can close this and follow up on the changes for KCC elsewhere.

@fsommar Yeah, kpt do check the observedGeneration field on the resource.


DRAFT - Browser Extension Spec

Motivation
Bundling the web app as a browser extension allows the wallet to be more

portable - users can connect to dapps as they would with MetaMask or Keplr
front of mind - a one click icon in a browser is easier than navigating to our site
sticky - users don't frequently uninstall extensions
competitive - we can market the extension as a alternative to MetaMask
familiar - users typically think of wallets as extensions, rather than web app able to act as a wallet via WalletConnect

Resources

Chrome Web Store
EIP-1193 spec (MetaMask-like wallets
Browser trends/usage

Browser support

Initially Chrome only

Chrome is ~70% of browser usage according to Mixpanel. Firefox is <3%
According to W3 Schools

Architecture

Load app.shapeshift.com within an iframe in a thin Chrome extension. Rationale - Chrome Web Store update review time. We typically ship 1-2 releases per day that take <10 minutes to go to production for web and mobile users. The Chrome Web Store review process says most are reviewed within 24 hours, but up to 3 days. This is not ideal for UX consistency and bug fixes.
Present as window.ethereum as per the EIP-1193 spec (as MetaMask/XDEFI do)
This should live in the web repo such that we can share the Content Security Policy with the extension

Out of scope

Injecting CosmosSDK support via window.keplr - this functionality is not popular per Mixpanel. EVM is where it's at.
UTXO support (requires spike for existing competitors, e.g. XDEFI)

Tickets

Service worker

Probably required to prevent a cold load of static assets (30mb+) from the CDN each time the extension is loaded
It would be ideal to avoid this if possible, if we can background the extension for example.

Removing the native password modal/lazy password prompting https://github.com/shapeshift/web/issues/1646

This is necessary such that they're not prompted for their password every time they open the extension.

WalletProvider changes. We have a similar strategy for the mobile app where we only support connecting via WalletConnect and the ShapeShift wallet.

We will not support connecting to the extension as a dapp via WalletConnect initially, as

the initial V1 implementation where we are a dApp is a technical cluster fuck, and
V1 is being sunset mid 2023 by WalletConnect upstream
it adds additional scope
we want users to migrate from other wallets

We can't talk to other extensions, so MetaMask won't be able to connect to us.
TBD - KeepKey support.
We should simplify the UX to be similar to the mobile experience, and only support importing/creating a native wallet.
We should support the demo wallet for user acquisition purposes

Implement support for EIP-1193 interface (window.ethereum). This allows us to inject into dApps as MetaMask does.

UI/UX for handling

Signing requests. We could repurpose the way we handle this in WalletConnect

Wallet switch requests to unsupported networks, e.g. as of writing we currently don't support Arbitrum
Adding/switching account the extension injects
We may need to implement optional MetaMask path derivation to poach those users 😞

Size and responsiveness

IMO MetaMask seems unnecessarily small
It would be ideal to perhaps be "mid sized", e.g.

Extension build script

This needs a good developer experience for local development + updates
yarn build:extension

Creates a .zip file to be uploaded to Chrome Web Store

We may need to submit extension updates when the Content Security Policy changes, however this is infrequent

Chrome Web Store developer account ownership

Ideally the Fox Foundation similar to the App Store and Google Play Store @willyogo

Deployment documentation

Similar to the mobile app, as this is not deployed frequently, we need thorough correct documentation to be able to ship infrequent updates when necessary as developers will not be intimately familiar.

Marketing and branding

We need a big bikeshed for clear naming and messaging, as we will be a web based dApp, wallet, mobile app, and extension (🤯). We've previously dropped the "native" word from the branding of the wallet.
Limitations

The extension supports injecting to dApps like MetaMask as EVM only, and only the set of EVM chains that ShapeShift currently supports

Ethereum
Polygon
Optimism
Binance Smart Chain
Polygon
Gnosis soon

Users can use all the regular wallet functionality within the extension itself

Chrome Web Store

Keywords for SEO
Screenshots
Video?
Description
Backlinks to Discord/Twitter/Github

Future improvements

CosmosSDK support by injecting as window.keplr
Hardware wallet support (KeepKey/Ledger/Trezor/Grid)
Importing a keystore.json file to poach XDEFI/ThorSwap users (easy lift)
Porting to Firefox

I wanted to echo that I think this project is a great and holds a lot of promise of expanding our relevance in the crypto space.
To expand id like to see a window.shapeshift object and exposure of all the core api functions in hdwallet to dapps. This will spur developers to be able to access all supported chains and reach a very large feature set. I believe this would be a low lift as the hdwallet object are already mounted in the project and could be exposes as-is.
IMHO wallet-connect is dropping the ball, and is not properly embracing multi-chain fast enough. If shapeshift released this extension along with a SDK and proper API documentation of its unchained services it could become a leader in the wallet space and compete directly with wallet <-> dapp protocols in the space and greatly spur our developer culture and bring new developers and their energy into our space.

while i admire the visionary approach of a window.shapeshift object, and think it could fit into part of a longer term plan, i don't think we have sufficient time, engineering, marketing or devrel capacity necessary to nuture that. walletconnect has extraordinary resources, and reading between the lines here, are effectively panicking/begging ecosystem participants to upgrade to v2 after already delaying their breaking upgrade 6 months https://discord.com/channels/492410046307631105/783780930129100801/1101523306991075408 also see here for how much they're buckling under pressure with upgrade issues https://github.com/WalletConnect/walletconnect-monorepo/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
we'd effectively be seeding a marketplace/ecosystem. additionally outside the evm ecosystem there just really aren't that many utxo/cosmossdk dapps.
this is intended as a relatively low lift project to fill a gap users have asked for without additional design work.
we'd also want to completely rewrite the hdwallet API if we were to do that, it's not really fit for purpose to be integrated against and is a technical nightmare at the moment.

Firefox is <3%

Just for note keeping as Discord isn't the best to keep knowledge, once we're done with the Chrome version the lift for a Firefox version might be almost non-existant as Mozilla attempts to keep compatibility with Chrome's extension API: Porting a Google Chrome extension
And they provide an automated tester for the .crx to see if the extension uses an incompatible feature: https://www.extensiontest.com/

@0xdef1cafe do we want to close this for now until we complete the API milestones?

@twblack88 - just wanted to check in on this and see if its anywhere on the current roadmap.  if not, I would like to close this for now.

We need to understand the use case for extensions that we can differentiate. Product will keep looking into market advantages. At least we have the high level.


ESPHome: missing uart.write_array for std::vector

ESPHome API states  that there is a variant of write_array method in UARTDevice class that accepts a vector, but when trying to use this with libretiny (1.4.1) uart, I get this error:
/config/tuya-ht-1.yaml: In lambda function:
/config/tuya-ht-1.yaml:104:52: error: no matching function for call to 'esphome::uart::LibreTinyUARTComponent::write_array(const std::vector<unsigned char>&)'
  104 |                id(tuya_uart).write_array(WIFI_RESET_RESPONSE);
      |                                                    ^
In file included from src/esphome.h:59,
                 from src/main.cpp:3:
src/esphome/components/uart/uart_component_libretiny.h:20:8: note: candidate: 'virtual void esphome::uart::LibreTinyUARTComponent::write_array(const uint8_t*, size_t)'
   20 |   void write_array(const uint8_t *data, size_t len) override;
      |        ^~~~~~~~~~~
src/esphome/components/uart/uart_component_libretiny.h:20:8: note:   candidate expects 2 arguments, 1 provided

The appropriate part of yaml is as follows:
uart:
  - id: tuya_uart
    rx_pin: RX1
    tx_pin: TX1
    baud_rate: 9600
    debug:
      direction: BOTH
      dummy_receiver: true
      sequence:
        - lambda: UARTDebug::log_hex(direction, bytes, ' ');
        - lambda: !lambda |-
            static const std::vector<uint8_t> WIFI_RESET_COMMAND = { 0x55, 0xAA, 0x00, 0x04, 0x00, 0x01, 0x01, 0x05 };
            static const std::vector<uint8_t> WIFI_RESET_RESPONSE = { 0x55, 0xAA, 0x00, 0x04, 0x00, 0x00, 0x03 };
            if ((direction == uart::UART_DIRECTION_RX) && (bytes == WIFI_RESET_COMMAND))
            {
               id(tuya_uart).write_array(WIFI_RESET_RESPONSE);
            }

I know that it's not a big deal, I can use the other variant, still I think this should be consistent with esphome API description.

The linked documentation is for UARTDevice, while the error originates from UARTComponent.
The LibreTiny implementation is the same as in all other platforms. The write_array() function is defined and implemented in uart_component.h, which is not LibreTiny-specific. That error is caused by something else, not missing implementation.
Can you try adding #undef uint8_t right before the static const array declarations?

Nope, it didn't help.
I can see in the code that UARTDevice blindly calls matching method on the underlying parent (ie. UARTComponent):
  void write_array(const uint8_t *data, size_t len) { this->parent_->write_array(data, len); }
  void write_array(const std::vector<uint8_t> &data) { this->parent_->write_array(data); }
  template<size_t N> void write_array(const std::array<uint8_t, N> &data) {
    this->parent_->write_array(data.data(), data.size());
  }

It depends whether the issue is LibreTiny related (such as "crashes on bk7231"), or if it applies to all platforms (such as "custom component problems"). The old fork repository doesn't have issues enabled.
Yes, the function is not virtual, because it's inline. It's implemented right in uart_component.h:
void write_array(const std::vector<uint8_t> &data) { this->write_array(&data[0], data.size()); }

Neither of the implemented platforms (re)implement this function.

You're correct... That would mean the same problem should occur with other boards (eg. ESP8266).
If so, this would be an esphome issue. Will try that now.

Yeah, this looks like an ESPHome bug.  I think components\uart\uart.h line 22 should be
void write_array(const std::vector<uint8_t> &data) { this->parent_->write_array(data, data.size()); } which would match uart_component.h

Yes, I've got the same result with ESP8266:
/config/h801.yaml: In lambda function:
/config/h801.yaml:37:53: error: no matching function for call to 'esphome::uart::ESP8266UartComponent::write_array(const std::vector<unsigned char>&)'
   37 |               id(test_uart).write_array(WIFI_RESET_RESPONSE);
      |                                                     ^
In file included from src/esphome.h:66,
                 from src/main.cpp:3:
src/esphome/components/uart/uart_component_esp8266.h:56:8: note: candidate: 'virtual void esphome::uart::ESP8266UartComponent::write_array(const uint8_t*, size_t)'
   56 |   void write_array(const uint8_t *data, size_t len) override;
      |        ^~~~~~~~~~~
src/esphome/components/uart/uart_component_esp8266.h:56:8: note:   candidate expects 2 arguments, 1 provided
*** [.pioenvs/h801/src/main.cpp.o] Error 1

Can we transfer this issue to esphome issues?

Nope can't transfer to different orgs.  You'll need to create a new issue there.


Call to a member function with() on null

I have this in my controller but i keep getting
Call to a member function with() on null

Here's what i have in my controller
class ShowTweet extends Controller
{
    public function __invoke(User $user, Transactions $tweet)
    {
        return Inertia::modal('Users/Details')
            ->with([
                'user' => auth()->user(),
                'tweet' => [
                    'user' => 'John doe',
                    'tweet' => 'Oge has a big head'
                ],
            ])
            ->baseRoute('get.users', $user);
    }
}

also when i tried
return Inertia::modal('Users/Details')

                ->baseRoute('get.users', $user);

it returns a similar error
Call to a member function baseRoute() on null


Using <IP_ADDRESS> as the default (rather than the public network)

Unclear why this is happening? Could be something that migrated over, but i don't think so?
 b15 job list
16:07:30.34 | INF pkg/config/config.go:211 > Config loaded from: [], and with data-dir v1.5.0/data-dir
failed request: failed to authorize user: Get "http://<IP_ADDRESS>:1234/api/v1/auth": dial tcp <IP_ADDRESS>:1234: connect: connection refused
❯ b15 config list
16:07:51.055 | INF pkg/config/config.go:211 > Config loaded from: [], and with data-dir v1.5.0/data-dir
 KEY                                               VALUE                        DESCRIPTION
 api.auth.accesspolicypath                                                      AccessPolicyPath is the path to a file or directory that will be loaded as the
                                                                                policy to apply to all inbound API requests. If unspecified, a policy that
                                                                                permits access to all API endpoints to both authenticated and unauthenticated
                                                                                users (the default as of v1.2.0) will be used.
 api.auth.methods                                  map[ClientKey:{challenge }]  Methods maps "method names" to authenticator implementations. A method name is a
                                                                                human-readable string chosen by the person configuring the system that is shown
                                                                                to users to help them pick the authentication method they want to use. There can
                                                                                be multiple usages of the same Authenticator *type* but with different configs
                                                                                and parameters, each identified with a unique method name. For example, if an
                                                                                implementation wants to allow users to log in with Github or Bitbucket, they
                                                                                might both use an authenticator implementation of type "oidc", and each would
                                                                                appear once on this provider with key / method name "github" and "bitbucket". By
                                                                                default, only a single authentication method that accepts authentication via
                                                                                client keys will be enabled.
 api.host                                          <IP_ADDRESS>                      Host specifies the hostname or IP address on which the API server listens or the
                                                                                client connects.
 api.port                                          1234                         Port specifies the port number on which the API server listens or the client
                                                                                connects.
 api.tls.autocert                                                               AutoCert specifies the domain for automatic certificate generation.
 api.tls.autocertcachepath                                                      AutoCertCachePath specifies the directory to cache auto-generated certificates.
 api.tls.cafile                                                                 CAFile specifies the path to the Certificate Authority file.
 api.tls.certfile                                                               CertFile specifies the path to the TLS certificate file.
 api.tls.insecure                                  false                        Insecure allows insecure TLS connections (e.g., self-signed certificates).
 api.tls.keyfile                                                                KeyFile specifies the path to the TLS private key file.
 api.tls.selfsigned                                false                        SelfSigned indicates whether to use a self-signed certificate.
 api.tls.usetls                                    false                        UseTLS indicates whether to use TLS for client connections.
 compute.allocatedcapacity.cpu                     70%                          CPU specifies the default amount of CPU allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "100m" for 0.1 CPU cores). This value is used when
                                                                                the task hasn't explicitly set its CPU requirement.
 compute.allocatedcapacity.disk                    70%                          Disk specifies the default amount of disk space allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "1Gi" for 1 gibibyte). This value is
                                                                                used when the task hasn't explicitly set its disk space requirement.
 compute.allocatedcapacity.gpu                     100%                         GPU specifies the default number of GPUs allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "1" for 1 GPU). This value is used when the task
                                                                                hasn't explicitly set its GPU requirement.
 compute.allocatedcapacity.memory                  70%                          Memory specifies the default amount of memory allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "256Mi" for 256 mebibytes). This value
                                                                                is used when the task hasn't explicitly set its memory requirement.
 compute.allowlistedlocalpaths                     []                           AllowListedLocalPaths specifies a list of local file system paths that the
                                                                                compute node is allowed to access.
 compute.enabled                                   false                        Enabled indicates whether the Web UI is enabled.
 compute.heartbeat.infoupdateinterval              1m0s                         InfoUpdateInterval specifies the time between updates of non-resource
                                                                                information to the orchestrator.
 compute.heartbeat.interval                        15s                          Interval specifies the time between update checks, when set to 0 update checks
                                                                                are not performed.
 compute.heartbeat.resourceupdateinterval          30s                          ResourceUpdateInterval specifies the time between updates of resource
                                                                                information to the orchestrator.
 compute.labels                                    map[]                        Labels are key-value pairs used to describe and categorize the compute node.
 compute.orchestrators                             [nats://<IP_ADDRESS>:4222]      Orchestrators specifies a list of orchestrator endpoints that this compute node
                                                                                connects to.
 compute.tls.autocert                                                           AutoCert specifies the domain for automatic certificate generation.
 compute.tls.autocertcachepath                                                  AutoCertCachePath specifies the directory to cache auto-generated certificates.
 compute.tls.cafile                                                             CAFile specifies the path to the Certificate Authority file.
 compute.tls.certfile                                                           CertFile specifies the path to the TLS certificate file.
 compute.tls.insecure                              false                        Insecure allows insecure TLS connections (e.g., self-signed certificates).
 compute.tls.keyfile                                                            KeyFile specifies the path to the TLS private key file.
 compute.tls.selfsigned                            false                        SelfSigned indicates whether to use a self-signed certificate.
 compute.tls.usetls                                false                        UseTLS indicates whether to use TLS for client connections.
 datadir                                           v1.5.0/data-dir              DataDir specifies a location on disk where the bacalhau node will maintain
                                                                                state.
 disableanalytics                                  false                        No description available
 engines.disabled                                  []                           Disabled is a list of downloaders that are disabled.
 engines.types.docker.manifestcache.refresh        1h0m0s                       Refresh specifies the refresh interval for cache entries.
 engines.types.docker.manifestcache.size           1000                         Size specifies the size of the Docker manifest cache.
 engines.types.docker.manifestcache.ttl            1h0m0s                       TTL specifies the time-to-live duration for cache entries.
 featureflags.exectranslation                      false                        ExecTranslation enables the execution translation feature.
 inputsources.disabled                             []                           Disabled is a list of downloaders that are disabled.
 inputsources.maxretrycount                        3                            ReadTimeout specifies the maximum number of attempts for reading from a storage.
 inputsources.readtimeout                          5m0s                         ReadTimeout specifies the maximum time allowed for reading from a storage.
 inputsources.types.ipfs.endpoint                                               Endpoint specifies the multi-address to connect to for IPFS. e.g
                                                                                /ip4/<IP_ADDRESS>/tcp/5001
 inputsources.types.s3.accesskey                                                AccessKey specifies the access key for the S3 input source.
 inputsources.types.s3.endpoint                                                 Endpoint specifies the multi-address to connect to for IPFS. e.g
                                                                                /ip4/<IP_ADDRESS>/tcp/5001
 inputsources.types.s3.secretkey                                                SecretKey specifies the secret key for the S3 input source.
 jobadmissioncontrol.acceptnetworkedjobs           false                        AcceptNetworkedJobs indicates whether to accept jobs that require network
                                                                                access.
 jobadmissioncontrol.probeexec                                                  ProbeExec specifies the command to execute for probing job submission.
 jobadmissioncontrol.probehttp                                                  ProbeHTTP specifies the HTTP endpoint for probing job submission.
 jobadmissioncontrol.rejectstatelessjobs           false                        RejectStatelessJobs indicates whether to reject stateless jobs, i.e. jobs
                                                                                without inputs.
 jobdefaults.batch.priority                        0                            Priority specifies the default priority allocated to a service or daemon job.
                                                                                This value is used when the job hasn't explicitly set its priority requirement.
 jobdefaults.batch.task.publisher.config.params    map[]                        No description available
 jobdefaults.batch.task.publisher.config.type      local                        No description available
 jobdefaults.batch.task.resources.cpu              500m                         CPU specifies the default amount of CPU allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "100m" for 0.1 CPU cores). This value is used when
                                                                                the task hasn't explicitly set its CPU requirement.
 jobdefaults.batch.task.resources.disk                                          Disk specifies the default amount of disk space allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "1Gi" for 1 gibibyte). This value is
                                                                                used when the task hasn't explicitly set its disk space requirement.
 jobdefaults.batch.task.resources.gpu                                           GPU specifies the default number of GPUs allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "1" for 1 GPU). This value is used when the task
                                                                                hasn't explicitly set its GPU requirement.
 jobdefaults.batch.task.resources.memory           1Gb                          Memory specifies the default amount of memory allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "256Mi" for 256 mebibytes). This value
                                                                                is used when the task hasn't explicitly set its memory requirement.
 jobdefaults.batch.task.timeouts.executiontimeout  0s                           ExecutionTimeout is the maximum time allowed for task execution
 jobdefaults.batch.task.timeouts.totaltimeout      0s                           TotalTimeout is the maximum total time allowed for a task
 jobdefaults.daemon.priority                       0                            Priority specifies the default priority allocated to a service or daemon job.
                                                                                This value is used when the job hasn't explicitly set its priority requirement.
 jobdefaults.daemon.task.resources.cpu             500m                         CPU specifies the default amount of CPU allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "100m" for 0.1 CPU cores). This value is used when
                                                                                the task hasn't explicitly set its CPU requirement.
 jobdefaults.daemon.task.resources.disk                                         Disk specifies the default amount of disk space allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "1Gi" for 1 gibibyte). This value is
                                                                                used when the task hasn't explicitly set its disk space requirement.
 jobdefaults.daemon.task.resources.gpu                                          GPU specifies the default number of GPUs allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "1" for 1 GPU). This value is used when the task
                                                                                hasn't explicitly set its GPU requirement.
 jobdefaults.daemon.task.resources.memory          1Gb                          Memory specifies the default amount of memory allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "256Mi" for 256 mebibytes). This value
                                                                                is used when the task hasn't explicitly set its memory requirement.
 jobdefaults.ops.priority                          0                            Priority specifies the default priority allocated to a service or daemon job.
                                                                                This value is used when the job hasn't explicitly set its priority requirement.
 jobdefaults.ops.task.publisher.config.params      map[]                        No description available
 jobdefaults.ops.task.publisher.config.type        local                        No description available
 jobdefaults.ops.task.resources.cpu                500m                         CPU specifies the default amount of CPU allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "100m" for 0.1 CPU cores). This value is used when
                                                                                the task hasn't explicitly set its CPU requirement.
 jobdefaults.ops.task.resources.disk                                            Disk specifies the default amount of disk space allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "1Gi" for 1 gibibyte). This value is
                                                                                used when the task hasn't explicitly set its disk space requirement.
 jobdefaults.ops.task.resources.gpu                                             GPU specifies the default number of GPUs allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "1" for 1 GPU). This value is used when the task
                                                                                hasn't explicitly set its GPU requirement.
 jobdefaults.ops.task.resources.memory             1Gb                          Memory specifies the default amount of memory allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "256Mi" for 256 mebibytes). This value
                                                                                is used when the task hasn't explicitly set its memory requirement.
 jobdefaults.ops.task.timeouts.executiontimeout    0s                           ExecutionTimeout is the maximum time allowed for task execution
 jobdefaults.ops.task.timeouts.totaltimeout        0s                           TotalTimeout is the maximum total time allowed for a task
 jobdefaults.service.priority                      0                            Priority specifies the default priority allocated to a service or daemon job.
                                                                                This value is used when the job hasn't explicitly set its priority requirement.
 jobdefaults.service.task.resources.cpu            500m                         CPU specifies the default amount of CPU allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "100m" for 0.1 CPU cores). This value is used when
                                                                                the task hasn't explicitly set its CPU requirement.
 jobdefaults.service.task.resources.disk                                        Disk specifies the default amount of disk space allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "1Gi" for 1 gibibyte). This value is
                                                                                used when the task hasn't explicitly set its disk space requirement.
 jobdefaults.service.task.resources.gpu                                         GPU specifies the default number of GPUs allocated to a task. It uses Kubernetes
                                                                                resource string format (e.g., "1" for 1 GPU). This value is used when the task
                                                                                hasn't explicitly set its GPU requirement.
 jobdefaults.service.task.resources.memory         1Gb                          Memory specifies the default amount of memory allocated to a task. It uses
                                                                                Kubernetes resource string format (e.g., "256Mi" for 256 mebibytes). This value
                                                                                is used when the task hasn't explicitly set its memory requirement.
 logging.level                                     info                         Level sets the logging level. One of: trace, debug, info, warn, error, fatal,
                                                                                panic.
 logging.logdebuginfointerval                      0s                           LogDebugInfoInterval specifies the interval for logging debug information.
 logging.mode                                      default                      Mode specifies the logging mode. One of: default, json.
 nameprovider                                      puuid                        NameProvider specifies the method used to generate names for the node. One of:
                                                                                hostname, aws, gcp, uuid, puuid.
 orchestrator.advertise                                                         Advertise specifies the address to advertise to other cluster members.
 orchestrator.authsecret                                                        AuthSecret key specifies the key used by compute nodes to connect to an
                                                                                orchestrator.
 orchestrator.cluster.advertise                                                 Advertise specifies the address to advertise to other cluster members.
 orchestrator.cluster.host                                                      Host specifies the hostname or IP address on which the API server listens or the
                                                                                client connects.
 orchestrator.cluster.name                                                      Name specifies the unique identifier for this orchestrator cluster.
 orchestrator.cluster.peers                        []                           Peers is a list of other cluster members to connect to on startup.
 orchestrator.cluster.port                         0                            Port specifies the port number on which the API server listens or the client
                                                                                connects.
 orchestrator.enabled                              false                        Enabled indicates whether the Web UI is enabled.
 orchestrator.evaluationbroker.maxretrycount       10                           ReadTimeout specifies the maximum number of attempts for reading from a storage.
 orchestrator.evaluationbroker.visibilitytimeout   1m0s                         VisibilityTimeout specifies how long an evaluation can be claimed before it's
                                                                                returned to the queue.
 orchestrator.host                                 <IP_ADDRESS>                      Host specifies the hostname or IP address on which the API server listens or the
                                                                                client connects.
 orchestrator.nodemanager.disconnecttimeout        1m0s                         DisconnectTimeout specifies how long to wait before considering a node
                                                                                disconnected.
 orchestrator.nodemanager.manualapproval           false                        ManualApproval, if true, requires manual approval for new compute nodes joining
                                                                                the cluster.
 orchestrator.port                                 4222                         Port specifies the port number on which the API server listens or the client
                                                                                connects.
 orchestrator.scheduler.housekeepinginterval       30s                          HousekeepingInterval specifies how often to run housekeeping tasks.
 orchestrator.scheduler.housekeepingtimeout        2m0s                         HousekeepingTimeout specifies the maximum time allowed for a single housekeeping
                                                                                run.
 orchestrator.scheduler.workercount                12                           WorkerCount specifies the number of concurrent workers for job scheduling.
 orchestrator.tls.autocert                                                      AutoCert specifies the domain for automatic certificate generation.
 orchestrator.tls.autocertcachepath                                             AutoCertCachePath specifies the directory to cache auto-generated certificates.
 orchestrator.tls.cafile                                                        CAFile specifies the path to the Certificate Authority file.
 orchestrator.tls.certfile                                                      CertFile specifies the path to the TLS certificate file.
 orchestrator.tls.insecure                         false                        Insecure allows insecure TLS connections (e.g., self-signed certificates).
 orchestrator.tls.keyfile                                                       KeyFile specifies the path to the TLS private key file.
 orchestrator.tls.selfsigned                       false                        SelfSigned indicates whether to use a self-signed certificate.
 orchestrator.tls.usetls                           false                        UseTLS indicates whether to use TLS for client connections.
 publishers.disabled                               []                           Disabled is a list of downloaders that are disabled.
 publishers.types.ipfs.endpoint                                                 Endpoint specifies the multi-address to connect to for IPFS. e.g
                                                                                /ip4/<IP_ADDRESS>/tcp/5001
 publishers.types.local.address                                                 Address specifies the endpoint the publisher serves on.
 publishers.types.local.directory                                               Directory specifies a path to location on disk where content is served from.
 publishers.types.local.port                       0                            Port specifies the port number on which the API server listens or the client
                                                                                connects.
 publishers.types.s3.presignedurldisabled          false                        PreSignedURLDisabled specifies whether pre-signed URLs are enabled for the S3
                                                                                provider.
 publishers.types.s3.presignedurlexpiration        0s                           PreSignedURLExpiration specifies the duration before a pre-signed URL expires.
 resultdownloaders.disabled                        []                           Disabled is a list of downloaders that are disabled.
 resultdownloaders.timeout                         0s                           Timeout specifies the maximum time allowed for a download operation.
 resultdownloaders.types.ipfs.endpoint                                          Endpoint specifies the multi-address to connect to for IPFS. e.g
                                                                                /ip4/<IP_ADDRESS>/tcp/5001
 strictversionmatch                                false                        StrictVersionMatch indicates whether to enforce strict version matching.
 updateconfig.interval                             24h0m0s                      Interval specifies the time between update checks, when set to 0 update checks
                                                                                are not performed.
 webui.enabled                                     false                        Enabled indicates whether the Web UI is enabled.
 webui.listen                                      <IP_ADDRESS>:8438                 Listen specifies the address and port on which the Web UI listens.

Fixed by better errors https://github.com/bacalhau-project/bacalhau/pull/4536


Unpacking/Preprocess-ing of Dictionaries

Following #46 I realised that Optimums stores optimisation metadata in Dictionaries.
Right now, if a dictionary is logged to TBLogger (or if it's found while unpacking other structs) it is treated like any other struct, and it's internal fields are recursively logged:
Julia> using TensorBoardLogger
julia> data = TensorBoardLogger.preprocess("dict", Dict(:a=>1, :b=>2), [])
8-element Array{Any,1}:
    "dict/slots" => UInt8[0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
     "dict/keys" => Symbol[:a, :b, #undef, #undef, #undef, #undef, #undef, #undef, #undef, #undef, #undef, #undef, #undef, #undef, #undef, #undef]
     "dict/vals" => [1, 2, 32, 1, 11, 2,<PHONE_NUMBER>, 108, 24,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>]
     "dict/ndel" => 0
    "dict/count" => 2
      "dict/age" => 0x0000000000000002
 "dict/idxfloor" => 1
 "dict/maxprobe" => 0

I think we should treat dictionaries with String and Symbol keys as we treat structures, and further preprocess key-value pairs.
Although, people often don't specialise the key type and use Dict{Any,Any} (Optim does that).
In this case, we could check if a string representation of every key exists, otherwise log them both as text?

We could add something like
## Default unpacking of key-value dictionaries
function preprocess(name, dict::Dict, data)
    i=1
    for k=keys(dict)
        if isa(k, String) || isa(k, Symbol) || isa(k, Real)
            preprocess(name*"/$k", dict[k], data)
        else
            tag = name*"/not_a_string_$i"
            preprocess(tag*"/key", k, data)
            preprocess(tag*"/val", dict[k], data)
        end
    end
    return data

which results in
data = TensorBoardLogger.preprocess("dict", Dict(:d=>1, 14=>2, 12+3im=>3), [])
5-element Array{Any,1}:
                    "dict/14" => 2
                     "dict/d" => 1
 "dict/not_a_string_1/key/re" => 12
 "dict/not_a_string_1/key/im" => 3
    "dict/not_a_string_1/val" => 3

It should allow us to cover the usual case of untyped Dicts with string keys, while also managing weird cases.
In any case I doubt that people will throw weird types in dicts they send to TBLogger.-

Hi, I just want to thank that this feature is implemented and released amazingly quickly!


Create new method in FastFormat for FATE

Replace String.format() with new method in FastFormat that should be faster
Modify FateTxId.formatTid to use new method that should be equivalent
Replace uses of Long.toHexString in Utils with FateTxId.formatTid to
improve logging
Add new tests to FastFormatTest
Supports #2495

All ITs are passing.

Output in the logs:

manager_ip-10-113-14-231.log:2022-07-27T13:33:07,055 [fate.Fate] INFO : Seeding FATE[1a6f56ffdb22da4e] TABLE_COMPACT Compact table (1) with config []
manager_ip-10-113-14-231.log:2022-07-27T13:33:07,068 [zookeeper.DistributedReadWriteLock] INFO : Added lock entry 0 userData 1a6f56ffdb22da4e lockType READ
manager_ip-10-113-14-231.log:2022-07-27T13:33:07,069 [tableOps.Utils] INFO : namespace +default FATE[1a6f56ffdb22da4e] locked for read operation: COMPACT
manager_ip-10-113-14-231.log:2022-07-27T13:33:07,073 [zookeeper.DistributedReadWriteLock] INFO : Added lock entry 0 userData 1a6f56ffdb22da4e lockType READ
manager_ip-10-113-14-231.log:2022-07-27T13:33:07,074 [tableOps.Utils] INFO : table 1 FATE[1a6f56ffdb22da4e] locked for read operation: COMPACT

matches the output from fate -summary:

Running	txn_id				Status		Command		Step (top)		locks held:(table id, name)	locks waiting:(table id, name)
0:00:17	1a6f56ffdb22da4e	IN_PROGRESS	CompactRange	CompactionDriver	held:[R:(+default,ns:), R:(1,t:ci)]	waiting:[]

I think the only class still missing the prefix is DistributedReadWriteLock but I looked at that and it would be pretty tricky.


Javascript?

In "Creating a JavaScript client app" there is no option of choosing  "Blank App (Universal Windows)" under the Javascript refinement (when adding a New Project).  Maybe there could be a list of all the installs necessary for that list to populate properly? Then again, I consequently had Visual Studio install about everything possible, still to no avail when I get to this part of this tutorial. No general Javascript anything apart from the Node.js options

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

ID: 2860140a-8b64-4280-3f5b-bb454d71def9
Version Independent ID: 4af675f3-e584-5616-ac4a-335ecda5b4f3
Content: Walkthrough of creating a C++/CX Windows Runtime component, and calling it from JavaScript or C# - UWP applications
Content Source: windows-apps-src/winrt-components/walkthrough-creating-a-basic-windows-runtime-component-in-cpp-and-calling-it-from-javascript-or-csharp.md
Product: uwp
Technology: platform
GitHub Login: @stevewhims
Microsoft Alias: stwhi

Hi, @dchstudios, and thanks for filing this issue. Note that UWP JavaScript apps aren't supported in Visual Studio 2019. Are you using VS2019? I have a change to this topic in the pipeline to make this clear, and to recommend VS2017 for that particular section of the topic.
Thanks again!
Steve

Yeah I installed Visual Studio 2019... It'd be nice to not have to install more than one version to be sure.  Although I did install Visual Studio Code too, but had yet to launch it. After going back to read up on what does what, it looks like Visual Studio Code is supposed to support Javascript And C++ too...  That's just really strange that Visual Studio would neglect Javascript. But stranger yet that MS would need to make two different programming apps to begin with. Why not just have One, and then have it have an option to have fewer features or streamlined like Code is supposed to be, according to the description? It'd be like choosing Dark Mode vs Light Mode or something.. Choose what windows and tabs in layout you want out, so then you can choose your own complexity on the fly, pending on what your current project is...? Anyways, I guess now I'm off to see what Visual Code has for tutorials.
OK thanks for getting back!

Thanks for the update, @dchstudios. I'll go ahead and close the issue now.
If you'd like, Microsoft Q&A is a good channel to lobby for a change, a feature, or to make a suggestion.
Thanks!
Steve


Update for installation requirements?

Hi There,
I found your toolkit for XMLC-Tasks really useful. However, I had some trouble with the installation process:
python3 setup.py install --user

One issue is, that it seems to require cython and numpy, which is not documented. After installing these manually and running the above installation instructions I get the following warning
SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
These are followed by version imcompatibility issues with numpy and numba. I am not much of a pythoneer, but I think it might be better to do the installation with something like
pip install .[dev]

Also, it might be safer to wrap this into some kind of virtual environment. Personally, I prefer conda to manage the requirements.
I would offer to open a PR for the README-Instructions, but I would kindly ask for your opinion on these issues first.
Thank you very much!
Best
Maximilian

Any upgrade here?
Also, it would be great if this library worked with Python 3.10 or above.
Currently, it seems to be incompatible.

Hi @celsofranssa
Are you facing any specific issue with 3.10+? Let me know. I will work on the fix.
Thanks!


Adds Attribution.txt file based on go.mod

Signed-off-by: Malini Bhandaru<EMAIL_ADDRESS>to address issue: https://github.com/edgexfoundry/edgex-cli/issues/287

WIP -- do not merge

Submitting another PR


Fix spelling of "speichern"

Fixes #735

 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.


[stable/falco] Resolve cluster hostnames when using hostnetwork

Signed-off-by: Diego Lendoiro<EMAIL_ADDRESS>What this PR does / why we need it:
When falco runs with .Values.ebpf.settings.hostNetwork falco containers use the host DNS servers which, by default, prevent falco to resolve the kubernetes API server URL (kubernetes.default). Under these conditions falco is unable to report alerts with the k8s related metadata (k8s.pod and so on) fields correctly.
Adding to daemonset spec a dnsPolicy when using ebpf hostNetwork will create the falco containers injecting the correct cluster nameservers in /etc/resolv.conf that allow falco to connect to k8s apiserver.
@nestorsalceda
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped

/ok-to-test
/assign

/lgtm


create /ui/placement resource

needs authn: use auth as impl. example (not CIMI resource)
contact PRS micro-service
initial implementation

empty in -> clouds out

Depends on #736

[x] new service in ssclj : /ui/placement (echo service)
[x] java proxy to this new service
[ ] contact PRS-lib
[ ] JS calls /ui/placement on local server (no cross site calls)

JS code is manually tested in a developer console:
SlipStream.request
  .put("/ui/placement")
  .data({clouds:["aa", "bb"]})
  .serialization("json")
  .dataType("json")
  .onSuccess(function(x){console.log(x["clouds-mockup-1"]);})
  .send()

With this call, we see that the mockup /ui/placement is used.


[Feature Request] upload component file name shows Title Increase

Existing Component
是
Component Name
el-upload
Description
上传文件时，文件名称长度过长隐藏之后看不全名称，增加title可以提升用户体验

not solved?

solved?


Fix: Use max hp if no hp roll formula is provided when randomising token hp

The current implementation of the token hp randomisation feature assumes that there is a valid hp formula to use. If a token's hit dice haven't been configured (decently likely if this is a user-created Actor), then the token's hp will end up being 0.
In cases where there are no hit dice configured, we should fall back to using the base Actor's max hp value instead.

@JoshLaunchcode Just pinging you since you worked on the original functionality. Figured you may want to take this one when you're done with your other work. No pressure though: it's open to anyone 🙂

Added in 552b5e119660b137e787ae4b3c6a791af45a1879. Closing this issue.


Support for "esbuild-jest"

This is for projects using React which requires es6 builds. React projects typically uses ES6 builds.

What would be required for this?

Fortunately, you do not need to do any additional code changes for this. I initially thought you would need to.
I just needed to add this in a Jest config file (or "jest" property if you are storing your Jest config in package.json):
{
    "transform": {
      "^.+\\.jsx?$": "esbuild-jest"
    },
    "transformIgnorePatterns": ["<rootDir>/node_modules/(?!(rescript|@glennsl/bs-jest)/)"]
  }

This will require "esbuild-jest" of course. When someone uses rescript build -with-deps with this property in bsconfig.json:
"package-specs": {
    "module": "es6",
    "in-source": true
  }

All res* and ml* files are transpiled into js (or mjs) in ES6 flavor. However, the compiled res/ml files in node_modules aren't transpiled, so this thing  "transformIgnorePatterns": ["<rootDir>/node_modules/(?!(rescript|@glennsl/bs-jest)/)"] is added to the Jest config.
Shall I add something to the docs?

Please take note that I have not done any test files involving React. I use it here: https://github.com/makoru-hikage/sasquare-reasonml
(Please do not mind that misnomer on my personal project.)

Thanks for the explanation!

Shall I add something to the docs?

Yes. Please do! As a sub-heading to the troubleshooting section, for example, or just referencing this issue if you're feeling lazy.

Thank you! I shall write a sub-heading, submit a PR and close this upon merging.

Closing this as resolved in #91 then. Thanks again!


aws-c-http: 0.7.14 -> 0.8.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/aws-c-http/versions.
meta.description for aws-c-http is: C99 implementation of the HTTP/1.1 and HTTP/2 specifications
meta.homepage for aws-c-http is: https://github.com/awslabs/aws-c-http
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.8.0 in filename of file in /nix/store/4ryb6nzlc2xs83r8j83lmjipanmscvqp-aws-c-http-0.8.0

Rebuild report (if merged into master) (click to expand)

736 total rebuild path(s)

736 package rebuild(s)

First fifty rebuilds by attrpath
activitywatch
adafruit-nrfutil
akkoma-frontends.admin-fe
akkoma-frontends.akkoma-fe
alice-lg
anki
ansible-language-server
antennas
antora
apacheHttpdPackages.mod_tile
apacheHttpdPackages_2_4.mod_tile
appvm
archivebox
ariang
arrow-cpp
arrow-glib
arrpc
assemblyscript
audiobookshelf
authelia
authy
aw-server-rust
aws-azure-login
aws-c-auth
aws-c-http
aws-c-mqtt
aws-c-s3
aws-crt-cpp
aws-sdk-cpp
balanceofsatoshis
balena-cli
behave
bibtex-tidy
bilibili
bitwarden
bitwarden-cli
bitwarden-directory-connector-cli
botamusique
browsr
bruno
btc-rpc-explorer
bundix
cabal2nix
cached-nix-shell
cachix
camunda-modeler
carbon-now-cli
carto
castnow
cdxgen

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/4ryb6nzlc2xs83r8j83lmjipanmscvqp-aws-c-http-0.8.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A aws-c-http https://github.com/r-ryantm/nixpkgs/archive/29c0cc08e86ff474ed02b9ed4ee32728ae7b1d6f.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/29c0cc08e86ff474ed02b9ed4ee32728ae7b1d6f#aws-c-http

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/4ryb6nzlc2xs83r8j83lmjipanmscvqp-aws-c-http-0.8.0
ls -la /nix/store/4ryb6nzlc2xs83r8j83lmjipanmscvqp-aws-c-http-0.8.0/bin

Pre-merge build results
NixPkgs review skipped

Maintainer pings
cc @r-burns for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/aws-c-http/versions.
meta.description for aws-c-http is: C99 implementation of the HTTP/1.1 and HTTP/2 specifications
meta.homepage for aws-c-http is: https://github.com/awslabs/aws-c-http
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.8.1 in filename of file in /nix/store/sdqm38vqwdvqxmds2dprwbx4p5ydf8nc-aws-c-http-0.8.1

Rebuild report (if merged into master) (click to expand)

767 total rebuild path(s)

767 package rebuild(s)

First fifty rebuilds by attrpath
activitywatch
adafruit-nrfutil
akkoma-frontends.admin-fe
akkoma-frontends.akkoma-fe
alice-lg
anki
ansible-language-server
antennas
antora
apacheHttpdPackages.mod_tile
apacheHttpdPackages_2_4.mod_tile
appvm
archivebox
ariang
arrow-cpp
arrow-glib
arrpc
assemblyscript
audiobookshelf
authelia
authentik
authy
aw-server-rust
aws-azure-login
aws-c-auth
aws-c-http
aws-c-mqtt
aws-c-s3
aws-crt-cpp
aws-sdk-cpp
balanceofsatoshis
balena-cli
behave
bibtex-tidy
bilibili
bitwarden
bitwarden-cli
bitwarden-directory-connector
bitwarden-directory-connector-cli
botamusique
browsr
bruno
btc-rpc-explorer
bundix
cabal2nix
cached-nix-shell
cachix
camunda-modeler
carbon-now-cli
carto

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/sdqm38vqwdvqxmds2dprwbx4p5ydf8nc-aws-c-http-0.8.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A aws-c-http https://github.com/r-ryantm/nixpkgs/archive/46560c043d3cb7dd24458ae2c5d1bdb5aeb2cd74.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/46560c043d3cb7dd24458ae2c5d1bdb5aeb2cd74#aws-c-http

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/sdqm38vqwdvqxmds2dprwbx4p5ydf8nc-aws-c-http-0.8.1
ls -la /nix/store/sdqm38vqwdvqxmds2dprwbx4p5ydf8nc-aws-c-http-0.8.1/bin

Pre-merge build results
NixPkgs review skipped

Maintainer pings
cc @r-burns for testing.

Addressed by https://github.com/NixOS/nixpkgs/pull/299898


Confirmation requirement API handling

#233 introduces a new user requirement which has not been incorporated into our API so far.  Specifically, users want the ability to filter chain activity based on confirmations.  For example, an exchange which wants to monitor confirmed deposits to its account cannot use subscription to its account to monitor the deposits, as the subscription notifications will include deposits that have not been sufficiently confirmed.
There are several possible architectures which can be used to monitor confirmations.

(1) No architecture.  The API client is responsible for any confirmation handling.  For example, "get most recent operations with N confirmations" might be implemented by listening for blocks, then filtering get_account_history() results by block number.  This multiplies the load on the node by N times for N confirmations, as the first N-1 times a record is obtained, it is filtered away due to insufficient confirmations.  It is also tricky to get the client logic exactly right, and because each developer who interfaces with the witness node would have to do the client logic themselves, this presents a barrier to entry for exchanges and developers.

(2) Dual witness node architecture.  Start two witness nodes, a front-end node connected to the network and a back-end node connected to the client.  The front-end node only supplies blocks to the back-end node if they are sufficiently confirmed.

(3) Delayed-block single-witness.  A single witness node which verifies the signature on each block, but does not apply the block until it is buried under at least n blocks.  It does header-only verification (including witness signature) on incoming blocks until they are buried deeply enough.

(4) API call revisions.  Each individual API call is revised, for example get_account_history() and subscription methods would take a confirmation requirement number.  The subscription semantics might be implemented by queueing subscription notifications and discarding queued notifications when the chain rewinds, but it could be implemented in a different way (for example, account subscriptions might leverage the account history to provide the same semantics as queueing without actually maintaining the queue).

The purpose of this ticket is to get comments on these approaches and build consensus for an architecture recommendation for exchanges and other users who desire to only process confirmed transactions.

As this is implemented by the delayed_node I am closing this.


Make transforms obtained by inverting affine transforms deserializable

Description
I can serialize a compound transform containing the inverse of an affine transform.
When I attempt to deserialize a transform that contains the inverse of an affine transform, I get an error message stating:
ITK ERROR: TxtTransformIOTemplate(0x555da6853340): Could not create an instance of "MatrixOffsetTransformBase_double_3_3"
The usual cause of this error is not registering the transform with TransformFactory

Additional Information
Here is a runnable colab notebook demonstrating the error message I am getting. I will work on a more minimal example
notebook

@thewtex @PranjalSahu

It is because the MatrixOffsetTransformBase is not registered in the Factory by default.
https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/IO/TransformFactory/src/itkTransformFactoryBaseRegister.hxx

Is there a way for the inverse to return the appropriate derived class, perhaps the same type that the inverse was generated from, instead of  MatrixOffsetTransformBase ?

To do that, should each subclass of MatrixOffsetTransformBase override
GetInverse? if so, I can make a pull request
On Mon, Mar 28, 2022 at 9:42 AM Matt McCormick @.***>
wrote:

Is there a way for the inverse to return the appropriate derived class,
perhaps the same type that the inverse was generated from, instead of
MatrixOffsetTransformBase ?
—
Reply to this email directly, view it on GitHub
https://github.com/InsightSoftwareConsortium/ITK/issues/3334#issuecomment-1080668250,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABUCOAIFRZU3TDARNABHHMLVCGZLJANCNFSM5RR26FGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

--
--Hastings Greer
919 525 6808 -- github.com/HastingsGreer

each subclass of MatrixOffsetTransformBase override GetInverse

That sounds simple and reasonable.

@HastingsGreer Can you please mention the solution here and then we can close this issue.

The solution is to create an Affine Transform, which inverts to an Affine Transform. The issue can be closed.
This issue was caused when I made a mistake in my test code and was actuallly creating a MatrixOffsetBase transform directly- Sorry!

ok, yes that's what I thought could be done.
There are two methods to get the inverse.
One is GetInverse and another GetInverseTransform.
GetInverseTransform returns object of type itkTransformBase.


Cyclic Dependancy Warning

Provide a general summary of the issue here
Getting cyclic dependency warnings due to @internationalized/date
λ  WARN  Require cycle<EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>
Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
  factory (node_modules/@internationalized/date/dist/conversion.main.js:1:33)
  factory (node_modules/@internationalized/date/dist/manipulation.main.js:1:33)
λ  WARN  Require cycle<EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>
Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
  factory (node_modules/@internationalized/date/dist/conversion.main.js:2:33)
  factory (node_modules/@internationalized/date/dist/manipulation.main.js:1:33)
λ  WARN  Require cycle<EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>
Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
  factory (node_modules/@internationalized/date/dist/GregorianCalendar.main.js:1:33)
  factory (node_modules/@internationalized/date/dist/conversion.main.js:3:33)
λ  WARN  Require cycle<EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>
Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
  factory (node_modules/@internationalized/date/dist/utils.main.js:1:33)
  factory (node_modules/@internationalized/date/dist/GregorianCalendar.main.js:2:33)
λ  WARN  Require cycle<EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>
Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
  factory (node_modules/@internationalized/date/dist/queries.main.js:1:33)
  factory (node_modules/@internationalized/date/dist/conversion.main.js:4:33)
λ  WARN  Require cycle<EMAIL_ADDRESS>-><EMAIL_ADDRESS>-><EMAIL_ADDRESS>
Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
  factory (node_modules/@internationalized/date/dist/string.main.js:1:33)
  factory (node_modules/@internationalized/date/dist/CalendarDate.main.js:3:33)

🤔 Expected Behavior?
There shouldn't be any cyclic dependancy in modules.
😯 Current Behavior
💁 Possible Solution
Shared utilities should be separated.
No response
🔦 Context
No response
🖥 Steps to Reproduce
Install @@internationalized/date in any expo app for web. you will see the warnings in the console.
Version
3.5.5
What browsers are you seeing the problem on?
Other
If other, please specify.
No response
What operating system are you using?
mac-os
🧢 Your Company/Team
gluestack-ui
🕷 Tracking Issue
https://github.com/gluestack/gluestack-ui/issues/2361

Here is a diagram for better understanding

Closing as a duplicate https://github.com/adobe/react-spectrum/issues/6394


Test the read roster in v2 itest

There is already one bug, introduced by https://github.com/douglasnaphas/madliberation/pull/574.
If you blank out an answer, your number of submitted answers doesn't go down on the read roster.
Be sure to test that scenario.

https://github.com/puppeteer/puppeteer/pull/11782 pertains to using XPaths with Puppeteer.

Done. Read roster is tested, and reflects blank-outs correctly.


Debug with VS2017 error map file not found

I use last version 2.9.21 with Serenity project, and I can't debug a typescript. VS2017 can't attach to IE.
I have this error in output windows:
'iexplore.exe' (Script) : Chargé 'Code de script (Windows Internet Explorer)'.
System.Web.HttpException (0x80004005): File not found!
at Serenity.Web.HttpHandlers.DynamicScriptHandler.ProcessScriptRequest(HttpContext context, String scriptKey, String contentType) in P:\Sandbox\Serene\Serenity\Serenity.Web\DynamicScript\DynamicScript\DynamicScriptHandler.cs:line 23
at Serenity.Web.HttpHandlers.DynamicScriptHandler.ProcessRequest(HttpContext context) in P:\Sandbox\Serene\Serenity\Serenity.Web\DynamicScript\DynamicScript\DynamicScriptHandler.cs:line 58
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Configuration invalid: ToAddress must have a value
SourceMap http://localhost:52151/DynJS.axd/toastr.js.map read failed: Une ou plusieurs erreurs se sont produites..'iexplore.exe' (Script) : Chargé 'Sourcemap (http://localhost:52151/Scripts/vegas/vegas.min.js)'.

When I use a version 2.8, debug on Vs2017 works. The upgrade to 2.9 broke this function.

There is no such change

Script bundling might be the issue. Try disabling it.

Yes, when I disabling Script bundling in web.config, the debug on Chrome work.
Thanks


Update VAT-texts

Description
Remove percentages from VAT-texts.
Change VAT and ALV to be lowercased.
Context
PV-863
How Has This Been Tested?
Manually.

LGTM!


Continue playback when switching apps

Switching apps causes the player to lose audio focus, this quickly resumes playback to continue in background uninterrupted.

Does this work for youtube ?

Unfortunately no doesn't look like it after testing, I was unaware YouTube might be treated differently.
I was testing using FlowPlayer.

Yes youtube does some magic. Anyway, I'll approve the PR. The code can be used in plex as well. Thank you.


[Discussion] Advice for using the license gather plugin in a multi-module project.

I'm working on a project that is split across sub-modules, some of these modules had plugins that adds dependencies (that are part of a platform).
I would like to report only the dependencies that I'm actually declaring (and of course their dependencies). However the setup indicates the task has to be configured for each modules (It'd be nice if the plugin could do this automatically).
Also, is there a way to merge the reports (metadata) ?

I mean I could release both com.github.vlsi.license-gather.base and com.github.vlsi.license-gather.verify plugins.


Add keybindings to switch between file tabs

Again, not super important, but would smooth out the current workflow.

This is related to #70 , need to figure out a good way to handle shortcuts


ci: fail when one of the exercise's example/exemplar does not pass the tests

This PR ensures that CI fails when one of the exemplar/example implementations does not pass the tests
Noted by http://forum.exercism.org/t/exercisms-ci-and-me-2-2-3/2800/4
Side note: the robot-name tests appear to be flakey, so you might want to look into that

V panic: substr(2, 5) out of bounds (len=2)
running tests in: /home/runner/work/vlang/vlang/temp/run_test.v
v hash: 92c7e3f
     OK    [1/5]     2.476 ms     1 assert  | main.test_robots_named_properly()
     OK    [2/5]     2.105 ms     1 assert  | main.test_robots_keep_same_name()
     OK    [3/5]     2.413 ms     1 assert  | main.test_reset_robots_named_properly()
     OK    [4/5]     1.519 ms     1 assert  | main.test_reset_robots_change_name()
/tmp/v_1001/tsession_7f8dcbada740_137654529502/run_test.17161666836170342349.tmp.c:9090: at _v_panic: Backtrace
/tmp/v_1001/tsession_7f8dcbada740_137654529502/run_test.17161666836170342349.tmp.c:12436: by string_substr
/tmp/v_1001/tsession_7f8dcbada740_137654529502/run_test.17161666836170342349.tmp.c:24997: by main__convert_name_to_index
/tmp/v_1001/tsession_7f8dcbada740_137654529502/run_test.17161666836170342349.tmp.c:24985: by main__generate_unused_name
/tmp/v_1001/tsession_7f8dcbada740_137654529502/run_test.17161666836170342349.tmp.c:24932: by main__create_robot
/tmp/v_1001/tsession_7f8dcbada740_137654529502/run_test.17161666836170342349.tmp.c:2[487](https://github.com/exercism/vlang/actions/runs/3958922806/jobs/6781073216#step:4:488)0: by main__test_lots_of_robots_have_different_names
/tmp/v_1001/tsession_7f8dcbada740_137654529502/run_test.17161666836170342349.tmp.c:25522: by main
        V  source  code size:      27385 lines,     740622 bytes
generated  target  code size:      25541 lines,     871464 bytes
compilation took: 368.129 ms, compilation speed: 74389 vlines/s

That's the robot-name failure

I figured out the robot-name failure. I had missed an edge case that only comes up some of the time when many robot names are tested. Will make a new PR with a fix soon


url

Hi, I have a question, why in urls when an action have tow world, like actionCreateUser in BaseUserController
this action link auto change to : baseuser/create-user
but contoller don't change??
if it's don for seo its beter to be: base-user/create-user

Duplicates #1663

I sayd that if camel case action link change to word-word
camel case controllers should have same behavior. but why it's not happend??

#7557

thank u


wrapQtAppsHook wraps dylibs in macOS app bundles

Describe the bug
Noticed during #186425.
wrapQtAppsHook looks for ELF/Mach-O files in a list of directories where it only expects to find executables, which includes $out/Applications and $out/*.app.
https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh#L79
While this will help it find executables in paths like $out/Applications/Example.app/Contents/MacOS/Example, it unfortunately does not take into consideration the existence of dylibs in paths like $out/Applications/Example.app/Contents/Frameworks/libExample.dylib.
In #186425, communi installs libCommuni.dylib into $out/Applications/Communi.app/Contents/Frameworks/. Without disabling the automatic hook execution, wrapQtAppsHook will find the Mach-O dylib in that Frameworks path and wrap it, leading to a broken Communi executable.
Steps To Reproduce
Steps to reproduce the behavior:

sed -e '/wrapQtApp $out/d' pkgs/applications/networking/irc/communi/default.nix to remove manual wrapping
nix-build -E 'with import ./. {}; communi.overrideAttrs (oa: {dontWrapQtApps = false;})' on a Darwin machine to reenable automatic wrapping
file ./result/Applications/Communi.app/Contents/Frameworks/libCommuni.1.dylib returns that it's a script, cat it to see Qt wrapping
./result/Applications/Communi.app/Contents/MacOS/Communi will fail due to ./result/Applications/Communi.app/Contents/Frameworks/libCommuni.1.dylib being "too short", because it's not a dylib anymore

Expected behavior
wrapQtAppsHook shouldn't wrap dylibs in macOS app bundles, only in their Contents/MacOS subdir.
Screenshots
Can take one later.
Additional context
The workaround is to not wrap automatically on Darwin and manually call wrapQtApp on just the binary.
Notify maintainers
Hook doesn't have a maintainer so:
@veprbl, who added Darwin support to it
@milahu, I imagine Qt6 version of the hook is likely affected as well
Metadata
Not on a Darwin machine rn.

quick note:
chmod -x *.dylib?

Is it common for qmake to produce bundles that have exec bit on the libraries?

I don't know alot of packages that

use qmake
are marked as supported on Darwin
produce an app bundle
put dylibs into the app bundle

And I don't have a Darwin machine at hand rn to do alot of testing, so this is quite the question…
I fetched some random libraries from the x86_64 linux & darwin caches that use various build systems to check for the exec bit and all of them were marked executable. The one package I found that got close enough to your question - libsForQt5.libqglviewer uses qmake to produce a framework with a dylib in lib/QGLViewer.framework/Versions/2/QGLViewer - also marks the library as executable. From that, I would assume that that is the case.

@OPNA2608 So you are saying that basically every bundle that you've checked had libraries with exec bit? Then we probably could add ! -name "*.dylib" to https://github.com/NixOS/nixpkgs/blob/c4a0efdd5a728e20791b8d8d2f26f90ac228ee8d/pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh#L86 with an appropriate comment for why this is a common case.

I didn't find any nix-built example aside from communi, but I don't have any reason to believe that it isn't the case.
Wouldn't it be better to just run the wrapper on the /bin equivalent inside app bundles instead?
https://github.com/NixOS/nixpkgs/blob/c4a0efdd5a728e20791b8d8d2f26f90ac228ee8d/pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh#L79
All app bundles have their main executable in Name.app/Contents/MacOS/Name, maybe we could replace "$prefix/Applications" "$prefix/"*.app with something like "$prefix/Applications/"*.app"/Contents/MacOS" or just *.app"/Contents/MacOS"?

All app bundles have their main executable in Name.app/Contents/MacOS/Name, maybe we could replace "$prefix/Applications" "$prefix/"*.app with something like "$prefix/Applications/"*.app"/Contents/MacOS" or just *.app"/Contents/MacOS"?

Seems reasonable to me.


Property not found error gets removed due to a ternary

I was testing out the behavior of Flow when you attempt to read a property that doesn't exist on an object's class.
A simple test:
https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVBjGBDAzrsAYTAG9UBfdDOAO1wBcwMwBeMGgUyUIAoBKANxVaDMAA8AXGABGcODA7YarMAEJVGAHS44AWw70AFgEsaAcwFA
/* @flow */

class C {
}

const c = new C();

const x: boolean = !!c.something;

gives an error, as expected:
8: const x: boolean = !!c.something;
                          ^ property `something`. Property not found in
8: const x: boolean = !!c.something;
                        ^ C

Now if I add a single line (that I think should probably also be an error):
https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVBjGBDAzrsAYTAG9UBfdDOAO1wBcwMwBeMGgUyUIAoBKANxVaDMAE9WTAHS44AWw70AFgEsaAczAB+MPQBOAVw5gAXGCjYYuDgLDBgYADwBaZ2GwATDxw9gYajkwRRgAPMwAjODgYDmwaSQBCBIwZeUVVDQEgA
/* @flow */

class C {
}

const c = new C();

const y = c.something ? true : false; // <-- added line
const x: boolean = !!c.something;

it now says No errors!, even though the original error is still there.
I also noticed that this happens with plain objects, not just class instances.

now both error


Add way to download a message as a .eml file

To make it easier for someone to respond to a list message viewed at mailarchive from their own browser, provide the ability to download the entire raw message (including all headers) as an .eml file.

cc @mallory


[ISSUE] operator does not use username/password for rest http to elastic

Describe the issue:
We have a self hosted Elastic cluster with with http (not https) with a username/password for rest. Our self hosted camunda 8 operator does not connect to this http elastic cluster with username password even when these variables are defined:
camunda.operate.elasticsearch.username
camunda.operate.elasticsearch.password
Actual behavior:
Operator connects to elastic without username/password what returns a 401 error (not autorized).
Expected behavior:
Should use defined elastic username/password
Environment:
Please note: Without the following info, it's hard to resolve the issue and probably it will be closed.

Platform: k8s
Helm CLI version: 3.10.0
Chart version:  8.4.0

Is there a way to enforce using these defined username/password for elastic http connections?

@gevezex Have you tried providing environment variables as below in Operate:
CAMUNDA_OPERATE_ELASTICSEARCH_USERNAME & CAMUNDA_OPERATE_ELASTICSEARCH_PASSWORD

Thnx @Parth-Shah-99 that helped.


Calculator Mod Incompatibility

Hey,
I'm the creator of the Calculator Mod. I've been getting glitches which cause my mod to be unplayable it only ever occurs when Inventory Tweaks is installed.  The bug is difficult to explain so there is a video below.  I tried using the @IgnoreContainer annotation but It didn't seem to disable the container in any way and logger still showed Inventory Tweaks had loaded it.
I should probably say this only happens with portable items which have containers e.g. Calculators.
Also this doesn't happen every time you open the container about once every 3 times.
Video of glitch
https://youtu.be/jIIrX1poZC4
Basic Calculator Container
http://pastebin.com/hkfpXz5U

The only thing I can see that looks really suspicious is your definition of slotClick.
InventoryTweaks doesn't do anything unless specifically told to however, either by using the sorting buttons or a hotkey -- and unless you've told it about your container somehow it practically entirely disables itself.

Okay, i'll have a look into replacing that. Thank you.

Removing the method entirely made no difference. I then removed inventory tweaks again and the glitch disappeared again.

Okay people are still reporting the glitch. The only people who report it are ones who have Inv-Tweaks installed, any ideas?? Thank you :)
https://github.com/SonarSonic/Calculator/issues/9#issuecomment-126170764

No idea, I'm not seeing anything using just shift in my shortcut code by default.

do you edit any Minecraft base code?

A bunch of special additions for metainfo about containers, but the only thing that actually changes any base method is the 'stop processing keys when a textbox is selected' code.

So strange :/ Could it be a fault with my code? It's just so strange that it only comes up with inv tweaks

Do you do anything with?
public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player)
or
public boolean func_94530_a(ItemStack stack, Slot slot)

slotClick is called from all over as it's the only way to move items around from the client without absolutely requiring a server-side mod.
I don't see any references to canMergeSlot(94530) in current version at least.

@Override
public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) {
	if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) {
		return null;
	}
	return super.slotClick(slot, button, flag, player);
}

Could this be a problem?

If you're triggering a sort it might cause an infinite loop freeze if that's the only thing you do to prevent moving (and there's something set up with higher priority for that hotbar slot, as usually they aren't changed)
That's not the issue showing up though.

So maybe I should change the way I do that and it will be okay?
Also I override this
public boolean func_94530_a(ItemStack p_94530_1_, Slot p_94530_2_) {
return p_94530_2_.inventory != this.craftResult && super.func_94530_a(p_94530_1_, p_94530_2_);
}

I don't directly use that, or ever send a click that should call it.

okay. I'll change the slot click methods and see if that works

Wasn't inv tweaks in the end but it's fixed now.