Harmonize build workflow to match deploy workflow

This PR addresses issue https://github.com/corona-warn-app/cwa-website/issues/2146 and harmonizes the selection of Nodejs version v14 to run in the build workflow to match the deploy workflow of cwa-website.
Node LTS Fermium (v14)
The Nodejs version is selected to be v14 according to the Long Term Support version alias lts/fermium (see Nodejs release schedule) through the following section in .github/workflows/build.yml:
    - name: Setup Node.js environment (v14)
      uses: actions/setup-node@v2
      with:
        node-version: 'lts/fermium'

Currently Nodejs - latest-fermium offers Node 14.18.2 under this definition. GitHub currently lags slightly behind and uses the previous patch version Node 14.8.1.
Use of Cypress Docker
The previous use of a Cypress Docker image through
container: cypress/browsers:node14.7.0-chrome84 in the build workflow, which tied the build environment to an older minor version of Nodejs (14.7.0), is removed. More than one year ago the Cypress test suite was run as part of the build workflow. That was found to be problematic and so the execution of the test suite was removed, leaving the unnecessary Cypress Docker image behind. This is now corrected.
Comments and labels
Comments in .github/workflows/build.yml are tidied up and corrected.
Additionally the key name: Setup Node.js environment (v14) is set identically in .github/workflows/deploy-master.yml for consistent logging in the two affected workflows.

@dsarkar / @svengabr
Although this PR is not essential, I believe it makes the workflows more maintainable and so it would be worthwhile to implement.

@MikeMcC399 Thanks. We will check it!


[EventEngine] Enable event_engine_listener in Windows debug builds

This turns on the event_engine_listener experiment across Windows debug builds.
If you encounter problems, please file an issue. The experiment can be disabled immediately by setting the environment variable GRPC_EXPERIMENTS="-event_engine_listener" and running the same binary.

This will be merged after the 1.58 branch cut.

Closed in favor of https://github.com/grpc/grpc/pull/34436


First party selfupdate

Recreated commits from this PR
closes #91

@anfragment I reviewed all your comments and made the suggested adjustments. Thank you very much for the thorough feedback, it’s truly appreciated.

@AitakattaSora after some manual testing, I came across a couple issues:

On macOS, self-updater assumes that the app is located under /Applications, which might not always be the case. I believe using os.Executable() to determine the path dynamically might be a better choice.
The binary might be launched via a symlink. This can be handled using filepath.EvalSymlinks.
The self-updater doesn't handle rollbacks when a file or directory overwrite fails. A possible solution is to first rename the binary or app bundle to its current name with a .old suffix. If an error occurs, it can be reverted by renaming it back.

@anfragment  I unified the update process by utilizing a temporary directory for unarchiving across all platforms. I also implemented unique backup name generation using a timestamp to prevent conflicts in cases where a previous update was aborted and the backup file remained in storage.


Add release date for new BCM2837-based Pi 2B

I think this is all that's needed to make pi_info() accurate

Er, shouldn't that be against 2B instead of B+?

I have no idea how I managed that.

Current coverage is 78.26% (diff: 100%)

Merging #462 into master will not change coverage

@@             master       #462   diff @@
==========================================
  Files            31         31
  Lines          7213       7213
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           5645       5645
  Misses         1568       1568
  Partials          0          0

Powered by Codecov. Last update 9cbcd07...69aaa62

Are you sure this is correct? The current 2B (2015Q1) has a revision of 0xa01041 which decodes to a pcb_revision of 1.1

Yup, so the current one (rev 1.1) will have a release date of 2015Q1, the new (rev 1.2) will have 2016Q3

Doh! I misread the 'if' logic as the other way around. Ignore me... ;-)

Although... given that http://elinux.org/RPi_HardwareHistory mentions an a01040, should the 'if' be expanded to if pcb_revision == '1.0' or pcb_revision == '1.1' ?

Yeah, not a bad idea

That's cool - I didn't know github let you edit other people's PRs. Hope you don't mind Ben!
IMHO we should get verification of the revision code on an actual 2837-based Pi 2B before this gets merged.

That's cool - I didn't know github let you edit other people's PRs.

It's a recent thing. There's a new check-box when creating a PR labelled something like "allow maintainers to edit PR" which permits it (it's checked by default).

It's a22042

It's a22042

Cheers. I've just updated http://elinux.org/RPi_HardwareHistory


File cleanup

I can tell the files are getting very very cluttered. I've been able to get by adding random and relevant scopes to certain "fitting" areas, but as stated in #23, I am thinking of making changes. Consequently, there will have to be changes in how development is made. There are a few possible paths.
Path A - Split by Language
Advantages

This would make it easier to see which scopes affect which language
Allow for more specific per-language customisation without breaking anything else

Disadvantages

Lots of duplicate keys, which would make it pointless to maintain. It may become more bloated.

Path B - Split by Scope
Advantages

Allows a much morw viewable hierarchy of scopes
Easier to maintain (to a good degree)
Covers more languages without having to delve into specifics

Disadvantages

The hierarchy doesn't always stay 100%. At certain times, I must be more specific, however it shouldn't be that much of a problem if I group by scope
Harder to spot individual languages

Path C - Split by Colour
Advantages

Easy colour reference
Allows for appropiate places to place new scopes

Disadvantages

Not very useful in displaying which scopes are where and identifying languages

Path D - Combination of A and B
This would mean almost every scope would have a language extension (such as . php) and there'd be a clear hierarchy of scopes per language. The current idea for this Path is sorting by language, then making specific hierarchy of scopes withi n each one.
Advantages

Very easy to see and maintain
Endless limits to customisation
Less error prone

Disadvantages

Much more effort, but worth it
Will require more tinkering, especially with #23

Currently leaning towards Path D

Option D surely involves the most effort, but i think it could be worth it.

Option D would be the most successful. Positive management of file space and it's a go!

Would create a languages folder and put syntax highlighting for each one. It may be hard however since if a highlight breaks, we'd have to check each one and ensure it is fine. However since we end it in a language extension, this shouldn't be the case and will allow for endless customisation


Placeholder becomes blur when quality prop set to 1

Firstly, thanks for your component. I think it's really great. But I have some issue.
Here is a codepen.
When I set quality prop to 1 placeholder text becomes blur. Is it possible to fix this?

Unfortunately I don't think I can fix this as of now.
I guess you are using Mac with retina screen. If so, the blurriness is expected. Canvas or image need to be 2x larger on retina screen to look clear. That's why I use quality 2 as default value. And it's recommended to set quality >= 2.
I will think through it though.

Thank you for fast answer. Yeah i'am on Mac. So my problem is that I want to get image with same dimensions as the croppa width and height props. For example: croppa width is 300px and height is 300px too and when I call generateDataUrl it returns image 300x300. How to do it?

@hetsketch  I see. Setting quality to 1 is the only way to achieve that for now and it will look blurry on Apple devices but normal on other screens.

@zhanziyang ok. I get it. You can close the issue.


T011/23 + GHA??: Going through notebooks, checked also text and grammar

Description
33  Gerrit: Portion of code not working fixed # Molecular graph
35 : Azat : num layers GRUReg and RNNReg fixed
37 : Joshka : couldn’t  run code related to torch-scatter got an error in package torch-scatter
38 : Roman : torch-scatter  error (but code run  )
Todos
Notable points that this PR has either accomplished or will accomplish.

[ ] TODO 36 : Micheal: Need to add a summary for the practical section

Ready to go

@AndreaVolkamer, why does this PR want to merge DL_edition from master? Should it not be something like "merge DL_edition from something like dl-proofread"?
Adding all these DL-related PRs to the base PR  for the DL edition --- which is still this one, is it not? --- would help with getting an overview of all the open PRs or does this overview live somewhere else?

@AndreaVolkamer and @f-sod I see now that this PR description does not match the changes made (i.e. GHA, T=11, T023)?
Can you please update the PR description to outline the intent of this PR?

@AndreaVolkamer and @f-sod I see now that this PR description does not match the changes made (i.e. GHA, T=11, T023)?
Can you please update the PR description to outline the intent of this PR?

@dominiquesydow I've updated the description with what was done,  since I've only worked on the last 6 talktorials I don't know what changes you're talking about for the T023 ..


SQL queries shown without bound variables

Given a Django code:
Boo.objects.filter(foo__icontains="moo")
that produces (approx.) this SQL query:
SELECT * FROM boo WHERE UPPER(foo) LIKE UPPER('%moo%')
the debug toolbar shows this query:
SELECT * FROM boo WHERE UPPER(foo) LIKE UPPER(' ')
So the query in the toolbar is missing the searched string ('moo'). Curiously enough, when I had django print me the query like so: print(qs.query), the toolbar suddenly started to show the values correctly. When the print was removed, values disappeared again.
| version
------------ | -------------
Django | 3.0.2 |
Python | 3.7.2 |
Debug Toolbar | 2.2 |

I'm unable to reproduce this. Running the example app and browsing out to http://<IP_ADDRESS>:8000/admin/auth/user/?username__icontains=moo generates this query:
SELECT ••• FROM "auth_user" WHERE "auth_user"."username" LIKE '''%moo%''' ESCAPE '\'

Right. I think the culprit is an annotate clause. Once I add that, the values disappear (from WHERE):
qs.annotate(abc=Concat("foo", Value(" "), "foo2"))

Can you give me the full queryset that's problematic?

I am not at liberty to post the thing as-is, so I will create a clean install of django and produce a minimal failing scenario.

That's even better.

Closing due to lack of response.


[LKE] Unit test for "Create Cluster" button being disabled when 0 Node Pools added

Description
Follow-up to https://github.com/linode/manager/pull/6322.
Added a data-testid attribute to the Button in CheckoutBar component and a unit test to make sure the button is disabled when zero Node Pools have been added by user.
Type of Change

Non breaking change ('update', 'change')

Testing
yarn test KubeCheckoutBar.tsx
Note to Reviewers
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration.

Closed https://github.com/linode/manager/pull/6324 due to rebase difficulties


Create Instance of SAP Event Mesh

Tutorials: https://developers.sap.com/tutorials/cp-enterprisemessaging-instance-create.html
Error Message: "Pool for plan dev is exhausted"
While creating an instance of Event Mesh service in SAP BTP Trial account, I encounter an error "Pool for plan dev is exhausted". Attached are the screen snapshots for the same
BTP_Trial_EventMesh.pdf

the issue has been fixed.

The same error is raised today for trial dev plan, could you please look into it? Thank you.

trial dev should be working now. pls try again.


[Bug][Proxy] When adding new brokers resolve the DNS name more quickly

Fixes #21206
Motivation
When autoscaling brokers, the current default negative ttl is 10 seconds so it might take up to 10 seconds before the proxy realizes the broker was available and this could lead to errors at the pulsar client if the operation timeout was below 10 seconds .
Similarly this should have positive impact for broker --> bookie (when new bookies are autoscaling).
Modifications
Added a line to the Dockerfile to override the negative.ttl in the java.security file
Verifying this change

[ ] Make sure that the change passes the CI checks.

(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end deployment with large payloads (10MB)
Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:

If the box was checked, please highlight the changes

[ ] Dependencies (add or upgrade a dependency)
[ ] The public API
[ ] The schema
[ ] The default values of configurations
[ ] The threading model
[ ] The binary protocol
[ ] The REST endpoints
[ ] The admin CLI options
[ ] The metrics
[ ] Anything that affects deployment

Documentation

[ ] doc
[ ] doc-required
[X] doc-not-needed
[ ] doc-complete

Matching PR in forked repository
PR in forked repository:

CC: @Technoboy- @tisonkun @lhotari as they touched DnsResolverUtil.java which is related
https://github.com/apache/pulsar/blob/master/pulsar-common/src/main/java/org/apache/pulsar/common/util/netty/DnsResolverUtil.java

I suggest this to be an improvement rather than a bugfix?

I suggest this to be an improvement rather than a bugfix?

Makes sense - done.

Merging..
Thanks for your contribution!

Merging..
Thanks for your contribution!

Thanks @tisonkun - if I wanted to backport this change to active branches (e.g. 3.1/3.0/2.11/2.10 etc) does that make sense?

@frankjkelly thanks for your question!
I'd hear from @codelipenghui @Technoboy- & @eolivelli.
Generally, I'm OK to backport this patch. For the target branches, 3.0 and 3.1 is undoubtedly supported, but I'm not sure for 2.10 and 2.11.
The best way for such discussion would be that you send an email to the<EMAIL_ADDRESS>mailing list. Subscribe following the instruction here, and refer to previous discussions like this one.

I think this is a bug, and I would like to backport this patch to the branch-3.0.


Fix core dump when creating snapshot with rebuild_db flag

Purpose
Fix coredump on rebuild_db flag

Note: according to the devnet node coredumps from the morning we had a bug when we tried to create db snapshot with some period and such snapshot already existed.... the flow is execute pbft block -> if condition met, create db snapshot
https://github.com/Taraxa-project/taraxa-node/blob/develop/src/node/executor.cpp#L189
Not really sure if this is the fix we want.... Technically yes this will prevent exception to be thrown and it should be handled... but the real question is how could this even happen ? Maybe there is more serious problem in the flow -> how could the node try to create db snapshot on some period if such snapshot already existed ? That means we already processed such pbft block, saved it into db and therefore on node bootup this block should have been loaded from db and never be processed again...
It kind of smells that something weird happened here... So yes we should handle it as proposed in this PR, but we might also just hide the real problem by this fix...  @justinsnapp


Bug - CoL - Original combinations missing in CoLDP exports

Describe the bug
Original combinations are missing in the CoLDP exports. For example, the original combination Rhizophagus adustus is missing for Bactridium adustum.
grep 'Rhizophagus adustus' Name.csv returns 0 matches.
To Reproduce
Steps to reproduce the behavior:

When I export Cucujoidea Species File to CoLDP
Original combinations are missing in Name.tsv
The records relating original combinations to accepted names are missing in Synonym.tsv
The name relationship is missing in NameRel.tsv

Expected behavior
Original combinations should be included in Name.tsv, a record should be added to Synonym.tsv to relate them with accepted names in Taxon.tsv, and the name relationship should be expressed in the NameRel table.
Environment (please identify where you experience this bug:

sfg.taxonworks.org

Ping: https://github.com/Sp2000/colplus-repo/issues/86

Makes sense, as this is not a name but a set of relationships in TW.

In thinking about this further, we should also add a record to NameRel with the name relationship  type of basionym.

The original combinations are showing up in Name.csv now, but some of them are missing in Synonym.csv:
Name.csv

ID
scientificName
authorship
rank
genus
infragenericEpithet
specificEpithet
infraspecificEpithet
publishedInID
publishedInPage
publishedInYear
original
code
status
link
remarks

448639
Bactridium adustum
(Reitter, 1873)
species
Bactridium

47142
27-48

FALSE
ICZN

448639/current
Rhizophagus adustus
(Reitter, 1873)
species
Bactridium

FALSE
ICZN

Sample of Synonym.csv showing some original combinations:

taxonID
nameID
status
remarks
referenceID

86701
448534
synonym

87010
448839
synonym

86651
448482
synonym

86789
448623
synonym

86798
454053
synonym

86674
448505
synonym

86753
448584
synonym

86712
448544
synonym

86821
448652
synonym

86821
448652/current
synonym

86789
448624
synonym

86908
448742
synonym

86593
448424
synonym

86593
448424/current
synonym

87017
448848
synonym

87017
448848/current
synonym

Synonym.csv is missing the Rhizophagus adustus original combination below:

taxonID
nameID
status
remarks
referenceID

86809
448639/current
synonym

Here's the testing dataset in the CoL Clearinghouse (which may still disappear), and the otu download from sfg.taxonworks.org.
We're getting closer though!

Original combinations like Rhizophagus adustus Reitter, 1873 aren't getting exported:

It has the new combination:

ID
basionymID
scientificName
authorship
rank
uninomial
genus
infragenericEpithet
specificEpithet
infraspecificEpithet
publishedInID
publishedInPage
publishedInYear
original
code
status
link
remarks

448639
448639
Bactridium adustum
(Reitter, 1873)
species

Bactridium

adustus

47142
27-48

false
ICZN
http://purl.obolibrary.org/obo/NOMEN_0000224

The original combination is added, but the basionym the synonym and basionym relationships have the wrong IDs:
Name.csv
| ID | basionymID | scientificName | authorship | rank | uninomial | genus | infragenericEpithet | specificEpithet | infraspecificEpithet | publishedInID | publishedInPage | publishedInYear | original | code | status | link | remarks
-- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --
current | 448583 | 448583 | Monotoma (Monotoma) longicollis | (Gyllenhal, 1827) | species |   | Monotoma | Monotoma | longicolle |   | 47962 | 762 |   | FALSE | ICZN | http://purl.obolibrary.org/obo/NOMEN_0000224 |   |
expected | 448583 | 448583/694e0ac8cc7bb34451d8b073d94d948e | Monotoma (Monotoma) longicollis | (Gyllenhal, 1827) | species |   | Monotoma | Monotoma | longicollis |   | 47962 | 762 |   | FALSE | ICZN | http://purl.obolibrary.org/obo/NOMEN_0000224 |   |
current | 448583/694e0ac8cc7bb34451d8b073d94d948e | 448583 | Cerylon longicolle | Gyllenhal, 1827 | species |   | Cerylon |   | longicolle |   |   |   |   | TRUE | ICZN |   |   |
expected | 448583/694e0ac8cc7bb34451d8b073d94d948e | 448583/694e0ac8cc7bb34451d8b073d94d948e  | Cerylon longicolle | Gyllenhal, 1827 | species |   | Cerylon |   | longicolle |   |   |   |   | TRUE | ICZN |   |   |
Synonym.csv
| taxonID | nameID | status | remarks | referenceID
-- | -- | -- | -- | -- | --
current | 86753 | 448583 |   |   |
expected | 86753 | 448583/694e0ac8cc7bb34451d8b073d94d948e |   |   |

This seems resolved!


Added in test for getAdminFavorites method in the Talk mapper

CodeClimate indicated the method was missing any coverage at all for that method

Awesome! Thanks @chartjes!


Option to inject VCN/subnet or create VCN/subnet inside the module

Please consider adding an option for creating VCN/subnet inside the module as an alternative to injecting VCN/subnet from outside. It also should include both fully private (with DRG) and fully public scenarios.

Thanks for reporting this.
The asset created is part of a larger framework that makes extensive use of reusable components. VCN, and all network artifacts are decoupled from this as this stiffens the rollout of more flexible components. For such reason, this module won't offer VCN support in the foreseeable future as it'll go against the flexibility spirit of the framework.

Our module work differently. We have the option to use externally injected infra or infra can be deployed inside the module. It looks like here lays the difference between our frameworks.

The module you comment is more of an enclosed solution with the chance of injecting an external networking infrastructure, as of this one offers a completely decoupled delivery that allows this to integrate this upwards using variable and module overloading anyway you need it. Indeed modules are different as the spirit of this framework is achieving the DRY principle as much as possible.


Set up cross-build

, crossScalaVersions := Seq("2.9.2", "2.9.3", "2.10.0", "2.10.1")

And add into .travis.yml

Should be superseded by #18 and #19


User fe profile

[x] Show username & email
[x] Show profile pic
[x] Edit username & email
[x] Edit profile pic

can someone merge this?


Implicit conversion of scalars to tensors

There should be an implicit conversion of common number types to scalar tensors. Instead of:
var points = torch.zeros(6, torch.ScalarType.Float16);
points[0] = torch.tensor(4.0f, torch.ScalarType.Float16);
points[1] = torch.tensor(1.0d, torch.ScalarType.Float32);
points[2] = torch.tensor(7, torch.ScalarType.Int32);

we should be able to write
var points = torch.zeros(6, torch.ScalarType.Float16);
points[0] = 4.0f;
points[1] = 1.0d;
points[2] = 7;

@MovGP0 -- that was the intent at one point, but it created a lot of ambiguity with existing APIs with overloads that took both a tensor and a scalar.
There is an explicit conversion, so you should be able to say:
var points = torch.zeros(6, torch.ScalarType.Float16);
points[0] = (Tensor)4.0f;
points[1] = (Tensor)1.0d;
points[2] = (Tensor)7;

which is slightly less cumbersome.

There is the convention that converting without Information loss should be implicit and converting with Information reduction should be explicit.
The conversion from int/float/double/etc. to Tensor would increase Information and can be implicit, while the conversion from a scalar Tensor to a numeric value would need to be explicit.
Ambiguity shouldn't be a problem in theory. If there is ambiguity, it's usually  better to remove the interfaces that use a primitive type in favor of interfaces that use the Tensor, since there will be an automatic conversion anyway.

Hmm, I'm going to have to think about that one.
I've always thought of that convention in terms of "widening" or "narrowing" conversions, but to implicitly create a collection type from a scalar seems different from widening. I'm not immediately persuaded that it meets the criteria.
That said, TorchSharp breaks many .NET conventions already, so I wouldn't personally let that stand in the way of usability. It's been a while since I looked at what started breaking when those operators were implicit, and I'll take another look.

The specific challenge with indexing is that we can't overload the setters on the value type. Otherwise, we could fix this by taking 'Scalar':
[IndexerName("TensorItems")]
public Tensor this[long i1] {
    get { ... }
    set { ... }
}

[IndexerName("TensorItems")]
public Scalar this[long i1] {
    set { ... }
}

but that's not legal C#.
A possibility (but it feels like a hack) is to invent a type TensorOrScalar, derived from Tensor. The Tensor indexer would then take TensorOrScalar as its value type. Since TensorOrScalar wouldn't conflict with Scalar in any places where it's being used, it should work, at the cost of feeling a bit kludgy.

I can think of two ways of solving the indexer example. Either use a common base class or interface for Scalar and Tensor
[IndexerName("TensorItems")]
public ITensor this[long i1] =>...

or a Discriminated Union
[IndexerName("TensorItems")]
public Union<Tensor, Scalar> this[long i1] =>...

The latter is native in F#
type TensorOrScalar = T of Tensor | S of Scalar

The discriminated union would be cleaner from a theoretical standpoint, since it forces the user to handle all possibilities, but would also break existing logic.

The unfortunate bit is that, for any one of these solutions, the getter and the setters cannot have distinct signatures, so while the setter could take a "combined" type, the getter would have to return the same type, and the calling code would have to discriminate.
var x = t[i];

the static type of x would be Union<Tensor, Scalar> (or ITensor), not Tensor, even though it's always going to be a Tensor instance.

So, the only way I can think of making this work, is to make the operator implicit and then remove the various arithmetic overloads that involve "Scalar" and replace them with overloads that use all the arithmetic scalar types. That is, what you suggested earlier.
That's going to be a lot of monkey-typing / cut-pasting.

@MovGP0,
There's good news here. According to C# master @MadsTorgersen, the trick is to make all the conversion operators implicit, and then also add an implicit operator Scalar -> Tensor. That will cause the compiler to choose the right overloads for things like t + 4711.5, but also allow the direct assignment of .NET scalars to tensor elements.
The Scalar -> Tensor operator should never be used, just be there to guide the compiler:
public static implicit operator Tensor(Scalar scalar)
{
    throw new InvalidOperationException("Implicit conversion from Scalar to Tensor.");
}

With that in place, everything just works, including with the latest F# compiler.
I'll PR this as soon as I've made a few unit tests.

Addressed in PR #574


Compile failure w/ base-4.7

The cabal file advertises compatiblity with base >= 4.7 && < 5, however GHC 7.8 disagrees:
Configuring component lib from crjdt-haskell-0.3.0...
Preprocessing library crjdt-haskell-0.3.0...

src/Data/Crjdt.hs:48:8:
    Could not find module ‘Data.Void’
    It is a member of the hidden package ‘void-0.7.2’.
    Perhaps you need to add ‘void’ to the build-depends in your .cabal file.
    Use -v to see a list of the files searched for.

src/Data/Crjdt.hs:50:8:
    Could not find module ‘Data.Bifunctor’
    It is a member of the hidden package ‘bifunctors-5.4.2’.
    Perhaps you need to add ‘bifunctors’ to the build-depends in your .cabal file.
    Use -v to see a list of the files searched for.

I've already revised the meta-data of the affected releases to use a tigher lower bound on base:

https://hackage.haskell.org/package/crjdt-haskell-<IP_ADDRESS>/revisions/
https://hackage.haskell.org/package/crjdt-haskell-<IP_ADDRESS>/revisions/
https://hackage.haskell.org/package/crjdt-haskell-0.2.1/revisions/
https://hackage.haskell.org/package/crjdt-haskell-0.3.0/revisions/

So there's no need to upload a new release only for the meta-data.
See also http://matrix.hackage.haskell.org/package/crjdt-haskell

Hey,
Thank you! I will update that in the repo.
Regards,
Amar
On Sun, May 28, 2017 at 11:26 PM, Herbert Valerio Riedel <
<EMAIL_ADDRESS>wrote:

The cabal file advertises compatiblity with base >= 4.7 && < 5, however
GHC 7.8 disagrees:
Configuring component lib from crjdt-haskell-0.3.0...
Preprocessing library crjdt-haskell-0.3.0...
src/Data/Crjdt.hs:48:8:
Could not find module ‘Data.Void’
It is a member of the hidden package ‘void-0.7.2’.
Perhaps you need to add ‘void’ to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
src/Data/Crjdt.hs:50:8:
Could not find module ‘Data.Bifunctor’
It is a member of the hidden package ‘bifunctors-5.4.2’.
Perhaps you need to add ‘bifunctors’ to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
I've already revised the meta-data of the affected releases to use a
tigher lower bound on base:

https://hackage.haskell.org/package/crjdt-haskell-<IP_ADDRESS>/revisions/
https://hackage.haskell.org/package/crjdt-haskell-<IP_ADDRESS>/revisions/
https://hackage.haskell.org/package/crjdt-haskell-0.2.1/revisions/
https://hackage.haskell.org/package/crjdt-haskell-0.3.0/revisions/

So there's no need to upload a new release only for the meta-data.
See also http://matrix.hackage.haskell.org/package/crjdt-haskell
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/amarpotghan/crjdt-haskell/issues/5, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ABiTK9Df5RJgfkngRcNrWaWXkb7gzHWiks5r-eadgaJpZM4NoxAf
.


January '24 Topics

sCrypt: https://xiaohuiliu.medium.com/introduce-scrypt-a-layer-1-smart-contract-framework-for-btc-b8b39c125c1a

Fedimint 0.2.1 federate all the things:
https://github.com/fedimint/fedimint/releases/tag/v0.2.1

Bitcoin Clique for offchain payments
https://eprint.iacr.org/2024/025

LNHANCE
https://delvingbitcoin.org/t/lnhance-bips-and-implementation/376

CLN vulnerability

64 bit arithmetic proposal
https://delvingbitcoin.org/t/64-bit-arithmetic-soft-fork/397

Cluster mempool summary
https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393/

Mercury Layer
https://mercurylayer.com/

Rethinking lightning:
https://stacker.news/items/379225?ref=rogerprice.me

Fedimint support in Mutiny:
https://primal.net/e/note13y66pezucap8tjjf80q2mzmc387u6e3jujzk97736lmck972m8ns00s3j7

Replit thinking about using bitcoin and lightning https://twitter.com/amasad/status/1738003006048923697

Peter Todd critique of v3 transactions and anchors in general: https://petertodd.org/2023/v3-transactions-review
Optech summary of discussion: https://bitcoinops.org/en/newsletters/2024/01/10/

LN-Symmetry project update: https://delvingbitcoin.org/t/ln-symmetry-project-recap/359

Posted all these to the list https://austinbitdevs.com/2024-01-18-socratic-seminar-48


feat(RingTheory.DedekindDomain.FiniteAdeleRing): add topology

We endow the finite adele ring with the restricted product topology and show that it makes it into a topological ring.

Yikes, the proofs that addition and multiplication are continuous are long!
I wonder if we can somehow use results in https://leanprover-community.github.io/mathlib4_docs/Mathlib/Topology/Algebra/Nonarchimedean/Bases.html to golf these? I'm actively looking into this.

Closed in favour of #13705 (WIP for now)


Force the name / ipaddress with which Eureka client registers at the server

The issue I have is described here:
https://github.com/Netflix/eureka/issues/737
In Spring Cloud I see several properties where I was hoping to be able to override the hostname or the IP address with which the Spring Cloud Eureka Client registers with the server:
spring:
  cloud:
    client:
      hostname: localhost
      ipAddress: <IP_ADDRESS>

When I set this in the application.yml it still gets overridden by the springCloudClientHostInfo config bean which takes precedence.
The following props do not seem to influence the name/ip being registered.
eureka:
  instance:
    hostname: localhost
    ipAddress: <IP_ADDRESS>

And the third one was with the metadataMap:
eureka:
  instance:
    metadataMap:
      hostname: localhost

Also without effect.
Is this feature missing from the code or from the documentation only?

This looks like a duplicate to https://github.com/spring-cloud/spring-cloud-netflix/issues/573

I think that this is a similar issue and the fix, done by @spencergibb might lead to a workaround, but in my case I have a VPN connection via network interface "ppp2" (ppp[0-9]*) with an IP <IP_ADDRESS>/8 and a local area network with IPs <IP_ADDRESS>/24. The home network is not reachable because the VPN client cuts all routes so that the machine is in the corporate LAN only. In this case I would need a property to specify a NIC name or an order of nic names, something like this:
preferredNics=ppp,eth,lo

When a ppp interface is active, try to use the IP, assigned to the ppp interface
If not, try any ethX interface, starting with eth0
As a last resort, try to use localhost/<IP_ADDRESS>

I'm not sure whether this works for all cases (see the list of interfaces in the ticket Netflix/eureka#737). But setting an IP address or a hostname explicitly works for <IP_ADDRESS>/localhost, i.e. local development only. It does not work if you want yout services to be on the company network, to which you connected via the PPP adapter.

I had a similar problem where I needed a non-local IP because of port bindiung problems on our teamcity server. I solved that by determining the IP on the outside of the component tests with this groovy script in the pom:
<plugin>
                <groupId>org.codehaus.groovy.maven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <source>
                                List interfaces = ["eth0", "en0", "eth1", "en1", "eth2", "en2", "eth3", "en3", "wlan0"]
                                Enumeration nets = NetworkInterface.getNetworkInterfaces();
                                for (NetworkInterface netint : Collections.list(nets)) {
                                    println netint;
                                    if (interfaces.contains(netint.getName())) {
                                        Enumeration inetAddresses = netint.getInetAddresses();
                                        for (InetAddress inetAddress : Collections.list(inetAddresses)) {
                                            if (!inetAddress.isAnyLocalAddress()) {
                                                println("InetAddress: " + inetAddress);
                                                project.properties["hostname"] = inetAddress.getHostAddress().replace("/","")
                                            }
                                        }
                                    }
                                }
                                println "Using the IP: "+project.properties["hostname"];
                            </source>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

This sets a property which is then passed to the service startscript and the component tests. (In this project, we don't use eureka, so setting the IP works without intereference)
You could easily backport this to java code and place it in your main(...) method and set the IP there as soon as the override works.

AFAIK if you set either the eureka.instance.hostname or the eureka.instance.ipAddress those will always be used in the EurekaInstanceConfigBean so if those are not making it to the server in the registration we need to look at how it is used to build the InstanceInfo. I can't see anything obviously wrong there either (look at InstanceInfoFactory), so can you be a bit more specific about what actually happens at runtime that doesn't work for you? Maybe you have an old version of the library because #573 was fixed some time ago?
N.B. there is no bean called "springCloudClientHostInfo" (as far as I know), but there is a low-priority PropertySource in the Environment with that name. It shouldn't affect anything that you explicitly set in a higher priority source, and those properties are only ever used, I believe, to construct a unique identifier, not to construct a URL, so I think there is still some confusion about that.

well #573 was fixed 5 days ago. So this is not released yet, I guess

OK, let's assume if it works for me that this is a duplicate of #573.

The solution somehow worked out for me is to use hostname instead of ip fixed to localhost.
eureka:
instance:
hostname: localhost
preferIpAddress: false
.. and ignore network interfaces of the "problematic" uplinks is the cfg like described here  at all clients
http://projects.spring.io/spring-cloud/spring-cloud.html#ignore-network-interfaces

You can still use the IP Address, but you need a recent Brixton version for it.
I am not sure if it is already in M4 but when you use M5 (as soon as it is released) or the current snapshot, then you're fine.
For example I had problems with the VPN IP breaking my setup, now I can ignore it's interface by:
spring:
  cloud:
    inetutils:
      ignoredInterfaces:
        - tun.*

Yes, i have tested with M4. In my case i get it working with (depends on your interfaces names)
spring:
cloud:
ignoredInterfaces:
- eno.*
- virbr.*


[ios] Can't release app – Publishing operation timed out

What App Center service does this affect?
react-native, ios
Describe the bug
Publishing to TestFlight failed:
Publishing operation timed out. You can verify the actual publishing status from the official store portal or try again later. Support Id: 0f1b40e3-e983-44a6-840b-XXXXXXX
All Appcenter and itunesconnect statuses are green.
Question
How to check detailed information by Support Id ?

@MikePodgorniy We're receiving this error too and can't find anything on Apple's end. How did you resolve this?

@MikeDaniel18 I received a later from itunesconnect with some errors, but I can't find it now

@MikePodgorniy ahh, excellent, thank you. Just received an email. Oddly the build vanished off the face of the earth in AppStoreConnect.


fitBounds problem in async initialize map in leaflet 1.6

Opening a new bug as #3031 is closed.
I just encountered the same issue while migrating from Promise to await/async
Leaflet version: 1.6.0,
Snippet
Before
response.json().then((data) => {
  const a = data[`key1`];
  const b = data[`key2`];
  loadMap(a, b);
});

After
const data = await response.json();
const a = data[`key1`];
const b = data[`key2`];
loadMap(a, b);

Loadmap (Some omiss)
function loadMap(..., latLngs) {
 const mymap = L.map(`mapid`);
  L.tileLayer(...).addTo(mymap);

  const markers = [];
  latLngs.forEach((latLng) => {
    const marker = L.marker(latLng).addTo(mymap);
    markers.push(marker);
  });

  const group = L.featureGroup(markers);
  //mymap.fitBounds(group.getBounds().pad(0.5)) <- This doesn't work
  setTimeout(() => mymap.fitBounds(group.getBounds().pad(0.5)));
}

Hi, great to hear that you find Leaflet useful!
However, this issue tracker is used for reporting bugs and discussing new features. For questions on using Leaflet, please use gis.stackexchange.com or stackoverflow.
If you are really sure that this is a bug in leaflet, or a feature request, please change the wording to make it look like a bug report.

This is a report of a regression of a previously reported bug.
I've attached the steps to reproduce them in the comment!

I've attached the steps to reproduce it in the comment!

No, that's not enough info to reproduce, since async function cannot appear in the top-level scope of a reproducible example. Show me a reproducible example like this, and I'll believe that.


render combine Arbic and English

Hi Mohammed
always English first line, I want use two way combine:

but always render:

text:
سلام world
World سلام
you can test two way?

I get the same result as Visual Studio text renderer I don't know how to regenerate the issue

And the other order:

@armanhossiny I assume you figured it out but if you didn't then just reopen the issue


Update Component Feature Links in READMEs

Issue Description
They are pointing to terra-core's wiki pages we removed in favor of Terra-UI containing the information.
For now, lets point directly to the Markdown page instead of the deployed site page https://engineering.cerner.com/terra-ui/#/contributing/terra-ui/component-standards.
Sync with https://github.com/cerner/terra-clinical/pull/388.

Resolved in https://github.com/cerner/terra-framework/pull/297


Remove analysis from components

Components should be data containers, not computing enviorements. All analysis that are inside component classes should become self-contained analysis.
Example: The VLM caller on AerodynamicSurfaces.

Solved on 2.0


Add replaceAll

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (a7bfac1) 100.00% compared to head (916b643) 100.00%.

Additional details and impacted files
@@             Coverage Diff             @@
##                main       #29   +/-   ##
===========================================
  Coverage     100.00%   100.00%
- Complexity       103       107    +4
===========================================
  Files             20        21    +1
  Lines            248       254    +6
===========================================
+ Hits             248       254    +6

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


DAI display probblem

This will be resolved when we regenerate the thumbnails for the ASLLVD data using the start and end frames

I understand this problem goes back to the ASLLVD data.  I will just change the canonical example where possible when this appears  there.


[New game]: GEOQUIZ_2 👾

🎮 Game Request
Game logic and basic description

GeoQuiz will get you through 13 levels of increasing difficulty and varying challenges (countries, capitols, famous places, etc)
2 game modes, 14 categories, 1120 questions!

Point down the features
Game points
Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @0xabdulkhalid !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

/assign

Hey @0xabdulkhalid ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


docs: add maturity section and review emojis to indicate degrees

Add a section to describe the maturity level of smart contracts.
This one is just the cherry-pick of the commit 4765a677d9a2f425f3aef6230ef278b1d3bccc91 introduced by the dradft PR #343 (but will take some time to finalize).

size-limit report 📦

Path
Size

target/wasm32-unknown-unknown/release/okp4_objectarium.wasm
427.68 KB (0%)

target/wasm32-unknown-unknown/release/okp4_law_stone.wasm
636.59 KB (0%)

target/wasm32-unknown-unknown/release/okp4_cognitarium.wasm
790.47 KB (0%)


export 1 column xlsx file, using function text to column  crashed the file.

Set ignoreEC: false when writing:

Due to a bug in the program, some features like "Text to Columns" will crash Excel on worksheets where error conditions are ignored. The writer will mark files to ignore the error by default. Set ignoreEC to false to suppress.


Update background.js

We should ack after processing the message

I think we want to ack as soon as JSON.parse is successful, independent of further checks in the cb.


chore: remove trailing commas for better UI compatibility

Description
Currently, the UI doesn't pick up correctly on the default values of objects if they have a trailing comma. Removed trailing commas in default values to fix that.
Release required?

[x] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

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

GitHub release
v8.0.0

Your semantic-release bot :package::rocket:


Downgrade to Java 1.8

Please. I need it to run with Minecraft 1.6.4. You don't understand.

I understand, thanks!


Change query file very slow

SQL Operations Studio Version: 0.32.6

Steps to Reproduce:

Open 2 query file: SQLQuery1, SQLQuery2
Run SQLQuery1: return large data
Click to SQLQuery2
Click to SQLQuery1 again --> verry slow

This should be fixed in the next release


Query in $options favored over query in $request

If I call $client->request("GET", "http://google.com/search?q=foo", ["query" => ["q" => "bar"]])
The request that will be issued is GET /search?q=bar. Now that by itself is not a problem (one could argue on this one though), but the problem comes when my client was instantiated as new Client(["query" => ["q" => "bar"]]).
Now even code like $client->request("GET", "http://google.com/search?q=foo") will issue a request with q=bar.
What is even more troublesome is when I have new Client(["query" => []]), it will disregard any query I will put in the $request (but not in the $options).
Ideally I think there's no need for any kind of deep-merging too (which might come as a first solution to the problem), because request middleware feels as a much better solution for this scenario (when I need f.e. to add any kind of query information to every request).
In reality, having some weight of keeping BC, I think it would be better to give preference to the $request object always... or at least in this order $options, $request, $this->config (that would be more BC safe but would also add more code bloat and metal overhead)

I don't think this can change. query is really meant to be a string value that replaces the query string of a request. If you provide an array, Guzzle will simply call http_build_query to convert it to a string. It then takes that string value and overwrites any previously provided query string in the request (e.g., if you provided  a query string in the URI).
Providing a default query value in the client constructor tells Guzzle that you want to send all requests with the query string provided in the constructor regardless of the query string provided in the URI of a request. The only way to override this default setting is to provide a query request option when sending the request.
If you want to add query string parameters to a request in a different manner than what's provided by default, then you'd need to implement a custom middleware.

Well, it's all up to you.
I will reiterate though. I don't want to add a query string parameters to a request in a different manner. It's not a feature request.
I just wanted to point out that:

It's unnatural/misleading that part of the first argument is being discarded when there's some specific value passed in the second (optional) parameter.
It's weird/unnatural/unexpected that part of the first argument is being discarded when there's some specific value passed in the constructor of the Client earlier.

Imagine I had some kind of DB abstraction that would have this kind of logic:
class Connection {
  ...
  public $predicate;
  ...
  function query(Query $q) {
    if ( ! empty($this->predicate)) {
      $q = $q->withWhere($this->predicate);
    }

    ...
  }
  ...
}

And someone could just initialize it like this: $c = new Connection($predicate = "status = 'active'"); so that all queries would be overwritten to have WHERE status = 'active'... even the ones that already had some predicate. It doesn't really make sense for me.
So when I pass an instance of Request to Client#request() I expect exactly this request to be sent.
A feature of adding some query parameters to every request though may be highly demanded by the users, that's expected; but it also is very easily implemented in the userland code (outside of guzzle library), you (as a user of guzzle library) would just need a thin decorator for Client which would modify any incoming Request the way you'd like it to (there's even no need for middleware features of guzzle).
Granted that is a feature intended to easily add query parameters without needing to write another class or anything like that. But this feature is currently broken. If there's a need for a solution at the same time easy to use and powerful enough so that it wouldn't play badly with input arguments, perhaps it would be better to have a couple of already implemented middlewares one of which would be AddQueryMiddleware:
class AddQueryMiddleware
{
    /** @var Query */
    public $query;

    public function __invoke(callable $handler)
    {
        return function (RequestInterface $r, array $options) use ($handler) {
            return $handler($this->applyQuery($r), $options);
        };
    }

    private function applyQuery(RequestInterface $r)
    {
        // $r->withQuery(...);
    }
}

This way there's no confusion between parameters of request() method, and middleware could have some extended functionality such as merging of queries.

The query component of a URI is not always a key value pair string. It can be anything that adheres to the query ABNF.
Even when it is a key value pair, the way in which multiple key value pairs are serialized into a string could vary based on the server you're sending the request to. For example, some servers accept multiple key value pairs of the same name (e.g., "foo=bar&foo=baz"), whereas others might require numerical indices to distinguish them (e.g., "foo[1]=bar&foo[2]=baz"), and some might just require "[]" after a variable name which means the value should be a list of named values.
Trying to take a previously serialized query string component of a URI, parse it (hoping it is a key value pair and that you can identify how to unmarshal it into an some kind of array data structure), then merge in the provided query array or string, and then re-serialize the query component back into the original form -- is a lot of added complexity. It might be convenient to have that functionality built-in to Guzzle, but I'm weary of the added complexity.
Perhaps there could be a robust library that abstracts query strings a bit more for PSR-7 requests and another library that plugs that abstraction into Guzzle.


Added prepend EventStream

I hope I've implemented the PrependEventStream correclty. I wasn't sure if it should be:
return input.subscribe(e -> {
    event = hasEvent
            ? e
            : initial;
    hasEvent = true;
    emit(event);
});

or
return input.subscribe(e -> {
    event = e != null
            ? e
            : initial;
    emit(event);
});

Both work, but I wasn't sure what the finer implications of one would be over the other in cases beyond the controlPressed case that initially made us think of writing this one.

Are you sure any of it works? :D
I can't understand how you get 2 events emitted in your test case.
Shouldn't we make the initial/latest event emitted for all subscribers, not just the first one? (Can be tricky, in the case when the input stream emits immediately on subscription, like e.g. valuesOf.)

Also, testing this should not require any JavaFX stuff like Rectangle, KEY_PRESSED.

Are you sure any of it works? :D I can't understand how you get 2 events emitted in your test case.

:-D I figured the first subscription would immediately receive a "false" and then the Event.fireEvent() would make the actual stream emit a "true," thus the two events.

Also, testing this should not require any JavaFX stuff like Rectangle, KEY_PRESSED.

I initially tried writing a test that used an EventSource<Boolean> It didn't work :-D I didn't think the code was off (of course, I realize now I wasn't right), so I tried using the JavaFX stuff because the use case related to InputEvents

I still don't get how the initial false is emitted immediately.

I still don't get how the initial false is emitted immediately.

Actually, now that I'm looking at the logic behind the code... That's a really good point! X-D

Technically, it shouldn't emit anything because the first EventStream never emits anything, thus it's subscribe method shouldn't run, which means the initial "false" that gets emitted shouldn't happen, right?

I just tested it with an EventSource, and the two possibilities I originally listed both work.

I broke down the EventStream objects to make this mystery clearer. Umm..... How does this pass!?
Platform.runLater(() -> {
    EventCounter counter = new EventCounter();
    final Rectangle rectangle = new Rectangle();
    EventStream<Boolean> controlPressed = new EventStreamBase<Boolean>() {
        @Override
        protected Subscription observeInputs() {
            EventHandler<KeyEvent> handler = new EventHandler<KeyEvent>() {
                boolean hasEvent = false;
                boolean initial = false;
                @Override
                public void handle(KeyEvent e) {
                    if (e.getCode() == KeyCode.CONTROL) {
                        Boolean event = hasEvent
                                ? e.isControlDown()
                                : initial;
                        hasEvent = true;
                        emit(event);
                    }
                }
            };
            rectangle.addEventHandler(KeyEvent.KEY_PRESSED, handler);
            return () -> rectangle.removeEventHandler(KeyEvent.KEY_PRESSED, handler);
        }
    };

    controlPressed.subscribe(counter::accept);

    assertEquals(1, counter.get());
});

Just to make sure your tests are run correctly, does it fail if you change
assertEquals(1, counter.get());

to
assertEquals(99, counter.get());

?

Actually I found something interesting...
Platform.runLater(() -> {
    EventCounter counter = new EventCounter();
    // for some reason, commenting out the rectangle line of code will make this
    //   no longer work with result: Expected 1 but was 0.
    //   Otherwise, it still passes.
    final Rectangle rectangle = new Rectangle();
    EventHandler<KeyEvent> handler = new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent e) {
            if (e.getCode() == KeyCode.CONTROL) {
                counter.accept(3);
            }
        }
    };

    assertEquals(1, counter.get());
});

This passes:
Platform.runLater(() -> {
    EventCounter counter = new EventCounter();
    final Rectangle rectangle = new Rectangle();
    EventStream<Boolean> controlPressed = EventStreams
            .eventsOf(rectangle, KeyEvent.KEY_PRESSED)
            .filter(key -> key.getCode().equals(KeyCode.CONTROL))
            .map(KeyEvent::isControlDown)
            .prepend(false);
    controlPressed.subscribe(counter::accept);

    assertEquals(99, counter.get());
});

So, no, it doesn't fail if I change it to 99.
I'm not very familiar with how to write tests, so why is it not being run correctly?

How do you run them? From the IDE or from gradle. If IDE, then try gradle test from the command line.

I run them from IDE.
However, I've modified the code to something different that I think is actually the right way to implement this idea. The test fails if '99' is used instead of 1 now.


config file relies on tabs and spaces

I built my $XDG_CONFIG_HOME/gopass/config using Nix, but I had to do some ugly fiddling, to make it work:
source = (pkgs.formats.ini { }).generate "gopass.config" {
    …
    "mounts" = {
    "\tpath " = " ${stores}/mcnesium";
    "\tremote " = " ${remote}:passwords/mcnesium.git";
    };

The \t and the spaces around the = were necessary to make the INI format look like this:
[mounts]
    path = /home/mcn/.local/share/gopass/stores/mcnesium
    remote = git@git.qwertz.de:passwords/mcnesium.git

and not like it would generate it without them:
[mounts]
path=/home/mcn/.local/share/gopass/stores/mcnesium
remote=git@git.qwertz.de:passwords/mcnesium.git

With the latter, gopass mounts would simply return that it won't find any configured mounts.
The Nix community argues, gopass would be too picky with the file format, as INI itself would not rely on those tabs and spaces.

You can use the git INI generator https://github.com/NixOS/nixpkgs/blob/cae5d2c7116805121977e4a97616f3e356be15ce/lib/generators.nix#L353

I would argue that Nix has an ... interesting approach.
But I don't think our parser should require the tabs. That seems unnecessary.
The spaces around the equal signs however make more sense and I think we should keep this as is.

I took a look at the current implementation.
Tabs are not required. We're removing any whitespace early on.
Spaces around the equal sign are currently required but I think we could ease the if that's what the INI spec requires.

LGTM thanks :wave:


BUG - Deployment successful although error displayed

Description
We use the open source component Spreadsheet Importer. We do not have the component deployed in the system, but use resourceRoots to use it only in the app itself.
During deployment we get an error that the component was not found in the system and the deployment failed.
However, the deployment was successful and the component can be used normally.
We think we did not have this error with S/4HANA 2021, but not 100% sure.
Steps to Reproduce
Steps to reproduce the behavior:

Implement a component without deployment in an UI5 App ( described like here)
run deploy with deploy-to-abap

Expected results
Successfull Deployment without error
Actual results
Successfull Deployment with error:
error abap-deploy-task Z_********* In Anwendung Z_********* verwendete SAPUI5-Bibliothek/Kompon. cc.spreadsheetimporter.v0_27_1 nicht vorhanden.
SAPUI5 library/component cc.spreadsheetimporter.v0_27_1 used in application Z_********* not exist
Deployment Logs

user: csorder $ npm run deploy -- -y

><EMAIL_ADDRESS>deploy
> npm run build && fiori deploy --config ui5-deploy.yaml && rimraf archive.zip -y

><EMAIL_ADDRESS>build
> ui5 build --config=ui5.yaml --all --clean-dest --dest dist

info ProjectBuilder Preparing build for project ui5.********
info ProjectBuilder   Target directory: dist
info ProjectBuilder   Including all dependencies
info ProjectBuilder Processing 2 projects
info ProjectBuilder Cleaning target directory...
info Project 1 of 2: ❯ Building module project ui5-cc-spreadsheetimporter...
info Project 2 of 2: ❯ Building application project ui5.********...
info ui5.******** › Running task escapeNonAsciiCharacters...
info ui5.******** › Running task replaceCopyright...
info ui5.******** › Running task replaceVersion...
info ui5.******** › Running task minify...
info ui5.******** › Running task generateFlexChangesBundle...
info ui5.******** › Running task generateComponentPreload...
warn lbt:bundle:Builder Module ui5/*******/utils/locate-reuse-libs.js requires top level scope and can only be embedded as a string (requires 'eval')
info ProjectBuilder Build succeeded in 1.29 s
info ProjectBuilder Executing cleanup tasks...

Confirmation is required to deploy the app:

    Application Name: Z_*******
    Package: Z_*******ER_UI
    Transport Request: M******
    Destination: mui
    SCP: false

✔ Start deployment (Y/n)?

… yes
info abap-deploy-task Z_******* Creating archive with UI5 build result.
info abap-deploy-task Z_******* Archive created.
info abap-deploy-task Z_******* Starting to deploy.
info abap-deploy-task Z_******* Z_******* found on target system: true
error abap-deploy-task Z_******* Request failed with status code 400
error abap-deploy-task Z_******* SAPUI5-Anwendung Z_******* wurde nicht erfolgreich hochgeladen oder registriert
error abap-deploy-task Z_******* SAPUI5-Anwendung Z_******* wurde nicht erfolgreich hochgeladen oder registriert
info abap-deploy-task Z_******* Please copy/paste this URL in a browser for more details:
info abap-deploy-task Z_******* http://*******:8000/sap/opu/odata/iwbep/message_text;o=LOCAL/
info abap-deploy-task Z_******* ***** Upload von SAPUI5-App oder -Bibliothek aus ZIP-Archiv in SAPUI5-ABAP-Repository *****
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* Standardmodus aktiv: Kurzprotokoll
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* 126 Dateien in Archiv gefunden.
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* * Parameter *
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* Die Textdateien werden mit Hilfe der Standardeinstellungen identifiziert.
info abap-deploy-task Z_******* Die Binärdateien werden mit Hilfe der Standardeinstellungen identifiziert.
info abap-deploy-task Z_******* Nicht zu berücksichtigende Dateien und Ordner werden mit Hilfe der eingebauten Standardeinstellungen identifiziert.
info abap-deploy-task Z_******* Name des SAPUI5-Repository "Z_*******" wurde aus dem entsprechenden Importparameter identifiziert.
info abap-deploy-task Z_******* Transportauftrag "M*******" wurde aus dem entsprechenden Importparameter identifiziert.
info abap-deploy-task Z_******* Name der externen Codepage "UTF8" wurde aus dem entsprechenden Importparameter identifiziert.
info abap-deploy-task Z_******* Akzeptanz Unix-artiger Zeilenendemarker in Textdateien wurde aus dem entsprechenden Importparameter identifiziert.
info abap-deploy-task Z_******* Unix-artige Zeilenende-Marker in Textdateien werden akzeptiert.
info abap-deploy-task Z_******* Deltamodus wurde aktiviert.
info abap-deploy-task Z_******* Wird im sicheren Modus ausgeführt
info abap-deploy-task Z_*******
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* Bestehendes SAPUI5-ABAP-Repository Z_******* wird aktualisiert
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* UPLOAD FILE   : Component-preload.js (Text)
info abap-deploy-task Z_******* UPLOAD FILE   : manifest.json (Text)
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* * Anwendungsindex wird aktualisiert *
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* Anwendungsprotokollnachrichten:
info abap-deploy-task Z_*******
error abap-deploy-task Z_******* In Anwendung Z_******* verwendete SAPUI5-Bibliothek/Kompon. cc.spreadsheetimporter.v0_27_1 nicht vorhanden
info abap-deploy-task Z_******* Please copy/paste this URL in a browser for more details:
info abap-deploy-task Z_******* http://*******:8000/sap/opu/odata/iwbep/message_text;o=LOCAL/
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* Details finden Sie im Anwendungsprotokoll (SLG1) im Mandanten 000 für Objekt /UI5/APPIDX.
info abap-deploy-task Z_*******
error abap-deploy-task Z_******* SAPUI5-Anwendung Z_******* wurde nicht erfolgreich hochgeladen oder registriert
info abap-deploy-task Z_******* Please copy/paste this URL in a browser for more details:
info abap-deploy-task Z_******* http://*******:8000/sap/opu/odata/iwbep/message_text;o=LOCAL/
info abap-deploy-task Z_*******
info abap-deploy-task Z_******* * Erledigt *
error abap-deploy-task Z_******* SAP_Transaction:
error abap-deploy-task Z_******* SAP_Note: See SAP Note 1797736 for error analysis (https://service.sap.com/sap/support/notes/1797736)
error abap-deploy-task Z_******* Deployment has failed.
error abap-deploy-task Z_******* Change logging level to debug your issue
error abap-deploy-task Z_*******   (see examples https://github.com/SAP/open-ux-tools/tree/main/packages/deploy-tooling#configuration-with-logging-enabled)
ERR! builder:custom deploy-to-abap Request failed with status code 400
Command deploy failed with error Request failed with status code 400

System

Version/Components/Environment
BAS
@sap/ux-ui5-tooling : 1.11.1

Root Cause Analysis
Problem
{describe the problem}
Fix
{describe the fix}
Why was it missed
{Some explanation why this issue might have been missed during normal development/testing cycle}
How can we avoid this
{if we don’t want to see this type of issues anymore what we should do to prevent}

@marianfoo the deploy tooling here is "just the messenger", the error is coming from the underlying UI5_REPOSITORY_SERVICE, maybe @MatthiasSchmalz can help here? Or it is something in the packaging, @petermuessig ?

I thought that you would show the same error that I show in the logs above. There it is also displayed as an error.
Why is the deployment executed anyway? I assume that also executes the backend and you send only the data?

I thought that you would show the same error that I show in the logs above. There it is also displayed as an error. Why is the deployment executed anyway? I assume that also executes the backend and you send only the data?

The tools are just packaging everything and push it to the service. We then either get a happy 200 back or something else. If it is something else, we also receive the log messages from the backend and just push them to the local logger. Everything between sending the request and receiving the response is a black box from the tooling perspective.
Or did I misunderstand your question?

No, this is correct. That's exactly how I suspected it.
Interesting that then an error comes back and deployment is executed anyway.
In my case this error should be ignored anyway, because I don't want to deploy the component. But this is not the problem of Fiori Tools.

Then the influence here is small and the issue can be closed.
Is @MatthiasSchmalz  then a contact person or who could I turn to with this?

Problem not applicable to Fiori Tools

The deploy service also performs some post checks whether the deployment is consistent. They happen after the deployment but can still indicate problems.
In your case it is because a dependency can't be resolved because the 3rd party library is not known.
In your case it looks like you deploy multiple UI5 repositories which all contain a copy of the reuse component in a subfolder, which is not declared as embedded in the root manifest.json.
The best way would be to deploy the reuse component once in an own repository. Then it would be known to the system and unique. Then the error would disappear.

Hi @MatthiasSchmalz
Thank you for your comment.
I deploy a UI5 app with a component in the UI5 app.
I could avoid the error if I specify "embeds".
https://docs.spreadsheet-importer.com/pages/GettingStarted/#error-librarycomponent-used-in-application-does-not-exist
Unfortunately only on on-premise S/4HANA systems.
Unfortunately, this does not work with the BTP ABAP systems (ABAP Environment/ S/4HANA Public Cloud) plus there is also another error on this systems when the system performs checks..
I am currently in the process of creating an example and opening a support case.
Deploying the component directly is an option, but not always the best one in my use case.
I would like to offer both options

Hi @MatthiasSchmalz
i created a ticket 217791/2024.
I can not deploy a app to ABAP Cloud with a component inside of the app.
It works on On-Premise System.


Add missing pointer rederivation in realloc

Rederive the internal pointer when moving the allocation.
This change complements nwf's previous commit db464443.

Sorry, I must be dense; what's the functional impact of this change?  It looks like it's going to just be using the privileged pointer in memcpy, but if we're reaching out of the original bounds, aren't we doing something wrong?

OH! Is the problem that the original bounds might be less than the size-class size computed by alloc_size?  Right, yes, I can see how that would explode.  Let me draft a patch for your assessment.

How do you feel about https://github.com/nwf/snmalloc/tree/lucpt-realloc ?

I went ahead and merged to master.  There's another fix to realloc there, too.

This will do, and I think it is a reasonable caller treatment


NPM package

Please update your NPM package to the latest version. https://www.npmjs.com/package/com.mirasense.scanditsdk.plugin is stuck on 5.7.2 version

The Scandit Cordova plugin is not published to NPM, the package you linked is from a third party and we have no influence over it.

Oh, 'cmon, can you just publish it to NPM, is that so hard?

You can always contact<EMAIL_ADDRESS>with feature requests 🙂


Update to the newest version of microsoft/setup-msbuild

We use microsoft/setup-msbuild in our github action and it's a really old version that's causing warnings in the build logs:
Warning: The set-output command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Rolling to the new version should fix this.

Also need to update:
actions/checkout@v2
darenm/Setup-VSTest@v1


[MSVC] Compiler error in external/nsync/platform/c++11/platform.h

Issue type
Bug
Have you reproduced the bug with TensorFlow Nightly?
Yes
Source
source
TensorFlow version
latest commit
Custom code
Yes
OS platform and distribution
Windows 11
Mobile device
No response
Python version
3.12
Bazel version
6.5
GCC/compiler version
MSVC 19.43.34617.95
CUDA/cuDNN version
No response
GPU model and memory
No response
Current behavior?
I work on Microsoft Visual C++ testing, where we regularly build popular open-source projects, including yours, with development builds of our compiler and libraries to detect and prevent shipping regressions that would affect you. This also allows us to provide advance notice of breaking changes, which is the case here.
Recently this commit https://github.com/microsoft/STL/pull/5105 is revealing an issue in nysnc.
Compiler error with this STL change:
./external/nsync//platform/c++11\platform.h(67): error C2039: 'system_clock': is not a member of 'std::chrono'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.42.34433\include\__msvc_chrono.hpp(286): note: see declaration of 'std::chrono'
./external/nsync//platform/c++11\platform.h(67): error C3083: 'system_clock': the symbol to the left of a '::' must be a type
./external/nsync//platform/c++11\platform.h(67): error C2133: 'epoch': unknown size
./external/nsync//platform/c++11\platform.h(67): error C2512: 'std::chrono::time_point': no appropriate default constructor available
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.42.34433\include\__msvc_chrono.hpp(200): note: see declaration of 'std::chrono::time_point'
./external/nsync//platform/c++11\platform.h(69): error C2676: binary '+': 'std::chrono::time_point' does not define this operator or a conversion to a type acceptable to the predefined operator

I have created an upstream PR (https://github.com/google/nsync/pull/25), which is currently awaiting their reponse.
In the meantime, would it possible for you to add this patch (include_chrono.patch) to https://github.com/tensorflow/tensorflow/tree/master/third_party
and update the following line in https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace2.bzl#L400:
patch_file = ["//third_party:nsync.patch", "//third_party:include_chrono.patch"], ?
I have tested this change and confirmed that there are no issues when building Tensorflow from source.
build log: tf.log
Standalone code to reproduce the issue
#include <mutex>
// #include <chrono> this is necessary in next release

int main(){
	std::chrono::system_clock::time_point epoch;
}

Relevant log output
C:\Users\v-neilchua\Desktop>cl f.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.43.34617.95 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

f.cpp
f.cpp(4): error C2039: 'chrono': is not a member of 'std'
predefined C++ types (compiler internal)(358): note: see declaration of 'std'
f.cpp(4): error C2039: 'system_clock': is not a member of 'std'
predefined C++ types (compiler internal)(358): note: see declaration of 'std'
f.cpp(4): error C3083: 'chrono': the symbol to the left of a '::' must be a type
f.cpp(4): error C3083: 'system_clock': the symbol to the left of a '::' must be a type
f.cpp(4): error C2039: 'time_point': is not a member of 'std'
predefined C++ types (compiler internal)(358): note: see declaration of 'std'
f.cpp(4): error C2065: 'time_point': undeclared identifier
f.cpp(4): error C2146: syntax error: missing ';' before identifier 'epoch'
f.cpp(4): error C2065: 'epoch': undeclared identifier

this issue is no longer appears in the latest commit, closing this issue.


Using this crate with ublox over I2C/UART on embedded

Hi, I think this looks like a very useful project,
Can I use this crate to talk to a ublox device over I2C or UART on an embedded system? Should I write some driver that pushes things back and forth over I2C? Do you have any examples on that?
https://github.com/gauteh/sfy/issues/170
Cheers, Gaute

Hello,
I personaly have used UART on embedded platforms before. You can follow the provided example for that, but have never tested other communication buses

Thank you.


Build failure on Adding TagManager(5.0.8) Nuget pack

When the TagManager package(5.0.8) is added to project via nuget gallery, I am getting build error with the message Error: Error executing task DetectSdkLocations: The type initializer for 'Xamarin.MacDev.AppleSdkSettings' threw an exception.
Whereas when i added Tag Manager(5.0.8) using the Components store , there is no build issues.

@tutugeorge Are you still getting this issue? Also, in which IDE does the error appear?

We have not received the requested information. If you are still experiencing this issue please provide all the requested information and feel free to re-open this issue again. Thanks!

Hi Israel Soto,
We are not experiencing this issue now. Thank you for helping us out.
Regards,
Tutu George
On 16-Nov-2017 5:45 AM, "Israel Soto"<EMAIL_ADDRESS>wrote:

Closed #66
https://github.com/xamarin/GoogleApisForiOSComponents/issues/66.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/xamarin/GoogleApisForiOSComponents/issues/66#event-1344151026,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AVT5DaCvxwOR5az4FYBjgSoIH6W3gC0Nks5s236HgaJpZM4MD5Mi
.


Feature: carry flag for subtract in ALU

Is your feature request related to a problem? Please describe
Is there a reason the ALU always sets the carry to zero for subtraction?
To me it would make more sense if a subtraction A-B behaved as an addition A+(-B). This would make the ALU more similar to how, for example, x86 and ARM behave.
Describe the solution you'd like
Change the ALU such that subtraction outputs a carry.
I'm happy to implement this if you're willing to accept such a change.
Describe alternatives you've considered
No response
Additional context
No response
Are you working on this?
Yes

hey could you pls assign me for this issue

Hello @jxors i can resolve this issue , can u assign this to me ??


Cleanup readme and .toml files so can get CSV dump

This allowed for creating a sheet like https://docs.google.com/spreadsheets/d/1O9wNhnhr13q7HVIe_wAB_F_9YR9A-F_9/edit?usp=sharing&ouid=117939455223568021966&rtpof=true&sd=true so can navigate the schedule for each day.

You now have admin permissions (might need to search your inbox to accept the invite). If the Fleek build preview of the main website & track popup look good, merge away.

Fleek build preview looks good.  I will merge.

I created https://github.com/pathfindertools/ipfs-camp-2022/issues/186 to preserve the """ knowledge for next time.


Vertically centre align menu bar

Description
This PR adds styles to vertically center align menu bar item on cookies landing page, in extension and CLI-dashboard.

Relevant Technical Choices

Testing Instructions

Open cookie landing page on extension and dashboard
The menu bar should be present in the middle of the page, vertically aligned.

Additional Information:

Screenshot/Screencast

Checklist

[x] I have thoroughly tested this code to the best of my abilities.
[x] I have reviewed the code myself before requesting a review.
~This code is covered by unit tests to verify that it works as intended.~
[ ] The QA of this PR is done by a member of the QA team (to be checked by QA).

Fixes #

We will revisit this later, closing for now


Unable to download trivy-java-db using trivy

I am trying to download the trivy-java-db using trivy but everytime I am getting unauthorized error eventhough I have a valid credentials. Using the same credentials I was able to download the trivy-db but not trivy-java-db.
Is there and change in authorization mechanism ?

No, they are completely the same.

Thank you for the response.
I am using the below snippet to download the db. The same snippet (with db config parameters) is able to download the vulnerability db but getting unauthorized error when downloading java db.
withCredentials([usernamePassword(credentialsId: env.TRIVY_CREDENTIALS_ID, usernameVariable: 'TRIVY_USER', passwordVariable: 'TRIVY_PASS')]){
sh '''
trivy_dir/trivy image --reset
TRIVY_TEMP_DIR=$(mktemp -d)
trivy_dir/trivy --username $TRIVY_USER --password $TRIVY_PASS  --java-db-repository container-proxy-lab.services.eden/aquasecurity/trivy-java-db --cache-dir $TRIVY_TEMP_DIR image --download-java-db-only
tar -cf ./javadb.tar.gz -C $TRIVY_TEMP_DIR/java-db metadata.json trivy-java.db
rm -rf $TRIVY_TEMP_DIR
'''
}
I even tried to use the token instead of username but no use. Am I missing anything?


framework-tool: init at unstable-2023-11-14

Description of changes

Add framework_tool from https://github.com/FrameworkComputer/framework-system/.
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 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

[x] Fits CONTRIBUTING.md.

Don't forget to squash the commits after everything.

Don't forget to squash the commits after everything.

Done


Allow printing longer labels

I often find myself wanting to print labels longer than the maximum 18 or 20 characters enforced by the printer website, so I'm making this issue a starting point to discuss how to implement that.  To me it looks like there are two main things that would need to be changed to accomodate this:

The "PRINTING" screen on the microcontroller would need to be changed to indicate the progress of a label that doesn't entirely fit on the little oled screen.
The label-dependent-jingle should shorten itself somehow for very long labels.  Otherwise it just kind of drones on for an uncomfortably long time and doesn't feel "fun".
The website would need to be changed to also render its textbox in a way that doesn't choke for longer strings.  This should be done in a way that doesn't impede its currently very mobile-friendly sizing.

To handle (1), here is what I've come up with for changes to the PRINTING screen:

Add a thin border to the label text, to clearly indicate where the start and stop of the label is.
As the label prints, scroll the label left when necessary to keep the current point of printing progress in frame.
When the label text bleeds off either side of the screen, render a "jagged edge" as a visual indication that the label doesn't end there.
Increase the character spacing by 1px for readability and to better replicate the final print spacing.

Here is a demo I've made that shows this in practice for a long label:
https://photos.app.goo.gl/2bAFpN6qahmURqno8
And here is a demo showing how it looks with a shorter label.
Bonus enhancement: I also made it render glyphs for the special characters (♡☆♪€) instead of the ASCII replacement characters.
https://photos.app.goo.gl/mQt8DijTwiNLRGek8
In addition to allowing longer labels to be printed, I think this makes the screen feel like its "simulating" the physical label being printed a bit better.  @andreisperid, what do you think?

Hi Stephen 👋
That's an interesting demand and I understand that sometimes we just need longer labels :)

1 — device
Your solution works very well. Maybe for the visual indication we could use "..." instead of the jagged edge, because the latter might lead the user to think that's a cutting point.
Maybe something (schematically) like this:

PS: notice the "..." are aligned vertically to the middle and outside the borders, to make sure they are not part of the label's content.
We'd loose some space, but it makes for clarity... What do you think?
The overall readability is much better!
... and about the glyphs, AMAZING 🎉 ! That clunky characters really bothered me! How did you deal with the data transfer through network? Did you keep the characters transfer and just re-converted them for the display?

2 — music
Perhaps we could clamp the music to the first N characters. Do you think the way it is right now it too long already?

3 — web app
This is what concerns me the most, as we'd need a way to easily pan sideways... I tend to think a tridimensional or skeuomorphic approach might work, this way we could compress the extremities. Check out this ref (ingenious!) https://youtu.be/mNow_mqMSRI?t=197 (more here if you want 🤓 https://jackrusher.com/classic-ux/)

I'll give a shot at putting ellipses on the oled screen and see how it looks.  Maybe they only need to be on the right, to save space?  I don't think that would introduce ambiguity about whats going on.  I made the glyphs work by making the webserver multicharacter unicode-aware, which was simpler than it sounds.  The hard part was getting everything to display correctly using different glyphs from different fonts with different heights and widths.   I'll probably put this into a separate PR and check it in, since its useful separately.
For the music, I think maybe 15 notes should be the max?  that makes the jingle a couple seconds.  I think the song should always be the same for the same label and always different for different labels, so I'm thinking something that compresses multiple characters into a single note (with some kind of deterministic hashing)  for longer labels makes sense.  I'll try out a few algorithms and try to keep it simple.
In the web app, I don't think you can do much to visually distorts the label textbox without writing a completely custom control.  Browsers seem to be pretty limited in how you can style a textbox, though I don't have a lot of in-depth knowledge about it, input elements are deceptively complex.

How about like this (with some dramatic shaky cam!):

Although I like the jagged edges a little bit more, I don't feel very strongly about it and think both are clear and work well.  I kind of like only having one side show a continuation indicator ("..." or a jagged edge) since it conveys there is work to be done to the right and none to the left.

Amazing @sabeechen
The visual solution is neat!
Regarding the music: what about 16 notes total instead of 15? My amateur musician background is screaming to have four 4/4 measures :P
The idea to create a compressed music is nice. Perhaps we could create a seed from the hash to distribute the time measures inside these four 4/4 measures. Pretty modular...
About the longer label, maybe a horizontal scrollbar will do it, what do you think? Or any other kind of cue that shows that there is more content than visible, at the same time allowing for easily knowing what you are seeing and navigating laterally.

No problem for combining both issues together.
For the time measures, perhaps for now we can just clip the tones beyond 16 characters, what do you think?
Regarding the scrollbar, all right! If you want, in this case we might collaborate in a separate branch to experiment a few solutions together. For instance: where should be the bar (above or below), the visual aspect, the size, etc... Then after we find out a nice combination, we can merge back in the master branch.

This sounds good to me.  I'll make a branch we can both edit at will, when we land on a solution we can just squash merge the changes into main.
I've done a little experimenting with whats possible.  It seems like there are a couple different paths we could take:

Use the native scrollbar: This is the simplest solution, but the limiting factor will be Firefox, which only allows very limited customization of the scrollbar.  It lets you choose between two widths (thick and thin), choose the track and thumb colors, and is always anchored to the bottom for horizontal scrolling.  To have a consistent appearance across browsers, we would need to style chrome/safari to match firefox's style.
Use a custom scrollbar library (eg simplebar).  I haven't tried it out, but seem to be how most websites do it to get browser consistent scrollbars.  Its just a 5kb javascript file, so maybe that would end up being easier?

To make iterating on the javascript/html/css easier I wrote a little python server that emulates the E-TKT so I can test changes without having to upload it to the device every time, all you have to do then is edit the file and refresh the page.  I'll include that in the branch I make.

Here is the branch: https://github.com/sabeechen/E-TKT/tree/textbox-scroll
I've added you as a collaborator.
To run the little python server (assuming you have python already installed):
pip install aiohttp
python -m src.simulator

And the open up https://localhost in a browser.  I haven't made any UI changes in the branch yet, but I'll start soon.  The simulator also simulates printing progress, settings, etc so we can get all of that UI right too.

I think the custom scrollbar might work, 5kb doesn't seem a problem at all...
I'm curious to see if we might need a thicker scrollbar on mobile (in case there is ambiguity between placing the caret and actually scrolling)
Good idea about the branch and python server, I'll set it up here and will definitely ease the process :)

@sabeechen I've just pushed a proposal to your branch, take a look at 08a94f3

centered text when smaller than width;
automatically aligns to the right when bigger;
improved overall matching of helpers (yellow and blue) and the actual input text;
while printing progress, automatically scroll the bar to keep up with it;
removed full length margin mode (dropdown);
adjusted the size preview to fit three digits (maybe there should be still a max label size?);
using a webkit styling for the scrollbar (not sure if will be cross compatible, lets see);

PS: still not taking in account different browsers, I've tested on chrome for now
Thank you again for creating up the python server script, super useful!

I'm glad the server worked!  I'm always worried about wearing out the flash on microcontrollers, even if I'd have to upload thousands of times and never realistically hit it.  I'm probably just neurotic.
I like the changes, I think it looks cleaner overall and the margin options are much clearer.  My wife was always confused about what the margin options did even when I explain it :)  She loves the little label maker more than I do, by the way.
Browser compatibility is still a problem but solveable think.  Safari desktop and chrome both respect the scrollbar styling, but:

Safari iOS doesn't display a horizontal scrollbar, ever, as far as I can tell in my testing.  You can still swipe to scroll horizontally, so maybe its just how apple does things?  If its the UI paradigm users expect on iOS maybe its a non-issue.
Firefox does its whole own thing for scrollbar styling.  They only give you control over the thumb and track colors but insist on rendering it as an overlay on top of the textbox, which makes it clumsy to click the text on an element this vertically thin.  I suspect they give less control over the styling to prevent abusive websites from making unusable scrollbars, which is a hard reason to hate.  I think it could be fixed by adding an element that pads out the scroll area a little below the text input, so the scrollbar has space to breath when it appears.

I'll see if I can check in something that makes it render consistently on firefox at least.  Its surprising to me that making a scroll area work well is such a hard problem.
Sorry about not checking in anything else to the branch recently like I said I would, I've been swamped lately with IRL.  I'm glad to have an idea of what you'd like it to look like to work from, that'll help me get traction.

Happy to know that your wife has been using it! And also that you find it better now :)
Regarding the browser's tower of babel, I did a quick test here with what I've got in hand:
Desktop (win10)

Chrome: alright;
Firefox: shows the scrollbar perfectly and with the right color, but on the other hand shows the arrows;

Macbook (OS X)

Chrome: alright;
Firefox: didn't test, but expect not much different than the desktop;
Safari: alright (but I've noticed the dropdown menu is fugly with some old "aero" style, will check that later);

Mobile (android12)

Chrome: alright
Firefox: shows no scrollbar at all (which is better than what happened to you)

It wasn't clear if your experience with Firefox was on mobile, but I guess so. Do you think it might be outdated? Strange to have a different behavior than mine, even with different platforms..
As mine is updated and expect it to be the de facto expected bahavior, I will try to add a clue to reinforce that there is content overflowing (affordance to scroll).
I've thought about something similar to the "...", that might appear in on side and/or another to indicate the user might scroll. Pretty easy to script that.
PS: don't worry about the rhythm, this has been really enjoyable, I've been learning a lot throughout the process!

I'm using Firefox desktop, though I've been testing on mobile too.
Firefox verifiably doesn't support the -webkit-scrollbar styles, though I think firefox will use them as a hint if they're present, which is probably why the colors look right.
The overlay scrollbars on desktop I'm seeing are a windows 11 thing (users can disable it), here is what they look like for me:

Its only that big if you mouse over, still not great though.  you're right that on windows 10 firefox renders traditional scrollbars by default.  Who knew all this was so complicated?
On firefox mobile, I can see the scrollbar but it looks like it picked up the lower alpha values you have configured so its almost invisible.  Surprised they let that happen, I put some arrows on the start and end in this screenshot:

I'm very close to having a combination of css and javascript that works everywhere, but I had to change around a bunch of stuff to get there (in a good way I think).  I've got a set of changes I'll submit today, I think you'll like it.

So the difference is between win10 and 11...
For mobile, great, exactly as in mine. You might see there is a small extra padding below the bottom yellow bar, it is intended to give an extra space to the scrollbar (could be bigger in mobile perhaps, to encompass this thinner bar inside?)
Meanwhile, I'm working on that helper ... | TEXT INPUT | ... that is modular and will not conflict with yours.

Its working 279271d

Whenever the tag is bigger than the input, whenever the scroll is not on ends, it shows a "..." at each side accordingly.
I think that helps with the scroll affordance and perhaps we can try to hide the scrollbar on mobile (but keep the "..." on all platforms).
What do you think?

What do you mean what do I think?

I've added a bunch of logic to handle different browser eccentricities:

I've verified that iOS never displays a scrollbar, which I suppose iOS users are comfortable with.
I've added lots of fancy CSS selectors to make the scrollbars as visually consistent on firefox desktop and mobile as possible.  This is accomplished by adding a position: sticky element inside the scroll container that reserves space for the firefox scrollbar to render instead of on top of the textbox like it wants to by default.  Mobile and desktop are handled according to different amounts of space they require.

I also made a number of other quality-of-life changes that handle a bunch of "jank" someone could run in to by messing with the UI:

refactored some javascript to use consistent naming
Fixed a bug that prevented "enter" from starting a label print
Made the textbox always have a set minimum width instead of resizing on odd/even characters for short labels.  In the future, I'd like to make the margin size a parameter passed in to the API (which the device computes) so it becomes impossible to ask the printer to make a label to short to grab and tear off from the machine.
Changed inputmode="search" to enterkeyhint="send" to make mobile keyboards show a meaningful alteternative to "Enter" or "Search".
Simplified the layout of elements near the label textbox (I got frustrated tryign to sort out all the margins and different container alignments).  I'm pretty sure its nearly pixel-perfect to the way it was previously rendered.
Used javascript to compute the needed textbox size instead of an invisible helper element.
Fixed some jankiness that happens when you write a very long label and then delete it.
Anchored the scroll window to the left or right margin if you move the caret position to the beginning or end.
When changing the label text, the scroll window now anchors to the starting or ending margin depending on where you're editing (instead of always at the end)
Automatically hide the scrollbars when they aren't needed to accomodate a larger label.
Synchronized the progress bar to always increment on character boundaries.
Synchronized scrolling of the progress bar while printing to center on the progress bar boundary (similar to how the E-TKT OLED shows it)
Disable scrolling (by the user) and hide the scrollbar while printing is in progress.
Changed the start-up splash animation to give it a little more "ker-chunk"

Here are examples of how each scrollbar renders on each platform.  True consistency could only be achieved by someone truly mad, but I think the scrollbars renders useable and well across the board.
Android Chrome

Android Firefox

iOS chrome

iOS Safari

MacOS Chrome

MacOS Firefox

MacOS Safari

Win10 Chrome

Win10 Firefox

Win11 Chrome

Win11 Firefox

Wow, impressive @sabeechen ! It is really neat and your attention to details is amazing!
Just thinking here about how we could keep everything below the text box in the same place independently if there is a scrollbar or not. Right now everything is pushed below.
Maybe compute the height for the "text-form-scroll", then recalculate it's own margin?

Done here, though I accomplished it by setting the margin of #text-form-border instead.  I also got rid of the height shifting when printing starts/finishes.

That's great Stephen, thank you!
I was reviewing our whole discussion and the music was left to be done - a65b424
And I felt maybe it would be a good idea to limit the number of chars input to 247 per round, which falls just below 1 meter (helps keep the length preview under under 999, avoid the extra digit that breaks the layout) - ad83a29
Do you want to create a pull request for me to merge? Or is there anything else you would like to do before closing the issue?

While testing here I thought that it would be a nice idea to add a click functionality to the "..." so they jump to the extremities. It might be useful with super lengthy labels.

Its a nice convenience feature, I think.  Mind if I add a slight highlight to the "..." background shadow on hover?
I completely forgot about the music!  I see you already submitted the change to limit to 16 characters, but I want something more fun!  Some options I've been considering:

Idea 1: Any label under 10 characters is unchanged.
For longer labels the length of each note gradually shortens from 50ms/note to 5 ms/note starting at the 5th character/note.  The idea would be to make a very longer label (30-50 ish character) play for less than a second and cescendo into a caucaphony.  I'd need to experiment to see if it actually sounds good naturally.
Idea 2: "Compress" anything longer than 16 notes into 16 notes.  Id iterate through the label, alternating forwards and backwards, and re-hash each character into a different note.  so for a 17 char label (vs 16), only the last note would be different, for 18 characters, the last two would be different and so on.  This would have the advantage of sounding very similar to the way notes play now.

Oh and naturally:

Option 3: Leave as is, 16 note cutoff works fine.

I've got some samples of speeding up the music (audio only).  I played around with different speeds and feel like this matched what I had in my head initially:

Longest note is 100 ms
Shortest note is 20ms
After the 16th note, each note is 2ms shorter
Pause is always 1/2 the note duration

Label: "Short Label"
https://user-images.githubusercontent.com/21026774/235263355-4913644f-f6ee-4dd5-9d13-25be963bc6be.mp4
Label: "longcat can be really long but only if you scratch his belly" (62 chars)
https://user-images.githubusercontent.com/21026774/235263441-4fb7499a-0f90-4d80-bf80-fa18cd6ca3dc.mp4
I think its kind of fun but I'm not married to it.  Hearing the crescendo and then the ker-chunk of the machine kind of fits together well, imho.  What do you think?

Nice idea about the background shadow, go for it!
About the music: I love it!
And even before reading your point on the continuity between sound and the stepper, I had the same impression. That's a nice conceptual connection!

Both are done.  I also configured the scroll tips to hide while printing, since the UI manages scrolling while printing.
You feel like there is anything left?  I'm eager to merge.

Let's do it!

Nice job @sabeechen ! 😃