gen: remove disk:32 from min allocatable rez

High-level description
DSS (master, and soon the 0.5.x series) has been upgraded to leverage the new FrameworkInfo.OfferFilters API in order to explicitly set its own min-allocatable-resources. Thus, this global setting is no longer needed.
Corresponding DC/OS tickets (obligatory)
These DC/OS JIRA ticket(s) must be updated (ideally closed) in the moment this PR lands:

DCOS-49202 Remove "|disk:32" from the min_allocatable_resources flag.

Related tickets (optional)
Other tickets related to this change:

DCOS-47867 Update DSS to specify the resources that it's interested in.

Checklist for all PRs

[x] Added a comprehensible changelog entry to CHANGES.md or explain why this is not a user-facing change:

DSS is the only consumer of disk-only offers

[x] Included a test which will fail if code is reverted but test is not. If there is no test please explain here:

Now that DSS has been upgraded, this global change is no longer needed. Nothing else should break, no additional test needed.

[x] Read the DC/OS contributing guidelines
[x] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[ ] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[ ] Test Results: [link to CI job test results for component]
[ ] Code Coverage (if available): [link to code coverage report]

PLEASE FILL IN THE TEMPLATE ABOVE / DO NOT REMOVE ANY SECTIONS ABOVE THIS LINE
Instructions and review process
What is the review process and when will my changes land?
All PRs require 2 approvals using GitHub's pull request reviews.
Reviewers should be:

Developers who understand the code being modified.
Developers responsible for code that interacts with or depends on the code being modified.

It is best to proactively ask for 2 reviews by @mentioning the candidate reviewers in the PR comments area. The responsibility is on the developer submitting the PR to follow-up with reviewers and make sure a PR is reviewed in a timely manner. Once a PR has 2 ship-it's, no red reviews, and all tests are green it will be included in the next train.

@mesosphere-mergebot label ready for review

PTAL @bbannier @bmahler @mengzhugithub

group1 failed b/c preflight checks didn't pass:
[15:22:39][Step 9/12] Checking if unzip is installed and in PATH: FAIL
[15:22:39][Step 9/12] Checking if ipset is installed and in PATH: FAIL


Strange panic on track.len()

I tried to create a simple midi file with a note on message. But I have panic
extern crate rimd;

use rimd::{MidiMessage,SMFBuilder,SMFWriter,TrackEvent,Event};
use std::path::Path;

fn main() {

    let note_on = MidiMessage::note_on(1,1,0);
    let note_off = MidiMessage::note_off(1,1,0);

    let mut builder = SMFBuilder::new();
    builder.add_track();

    println!("{}", builder.num_tracks());
    let ev = Event::Midi(note_on);
    let event = TrackEvent{vtime: 5, event: ev};
    builder.add_event(1, event);
    let smf = builder.result();

   let writer = SMFWriter::from_smf(smf);
   let result = writer.write_to_file(Path::new("/home/user/file.smf"));

}

The result is
thread '' panicked at 'assertion failed: self.tracks.len() < track', /home/user/.cargo/git/checkouts/rimd-a7d4e2e6ea4a3a00/master/src/builder.rs:334
An unknown error occurred
I don't understand. I've added a track by "builder.add_track"

I think this was from the assertion bug you fixed.  If so, can you close this?  Thanks for the report and the fix!


Move all documentation to inline

So, here's an idea. It's got a bit of a lead in, but please hear me out.

tl;dr — D3 has no internal documentation comments ("doc-comments"), as far as I can tell from searching through a few modules. This is a tremendous missed opportunity, as I'll detail below. Moving documentation inline would have a bunch of positive synergistic effects, the main two of which are:
:boom: 1. Improve effectiveness of IDE tooling
Right now, if you use Tern.js, D3's autocompletion looks like this:

Not bad, pretty useful. But, if you have doc comments next to where you define functions, Tern returns far more information:

As per Eric Elliott in this post, much of TypeScript's ultimate utility is derived from the fact that you can surface API documentation within your IDE, using the TypeScript definitions provided by superheros like Tom Wanzek. But tooling like Tern.js allows a very similar development experience, without the (frankly, as somebody who's done a bit of TypeScript with D3) really annoying extra overhead.
Even if you don't use Tern, it still helps to be able to right-click a module, click "go to source", and then immediately see API documentation.
:boom: 2. Keeping documentation near the code — and using that as a primary source — will help keep it error-free
Given how the current README/wiki-based documentation is structured, keeping the bits linking to the points in the source code where a function is defined is quite likely a fairly annoying task. What if there was a programmatic way of generating these links, and even the entirety of the web-based documentation itself?
Inline documentation is one way of doing this. Structured doc comments not only allow for better tooling, it allows for tooling that generates HTML fragments that can be used in web-based documentation systems. This ultimately kills two birds with one stone: as well as keeping references to code points in online documentation up to date, this also helps ensure the documentation stays accurate as it's easier to notice errors when it's right next to the function definition than when it's off sitting in some markdown file somewhere.
There's no downside to having documentation in code
We live in the gosh-darn awesome Web 2017 era wherein most JavaScript passes through a bundler and/or transpiler and/or a bunch of other steps before it gets to production, which has the side effect of removing comments in the finished bundle. This means none of the documentation is ever shipped in distributed versions, so D3 bundles remain as lean as ever while adding internal documentation's significant productivity improvements.
Yes, this is a big project
Moving documentation from the wiki pages can probably be automated in some way, but there will still necessarily have to be quite a lot of review afterwards. A system would then have to be created that populates the README/wiki documentation from the doc comments, so only the doc comments would need to be updated moving forward.
Comparing my productivity in TypeScript with D3 compared to when I'm not using Tern or anything else is fairly telling. At the moment, searching for a function signature as I'm coding generally involves navigating an average of four pages (Google result => D3 wiki "moved" page => D3 v4 overview wiki page => module README). Having documentation inline would dramatically reduce how frequently this needs to be done. For what it's worth, I'm more than happy to contribute to making this happen if it's something people think would be useful. :shipit:

Documentation (outside of bl.ocks, which are suuuuper helpful) was historically a pain point with d3. V4 docs make a lot of that pain go away... but not when you have to dig into the source. Keeping docs inline yields all the benefits mentioned above, and I'd argue also generally encourages more legible coding. Habitually documenting your code means habitually remembering that people will be reading it.

A small clarification, but there is no longer any API documentation in the wiki; the only official API documentation is in the README.md (or API.md). This change was made with v4 to ensure that the API documentation changes in lockstep with the API, and that the API documentation is versioned. It also allows pull requests to include corresponding documentation changes. So I strongly agree with having the documentation live in the repository, rather than in a separate wiki.
As for putting it directly in the code, I’ve not found a solution I have been happy with. (The only real one I have seen is JavaDoc-style comments.) Yes it was a little tedious to add the source links initially, but it wasn’t overly difficult due to the source code being mostly broken-up into small files. It would be nice to have some validation of the source links, but so far it doesn’t seem like a pain point as the structure doesn’t change very quickly.
My priorities are:

Implementing new features.
Fixing bugs.
Writing more documentation.
Writing more examples.

I don’t have the bandwidth at the moment to consider changing the documentation format, but you’re welcome to explore that effort and report back what you learn.


[Question]:

Question Validation

[X] I have searched both the documentation and discord for an answer.

Question
How to resume the index building process from where it left off in case of an error? Provide code snippet if needed.

torvalds.dev is analyzing the ticket

The user is asking how to resume the index building process from where it left off in case of an error. They have provided a code snippet from a file named refine.py located in the llama_index/response_synthesizers directory. The code is written in Python and seems to be part of a larger system, possibly a search engine or a database system, that uses an index to improve performance.
The code provided includes several classes and methods, but the most relevant ones for the user's question seem to be build_index_from_nodes and abuild_index_from_nodes. These methods appear to be responsible for building an index from a set of nodes. They do this recursively, meaning they call themselves until a certain condition is met. In this case, the condition is that the number of nodes is less than or equal to a certain number (self.num_children).
If an error occurs during the index building process, it's not clear from the provided code how the process could be resumed from where it left off. The methods don't seem to include any error handling or recovery mechanisms. However, there are several general strategies that could be used to achieve this:

Checkpointing: Save the state of the index building process at regular intervals or after processing a certain number of nodes. If an error occurs, you can load the most recent checkpoint and resume the process from there.

Error handling: Add error handling code to the methods that can catch exceptions, log them, and then continue the process with the next node.

Retry mechanisms: If an error occurs while processing a node, you could retry the operation a certain number of times before giving up and moving on to the next node.

Resilience and fault tolerance: Design the system so that it can tolerate failures. This could involve distributing the index building process across multiple machines or processes, so that if one fails, the others can continue the process.

To implement these strategies, you would need to modify the build_index_from_nodes and abuild_index_from_nodes methods, and possibly other parts of the system as well. The exact changes would depend on the details of the system and the nature of the errors that are occurring.
Here is a simple example of how you could modify the build_index_from_nodes method to include error handling and retry mechanisms:
import time
import logging

MAX_RETRIES = 3
RETRY_DELAY = 5  # seconds

def build_index_from_nodes(self, index_graph, cur_node_ids, all_node_ids, level=0):
    # ...
    for i in range(MAX_RETRIES):
        try:
            # Place the code that could raise an error here
            # ...
            break  # If the code above didn't raise an error, break the loop
        except Exception as e:
            logging.error(f"Error while building index: {e}")
            if i < MAX_RETRIES - 1:  # Don't delay on the last attempt
                time.sleep(RETRY_DELAY)
    # ...

This code will retry the index building operation up to MAX_RETRIES times if an error occurs, with a delay of RETRY_DELAY seconds between each attempt. If the operation still fails after MAX_RETRIES attempts, the method will log the error and continue with the next node.
Please note that this is a very basic example and might not be suitable for your specific use case. You should adapt it based on the requirements of your system and the nature of the errors you are encountering.


The example doesn't work any longer

Supposedly, the plots are no longer stored in Graphics[GraphicsComplex[...]] format.

Chiming in as well in 2021. This would have been a really helpful package. @masteranza any luck in getting it to work in current Mathematica versions?


Root Folder returns Too Many Redirects

Describe the bug
Root Host returns "Too Many Redirects" error.
To Reproduce
Steps to reproduce the behavior:

Install the 1.7.2 Pack
Complete Installiation on /admin/install.php
Go Your Root Url

This Page Doesn't Work!
"example.url" redirected you too many times.
Try clear your cookies (my site doesn't use any cookies).
ERR_TOO_MANY_REDIRECTS
Expected behavior
Standart Webpage loads at your root url.
Environment (please complete the following information):

YOURLS version: 1.7.2
Plugins enabled: Nothing
PHP version: IDK but higher than 5

If you check what php version you got, i am using 7.1.23, and it works fine, i got no errors.

I tried both with php 7.1 and 7.2 and I have the same problem.

Hello!
Try to use dockerised version https://github.com/YOURLS/docker-yourls, it encapsulates configuration and works fine for me.

Wow, nearly a year passed. I fixed the error but idk how to fixed it. :/

I know this is frustrating for anyone running into it, but it's not a problem with YOURLS itself. Anyone having this problem in the future should feel free to ask for help fixing their server configuration at the YOURLS forum!

Hello,
I experienced this same problem:  "ERR_TOO_MANY_REDIRECTS" - the problem with my setup was Nginx.  The root location "/" of my install was not specifically told to "index" my site's home page (index.php).
What you need depends upon what your home page is --OR-- if you are even running a home page.  If not, set the "/" location "index" to /yourls-loader.php
If you have the same problem with multiple versions, it points even more towards your web server's setup.  Apache can fall victim to the same issue.
Here's the relevant bits from my Nginx conf & PHP conf - I noticed the internet didn't seem to have many exmamples:
Basic Nginx index.php automatic setup:
server {

  listen 80;
  listen [::]:80;

  include /etc/nginx/default.d/*.conf;
  server_name example.com;
  root /opt/example;

  location / {
     try_files index.php $uri $uri/ /yourls-loader.php$is_args$args;
     index /index.php;
  }
  location ~ \.php$ {
     try_files $uri =404;
     fastcgi_param REMOTE_USER     $remote_user;
     fastcgi_pass unix:/var/run/php-fpm/www.sock;
     fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

BTW - include /etc/nginx/default.d/*.conf only catches my PHP-FPM CGI conf file.
cat /etc/nginx/conf.d/php-fpm.conf:
PHP-FPM FastCGI server - unix domain socket configuration:
upstream php-fpm {
server unix:/run/php-fpm/www.sock;
}


Selective creation of OAuth and JavaBatch schemas from fhir-persistence-schema

Is your feature request related to a problem? Please describe.
One of the more advanced features of the IBM FHIR Server is the ability to split multiple tenants (or even multiple datastores within a single tenant) into multiple different backend stores.
However, recently we introduced some features which require a particular schema which is shared across all tenants: OAuth and JavaBatch.
Currently, the fhir-persistence-schema --create-schemas creates all three of these schemas on a single db (in addition to a FHIR_ADMIN schema to manage the tenants and track the version history of all the schemas).
Similarly, the --update-schema action will update all the OAuth and Bulk schemas in addition to the configured FHIRData schema.
This means that we will end up with copies of these tables on each db, even though only a single copy of these will be used (the ones defined in the liberty datasource configs for the javabatch and oauth configs respectively).
Describe the solution you'd like
Today, --create-schemas creates all the schemas.
To support different schemas in different dbs, we'd want to either:
A. change it to --create-schema SCHEMANAME; or
B. drop it and have it happen automatically during --update-schema
Then, in order to support the creation and updating of the OAuth and JavaBatch schemas selectively, I think we should introduce a separate action for each of these:
--update-fhir-schema
--update-oauth-schema
--update-bulk-schema

Further, to drive consistency across these actions and allow maximum flexibility, I think we should remove the --tenant-name argument and instead pass the tenant name as part of each of these three actions:
--update-fhir-schema FHIRDATA
--update-oauth-schema FHIR_OAUTH
--update-bulk-schema FHIR_BATCH

In each case, the FHIR_ADMIN schema can be implicitly created and used to track the version of the tables being deployed for each schema on the currently configured db.
With this design, an administrator that wants to deploy the FHIR_OAUTH and FHIR_BATCH schemas in a separate database from the FHIRDATA schema, could accomplish that with the following steps:

configure a properties file (fhirdata.properties) with database information for the db they want to deploy the fhir server schema on
configure a different properties file (fhirserver.properties) with database information for the db they want to deploy the OAuth and JavaBatch schemas on
run java -jar fhir-persistence-schema-cli.jar --prop-file fhirdata.properties --update-fhir-schema FHIRDATA
run java -jar fhir-persistence-schema-cli.jar --prop-file fhirserver.properties --update-oauth-schema FHIR_OAUTH --update-bulk-schema FHIR_BATCH

Whereas an administrator that wants to deploy them all on a single db could just run
java -jar fhir-persistence-schema-cli.jar --prop-file db.properties --update-fhir-schema FHIRDATA --update-oauth-schema FHIR_OAUTH --update-bulk-schema FHIR_BATCH
with a single config file.
Describe alternatives you've considered
One alternative to creating the FHIR_ADMIN schema implicitly on each database would be to have a single "ADMIN" database and have that track all the schemas on all the dbs.
The advantage of this approach is that we could pass the "admin" db info to fhir-persistence-schema and it could create the FHIR_ADMIN, FHIR_OAUTH, and FHIR_BATCH tables in this single spot and use the FHIR_ADMIN schema on this single database to track everything else it does.
That is closer to the "Open service broker" design we used for the internal DSTU2 server.
Additional context
This came up while reviewing https://github.com/IBM/FHIR/pull/1123 and I collaborated with Albert on the proposed design here.

I just implemented this...


WIP failing dynamic-versus-glob specificity est fix

do not merge
re: https://github.com/tildeio/route-recognizer/pull/100
re: https://github.com/emberjs/ember.js/issues/13921
/cc @bantic @nathanhammond @jmeas @derrickshowers
It appears if two charSpecs share the same validChars (as dynamic segments and wildcards do, both undefined) then a later addition will stomp a pre-existing state. In this fix I've gotten more strict about equality (you can see in the code descending into child routes where it was already more exacting) and made this test pass, however I'm concerned about continuing to use validChars as a key for the cache of next states. It seems silly to even bother with the map when we can probably iterate just as fast. If iteration is too slow, then we should at least use a composite key with both validChars and invalidChars.

Additional tests we need to make any fix passes:
https://github.com/tildeio/route-recognizer/issues/85#issuecomment-210158467
https://github.com/tildeio/route-recognizer/pull/94

@chadhietala this is basically a reversion of changes to https://github.com/tildeio/route-recognizer/commit/88d5a728539688324e5c946e628ab4db08092aa5 - seem good?

@mixonic That change was for perf reasons so if we need to trade that back for correctness I don't imagine it's a problem. Can you also confirm if these two additional tests pass?

@nathanhammond yeah I'll get to those for sure. Going to work on sewing this up today. I want to open a separate PR with the appropriate tests added and toy with a straight revert of https://github.com/tildeio/route-recognizer/pull/46 although https://github.com/tildeio/route-recognizer/pull/103 (motivated by https://github.com/tildeio/route-recognizer/issues/102) should also be considered.
But this PR won't cover those issues 👍

👍 from @chadhietala via chat


ARROW-6351: [Ruby] Improve Arrow#values performance

Type
Before
After
Speedup ratio

Boolean
100.9 i/s
34711.9 i/s
343.87x

Decimal128
70.1 i/s
660.7 i/s
9.42x

Dictionary
59.1 i/s
8542.6 i/s
144.54x

Int64
101.8 i/s
41414.1 i/s
406.72x

String
96.3 i/s
17146.7 i/s
178.13x

Timestamp
85.9 i/s
1402.6 i/s
16.32x

See ruby/red-arrow/benchmark/values/ for benchmark details.
This also adds ChunkedArray#values.
ruby/red-arrow/ext/arrow/converters.*:
ruby/red-arrow/ext/arrow/raw-records.cpp:
It extracts convert related features from raw-records.cpp to
converters.. raw-records.cpp just uses convert related features
extracted to converters.. The logic for convert related features
aren't changed.
ruby/red-arrow/ext/arrow/values.cpp:
It just uses extracted convert related features.
ruby/red-arrow/lib/arrow/loader.rb:
It maps the original Arrow::Array#values to Arrow::Array#raw_values to
use Arrow::Array#values defined in ruby/red-arrow/ext/arrow/arrow.cpp.
ruby/red-arrow/lib/arrow/array.rb:
It changes to fast Arrow::Array#values for Arrow::Array#to_a instead
of Enumerable#to_a.
ruby/red-arrow/benchmark/raw-records/:
Faker API is changed since Faker 2.0.0. This change uses the new
Faker API.

How about extracting the common parts of red_arrow::RawValuesBuilder and red_arrow::RawRecordsBuilder as a base class?  I think the both class shares a lot of common code.

Extracted as red_arrow::Converter.

Can Visit functions be moved in red_arrow::Converter?

We can't. Because it depends on template <typename ArrayType> void convert().


adding first draft paper + some docs

Codecov Report

Merging #17 (9269f72) into master (1733634) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #17   +/-   ##
=======================================
  Coverage   95.05%   95.05%
=======================================
  Files           8        8
  Lines         182      182
=======================================
  Hits          173      173
  Misses          9        9


Can you update the hpsjam port to v1.1.0?

--HPS

Documentation:
hpsjam uses 15 ports unless --no-multi-port is given.
Using multi ports increases the stream quality and decreases jitter and other artifacts.

@hselasky My startup script for hpsjam waits for server connectivity by doing an hpsjam UDP ping to port 22124 and checking if server replies.  Will this still work on multi-port version?

Yes, that should still work in both modes, but please test to make sure!
First packet always goes on 22124 . There is a time delay of 1 second before the server starts using multiple ports, to ensure the firewall has opened all the ports in use!

@hselasky I built v1.1.0 and added to my repo, so it will get picked up by the update apps button.
I verified that server and client still connect.  However I'm not really set up to do testing right now, so I couldn't do any more than that.

I've just made v1.1.1 . If you can push that too would be great. No need to test that much. Verifying server and client still connecting is more than enough!

@hselasky OK v1.1.1 is in my repo.

Thank you!


'scene.pickPositionSupported' is not supported in IE11

Hi, I enjoyed cesium very well, but I am not clear why 'scene.pickPositionSupported' is not supported in IE11. It means that I can't interact with anything in the scene when my program running in IE11. Are there any way I can solve this problem? Expecting your reply, thank you very much!

Hello @liubgithub.  Unfortunately IE11 does not support the WebGL features we need for pickPosition to work.  However, most other Cesium features should work fine in IE11.  pickPosition is just used for depth picking, which would be for something like getting the position of when you click on a model or 3D tiles building.  You can test our demo application on https://cesiumjs.org/.  Click 'tap to interact' to confirm that Cesium works in IE11 on your computer.
In the future, please ask questions on the forum if you can: https://groups.google.com/forum/?hl=en#!forum/cesium-dev
We use GitHub exclusively for tracking bugs and planning new features.


M1/aarch64 developer environment

When trying to setup the developer environment on an M1 Mac, I ran into a couple of issues.

Installing shellcheck fails as it gets the x86_64 version
pip installing ninja fails as there is no wheel, it needs to be built from scratch
you have to use a different vagrant provider to that recommended by the documentation. Virtualbox does not (and is not planning to) support M1 Mac's. I have gotten the docker provider to work OK though.
When fixing tools/lib/provision.py I noticed this block
https://github.com/zulip/zulip/blob/7d1db086c38bc6f26916ae8723dffdabb43b0939/tools/lib/provision.py#L79-L89 which I suspect is supposed to pickup and warn on ARM hardware. On M1 at least it does not, as platform.architecture()[0] == "64bit".

I have a branch with fixes for 1 and 2 (which possibly removes the need to fix 4, but perhaps it's worth fixing so other distributions show the warning?).

The Docker provider is definitely one that we have tested/support on macOS in the past, so I don't think it should be a problem to recommend it for mac M1.
That block does indeed look a bit confused; I'm not sure why weren't not directly checking for i386 vs. amd64.
@andersk FYI.


Update Spring Boot 2.6.7 -> 3.0.4

Upgrade to Spring3 will need major work and is in the scope of next version


Fix URL for "GUI development with Relm4" + edit author's name

What does this PR do?
Fix URL & author name for 1 resource. This fixes #10403
For resources

"GUI development with Relm4" in "/books/free-programming-books-subjects.md"

Description

The previously provided was no longer available and gave a 404 page. It has been changed with the latest link for the book: https://relm4.org/book/stable/
Also, changed author's name from "Aaron Erhardt" to "Relm4"

Why is this valuable (or not)?
It fixes a URL which can be useful.
How do we know it's really free?
It is available on GitHub under an MIT license.
For book lists, is it a book? For course lists, is it a course? etc.
It is a book (e-book / gitbook.io based site).
Checklist:

[x] Read our contributing guidelines.
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction).
[x] Used an informative name for this pull request.

already fixed


crash on startup

Here's log:
18:22:45.140 [notice] Application notifier_bot exited: NotifierBot.Application.start(:normal, []) returned an error: shutdown: failed to start child: NotifierBot.HookHandler
    ** (EXIT) shutdown: failed to start child: {Bandit, #Reference<0.2119600828.1676148737.158249>}
        ** (EXIT) an exception was raised:
            ** (UndefinedFunctionError) function Telegex.Hook.Server.init/1 is undefined (module Telegex.Hook.Server is not available)
                Telegex.Hook.Server.init(%{secret_token: "123456", on_update: #Function<0.31120284/1 in NotifierBot.HookHandler.on_update>})
                (bandit 0.7.7) lib/bandit.ex:391: Bandit.plug/1
                (bandit 0.7.7) lib/bandit.ex:317: Bandit.start_link/1
                (stdlib 5.0.2) supervisor.erl:420: :supervisor.do_start_child_i/3
                (stdlib 5.0.2) supervisor.erl:406: :supervisor.do_start_child/2
                (stdlib 5.0.2) supervisor.erl:390: anonymous fn/3 in :supervisor.start_children/2
                (stdlib 5.0.2) supervisor.erl:1256: :supervisor.children_map/4
                (stdlib 5.0.2) supervisor.erl:350: :supervisor.init_children/2
Kernel pid terminated (application_controller) ({application_start_failure,notifier_bot,{{shutdown,{failed_to_start_child,'Elixir.NotifierBot.HookHandler',{shutdown,{failed_to_start_child,{'Elixir.Bandit',#Ref<0.2119600828.1676148737.158249>},{'EXIT',{und
ef,[{'Elixir.Telegex.Hook.Server',init,[#{secret_token => <<"123456">>,on_update => #Fun<Elixir.NotifierBot.HookHandler.0.31120284>}],[]},{'Elixir.Bandit',plug,1,[{file,"lib/bandit.ex"},{line,391}]},{'Elixir.Bandit',start_link,1,[{file,"lib/bandit.ex"},{$
ine,317}]},{supervisor,do_start_child_i,3,[{file,"supervisor.erl"},{line,420}]},{supervisor,do_start_child,2,[{file,"supervisor.erl"},{line,406}]},{supervisor,'-start_children/2-fun-0-',3,[{file,"supervisor.erl"},{line,390}]},{supervisor,children_map,4,[{
file,"supervisor.erl"},{line,1256}]},{supervisor,init_children,2,[{file,"supervisor.erl"},{line,350}]}]}}}}}},{'Elixir.NotifierBot.Application',start,[normal,[]]}}})

Have you added plug in the deps?  If not, please add it. If it has been added, please try to delete _build dir and rebuild.

Plug is in the deps, after cleanning the _build directory, the issue gone.
BTW, I'm curious if this issue is related to the cache or the code loading order?

I know the reason, but I can't solve this phenomenon yet because I don't fully understand something.
The Telegex.Hook.Server module will detect whether the Plug module is loaded when compiling. If not, it will not be compiled. Because you upgraded Telegex (Telegex.Hook.Server module code was modified), but the local Plug build cache is still used, which causes the Plug not to be loaded during compilation, so the Telegex.Hook.Server module will not be compiled.
So deleting _build/dev/lib/plug to trigger recompilation of Plug can solve this problem.

Thanks @Hentioe for the explaination. After removing the _build directory, this issue disappeared.


用Chrome指纹报错

➜ ./ja3proxy -port 8080 -client Chrome -version 106
HTTP Proxy Server started at localhost Port:8080
2023/07/15 15:45:09 proxy to kawayiyi.com:443
2023/07/15 15:45:10 copy dest to client error read tcp <IP_ADDRESS>:8080-><IP_ADDRESS>:56461: use of closed network connection
$ curl -v  -k --proxy http://localhost:8080 https://kawayiyi.com/tls

Trying <IP_ADDRESS>:8080...
Connected to localhost (<IP_ADDRESS>) port 8080 (#0)
CONNECT tunnel: HTTP/1.1 negotiated
allocate connect buffer
Establish HTTP proxy tunnel to kawayiyi.com:443

CONNECT kawayiyi.com:443 HTTP/1.1
Host: kawayiyi.com:443
User-Agent: curl/8.1.2
Proxy-Connection: Keep-Alive

< HTTP/1.1 200 OK
< Date: Sat, 15 Jul 2023 07:50:40 GMT
< Transfer-Encoding: chunked

Ignoring Transfer-Encoding in CONNECT 200 response
<
CONNECT phase completed
CONNECT tunnel established, response 200
schannel: disabled automatic use of client certificate
using HTTP/1.x

GET /tls HTTP/1.1
Host: kawayiyi.com
User-Agent: curl/8.1.2
Accept: /

Received HTTP/0.9 when not allowed
Closing connection 0
schannel: shutting down SSL/TLS connection with kawayiyi.com port 443
curl: (1) Received HTTP/0.9 when not allowed

This is due to the fact that the fingerprint of Chrome version 106 actively requests the server to use HTTP/2, whereas curl does not use HTTP/2, resulting in this issue. Using the following command should resolve your issue:
curl -v -k --proxy http://localhost:8080/ https://kawayiyi.com/tls --http2

Thank you for your feedback, I will include it in the README.


No more runs in Firefox or Edge

gemini-gui opens system default browser, but it can be not only Chrome
From some version (4.5.0 or maybe some earlier) it doesn't react on pressing "Run" in Firefox (--auto-run flag doesn't do the thing, too)
No errors appear in browser console (neither in CLI), it just doesn't run the testing process.
So I need to reopen the URL in Chrome manually, and press "Run" there.
I am using Firefox 50 at Windows 10.
(Also, it never worked on Edge for me, from the very beginning; the symptoms are the same)

gemini-gui just run gemini throw API. So issues about Firefox and Edge should be in gemini repo. And these issues already exists - FF, Edge

Okay, so closing this one


Rich Text Link Resolver issues

When using Link Resolver, my previews work great but links that are contained in Rich Text fields are behaving strangely. I wonder if anyone could shed some light on what I'm doing wrong.
I'm getting the output...
 {
  if (doc.uid === 'index') {
    return `/`
  }

  return `/${doc.uid}`
}">find out more

My link resolver is set as..
const linkResolver = ({ node, key, value }) => doc => {
  if (doc.uid === 'index') {
    return `/`
  }
  return `/${doc.uid}`
}

module.exports = linkResolver

and in my gatsby config, I have...
const prismicLinkResolver = require('./src/utils/resolver')

and
    {
      resolve: 'gatsby-source-prismic',
      options: {
        repositoryName: 'my-repo',
        schemas: {
          page: require('./src/schemas/page.json'),
        },
        lang: '*',
        prismicToolbar: true,
        linkResolver: () => prismicLinkResolver,
        shouldDownloadImage: ({ node, key, value }) => {
          return true
        },
      },
    }

Hi @jodiedoubleday, it looks like you have one too many levels of functions.
Your link resolver is correct; it should be a function that returns a function, the first with node, key, value as arguments, and the second with the Prismic document.
In your gatsby-config.js, you should be passing that function directly, not as another function.
    {
      resolve: 'gatsby-source-prismic',
      options: {
        repositoryName: 'my-repo',
        schemas: {
          page: require('./src/schemas/page.json'),
        },
        lang: '*',
        prismicToolbar: true,
-       linkResolver: () => prismicLinkResolver,
+       linkResolver: prismicLinkResolver,
        shouldDownloadImage: ({ node, key, value }) => {
          return true
        },
      },
    }

Hope that helps. I'll close this for now but feel free to reply if it's not working after that change.

This is perfect thanks @angeloashmore


add app labels to subscription

Signed-off-by: Roke Jung<EMAIL_ADDRESS>Add the following app and app.kubernetes.io/part-of labels to subscription. The value is the name of the subscription. If app label is specified or already exists, app.kubernetes.io/part-of label needs to be sync'd with the app label.

/lgtm


Android - The requested pool cannot be opened because it does not have an existing configuration

Problem Statement
When accepting a Credential offer, the error The requested pool cannot be opened because it does not have an existing configuration is thrown on executing the below code
(CredentialRequestMessage credentialRequestMessage, CredentialRecord newCredentialRecord) = await credentialService.CreateRequestAsync(agentContext, Credential.Record.Id);
On investigating, I found that the PoolConfigurator gets an exception (An IO error occurred). Below is the stack trace
at Hyperledger.Aries.Ledger.DefaultPoolService.CreatePoolAsync (System.String poolName, System.String genesisFile) [0x0002d] in D:\a\1\s\src\Hyperledger.Aries\Ledger\DefaultPoolService.cs:59    at SSI.Services.PoolConfigurator.ConfigurePoolsAsync () [0x0023b] in /Users/sahil.khanna/Documents/VisualStudio_Workspace/ssi-mobile-app/SSI/Services/PoolConfigurator.cs:54
Note

The above scenario works fine on iOS. The problem is on an Android emulator and a device.
The READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE permissions are granted

hey @sahil-khanna, the problem you are having is that you are running on an Android runtime version that doesn't really grant permission using those attributes (while confirming wrongly that you have it).
This is a due to a change in Android 10/11 that introduces the notion of scoped storage as a new way to secure this permissions..  there is a way to request a legacy treatment of this permissions.
Take a look at the changes I proposed here: https://github.com/hyperledger/aries-mobileagent-xamarin/pull/21

Thanks, @horationunez. The below worked for me
Add the following attribute in the <application/> tag of the AndroidManifest.xml
android:requestLegacyExternalStorage="true"


Revised AppBar

This is a potential reworking of the AppBar, submitted as a draft Pull Request. I removed the user icon, and the banner on the main page. I used the Museo font for the "hendrix today" and the dropdown. The dropdown only shows up on the main page. I couldn't figure out how to use the fontWeight option, so I had to make two families, one for bold, one for 300 weight. Let me know what you think!

I think it looks great! It looks a lot cleaner than the old version. I know the theme hasn't been implemented yet, but setting up a TextTheme within the theme could solve a lot of your font formatting issues. The only though that I had is that it would be nice to have the filtering dropdown on the calendar page as well.

Thanks! I added back in the filter to the calendar page. I think it is ready for merging.


how to use copilot?

(use-package! copilot)
emacsPackages.copilot exits.
Is "No such file or directory" "git" the error?
❯ nix run .#doom-emacs
fetching git input 'git+file:///home/bbigras/src/nix-doom-emacs-unstraightened'
warning: Git tree '/home/bbigras/src/nix-doom-emacs-unstraightened' is dirty
building '/nix/store/sv0gip9a61gk1abvwrm8rr4zdz4kdiih-doom-intermediates.drv'...
error:
       … while calling the 'derivationStrict' builtin
         at /builtin/derivation.nix:1:208:
       … while evaluating derivation 'doom-emacs'
         whose name attribute is located at /nix/store/hsxq1bphjdbaimfj0jaa1f4vwp3xm408-source/pkgs/stdenv/generic/make-derivation.nix:331:7

       … while evaluating attribute 'buildCommand' of derivation 'doom-emacs'
         at /nix/store/hsxq1bphjdbaimfj0jaa1f4vwp3xm408-source/pkgs/build-support/trivial-builders/default.nix:68:17:
           67|         enableParallelBuilding = true;
           68|         inherit buildCommand name;
             |                 ^
           69|         passAsFile = [ "buildCommand" ]

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: builder for '/nix/store/sv0gip9a61gk1abvwrm8rr4zdz4kdiih-doom-intermediates.drv' failed with exit code 255;
       last 25 log lines:
       >     (progn (if (not noeval) (load file noerror 'nomessage 'nosuffix) (if (fi...
       >     (unwind-protect (progn (if (not noeval) (load file noerror 'nomessage 'n...
       >     (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (if...
       >     (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buf...
       >     (condition-case e (let ((temp-buffer (generate-new-buffer " *temp*" t)))...
       >     (doom-packages--read "/nix/store/1vp1b43l2al4jvpgm1hx2jr8wisa7far-doomdi...
       >     (if file (doom-packages--read file nil 'noerror) nil)
       >     (let* ((file (and t (doom-module-locate-path (car key) (cdr key) doom-mo...
       > x There was an unexpected runtime error
       >   Message: Error with packages
       >   Details: ((:user) "/nix/store/1vp1b43l2al4jvpgm1hx2jr8wisa7far-doomdir/packages.el" (file-missing "Searching for program" "No such file or directory" "git"))
       >   Backtrace:
       >     (signal doom-package-error ((:user) "/nix/store/1vp1b43l2al4jvpgm1hx2jr8...
       >     (condition-case e (let ((temp-buffer (generate-new-buffer " *temp*" t)))...
       >     (doom-packages--read "/nix/store/1vp1b43l2al4jvpgm1hx2jr8wisa7far-doomdi...
       >     (if file (doom-packages--read file nil 'noerror) nil)
       >     (let* ((file (and t (doom-module-locate-path (car key) (cdr key) doom-mo...
       >     (let ((doom-module-context (doom-module-context key))) (if doom-inhibit-...
       >     (read-packages (:user))
       >     (let (doom-packages) (read-packages (cons :user nil)))
       >     (progn (let (doom-packages) (read-packages (cons :user nil))))
       >     (if user? (progn (let (doom-packages) (read-packages (cons :user nil)))))
       >     (let ((user? (assq :user module-list))) (if user? (progn (let (doom-pack...
       >     (let ((doom-context doom-context)) (let ((tail (ensure-list 'packages)))...
       > Searching for program: No such file or directory, git
       For full logs, run 'nix log /nix/store/sv0gip9a61gk1abvwrm8rr4zdz4kdiih-doom-intermediates.drv'.

I'd highly recommend that you use gptel instead, it's much better:
https://github.com/karthink/gptel

I'd highly recommend that you use gptel instead, it's much better:
https://github.com/karthink/gptel

I'm already using it with vanilla emacs. I think it doesn't support the autocomplete thing that copilot does.

it seems to work with (package! copilot) in packages.el and this:
(use-package! copilot
  :hook (prog-mode . copilot-mode)
  :bind (:map copilot-completion-map
              ("<tab>" . 'copilot-accept-completion)
              ("TAB" . 'copilot-accept-completion)
              ("C-TAB" . 'copilot-accept-completion-by-word)
              ("C-<tab>" . 'copilot-accept-completion-by-word)))

in config.el.
Thank you very much!

btw I got this error now copilot--start-agent: Could not find node executable, but it might be while using :tools direnv and it might be a doom-emacs issue.

If you're using nix run .#doom-emacs (not home-manager or overlay), running nix shell nixpkgs#nodejs (or something similar) first to get nodejs on your shell seems like the fastest workaround.
If you're using Unstraightened's home-manager or overlay setup, I should probably give you a way of adding additional binaries to the $PATH Doom runs with. (I'm currently not forcing things like rg and fd into Doom's PATH, been meaning to fix that...)
If I let you do something like extraBins = [ pkgs.nodejs ]; in Unstraightened's home-manager or overlay setup, would that be useful?
You could also make your suggestion work, but it gets a little fiddly (and exactly how you'd do it depends on how much ELisp you're comfortable having in Nix strings). Something like this should work:
doomDir = pkgs.symlinkJoin {
  name = "doomdir";
  paths = [
    (pkgs.writeTextDir "config.el" ''
      ;; config.el, as in your comment
    '')
    ./path/to/the/rest/of/your/doomdir
   ];
 };

...but to avoid having an unwieldy amount of Lisp in Nix strings, you might prefer using concatTextFile or substitute so you can keep the Lisp in a separate file. I'd expect there to be examples of this sort of thing out there, but I'm not really sure where to point you for them, sorry!

I'd highly recommend that you use gptel instead, it's much better:
https://github.com/karthink/gptel

I'm already using it with vanilla emacs. I think it doesn't support the autocomplete thing that copilot does.

The author of gptel is adding the copilot functionality to gptel, but I am not sure if he's going to add the autocomplete functionality, I'm pretty sure he will at some point. I am using the open source gpt4all, and I am very happy with it.

I wish there was something for emacs packages like https://github.com/NixOS/nixpkgs/blob/1729f1a7a900cd285b42db9c158da7a581ca407a/pkgs/build-support/rust/default-crate-overrides.nix is for rust.
The emacs-init home-manager module has a similar feature https://gitlab.com/rycee/nur-expressions/-/blob/7e3ce9990c382947c33f0def2a1c33c420d8c710/hm-modules/emacs-init-defaults.nix. Which is awesome and work great, but you need to define your emacs config in a nix file:
{
            all-the-icons-dired = {
              enable = pkgs.stdenv.hostPlatform.system == "x86_64-linux";
              after = [
                "dired"
                "all-the-icons"
              ];
              hook = [ "(dired-mode . all-the-icons-dired-mode)" ];
            };
}

Being able to do stuff like enable = pkgs.stdenv.hostPlatform.system == "x86_64-linux" is awesome, but the downside is that you can't just copy paste some config snippet you found online.

I've added an extraBinPackages setting in c61cd622b7abb2de838c41d99cc9a0b1e4506917. This can be used to add things like node to the binary search path (if they're not on your default $PATH already).
Although I'm considering exposing the init.el generator I'm already using in tests (which converts { lang.rust = true; lang.nix = [ "+lsp" ] } in Nix to (doom! :lang rust (nix +lsp)), more or less, and could be used for conditionally enabling Doom modules in a home-manager config), and I'm open to adding more ways of passing paths / packages / etc from Nix into Doom (suggestions on how to approach this appreciated), I'm not currently planning to add more extensive support for configuring Doom in Nix. In particular, I feel that generating a Doom config.el would likely either turn into an entire configuration framework on top of Doom, or be too limited to be of much use.
With that, I think Unstraightened now supports Copilot about as well as Doom itself does, so I'm closing this issue.

The latter builds on my machine, but there is one issue: Unstraightened isn't picking up its autoload file (meaning things like copilot-complete are not defined).
...
I'll have a look to see if I can pick up its autoload file without having to do something copilot-specific...

I'd almost forgetten about this problem, but it is now fixed (by fa6fe4cf937e25dfcf1a44bd4d69ecbca280a85f).


Remove support for (d)tls 1.0 and 1.1

Signed-off-by: TRodziewicz<EMAIL_ADDRESS>Description
The recently-published RFC 8996 formally deprecates TLS 1.0 and TLS 1.1, as well as DTLS 1.0. It contains specific encouragements for implementors to stop supporting them and remove those versions from their code base. This RFC being published in our 3.0 window is a very nice opportunity that fits very well with our goals for 3.0.
Fixes #4286
Status
READY
Requires Backporting
NO
Migrations
NO
Todos

[x] Tests
[x] Documentation
[x] Changelog updated

Once the commits have been tidied up as mentioned above, and Manuel's comments addressed, I can approve this

Merged


ci: merge staging to master

This is an automatic PR generated by the pipeline CI/CD. This will be automatically fast-forward merged if successful.

Pipeline Attempt on 586782880 for 8c368757b27f6ce73024314d3876606625260307
https://gitlab.com/MatrixAI/open-source/typescript-demo-lib/-/pipelines/586782880

Pipeline Succeeded on 586782880 for 8c368757b27f6ce73024314d3876606625260307
https://gitlab.com/MatrixAI/open-source/typescript-demo-lib/-/pipelines/586782880


Revert from kitten mode

Allows the user to revert from kitten mode to normal mode.

@eyh8 Any idea if there's a better way to do this? I feel like there should be a way to declare both images in the  tag and then say you want one vs the other when an attribute is set but my Googling hasn't confirmed that's actually possible

Amy can you try declaring both elements together as Ashley mentioned and have one of them be hidden by doing display:none? You can then toggle them by flipping the display attribute.


How do I get the instance of codemirror?

use a viewchild ref to access the component and then its at the public codemirror property https://github.com/TypeCtrl/ngx-codemirror/blob/master/src/lib/codemirror.component.ts#L87

Thank you so much. It's working right now. :)


Swift integration crashing on formatter

I really wanted to make a more descriptive title, but I think it would soon be too long.
I am using the Swift integration and for me it is working fine, except when I try to log the path to my SQLite database, on my device.
I am using MagicalRecord and I am calling the following code:
		var dbPath = NSPersistentStore.MR_defaultLocalStoreUrl();
		DDLogVerbose("SQLite database store: \(dbPath)");

And this is where it goes wrong. If I understand the Swift macro's correctly, I am sending a NSString format with no arguments. This isn't a problem for most of the stuff I am logging, but my dbPath variable contains the following text:
file:///var/mobile/Containers/Data/Application/51C4C379-8E8B-418A-9FBB-26F7116ED348/Library/Application%20Support/HomeManager/CoreDataStore.sqlite
If I just perform the following line of code, it crashes on the same error:
		DDLogVerbose("SQLite database store: file:///var/mobile/Containers/Data/Application/51C4C379-8E8B-418A-9FBB-26F7116ED348/Library/Application%20Support/HomeManager/CoreDataStore.sqlite");

It seems that because %20 in there it crashes, because there are no "arguments" for the NSString formatter to process. So maybe there should be a check somewhere, that if no arguments are specified, the formatter shouldn't be called (I am not sure).
When I perform the line of code mentioned above, and manually replace the %20 with a space, it works without problems.

Ooh, nice catch. I'll look into possible solutions later today.
And yes, I can see any string that has a "%" in it to be a problem with the current implementation. I'll probably change it to not be a printf-style argument.
Sent from my iPad

On Feb 5, 2015, at 11:26 PM, Wim Haanstra<EMAIL_ADDRESS>wrote:
I really wanted to make a more descriptive title, but I think it would soon be too long.
I am using the Swift integration and for me it is working fine, except when I try to log the path to my SQLite database, on my device.
I am using MagicalRecord and I am calling the following code:
    var dbPath = NSPersistentStore.MR_defaultLocalStoreUrl();
    DDLogVerbose("SQLite database store: \(dbPath)");

And this is where it goes wrong. If I understand the Swift macro's correctly, I am sending a NSString format with no arguments. This isn't a problem for most of the stuff I am logging, but my dbPath variable contains the following text:
file:///var/mobile/Containers/Data/Application/51C4C379-8E8B-418A-9FBB-26F7116ED348/Library/Application%20Support/HomeManager/CoreDataStore.sqlite
If I just perform the following line of code, it crashes on the same error:
    DDLogVerbose("SQLite database store: file:///var/mobile/Containers/Data/Application/51C4C379-8E8B-418A-9FBB-26F7116ED348/Library/Application%20Support/HomeManager/CoreDataStore.sqlite");

It seems that because %20 in there it crashes, because there are no "arguments" for the NSString formatter to process. So maybe there should be a check somewhere, that if no arguments are specified, the formatter shouldn't be called (I am not sure).
When I perform the line of code mentioned above, and manually replace the %20 with a space, it works without problems.
—
Reply to this email directly or view it on GitHub.

Please @depl0y try the latest commit!


I served a directory with images using go static server. I am serving 2 files, 1 is .jpg another is .jxl. A repo with code is here https://github.com/akmittal/jxl-mime
What did you see happen?
.jxl files are not served with the correct mimetype. Which prevents the browser to display images.
What did you expect to see?
Browser prompts to download image instead of displaying in-browser. .jxl is supported file extension as per https://www.iana.org/assignments/media-types/media-types.xhtml#image

Related Issues and Documentation

mime: wrong extensions list for content type "image/jpeg" when using built-in types #36524 (closed)

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

We expect your system /etc/mime.types file to have mappings like this.  What type of system are you deploying to?  What do you see in the /etc/mime.types file?

@ianlancetaylor Im doing this in my dev machine, Which is Mac OS 15.1

Duplicate of #69530


Add source code for IterateOverLines

Ported from Cxx.

Thank you for your contribution.
Please note that it will not appear on the web site for a while, however your contribution has been committed to the source repository. Unfortunately the owner of the repository has passed away.

Oh my my, that is so sad to hear! May he rest in peace.
On Tue, 18 Feb, 2020, 06:50 Andrew Maclean<EMAIL_ADDRESS>wrote:

Thank you for your contribution.
Please note that it will not appear on the web site for a while, however
your contribution has been committed to the source repository.
Unfortunately the owner of the repository has passed away.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/lorensen/VTKExamples/pull/635?email_source=notifications&email_token=AJVJG24MLFGEWZSJJJLVTW3RDNZJNA5CNFSM4KWFGHRKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMAVNFI#issuecomment-587290261,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJVJG27MRK44CHSWRRDDJ2DRDNZJNANCNFSM4KWFGHRA
.


if post more than 24hrs old, show date

Instead of displaying "4 weeks ago", show "12 Mar 17" or similar.

OK... In currently, show in absolute date if the post's date more than a month from now. But your suggestion is better!

FYI, You can show the absolute date by hovering the date if the environment that there is the mouse cursor in such as the desktop.


[Catalog]: Bring back batchAddOrUpdate functionality

Feature Suggestion

I want to know the feasibility to bring back the batchAddOrUpdate functionality that was already on entityCatalog but it got deprecated.
Possible Implementation

Context

Currently at Expedia we have some edge cases where we need to update the entity right away instead of waiting to the next ingestion, we used to cover this functionality with the batchAddOrUpdate function, but a few time ago this method got deprecated and we are not longer able to use it and for a work around we are interacting directly with DB to make the updates, but we think it would be a better approach if we can reimplement something like batchAddOrUpdate functionality to the entitiesCatalog instead of working directly with DB.

Hi Victor.
It really sounds like Entity Providers would be the logical replacement for that functionality used in the old catalog. They support adding and removing entities at your own interval. Is that something you've looked at? There's some information available in our docs here


fix client is None

Closes #7111
Change Description
`
def get_client():
from lakefs.client import Client
clt = Client(username=username, password=password, host=host)
return clt
clt = get_client()
repo = lakefs.Repository(repository_id="datalab",client=clt)
ref = repo.ref(ref_id="main")
stored_object = ref.object(path="coco/coco128.zip")
fd = stored_object.reader()
filedata = fd.read()
save_obj = open("coco128.zip","wb")
save_obj.write(filedata)
save_obj.close()
`
Background
(dinov2) dongzf@dongzf-LEGION-REN7000P-26AMR:/mnt/sda/code/lakeFS-master$  cd /mnt/sda/code/lakeFS-master ; /usr/bin/env /home/dongzf/miniconda3/envs/dinov2/bin/python /home/dongzf/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher 50565 -- /mnt/sda/code/lakeFS-master/clients/python-wrapper/study.py
Traceback (most recent call last):
File "/home/dongzf/miniconda3/envs/dinov2/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/dongzf/miniconda3/envs/dinov2/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/dongzf/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher/../../debugpy/main.py", line 39, in
cli.main()
File "/home/dongzf/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 430, in main
run()
File "/home/dongzf/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 284, in run_file
runpy.run_path(target, run_name="main")
File "/home/dongzf/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 321, in run_path
return _run_module_code(code, init_globals, run_name,
File "/home/dongzf/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 135, in _run_module_code
_run_code(code, mod_globals, init_globals,
File "/home/dongzf/.vscode/extensions/ms-python.python-2023.20.0/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 124, in _run_code
exec(code, run_globals)
File "/mnt/sda/code/lakeFS-master/clients/python-wrapper/study.py", line 28, in
fd = stored_object.reader()
File "/mnt/sda/code/lakeFS-master/clients/python-wrapper/lakefs/object.py", line 564, in reader
return ObjectReader(self, mode=mode, pre_sign=pre_sign, client=self._client)
File "/mnt/sda/code/lakeFS-master/clients/python-wrapper/lakefs/object.py", line 209, in init
super().init(obj, mode, pre_sign, client)
File "/mnt/sda/code/lakeFS-master/clients/python-wrapper/lakefs/object.py", line 75, in init
self._pre_sign = pre_sign if pre_sign is not None else client.storage_config.pre_sign_support
AttributeError: 'NoneType' object has no attribute 'storage_config'
Bug Fix
If this PR is a bug fix, please let us know about:

Problem - The reason for opening the bug
Root cause - Discovered root cause after investigation
Solution - How the bug was fixed

New Feature
If this PR introduces a new feature, describe it here.
Testing Details
How were the changes tested?
Breaking Change?
Does this change break any existing functionality? (API, CLI, Clients)
Additional info
Logs, outputs, screenshots of changes if applicable (CLI / GUI changes)
Contact Details
How can we get in touch with you if we need more info? (ex<EMAIL_ADDRESS>

@d710055071 Thank you for the contribution and nice catch!
Can you please sign the CLA - in order to contribute to the project

This is the first line of code I have contributed to the open source community. Thank you very much


STICKY Entry count limiter doesn't work

Godot version and GoLogger version
All
Issue description
Limit method "Entry count limit" doesn't work. Admittedly, this is due to an oversight was included in 1.1 that doesn't even engage the feature when logging new entries so it doesn't currently work. This is addressed in 1.2 which is not too far off.
Expected behavior
When logging entries, old entries are stored into a variable using FileAccess.get_file_as_text() which is used to then loop through each entry and storing them separately in an array. This array is used to count and remove older entries if the count exceeds the limit. At this point, the amended entries in the array are supposed to be written sequentially back into the file but the entire get_file_as_text() variable is instead pasted into the file.
Steps to reproduce
No response

This is now rectified in the new update that was just released.


python web3 to interact with gmx

i tried to use python web3 to open long position on gmx, but keep getting errors about format:
the gmx.usdc etc are the usdc address on arbitrum and i downloaded the ABIs.
gmx_position_router_contract.functions.createIncreasePosition(
_path = [gmx.usdc, gmx.weth],
_indexToken = gmx.weth,
_amountIn = 910**6,
_minOut = 0,
_sizeDelta = 181030,
_isLong = True,
_acceptablePrice = 1670*1030,
_executionFee = 1*10**14,
_referralCode = bytes(0),
_callbackTarget = '0x0').buildTransaction(....)
web3.exceptions.ValidationError:
Could not identify the intended function with name createIncreasePosition, positional argument(s) of type () and keyword argument(s) of type {'_path': <class 'list'>, '_indexToken': <class 'str'>, '_amountIn': <class 'int'>, '_minOut': <class 'int'>, '_sizeDelta': <class 'int'>, '_isLong': <class 'bool'>, '_acceptablePrice': <class 'int'>, '_executionFee': <class 'int'>, '_referralCode': <class 'bytes'>, '_callbackTarget': <class 'str'>}.
Found 1 function(s) with the name createIncreasePosition: ['createIncreasePosition(address[],address,uint256,uint256,uint256,bool,uint256,uint256,bytes32,address)']
Function invocation failed due to no matching argument types.
is there any python example to do this:
https://gmxio.gitbook.io/gmx/contracts#opening-increasing-a-position

figured out...format issue. this works:
_referralCode=bytes.fromhex('0000000000000000000000000000000000000000000000000000000000000000'),
_callbackTarget='0x0000000000000000000000000000000000000000'

txn was mined but still got error:
https://arbiscan.io/tx/0x9fde90302e8e46705781e295ead6fe9d41ce3316fd93c9968eeccf6bde78d8b3
this is how i call the function:
createIncreasePosition(
_path=[gmx.usdc, gmx.weth],
_indexToken=gmx.weth,
_amountIn= 10000000,
_minOut= 0,
_sizeDelta=<PHONE_NUMBER>0000000000000000000000,
_isLong= True,
_acceptablePrice=<PHONE_NUMBER>000000000000000000000000,
_executionFee=<PHONE_NUMBER>00000,
_referralCode= '0x0000000000000000000000000000000000000000000000000000000000000000',
_callbackTarget= '0x0000000000000000000000000000000000000000').buildTransaction({ "gas": 10000000,
"maxFeePerGas": "0x3b9aca00",
"maxPriorityFeePerGas": "0x12a05f200",
"nonce": gmx.web3.eth.getTransactionCount(gmx.account.address),
'from': gmx.account.address})
to use 10 usdc to open long eth position

@vianiga can you take a look?

bump did you figure this out? Trying to essentially do the same on web3 python. I'm running into web3.exceptions.ContractLogicError: execution reverted: val

def increase_position(base_address, quote_address, direction, amount, slippage=0.5):
    # normalize direction param
    direction = str.lower(direction)

    create_increase_position_abi = abi.arb.gmx.positionRouter.abi  # ABI for the `createIncreasePosition` function
    position_router_contract = w3.eth.contract(address=abi.arb.gmx.positionRouter.address, abi=create_increase_position_abi)

    acceptable_price = 0
    try:
        for s in fetch_tickers([base_address, quote_address]):
            if s.get('tokenAddress') == base_address:
                acceptable_price = int(float(s.get('maxPrice')) * (1 + slippage/100))
    except Exception as e:
        print('failed to fetch tickers, aborting', print(e))
        return None

    params = {
        '_path': [quote_address],  # Make sure this is a list.
        '_indexToken': base_address,
        '_amountIn': w3.to_wei(amount, 'mwei'),
        '_minOut': 0,
        '_sizeDelta': int(amount * (10 ** 30)),
        '_isLong': True if direction == 'long' else False,  # Convert this directly to a bool here
        '_acceptablePrice': acceptable_price,
        '_executionFee': position_router_contract.functions.minExecutionFee().call(),
        '_referralCode': w3.to_bytes(text='0').rjust(32, b'\0'),
        '_callbackTarget': '0x0000000000000000000000000000000000000000'
    }

    tx = position_router_contract.functions.createIncreasePosition(
        params['_path'],
        params['_indexToken'],
        params['_amountIn'],
        params['_minOut'],
        params['_sizeDelta'],
        params['_isLong'],
        params['_acceptablePrice'],
        params['_executionFee'],
        params['_referralCode'],
        params['_callbackTarget']
    )
    estimated_gas = tx.estimate_gas({
        'from': MY_ADDRESS
    })
    buffered_gas = int(estimated_gas * 1.20)
    tx.build_transaction({
        'chainId': 42161,
        'gas': buffered_gas,
        'gasPrice': w3.eth.gas_price,
        'nonce': w3.eth.get_transaction_count(MY_ADDRESS),
    })

    signed_tx = w3.eth.account.sign_transaction(tx, MY_PRIVATE_KEY)
    return w3.eth.send_raw_transaction(signed_tx.rawTransaction).hex()

   if __name__ == '__main__':
    receipt = increase_position(base_address=token_contracts.arbitrum.ARB,      # token_contracts.arbitrum.ARB,
                                quote_address=token_contracts.arbitrum.USDC,     # token_contracts.arbitrum.USDC,
                                direction='long',
                                amount=5)

According to the contract, you need to send the _executionFee amount as the transaction value. So if _executionFee is<PHONE_NUMBER>00000, you'd need to send that amount of ETH. You can check the contract here. Look in PositionRouter.sol on line 306. I think you would just add 'value':<PHONE_NUMBER>00000 to your estimate_gas dict.

According to the contract, you need to send the _executionFee amount as the transaction value. So if _executionFee is<PHONE_NUMBER>00000, you'd need to send that amount of ETH. You can check the contract here. Look in PositionRouter.sol on line 306. I think you would just add 'value':<PHONE_NUMBER>00000 to your estimate_gas dict.

Thanks. Putting that in the dictionary did get me passed that error. But now its also erroring web3.exceptions.ContractLogicError: execution reverted: ERC20: transfer amount exceeds allowance. This is confusing. Does it mean the allowance for the symbol is not permitted yet or does it mean I not have enough etherium? I'm testing on the arbitrum network and have roughly $15 of ether to play with, I should be able to open a position with ~$2.00 worth when using the front-end UI.
    estimated_gas = tx.estimate_gas({
        'from': MY_ADDRESS,
        'value': position_router_contract.functions.minExecutionFee().call()
    })

Here's me trying to approve a token to the maxuint256, getting web3.exceptions.ContractLogicError: execution reverted: Governable: forbidden.
# 3. Approve the Router contract for the token and amount
def approve_router(token_address):
    # Assume a standard ERC20 approve function
    approve_abi = abi.arb.gmx.positionRouter.abi  # ABI for the `approve` function of an ERC20 token
    token_contract = w3.eth.contract(address=abi.arb.gmx.positionRouter.address, abi=approve_abi)
    tx = token_contract.functions.approve(token_address, MY_ADDRESS, 2**256 - 1)
    estimated_gas = tx.estimate_gas({'from': MY_ADDRESS})
    buffered_gas = int(estimated_gas * 1.20)
    tx = tx.build_transaction({
        'chainId': 42161,
        'gas': buffered_gas,
        'gasPrice': w3.eth.gas_price,
        'nonce': w3.eth.get_transaction_count(MY_ADDRESS),
    })

    signed_tx = w3.eth.account.sign_transaction(tx, MY_PRIVATE_KEY)
    return w3.eth.send_raw_transaction(signed_tx.rawTransaction).hex()

receipt = approve_router(token_contracts.arbitrum.ETH)

I think you're doing it backwards? Your token_contract is being set to the position router, when it should be the address of whatever token. Then you should be approving the position router as a spender for the token. I'm not sure if your approve abi is correct either, not sure how you have that defined but it appears to be the abi of the position router?

Ah yes that was a chicken scratch mistake, labeling variables incorrectly. I've fixed it but now you got me a bit confused.. Is it my wallet address or the position_router contract's address passed for the second argument?
This position_router.abi is equivalent to the "abi" section of the contract 0xb87a436B93fFE9D75c5cFA7bAcFff96430b09868 found on arbiscan. Using web3, we serialize that data back into an object, then call the approve method and pass down the arguments as needed. Still confused if the second argument is my wallet or the contracts.. I've tried both and still get that execution reverted: Governable: forbidden error.
    approve_abi = abi.arb.gmx.positionRouter.abi
    position_router_contract = w3.eth.contract(address=abi.arb.gmx.positionRouter.address, abi=approve_abi)
    tx = position_router_contract.functions.approve(token_address, abi.arb.gmx.positionRouter.address, 2**256 - 1)
    estimated_gas = tx.estimate_gas({'from': MY_ADDRESS})
    buffered_gas = int(estimated_gas * 1.20)
    tx = tx.build_transaction({
        'chainId': 42161,
        'gas': buffered_gas,
        'gasPrice': w3.eth.gas_price,
        'nonce': w3.eth.get_transaction_count(MY_ADDRESS),
    })
    signed_tx = w3.eth.account.sign_transaction(tx, MY_PRIVATE_KEY)
    return w3.eth.send_raw_transaction(signed_tx.rawTransaction).hex()

receipt = approve_router(token_contracts.arbitrum.ETH)

I was able to allow plugins successfully, targeting the position router contract as the target and the code below.
def approve_plugin():
    approve_plugin_abi = abi.arb.gmx.router.abi # ABI for the `approvePlugin` function
    position_router_contract = w3.eth.contract(address=abi.arb.gmx.router.address, abi=approve_plugin_abi)
    tx = position_router_contract.functions.approvePlugin(abi.arb.gmx.positionRouter.address)
    estimated_gas = tx.estimate_gas({'from': MY_ADDRESS})
    buffered_gas = int(estimated_gas * 1.20)
    tx = tx.build_transaction({
        'chainId': 42161,
        'gas': buffered_gas,
        'gasPrice': w3.eth.gas_price,
        'nonce': w3.eth.get_transaction_count(MY_ADDRESS),
    })

    signed_tx = w3.eth.account.sign_transaction(tx, MY_PRIVATE_KEY)
    return w3.eth.send_raw_transaction(signed_tx.rawTransaction).hex()

Not sure what I'm doing wrong? Shrug

It's the approve that's wrong, it's still backwards. Above, you are calling approve on the router contract. You need to do the opposite. You need to call approve on the token contract, and pass the router address in as the first argument, and the amount as the second.
Would look something like this:
def approve_router(token_address):
    token_abi = abi.arb.erc20.abi (or whatever)
    token_contract = w3.eth.contract(address=token_address, abi=token_abi)
    tx = token_contract.functions.approve(abi.arb.gmx.positionRouter.address, 2**256 - 1)
    ....

Thank you for the guidance. I apologize I'm still a little new to web3 / smart contracts with python. I didn't think the token_address would have an ABI since upon viewing the contracts on arbiscan I could see there were basically 0 read/write functions for that token itself. I was unaware of native abi methods from erc20 standard.
I'm still running into another issue while trying to open positions :( I found this position manager library from a community member from https://github.com/SentryApe/sentry-gmx-python/blob/main/gmx.py . The snippit below is from it.
def marketLong(coin, collateral, leverage, amount_in, price, slippage):
    print("Longboi")
    nonce = w3.eth.get_transaction_count(MY_ADDRESS)
    path = long_collateral_path(coin, collateral)
    execution_price = Web3.to_wei(str(price * (1.0 + slippage / 100.0)), "tether")
    is_long = True
    executionFee = Web3.to_wei( 300000, "gwei")
    referral = "0x0000000000000000000000000000000000000000000000000000000000000000"
    create_increase_position_abi = abi.arb.gmx.positionRouter.abi  # ABI for the `createIncreasePosition` function
    position_router_contract = w3.eth.contract(address=abi.arb.gmx.positionRouter.address, abi=create_increase_position_abi)
    if (coin == "eth" and collateral == "weth"):
        index_token = Web3.to_checksum_address(token_contracts.arbitrum.WETH.lower())
        min_out = 0
        amountIn = Web3.to_wei(amount_in, 'ether')
        size_delta = Web3.to_wei(str(leverage * amount_in * price *  (1.0 + slippage / 100.0)), 'tether')
        print(path, ", ",index_token, ", ",   ",", min_out, ", ", size_delta, ", ", is_long, ", ", execution_price, ", ", )
        longboi = position_router_contract.functions.createIncreasePosition(path, index_token, amountIn,  min_out,  size_delta,  is_long, execution_price, executionFee, referral, token_contracts.arbitrum.ADDRESS_ZERO).build_transaction({'chainId': 42161, 'nonce': nonce, 'value' : executionFee,'gasPrice': Web3.to_wei('1', 'gwei')})
        send_tx(MY_PRIVATE_KEY, position_router_contract, longboi)
    elif (coin == "eth" and (collateral == "usdt" or collateral == "usdc")):
        index_token = Web3.to_checksum_address(token_contracts.arbitrum.WETH.lower())
        min_out = Web3.to_wei(amount_in / (price * (1.0 + slippage / 100.0)) , 'ether')
        amountIn = Web3.to_wei(amount_in , 'mwei')
        size_delta = Web3.to_wei(str(leverage * amount_in  *  (1.0 + slippage / 100.0)), 'tether')
        print(path, ", ",index_token, ", ",   ",", min_out, ", ", size_delta, ", ", is_long, ", ", execution_price, ", ", )
        longboi = position_router_contract.functions.createIncreasePosition(path, index_token, amountIn,  min_out,  size_delta,  is_long, execution_price, executionFee, referral, token_contracts.arbitrum.ADDRESS_ZERO).build_transaction({'chainId': 42161, 'nonce': nonce, 'value' : executionFee,'gasPrice': Web3.to_wei('1', 'gwei')})
        send_tx(MY_PRIVATE_KEY, position_router_contract, longboi)
    elif (coin == "btc" and collateral == "btc"):
        index_token = Web3.to_checksum_address(token_contracts.arbitrum.BTC.lower())
        min_out = 0
        amountIn = Web3.to_wei(amount_in * 100, 'mwei')
        size_delta = Web3.to_wei(str(leverage * amount_in * price *  (1.0 + slippage / 100.0)), 'tether')
        print(path, ", ",index_token, ", ",   ",", min_out, ", ", size_delta, ", ", is_long, ", ", execution_price, ", ", )
        longboi = position_router_contract.functions.createIncreasePosition(path, index_token, amountIn,  min_out,  size_delta,  is_long, execution_price, executionFee, referral, token_contracts.arbitrum.ADDRESS_ZERO).build_transaction({'chainId': 42161, 'nonce': nonce, 'value' : executionFee,'gasPrice': Web3.to_wei('1', 'gwei')})
        send_tx(MY_PRIVATE_KEY, position_router_contract, longboi)
    elif (coin == "btc" and (collateral == "usdt" or collateral == "usdc")):
        index_token = Web3.to_checksum_address(token_contracts.arbitrum.BTC.lower())
        min_out = Web3.to_wei(amount_in / (price * (1.0 + slippage / 100.0)) * 100, 'mwei')
        amountIn = Web3.to_wei(amount_in , 'mwei')
        size_delta = Web3.to_wei(str(leverage * amount_in  *  (1.0 + slippage / 100.0)), 'tether')
        print(path, ", ",index_token, ", ",   ",", min_out, ", ", size_delta, ", ", is_long, ", ", execution_price, ", ", )
        longboi = position_router_contract.functions.createIncreasePosition(path, index_token, amountIn,  min_out,  size_delta,  is_long, execution_price, executionFee, referral, token_contracts.arbitrum.ADDRESS_ZERO).build_transaction({'chainId': 42161, 'nonce': nonce, 'value' : executionFee,'gasPrice': Web3.to_wei('1', 'gwei')})
        send_tx(MY_PRIVATE_KEY, position_router_contract, longboi)

When running script with receipt = marketLong('btc', 'usdc', 2.0, 5.50, 30000, 0.5), I get execution reverted: Router: plugin not approved
I've already called approvePluggin() on the router contract, passing in the positionRouter contract address as its argument. It should be approved unless I missed something else?


linuxPackages.nvidia_x11_legacy390: mark as broken

Description of changes
As of linux 5.17 the removal of the PDE_DATA() macro breaks this version of the driver.

Things done
Marked it as broken for kernel 5.17 and higher.

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

I'd like to add that the "new feature branch" build listed on https://www.nvidia.com/en-us/drivers/unix/ (495.46) also has the same issue. I guess if the production branch is newer it supersedes it.

Also #166410. An eventual patch would simply be like replacing PDE_DATA() with pde_data().


KeyboardToolbar's button click will suddenly open the BottomSheet and immediately focus on the BottomSheetTextInput inside the BottomSheet

Hi 🙌. Thank you so much for your hard work on this amazing lib.
Truly useful for the community. ❤
Describe the bug
So i have a screen in my RN app. The screen has a several TextInput inside a KeyboardAwareScrollView (KAS is from this lib). And i have a BottomSheet (from Gorhom) that has a BottomSheetTextInput inside it. Lastly, i have a KeyboardToolbar.
The problem begin when i focused to the last TextInput inside KAS and then i click the next button of KeyboardToolbar and then suddenly my BottomSheet (that i haven't opened yet before) is appear with the BottomSheetTextInput is focused.
Code snippet
function App(): React.JSX.Element {
  const sheetRef = useRef<RNBottomSheet>(null);

  return (
    <GestureHandlerRootView style={styles.flex}>
      <KeyboardProvider>
        <SafeAreaView style={[styles.background, styles.flex]}>
          <KeyboardAwareScrollView
            contentContainerStyle={styles.kasContentContainer}
            keyboardShouldPersistTaps="handled"
            bottomOffset={keyboardBottomOffset}>
            {Array(10)
              .fill('')
              .map((_item, index) => (
                <TextInput
                  key={index}
                  placeholderTextColor="lightgray"
                  placeholder="Type here..."
                  style={styles.input}
                />
              ))}
            <Button
              title="Open Sheet"
              onPress={() => {
                sheetRef.current?.expand();
              }}
            />
          </KeyboardAwareScrollView>
          <KeyboardToolbar />
          <BottomSheet ref={sheetRef}>
            <View style={styles.container}>
              <BottomSheetTextInput
                placeholderTextColor="lightgray"
                placeholder="Type here..."
                style={styles.input}
              />
            </View>
          </BottomSheet>
        </SafeAreaView>
      </KeyboardProvider>
    </GestureHandlerRootView>
  );
}

Repo for reproducing
https://github.com/7dp/KeyboardToolbarBottomSheetRepro
To Reproduce
Steps to reproduce the behavior:

Focus the keyboard on the last TextInput inside KAS.
Click next button of KeyboardToolbar.
BottomSheet will suddenly appear with a focused BottomSheetTextInput.

Expected behavior
KeyboardToolbar next/prev click should not focus to the BottomSheetTextInput inside the BottomSheet, so the BottomSheet will not appear at all.
Screenshots
Record:
https://github.com/kirillzyusko/react-native-keyboard-controller/assets/49138064/fda545a1-3ba3-4594-9400-d033b0e1c4d4
Smartphone (please complete the following information):

Desktop OS: MacOS 12.7.5
Device: (Android) Oppo A53
OS: Android 12
RN version: 0.73.8
RN architecture: Old/Paper
JS engine: Hermes
Library version: ^1.12.2

Sorry for the blurry video, hope the problem still be visible.

Hey @7dp
Yeah, this is currently a limitation of KeyboardToolbar - it detects all inputs on the screen.
F full solution would be exporting component like KeyboardToolbar.Exclude and wrap TextInputs which you wouldn't like to be detectable, or KeyboardToolbar.SequentialForm to show a region in which TextInputs should be scanned.
Right now I see two potential solutions:

use BottomSheetModal instead of BottomSheet - in this case TextInput shouldn't exist in hierarchy unless Modal is actually visible.
you can try to override a behavior of KeyboardToolbar:

you'll need to add onFocus/onBlur to last TextInput and modify a state based on the event (isLastInputFocused);
for KeyboardToolbar you'll need to override Button component (https://kirillzyusko.github.io/react-native-keyboard-controller/docs/api/components/keyboard-toolbar#button) - it has disabled property that you'll need to modify and use like disabled || isLastInputFocused. Though it may be hard to achieve, because I'm not exporting Button and Icon components 🙈

Anyway, let me know if any of these workaround is actually fixes the problem for you or not 👀

Thanks for the suggested workarounds, Kirill.
For now i'll just disable the KeyboardToolbar component.

Thanks for the suggested workarounds, Kirill.

As an option 😁
I'll keep the issue open - when I have more spare cycles I'll get back to this issue and will create a proper solution 👍


Add call for StanCon2023 and link to code of conduct.

Add call for proposals for StanCon 2023 and link to code of conduct.

@yizhang-yiz Can you review the PR? Thank you.


Long branch name usability

with long branch names i cant resize the left branch panel shorter than the branch name ... that is quite annoying when i have longer names. Would be cool to have the branch name with ellipsis and to be able to resize the panel. Another thing that could be better is the branch selector (eg. when using checkout or merge). That dialog is often too small and every time i open it i have to resize the dialog. Maybe remember the last size of the dialog or give it a better default size so i can read all the branch names.

@Readock I don't understand the first request, because on my side I can resize the left pane to be really small. Can you show a screenshot? On the left top there is a button to hide the left pane completely
For the second: Have you tried out the maximize functionality (Ctrl + M). You can use it in the commit list or in the edit pane, once selected this pane will be maximized

thank you for the response.
Sadly i cant share my repo because there is sensible data ... but i picked a image from google to show what i mean. I can resize this panel not further to the left then the branch name i have currently checked out. Normally maybe not an issue but i sometimes have pretty long branch names because the name get auto generated and can for example be something like this: feature/92123-wow-this-is-really-a-long-auto-generated-checked-out-branch-name-filling-half-my-screen. So having the top checked out branch with ellipsis would be nice.

for the second one i meant the checkout dialog that opens with ctrl-shift-H ... the ctrl-shift-M dialog is better sized


Adds Dotenv to Project

Adds dotenv to project requirements, and loads environment variables in webpack config to simplify setup and usage of the application. Adds env file to gitignore.

Thanks!