Where is BlazorMonacoGlobals?

I couldn't find "BlazorMonacoGlobals" stated in the document?
Is it moved to BlazorMonaco.Editor.Global or am I missing it?
At least Intellisense and search box on GitHub didn't show the result.

Same question here please update docs

Fixed this issue in PR #97 together with some other small clean-up issues. Thanks a lot!


Changed yaml.load to yaml.safe_load in core.py

The newer versions of pyyaml produce a warning when using yaml.load.  This switches to yaml.safe_load, which disables some features that we aren't using.

Pull Request Test Coverage Report for Build 3849

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 94.967%

Totals

Change from base Build 3811:
0.0%

Covered Lines:
2000

Relevant Lines:
2106

💛  - Coveralls


Add option to load clang-tidy plugins

libc++ has started using the clang-tidy option --load and a shared library to be able to run libc++-specific clang-tidy checks. It would be great if one could load the library to get warnings through the language server and being able to apply fixit-hints.

Some existing discussion of implementation challenges around loading plugins can be found at https://reviews.llvm.org/D92155

which clang-tidy checks are you talking about? are they not part of default clang-tidy checks in LLVM for some reason?

No, they are clang-tidy checks specifically for libc++. They are implemented here. We don't want them in clang-tidy, since they are very project-specific and having them upstream gives us less flexibility.

I see, as explained in the link provided by @HighCommander4, having plugins/shared-libraries in clangd are really hard, some of the arguments actually goes for your way of using it in a system installed clang-tidy. e.g. there are no guarantees that a new release of clang-tidy will keep the interfaces you're using stable, hence loading your plugin might actually result in crashes, unless it's version locked.

We don't want them in clang-tidy, since they are very project-specific and having them upstream gives us less flexibility.

They're still part of upstream and they wouldn't be the first project-specific checks in clang-tidy either (see https://github.com/llvm/llvm-project/tree/main/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp, and bunch of others like abseil, fuchsia, boost, linuxkernel, ...)
The best course of action I can see for these are, actually having them as a regular module in clang-tidy, that way both clang-tidy CLI and other clang-tools like clangd would be able to report these findings. You can still keep the plugin setup you have in your configuration as well and load it dynamically (but you might want to have a different check name).
Closing this as we're not planning to add support for loading plugins, and I don't think it's something we should be prioritizing any time soon.

They're still part of upstream and they wouldn't be the first project-specific checks in clang-tidy either

The best course of action I can see for these are, actually having them as a regular module in clang-tidy, that way both clang-tidy CLI and other clang-tools like clangd would be able to report these findings.

This may be applicable to libc++ specific clang-tidy check, but it is not applicable to out-of-tree clang-tidy plugins in general. There are various reasons why clang-tidy check can't be upstreamed (its application is too niche, legal issues for closed source projects, etc.), so not being able to use out-of-tree clang-tidy plugins with clangd undermines the whole idea of out-of-tree plugins for clang-tidy.

loading your plugin might actually result in crashes, unless it's version locked.

Regarding possible crashes, clangd's troubleshooting instructions already have instructions on turning clang-tidy off to separate clang-tidy crashes into their own category. I admit, that it may be a problem. However, it seems that it should be solved on LLVM side (validating plugin's expectations of API/ABI when loading).
I wasn't aware that clang-tidy can do out-of-tree plugins now and at first I was excited to try it out, feeling hopeful about the outcome of this discussion, but categorical "no" from clangd maintainers make clang-tidy plugins less appealing.

This may be applicable to libc++ specific clang-tidy check, but it is not applicable to out-of-tree clang-tidy plugins in general. There are various reasons why clang-tidy check can't be upstreamed (its application is too niche, legal issues for closed source projects, etc.), so not being able to use out-of-tree clang-tidy plugins with clangd undermines the whole idea of out-of-tree plugins for clang-tidy.

I agree that it would be a nice addition, but as mentioned it comes with a lot of complications and we don't really have any signals indicating this is an important use case to justify eating that complexity.

Regarding possible crashes, clangd's troubleshooting instructions already have instructions on turning clang-tidy off to separate clang-tidy crashes into their own category. I admit, that it may be a problem. However, it seems that it should be solved on LLVM side (validating plugin's expectations of API/ABI when loading).

There is no such thing as just clang-tidy plugins, -load will imply loading "all clang plugins" (even if that option we have is changed to disable loading clang-tidy plugins at startup somehow). There are projects that use these clang-plugins and things work for them because they have a toolchain they control and both the plugin and clang are version-locked, but developers acquire clangd from different sources most of the time. Hence we had this version discrepancy (and also problems around the way clangd runs compiles, which is different than clang) issues in the past and had to turn off loading plugins for good.

There are projects that use these clang-plugins and things work for them because they have a toolchain they control and both the plugin and clang are version-locked, but developers acquire clangd from different sources most of the time. Hence we had this version discrepancy (and also problems around the way clangd runs compiles, which is different than clang) issues in the past and had to turn off loading plugins for good.

These projects go to great lengths implementing their own plugin(s), adding a version-locked clangd to the toolchain is a relatively small extra step that won't be a problem. I believe it is safe to assume that developers using plugins and developers "aquiring clangd from different sources" are (almost) disjoint sets, so it can be expected that "discrepancy issues" will be rare enough. Projects using plugins can also be expected to have high level of clang-specific expertise in-house, this will also reduce the rate of false positives reaching clangd maintaners.

These projects go to great lengths implementing their own plugin(s), adding a version-locked clangd to the toolchain is a relatively small extra step that won't be a problem.

Couldn't such a project use a downstream of clangd that incorporates the new check at build time?

These projects go to great lengths implementing their own plugin(s), adding a version-locked clangd to the toolchain is a relatively small extra step that won't be a problem.

Couldn't such a project use a downstream of clangd that incorporates the new check at build time?

Technically, yes. Same can be said about clang-tidy and clang plugins, they can all "live" in LLVM repo forks. According to you, there was no need for clang-tidy and clang plugin infrastructure.
I can also imagine that developing a plugin inside a small independent repo is much simpler than doing so inside a fork of the huge LLVM monorepo.

I'd like to vote for this issue.
I develop clang-tidy checks for a very large codebase.  We already build LLVM and make it centrally available for our developers.  We change/extend our clang-tidy checks much more frequently than we update our compiler, so we develop our checks as a stand-alone module.  We effectively already have "a version-locked clangd [in] the toolchain".
In short, I fit exactly into the _ developers using plugins_ category that @i-ky described.


Access the dataset as csv

Describe the bug
Till April 13th the dataset was accessible programmatically as
URL <- 'https://docs.google.com/spreadsheets/d/e/2PACX-1vSc_2y5N0I67wDU38DjDh35IZSIS30rQf7_NYZhtYYGU1jJYT6_kDx4YpF-qw0LSlGsBYP8pqM_a1Pd/pub?output=csv'

data <- read_csv(URL)

Data is no longer accessible.
Is there any way I can read the data programmatically?
I know this is probably not the right place to raise this issue, but I can't find any info about the data hosts where I can ask for help. It would be great if the data set was hosted on a Github repository similar to John Hopkins University's repo of the world Data.
I can volunteer to contribute to host and manage the dataset repo, but doesn't seem to find a way to do that.. the telegram channel is more like a message board it seems.

All the data is available through APIs.
Please check out https://api.covid19india.org/
And this is probably what you are looking for :
library(jsonlite)
url <- "https://api.covid19india.org/raw_data.json"
json <- fromJSON(txt=url)
raw <- json$raw_data
View(raw)

Please do comment if you need any more information.

Thanks a lot!
I have used the data to create a small dashboard shared open source.
https://impactech.github.io/COVID19_India/


[WFCORE-5406][WFLY-14793] Adding required --add-opens & --add-exports clauses

https://issues.redhat.com/browse/WFLY-14793

This passed CI yesterday as part of #14304 so I'm going to go ahead and merge it.


Issue Trying To Run Python Mapbox Example

Hi folks - I seem to be having a variant of this issue (https://github.com/mapbox/mapboxgl-jupyter/issues/10).
I am trying to run the example from here. The map is displaying fine. However, the points/data are missing.

Some points worth mentioning:

I've ran this in Google Colab and on my own Jupyter machine to make sure its not an issue with the environment. I've also ran in Python 2 and 3.

There is a javascript error in the console whenever I run the code. See below.

Thanks in advance for your help!
Also see my code below:
import os

import pandas as pd

from mapboxgl.utils import create_color_stops, df_to_geojson
from mapboxgl.viz import CircleViz

# Load data from sample csv
data_url = 'https://raw.githubusercontent.com/mapbox/mapboxgl-jupyter/master/examples/data/points.csv'
df = pd.read_csv(data_url)

# Must be a public token, starting with `pk`
token = 'pk.eyJ1IjoiYnVzaW5lc3NvZmNpdGllcyIsImEiOiJjanVqdHF0NHQxazczNGFxamZydmQ2NmRzIn0.oZStPDr7CsZIFTemgdr-cw'

# Create a geojson file export from a Pandas dataframe
df_to_geojson(df, filename='points.geojson',
              properties=['Avg Medicare Payments', 'Avg Covered Charges', 'date'],
              lat='lat', lon='lon', precision=3)

# Generate data breaks and color stops from colorBrewer
color_breaks = [0,10,100,1000,10000]
color_stops = create_color_stops(color_breaks, colors='YlGnBu')

# Create the viz from the dataframe
viz = CircleViz('points.geojson',
                access_token=token,
                height='400px',
                color_property = "Avg Medicare Payments",
                color_stops = color_stops,
                center = (-95, 40),
                zoom = 1,
                below_layer = 'waterway-label'
              )
viz.show()

Ignore - Found solution here: https://github.com/mapbox/mapboxgl-jupyter/issues/50


Headings

I propose the following syntax:

# Document Title (only one allowed)
## Section
### Subsection
####  Subsubsection

+1
Three degrees of sections are really important in legal documents with nested paragraphs


fit_generator (tf.keras.utils.Sequence) is not supported for models compiled with tf.distribute.Strategy

System information

OS Platform and Distribution: Arch Linux (Linux-5.3.7-arch1-1-ARCH-x86_64-with-arch)
TensorFlow installed from (source or binary): binary
TensorFlow version:  2.0.0
Keras version: 2.2.4-tf
Python version: 3.7.4
GCC/Compiler version: 9.2.0
CUDA/cuDNN version: cuda 10.1.243-1 / cudnn <IP_ADDRESS>-1
GPU model and memory: 2x GeForce GTX 1080 Ti 11GB

Describe the current behavior

Model.fit_generator() invoked with generator dervied from tf.keras.utils.Sequence
execution fails with NotImplementedError

strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
         model = OCRNet.build(train_gen.output_size, img_w, img_h, max_text_len)
         adam = Adam(lr=lr, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
         model.compile(loss={'ctc': lambda y_true, y_pred: y_pred}, optimizer=adam, metrics=['accuracy'])
history = model.fit_generator(
         generator=train_gen,
         epochs=epochs,
         validation_data=val_gen,
         use_multiprocessing=True,
         workers=6,
         callbacks=callbacks)

Other info / logs

Traceback (most recent call last):
File "src/models/train.py", line 119, in
main()
File "src/models/train.py", line 112, in main
fit(model, train_gen, val_gen, epochs, callbacks)
File "src/models/train.py", line 39, in fit
callbacks=callbacks)
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 1277, in fit_generator
raise NotImplementedError('fit_generator is not supported for '
NotImplementedError: fit_generator is not supported for models compiled with tf.distribute.Strategy.

I replaced model.fit_generator() by model.fit() (fit_generator will be deprecated in next releases).
But I get a different error:

Traceback (most recent call last):
File "src/models/train.py", line 116, in
main()
File "src/models/train.py", line 109, in main
callbacks=callbacks)
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 728, in fit
use_multiprocessing=use_multiprocessing)
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py", line 224, in fit
distribution_strategy=strategy)
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py", line 547, in _process_training_inputs
use_multiprocessing=use_multiprocessing)
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py", line 606, in _process_inputs
use_multiprocessing=use_multiprocessing)
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/data_adapter.py", line 606, in init
nested_dtypes = nest.map_structure(lambda t: t.dtype, peek)
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/util/nest.py", line 535, in map_structure
structure[0], [func(*x) for x in entries],
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/util/nest.py", line 535, in
structure[0], [func(*x) for x in entries],
File "/usr/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/data_adapter.py", line 606, in
nested_dtypes = nest.map_structure(lambda t: t.dtype, peek)
AttributeError: 'str' object has no attribute 'dtype

removed string type from generator output - code works now

fit_generator将在以后的版本中弃用,不会吧，这个API我认为很好用的
这个错误要怎么解决呢？如果数据很大，不能一次性存到内存中
使用tf.data来实现吗?

I replaced model.fit_generator() by model.fit() (fit_generator will be deprecated in next releases).

Where did you hear this?

我也认为fit_generator will be deprecated in the future
现在fit也支持生成器，多GPU的话，直接用fit就可以


GitGuardian has detected the following SMTP credentials exposed within your GitHub account.

That password is fake.

Just a way by GitGuardian to revoke evidence of the leak if the secret is in the last commit:

Remove from file
Edit previous commit
Force push changes

git add FireReporter/App.config
git commit --amend
git push --all --tags --force

If the secret is beyond the last commit: Follow these steps


Details for the installation github page

It would be nice to know what all packages will be installed (when installing F3DASM) and how much space it would take up.

added a note to the documentation getting started which notifies the user that depenencies will be installed and refer to requirements.txt file


Link transactions to block explorer web pages

Links the transaction blocks in the swap modal to the actual transaction pages on the block explorers.
If we ever link to a currency we don't have a block explorer URL for it will fallback to https://www.google.com/search?q=${symbol} Transaction ${txid}.
Also added a isEtomic() utility method to supported-currencies.js.

The hover styles are just the default link hover styles. I haven't changed them but I think they look pretty good as is.
Close-up:

@sindresorhus better? https://github.com/atomiclabs/hyperdex/pull/453/commits/1a1665baaf2fba7a5dbddb05b56e31ec11228901


Automated Package Upgrade

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


BUG: Department drop down showing # not name

Once a dataset is saved the Department field is converted to a number.

Would you mind providing the URL of the page this occurred on?

https://internal-data-portal.ynet.gov.yk.ca/datasets/yg-buildings/description/manage

Thank you!


⚠ Phillips Ormonde Fitzpatrick - IPSys has degraded performance

In ae1216b, Phillips Ormonde Fitzpatrick - IPSys (https://ipsys.pof.com.au) experienced degraded performance:

HTTP code: 200
Response time: 9653 ms

Resolved: Phillips Ormonde Fitzpatrick - IPSys performance has improved in ab6d26e after 10 minutes.


Update README to reflect correct documentation for signing.signTx

@christianlundkvist Merge at will if I've got the details correct!

Great, thanks!


Use on/trigger event

Not sure whether this is 100% correct.

Codecov Report

Merging #24098 (892beb8) into main (f521e88) will decrease coverage by 0.06%.
The diff coverage is 39.34%.

:exclamation: Current head 892beb8 differs from pull request most recent head 55667d3. Consider uploading reports for the commit 55667d3 to get more accurate results

@@            Coverage Diff             @@
##             main   #24098      +/-   ##
==========================================
- Coverage   47.14%   47.09%   -0.06%
==========================================
  Files        1149     1161      +12
  Lines      151446   153912    +2466
==========================================
+ Hits        71397    72479    +1082
- Misses      71611    72910    +1299
- Partials     8438     8523      +85

Impacted Files
Coverage Δ

cmd/dump.go
0.64% <0.00%> (-0.03%)
:arrow_down:

cmd/embedded.go
0.00% <0.00%> (ø)

cmd/mailer.go
0.00% <0.00%> (ø)

cmd/manager.go
0.00% <0.00%> (ø)

cmd/manager_logging.go
0.00% <0.00%> (ø)

cmd/migrate_storage.go
5.76% <0.00%> (-0.12%)
:arrow_down:

cmd/restore_repo.go
0.00% <0.00%> (ø)

cmd/web.go
0.00% <0.00%> (ø)

models/actions/run.go
1.63% <0.00%> (-0.10%)
:arrow_down:

models/actions/runner.go
1.44% <ø> (ø)

... and 57 more

... and 140 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

I think it's correct 👍

What's the benefit?

on could work on those dynamiclly added elements but click not.

What's the benefit?

on could work on those dynamiclly added elements but click not.

No, that would only go for delegated listeners which these are not.
Still I think it's a good change and we should probably install this eslint rule later to eliminate all such cases.

Actually I think that eslint plugin can come later. Adding new plugin is a bit of a more  involved task as each rule needs to be evalutated etc.

@silverwind
Try adding it in https://github.com/go-gitea/gitea/pull/24198

Change to draft as I think we need to fix all lint error in https://github.com/go-gitea/gitea/pull/24198

Let's continue in https://github.com/go-gitea/gitea/pull/24198, it's more thorough and does the same.


Feature/hide projects with 0 hours

@etagwerker @mauro-oto this is fixing #32, please check it out. Thanks! :beers:

@schmierkov awesome :+1: thanks!


Using internal AES engine for f/w decryption

Can you comment if the AES engine (Deobfuscation engine) in CAliptra Crypto block can be used to decrypt the incoming encrypted firmware?
If yes how the cipher text and the encryption key can be supplied to this AES engine?
Regards
Rahul

Thanks for the response. We are exploring on converting the existing passive mode Caliptra to active mode and exploring also for some operations like Caliptra after fetching the encrypted firmware from Flash decrypts it before further validation/authentication.
My queries are as below:

In Caliptra-rtl/src folder there is aes folder and doe folder is this aes source code used in Caliptra?
https://github.com/chipsalliance/caliptra-rtl/tree/main/src
Does the existing DOE block support AES256 algorithm for encryption and decryption?
Does the source code in aes support support AES256 algorithm for encryption and decryption?

Hi Bharat,
Thanks for the response. Just for clarification,I understand that there are no paths to these IPs DOE and AES in current Caliptra IP to use them for external consumption or exposure. But, would like to know what capabilities and difference both these have.
Capability in terms of supporting support AES256 algorithm for encryption and decryption.

WRT the De-obfuscation engine details given in Hardware Spec link below, I think it does support AES for encryption/decryption, can you please comment.
https://github.com/chipsalliance/caliptra-rtl/blob/main/docs/CaliptraHardwareSpecification.md
Below content:
To protect software intellectual property from different attacks and, particularly, for thwarting an array of supply chain threats, code obfuscation is employed. Hence, the de-obfuscation engine is implemented to decrypt the code.
Advanced Encryption Standard (AES) is used as a de-obfuscation function to encrypt and decrypt data [4]. The hardware implementation is based on Secworks/aes [1]. The implementation supports the two variants: 128- and 256-bit keys with a block/chunk size of 128 bits.
The AES algorithm is described as follows:
The key is fed to an AES core to compute and initialize the round key
The message is broken into 128-bit chunks by the host
For each chunk:
The message is fed to the AES core
The AES core and its working mode (enc/dec) are triggered by the host
The AES core status is changed to ready after encryption or decryption processing
The result digest can be read before processing the next message chunks

Can we repurpose the existing doe/aes RTL modules, by adding them as new slave on AHB-L to perform encryption/decryption on f/w fetched from Flash. We are exploring active mode implementation and hence the Flash (QSPI) is accessed by RISC-V (in Caliptra).
WRT above answer I understand these doe/aes RTL modules do not have side channel mitigation capability. But, apart from this which of the doe/aes is better suitable candidate for mentioned purpose.
The doc covers the kind of AES support by doe but there is no mention of what capability aes module have. Why there are two different modules with different set of files?
Kindly address this - as we dont have any other AES IP available we would like to experiment with this.

We did not design/implement/validate it for that purpose. May be a next gen
version will have it.
On Thu, Feb 8, 2024 at 9:38 PM RJMJJJ @.***> wrote:

Can we repurpose the existing doe/aes RTL modules, by adding them as new
slave on AHB-L to perform encryption/decryption on f/w fetched from Flash.
We are exploring active mode implementation and hence the Flash (QSPI) is
accessed by RISC-V (in Caliptra).
WRT above answer I understand these doe/aes RTL modules do not have side
channel mitigation capability. But, apart from this which of the doe/aes is
better suitable candidate for mentioned purpose.
The doc covers the kind of AES support by doe but there is no mention of
what capability aes module have. Why there are two different modules with
different set of files?
Kindly address this - as we dont have any other AES IP available we would
like to experiment with this.
—
Reply to this email directly, view it on GitHub
https://github.com/chipsalliance/caliptra-rtl/issues/395#issuecomment-1935363910,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABXGILVLEKKTH6IZPGGK7I3YSWY4HAVCNFSM6AAAAABCFB5NEKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZVGM3DGOJRGA
.
You are receiving this because you commented.Message ID:
@.***>

Thanks for reply Bharat,
I understand the usage of these IPs with current Caliptra version. But why there are 2 different set of RTLs used for same AES functionality? Can you please help to understand the difference in these 2.
Thanks
Rahul


Mail teleporter not working

Description
I've waited 60+ minutes after turning the teleporter on and the station gotten not a single package.
This has happened to me on a shift in Fland and one in Oasis.
Reproduction
Turn on Mail teleporter, go AFK and cook dinner, come back to a mailess mail room. :(
Screenshots

Additional context
I recall the mail system working fine on Oct 9th so it may be a stemming from one of the merged requests done on Oct 10th.

This got fixed recently, this issue can be closed I reckon!


Unable to scrape kube-controller-manager and kube-scheduler metrics

Starting from 1.17, kubeadm is not exposing anymore kube-controller-manager and kube-scheduler metrics over the insecure port (respectively TCP/10252 and TCP/10251) this makes our current ServiceMonitor configuration unable to properly scrape such targets.
Refs:

https://github.com/kubernetes/kubernetes/pull/92720
https://github.com/kubernetes/kubeadm/issues/2202

Closed with #52

Thanks for spotting and solve the issue Luca!


chore: Reduce imports to Data.Fin.Basic

By using Nat and Int specific lemmas, we can reduce the import to Data.Fin.Basic to almost nothing.
I haven't gone all the way to removing all dependencies because that involves moving declarations around and I would like to keep the diff clean.

Maybe @semorrison can weigh in 😉

omega isn't going anywhere. I think it's fine to use here.

bors d+

bors merge


Add ability for mepo diff --name-only

Per @sdrabenh, he would like the ability to do mepo diff --name-only a la git diff --name-only

@mathomp4 I do not see why this ticket was closed.


Release v1.10.0

User Story

As a [user role below]:
Release manager

I need to:
create a release branch, one or multiple release candidates, and the final v1.10.0 release of the IBM.com library

so that I can:
release the next version of the IBM.com library to the public

Additional information

Release Management Playlist: https://ibm.ent.box.com/notes/497596874716
Release Plan/Pinned issue: https://github.com/carbon-design-system/ibm-dotcom-library/issues/2408

Acceptance criteria

Release branch created per timeline
v1.10.0 of the IBM.com Library released per timeline

@asudoh let me know if you want to have me walk you through the steps for this, I can set up a time when we do the code freeze/rc.0 release. It's scheduled for the 14th for the code freeze.
cc: @RobertaJHahn , Since this is the last day of the sprint, we can probably get this started with the code freeze, then carry over to sprint 17 when we're in regression.

@jeffchew Yeah it'll be great - Thanks!


Deprecate project

https://github.com/microsoft/PowerToys/pull/23645 implemented the same feature.

Good news, thanks for letting me know!

@ChaseKnowlden Seriously, why would he deprecate the project because of that? Seriously, a very strange and disrespectful issue you opened.


Support PancakeSwap's Permit2 approvals

For whatever reason, PancakeSwap decided that it would be a great idea to deploy their own version of Permit2 instead of using the EXACT SAME already deployed official Permit2 contract. See https://github.com/pancakeswap/permit2 and https://developer.pancakeswap.finance/contracts/permit2/addresses for the deployment address. I'm not entirely sure how popular this is compared to the official Permit2 contract, so I'm not sure how important it is to support these approvals, but we probably should support them at some point.

I noticed that some other chains also had alternative Permit2 implementations, so we generalised our Permit2 handling to work with any Permit2 address.


metarelate.net

📰 Custom Issue

The link check is failing against metarelate.net, which is linked from the 3.2 whatsnew

I'm in favour of 9e8d5a2a742cad12f3531c587735e736e1b47535


Add new user 0016 Christoph Muschner

Create numerical identifier for Christoph Muschner @chrwm

Is there a reason why this is not yet merged?


repacking can corrupt a repo when the storage provider is being a jerkface

Output of restic version
restic 0.14.0 compiled with go1.19.2 on freebsd/amd64
How did you run restic exactly?
restic -r rclone:pCloudMedia:pictures prune --repack-uncompressed --compression max --max-repack-size 100G
What backend/server/service did you use to store the repository?
rclone, which in this case is backed by pCloud.
Expected behavior
If restic detects an error, retry harder, or somehow abort the repack so that the repo isn't left broken.
Actual behavior
Part of the output for the prune --repack-uncompressed command was:
repacking packs
rclone: 2022/11/08 03:12:49 ERROR : data/ba/bae3aff059fec386c089ee2b977b4b6847e49d81aa24467037a6ffddb9b8aa77: Post request put error: Put "https://api.pcloud.com/uploadfile?filename=bae3aff059fec386c089ee2b977b4b6847e49d81aa24467037a6ffddb9b8aa77&folderid=3861063254&mtime=1667905865&nopartial=1": write tcp <IP_ADDRESS>:13590-><IP_ADDRESS>:443: use of closed network connection
rclone: 2022/11/08 03:12:49 ERROR : data/ba/bae3aff059fec386c089ee2b977b4b6847e49d81aa24467037a6ffddb9b8aa77: Post request rcat error: Put "https://api.pcloud.com/uploadfile?filename=bae3aff059fec386c089ee2b977b4b6847e49d81aa24467037a6ffddb9b8aa77&folderid=3861063254&mtime=1667905865&nopartial=1": write tcp <IP_ADDRESS>:13590-><IP_ADDRESS>:443: use of closed network connection
Save(<data/bae3aff059>) returned error, retrying after 720.254544ms: server response unexpected: 500 Internal Server Error (500)
[22:33:07] 100.00%  20425 / 20425 packs repacked

That's clearly the backend provider failing to do what was asked of it. However, restic seems to have noticed there was an error saving that file, and moved on.
Afterwards, I ran a check of the repo (restic -r rclone:pCloudMedia:pictures check) and not-so-shockingly was told:
check all packs
pack bae3aff059fec386c089ee2b977b4b6847e49d81aa24467037a6ffddb9b8aa77: unexpected file size: got 2834432, expected 16783656
check snapshots, trees and blobs
[0:19] 100.00%  8 / 8 snapshots
Fatal: repository contains errors

Steps to reproduce the behavior
Given that this depends upon a storage internal error I'm not sure how to repro.
Do you have any idea what may have caused this?
Optimism.
Do you have an idea how to solve the issue?
Be more eager to retry and/or give up if things aren't working out.
Did restic help you today? Did it make you happy in any way?
restic is amazing. Please keep it coming.

That's clearly the backend provider failing to do what was asked of it. However, restic seems to have noticed there was an error saving that file, and moved on.

restic always retries failed uploads or aborts the whole command if that fails. That is on the second try pCloud confirmed that the data was stored properly. Thus, from the perspective of restic everything is fine.
It is not a problem for uploads to fail on the first try, as long as the storage provider correctly handles the retries.

pack bae3aff059fec386c089ee2b977b4b6847e49d81aa24467037a6ffddb9b8aa77: unexpected file size: got 2834432, expected 16783656

That looks a lot like pCloud returns the data from the initial failed upload. As far as i remember, pCloud stores multiple versions if a file is overwritten. Please check whether the damaged file has a second version. That one is likely intact.

It appeared to me when I checked the file only had one version (and it was the 16MB size, not the 28MB size), but this does sound like a problem with pCloud. I'll talk to them next time first. Thanks again for such a great bit of software!

I don't know that I'd say they "resolved" it, other than saying "partial uploads happen; try again." Maybe it was a problem with with rclone? Regardless, if memory serves I simply re-uploaded again and it was great.
pCloud's once-per-lifetime pricing is great if your data volume doesn't grow much. I also appreciate they do not have a local mirror near me - the whole point of offsite backups is to survive natural disasters. I've been generally happy with them.


Default to running beaker tests on EC2

I spoke with @jhoblitt briefly about this at PuppetConf; the beaker tests I only ever run sporadically because VirtualBox sometimes feels like a nut and sometimes it doesn't
I think we should just default to running them on EC2 and make it clear/easy for developers to set up their local EC2 credentials

I'm going to close this since running docker containers under travis has been reliable lately with the exception of centos6 (which others have complained about behaving odd as well).


Changed Notification Message Wrapping and Bell Button On Click

Signed-off-by: jeantiston<EMAIL_ADDRESS>Description
This PR fixes the comments during 07/09 Community Meeting.

Notification message wraps instead of the little buttons going on the next line
When clicking the bell button to show all notifs, tabs underline goes to 'all'

https://user-images.githubusercontent.com/52349175/125205019-c14c6f00-e2b2-11eb-8299-442bf6b82bc0.mov
Notes for Reviewers
Signed commits

[ ] Yes, I signed my commits.

Codecov Report

Merging #3460 (84aa323) into master (b9d3b71) will decrease coverage by 1.75%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3460      +/-   ##
==========================================
- Coverage   12.30%   10.54%   -1.76%
==========================================
  Files          37       37
  Lines        3162     3186      +24
==========================================
- Hits          389      336      -53
- Misses       2690     2783      +93
+ Partials       83       67      -16

Flag
Coverage Δ

gointegrationtests
?

unittests
10.54% <ø> (-0.09%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

mesheryctl/internal/cli/root/system/check.go
1.49% <0.00%> (-21.13%)
:arrow_down:

mesheryctl/internal/cli/root/system/config.go
1.11% <0.00%> (ø)

mesheryctl/internal/cli/root/system/status.go
0.00% <0.00%> (ø)

mesheryctl/internal/cli/root/system/system.go
69.23% <0.00%> (ø)

mesheryctl/internal/cli/root/system/start.go
1.27% <0.00%> (+<0.01%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b9d3b71...84aa323. Read the comment docs.

Good work, @jeantiston 😄


Reuse TCP connections when uploading files

Reuse TCP connections when uploading files)
Description
It's easy to break connection reuse when using the requests API: just use stream=True and never read the response. The connection used to make the request will never be reused, and will be dropped when the urllib3's connection pool is full.
It turns out uploading objects using the S3 API goes through prepared_request, which incorrectly sets stream to the value of raw, True in our case. And since we don't read the response data, the connection are never reused, and each upload requires its own connection.
This is particularly wasteful when uploading many small objects, which can easily happen with JSON or Parquet files generated by Apache Spark, where setting up the connection takes significant time compared to uploading a few bytes.
Setting stream=stream in the prepared_request method matches the code in the request method and fixes the bug.
Status

work in progress

Checklist (tick everything that applies)

[x] Code linting (required, can be done after the PR checks)
[x] Documentation
[x] Tests
[x] ICLA (required for bigger changes)

cc @Kami @tonybaloney

Thanks for contributing this bug fix, I will have a look shortly.
There were indeed quite many regressions introduced when we moved to the requests library (I fixed some here https://github.com/apache/libcloud/pull/1339, but more need to be fixed).

I had a look and the change looks good, but can you confirm that with this change, streaming upload will still work correctly (aka the whole input file won't be buffered in memory, but sent in chunks)?

Thank you for the review!
Streaming upload should not be affected as this change is about response streaming. But that's a good idea anyway, I will check tomorrow. I will also check streaming download and report my findings here.

I can confirm that streaming upload does not load the whole file in memory.
Streaming download is broken in this regard, but this is already the case in the trunk branch, so I believe this should be fixed in another pull request.

@Kami I made a mistake when recording memory usage for streaming download, and was simply misled by the 5MB chunk size. When using a smaller chunk size, it's clear that the file is buffered. So I believe we're good here. 👍

Merged, thanks!


NLU node stops working after 200 calls

Hi There, we built a flow that fetches customer feedbacks (text) from a DB and pass to NLU for processing. The DB has about 4000 records, NLU seems to stop processing records after about 200. We can't see any message in the Debug tab, so we can't really understand what kind of limit we are hitting.
Is there a way to get the cause of the issue?
We are using NodeRed on IBM Cloud.

I am not sure this is the issue, but NLU works with so-called NLU Items, you have 30.000 NLU Items per month in the lite Plan. If you look in the catalog on IBM Cloud, and see the description of the NLU service, you can see how these NLU items are calculated.

I saw that, thanks. It doesn't explain the behaviour though. If we hit the 30.000 NLU we shouldn't be able to make further calls the end of the period (1 month), while restarting the process we can get few hundreds more. That's why I'd like to see the response code from the NLU HTTP call, I believe it could give some insights about the problem we are facing.

That is odd, because if the call is good, then the data response, no matter what it is is put on msg.features. I.e. Even if it says 'you have run out of credit' then it will be on msg.features.
if an error is returned from the service, it is reported in the status.
If you are seeing either then the service is not responding.

I will add a test on that parameter.
Where HTTP response codes (e.g 404, 401, 500, etc) are recorded?

Another thing I thought is about the number of API calls per period of time (seconds/minutes)  that the NLU service can handle. I can't find any details in the documentation.


Peer to Peer Code Review

@emarkees :

Good job on using descriptive variable names and all the functions that indicate their purpose in the code.

The "forEach" loop that displays the list of books from the "bookList" array can also be improved by extracting the code for adding a single book to the DOM into a separate function, as it is currently repeated in both the "forEach" loop and the "add" function.

Thank 👍you @Jawad-Nazari for the review, We will work on the issue.

Good job! 👍 👍 . Your team has done a great work. Your code is clean and easier to read. You have choose your variable names carefully. 👍 👍. As an opinion, I would suggest you add a descriptive comment to every block of your code explaining what the code does. That way anyone going through your code will have a clear understanding what the block of code does even before they start reading it.

Thank you 👍  @abiola-arobieke for you review. We will work on the correction before merging the pull.


[Fix] App crashes when entering an emoji inside three backticks code block

Details

This PR upgrades live markdown lib to include fix for a bug where after adding emoji to code block the app crashes
Fixed Issues

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

Write ```test😁``` in the input - make sure no warnings in the console appear
Now try adding it in separate lines with linebreaks between ```, test😁 & ```
Send the message
Verify that no new errors appeared in the JS console

Offline tests

Write ```test😁``` in the input - make sure no warnings in the console appear
Now try adding it in separate lines with linebreaks between ```, test😁 & ```
Send the message
Verify that no new errors appeared in the JS console

QA Steps

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

PR Author Checklist

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

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

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

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

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

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

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

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/41169160/0f33eb79-1fa7-4b9f-acf8-0b853aeca56a

Android: mWeb Chrome

https://github.com/Expensify/App/assets/41169160/2109b49b-9080-4ba9-8cdf-675b0fb1d8a7

iOS: Native

https://github.com/Expensify/App/assets/41169160/de1beaca-ec67-42c1-bda4-c7927db3c9e9

iOS: mWeb Safari

https://github.com/Expensify/App/assets/41169160/5175b504-e13f-4b67-9f01-a453f8340986

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/41169160/7363994d-6402-49d8-ba6e-6428d22d1260

MacOS: Desktop

https://github.com/Expensify/App/assets/41169160/41b4682d-16c0-473d-ae18-92ddfb902d95

cc @shubham1206agra @c3024

@BartoszGrajdek It is still crashing on iOS Safari

Did you add emoji through Expensify emojiPicker?

Because that's another issue

If so try adding emoji through native iOS keyboard

Good catch @shubham1206agra
I think these bugs are a separate issue - especially considering what exactly we changed in the react-native-live-markdown code - it's impossible that this has affected the cursor movement, so I'd treat it as a separate issue and focus on the fact that the app is not crashing anymore cc @thienlnam

Thanks, I agree and looks like we having an existing issue to investigate that https://github.com/Expensify/App/issues/39267

🚀 Deployed to staging by https://github.com/thienlnam in version: 1.4.59-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Julesssss in version: 1.4.60-13 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Add files via upload

Added (Suez University)
website = http://suezuniv.edu.eg/su/index.php/ar

@ashraahmed2020 I have to close this request without merging, because you requested to add a non-existent domain to this repository: Host std.edu.eg not found: 3(NXDOMAIN) Please ensure that you are familiar with this repository rules located at the bottom of this page and submit a new request with the correct information. Thank you for understanding!

Dear Sir,
the domain name is (std.suezuniv.edu.eg) and I have the email and it's working.
univ website = http://suezuniv.edu.eg/su/index.php/ar
please add it :(


[02:14:11.117] 48:92  Error: `'` can be escaped with `'`, `‘`, `'`, `’`.  react/no-unescaped-entities
[02:14:11.117] 48:116  Error: `'` can be escaped with `'`, `‘`, `'`, `’`.  react/no-unescaped-entities
[02:14:11.117] 50:50  Error: `'` can be escaped with `'`, `‘`, `'`, `’`.  react/no-unescaped-entities
[02:14:11.117] 51:31  Error: Replace `text-gray-700·font-medium·mt-6·pt-5·border-t·border` with `mt-6·border-t·border-gray-700·pt-5·font-medium·text`  prettier/prettier
[02:14:11.117] 52:34  Error: Replace `text-gray-200·not-italic` with `not-italic·text-gray-200`  prettier/prettier
[02:14:11.117] 57:17  Error: Replace `·className="flex·flex-col·h-full·p-6·bg-gray-800"·data-aos="fade-up"·data-aos-delay="400"` with `⏎··············className="flex·h-full·flex-col·bg-gray-800·p-6"⏎··············data-aos="fade-up"⏎··············data-aos-delay="400"⏎············`  prettier/prettier
[02:14:11.117] 59:42  Error: Replace `inline-flex·flex-col·mb-4` with `mb-4·inline-flex·flex-col`  prettier/prettier
[02:14:11.117] 60:25  Error: Replace `·className="rounded-full"·src={TestimonialImage03}·width={48}·height={48}·alt="Testimonial·03"` with `⏎····················className="rounded-full"⏎····················src={TestimonialImage03}⏎····················width={48}⏎····················height={48}⏎····················alt="Testimonial·03"⏎·················`  prettier/prettier
[02:14:11.118] 61:23  Error: Replace `·className="absolute·top-0·right-0·-mr-3·w-6·h-5·fill-current·text-purple-600"·viewBox="0·0·24·20"·xmlns="http://www.w3.org/2000/svg"` with `⏎····················className="absolute·right-0·top-0·-mr-3·h-5·w-6·fill-current·text-purple-600"⏎····················viewBox="0·0·24·20"⏎····················xmlns="http://www.w3.org/2000/svg"⏎··················`  prettier/prettier
[02:14:11.118] 66:38  Error: Replace `text-lg·text-gray-400·grow">started·using·Pear·yesterday·&·i'm·blown·away.·it's·how·Copilot` with `grow·text-lg·text-gray-400">⏎················started·using·Pear·yesterday·&·i'm·blown·away.·it's·how·Copilot⏎···············`  prettier/prettier
[02:14:11.118] 66:98  Error: `'` can be escaped with `'`, `‘`, `'`, `’`.  react/no-unescaped-entities
[02:14:11.118] 66:115  Error: `'` can be escaped with `'`, `‘`, `'`, `’`.  react/no-unescaped-entities
[02:14:11.118] 66:144  Error: `'` can be escaped with `'`, `‘`, `'`, `’`.  react/no-unescaped-entities
[02:14:11.118] 67:1  Error: Insert `··············`  prettier/prettier
[02:14:11.118] 68:31  Error: Replace `text-gray-700·font-medium·mt-6·pt-5·border-t·border` with `mt-6·border-t·border-gray-700·pt-5·font-medium·text`  prettier/prettier
[02:14:11.118] 69:34  Error: Replace `text-gray-200·not-italic">Matthew·Armstrong</cite>·` with `not-italic·text-gray-200">⏎··················Matthew·Armstrong⏎················</cite>`  prettier/prettier
[02:14:11.118] 72:1  Error: Replace `⏎··········</div>⏎` with `··········</div>`  prettier/prettier
[02:14:11.118] 78:4  Error: Insert `;`  prettier/prettier
[02:14:11.118]
[02:14:11.118] ./components/try.tsx
[02:14:11.118] 1:24  Error: Replace<EMAIL_ADDRESS>with `"@/public/images/hero-image-01.jpg";`  prettier/prettier
[02:14:11.118] 2:24  Error: Replace `'@/components/modal-video'` with `"@/components/modal-video";`  prettier/prettier
[02:14:11.118] 7:23  Error: Replace `max-w-6xl·mx-auto·px-4·sm:px-6·relative">⏎` with `relative·mx-auto·max-w-6xl·px-4·sm:px-6">`  prettier/prettier
[02:14:11.118] 10:13  Error: Replace `·className="absolute·left-0·bottom-0·-ml-20·hidden·lg:block·pointer-events-none"·aria-hidden="true"·data-aos="fade-up"·data-aos-delay="400"` with `⏎··········className="pointer-events-none·absolute·bottom-0·left-0·-ml-20·hidden·lg:block"⏎··········aria-hidden="true"⏎··········data-aos="fade-up"⏎··········data-aos-delay="400"⏎········`  prettier/prettier
[02:14:11.118] 15:35  Error: Replace `t-32·pb-10·md:pt-40·md:pb-16">⏎` with `b-10·pt-32·md:pb-16·md:pt-40">`  prettier/prettier
[02:14:11.118] 18:28  Error: Replace `ax-w-3xl·mx-auto·text-center·pb-12` with `x-auto·max-w-3xl·pb-12·text-center`  prettier/prettier
[02:14:11.118] 19:56  Error: Replace `Try·Pear.AI·For·Free` with `⏎··············Try·Pear.AI·For·Free⏎············`  prettier/prettier
[02:14:11.118] 20:30  Error: Replace `ax-w-xs·mx-auto·sm:max-w-none·sm:flex` with `x-auto·max-w-xs·sm:flex·sm:max-w-none`  prettier/prettier
[02:14:11.118] 22:19  Error: Replace `·className="btn·text-white·bg-purple-600·hover:bg-purple-700·w-full·mb-4·sm:w-auto·sm:mb-0"·href="https://forms.gle/171UyimgQJhEJbhU7">Join·Waitlist` with `⏎··················className="btn·mb-4·w-full·bg-purple-600·text-white·hover:bg-purple-700·sm:mb-0·sm:w-auto"⏎··················href="https://forms.gle/171UyimgQJhEJbhU7"⏎················>⏎··················Join·Waitlist⏎················`  prettier/prettier
[02:14:11.118] 25:19  Error: Replace `·className="btn·text-white·bg-gray-700·hover:bg-gray-800·w-full·sm:w-auto·sm:ml-4"·href="https://docs.google.com/document/d/14jusGNbGRPT8X6GgEDbP1iab5q4X7_y-eFXK7Ky57IQ/edit?usp=sharing">More·details` with `⏎··················className="btn·w-full·bg-gray-700·text-white·hover:bg-gray-800·sm:ml-4·sm:w-auto"⏎··················href="https://docs.google.com/document/d/14jusGNbGRPT8X6GgEDbP1iab5q4X7_y-eFXK7Ky57IQ/edit?usp=sharing"⏎················>⏎··················More·details⏎················`  prettier/prettier
[02:14:11.118] 30:1  Error: Delete `⏎`  prettier/prettier
[02:14:11.118] 33:4  Error: Insert `;`  prettier/prettier
[02:14:11.119]
[02:14:11.119] ./components/ui/alert-dialog.tsx
[02:14:11.119] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.119] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.119] 4:69  Error: Insert `;`  prettier/prettier
[02:14:11.119] 6:56  Error: Insert `;`  prettier/prettier
[02:14:11.119] 7:33  Error: Insert `;`  prettier/prettier
[02:14:11.119] 9:46  Error: Insert `;`  prettier/prettier
[02:14:11.119] 11:56  Error: Insert `;`  prettier/prettier
[02:14:11.119] 13:54  Error: Insert `;`  prettier/prettier
[02:14:11.119] 21:39  Error: Delete `·`  prettier/prettier
[02:14:11.119] 22:16  Error: Insert `,`  prettier/prettier
[02:14:11.119] 27:3  Error: Insert `;`  prettier/prettier
[02:14:11.119] 28:74  Error: Insert `;`  prettier/prettier
[02:14:11.119] 40:18  Error: Insert `,`  prettier/prettier
[02:14:11.119] 45:3  Error: Insert `;`  prettier/prettier
[02:14:11.119] 46:74  Error: Insert `;`  prettier/prettier
[02:14:11.119] 55:16  Error: Insert `,`  prettier/prettier
[02:14:11.119] 59:2  Error: Insert `;`  prettier/prettier
[02:14:11.119] 60:52  Error: Insert `;`  prettier/prettier
[02:14:11.119] 69:16  Error: Insert `,`  prettier/prettier
[02:14:11.119] 73:2  Error: Insert `;`  prettier/prettier
[02:14:11.119] 74:52  Error: Insert `;`  prettier/prettier
[02:14:11.119] 85:3  Error: Insert `;`  prettier/prettier
[02:14:11.119] 86:70  Error: Insert `;`  prettier/prettier
[02:14:11.119] 97:3  Error: Insert `;`  prettier/prettier
[02:14:11.119] 99:47  Error: Insert `;`  prettier/prettier
[02:14:11.119] 110:3  Error: Insert `;`  prettier/prettier
[02:14:11.119] 111:72  Error: Insert `;`  prettier/prettier
[02:14:11.119] 122:16  Error: Insert `,`  prettier/prettier
[02:14:11.119] 126:3  Error: Insert `;`  prettier/prettier
[02:14:11.119] 127:72  Error: Insert `;`  prettier/prettier
[02:14:11.120] 141:2  Error: Insert `;`  prettier/prettier
[02:14:11.120]
[02:14:11.120] ./components/ui/authbutton.tsx
[02:14:11.120] 14:4  Error: Insert `;`  prettier/prettier
[02:14:11.120] 22:24  Error: Replace `font-medium·inline-flex·items-center·justify-center·border·border-transparent·px-4·py-2·my-2·mx-4·rounded-sm·text-white·bg-purple-600·hover:bg-purple-700·transition·duration-150·ease-in-out` with `mx-4·my-2·inline-flex·items-center·justify-center·rounded-sm·border·border-transparent·bg-purple-600·px-4·py-2·font-medium·text-white·transition·duration-150·ease-in-out·hover:bg-purple-700`  prettier/prettier
[02:14:11.120] 28:24  Error: Replace `font-medium·inline-flex·items-center·justify-center·border·border-transparent·px-4·py-2·my-2··rounded-sm·text-white·bg-gray-700·hover:bg-gray-800·transition·duration-150·ease-in-out` with `my-2·inline-flex·items-center·justify-center·rounded-sm·border·border-transparent·bg-gray-700·px-4·py-2·font-medium·text-white·transition·duration-150·ease-in-out·hover:bg-gray-800`  prettier/prettier
[02:14:11.120] 35:18  Error: Replace `⏎············className="font-medium·inline-flex·items-center·justify-center·border·border-transparent·px-4·py-2·my-2·ml-4·rounded-sm·text-white·bg-purple-600·hover:bg-purple-700·transition·duration-150·ease-in-out"⏎··········` with `·className="my-2·ml-4·inline-flex·items-center·justify-center·rounded-sm·border·border-transparent·bg-purple-600·px-4·py-2·font-medium·text-white·transition·duration-150·ease-in-out·hover:bg-purple-700"`  prettier/prettier
[02:14:11.120]
[02:14:11.120] ./components/ui/avatar.tsx
[02:14:11.120] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.120] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.120] 4:58  Error: Insert `;`  prettier/prettier
[02:14:11.120] 5:33  Error: Insert `;`  prettier/prettier
[02:14:11.120] 15:16  Error: Insert `,`  prettier/prettier
[02:14:11.120] 19:3  Error: Insert `;`  prettier/prettier
[02:14:11.120] 20:54  Error: Insert `;`  prettier/prettier
[02:14:11.120] 31:3  Error: Insert `;`  prettier/prettier
[02:14:11.120] 32:60  Error: Insert `;`  prettier/prettier
[02:14:11.120] 42:16  Error: Insert `,`  prettier/prettier
[02:14:11.120] 46:3  Error: Insert `;`  prettier/prettier
[02:14:11.120] 47:66  Error: Insert `;`  prettier/prettier
[02:14:11.120] 49:47  Error: Insert `;`  prettier/prettier
[02:14:11.120]
[02:14:11.120] ./components/ui/button.tsx
[02:14:11.120] 1:31  Error: Insert `;`  prettier/prettier
[02:14:11.120] 2:44  Error: Insert `;`  prettier/prettier
[02:14:11.121] 3:66  Error: Insert `;`  prettier/prettier
[02:14:11.121] 4:33  Error: Insert `;`  prettier/prettier
[02:14:11.121] 32:4  Error: Insert `,`  prettier/prettier
[02:14:11.121] 33:2  Error: Insert `;`  prettier/prettier
[02:14:11.121] 38:20  Error: Insert `;`  prettier/prettier
[02:14:11.121] 43:43  Error: Insert `;`  prettier/prettier
[02:14:11.121] 50:6  Error: Insert `;`  prettier/prettier
[02:14:11.121] 51:4  Error: Insert `,`  prettier/prettier
[02:14:11.121] 52:2  Error: Insert `;`  prettier/prettier
[02:14:11.122] 53:30  Error: Insert `;`  prettier/prettier
[02:14:11.122] 55:34  Error: Insert `;`  prettier/prettier
[02:14:11.122]
[02:14:11.122] ./components/ui/dialog.tsx
[02:14:11.122] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.122] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.122] 4:58  Error: Insert `;`  prettier/prettier
[02:14:11.123] 5:33  Error: Insert `;`  prettier/prettier
[02:14:11.123] 6:33  Error: Insert `;`  prettier/prettier
[02:14:11.123] 8:36  Error: Insert `;`  prettier/prettier
[02:14:11.123] 10:46  Error: Insert `;`  prettier/prettier
[02:14:11.123] 12:44  Error: Insert `;`  prettier/prettier
[02:14:11.123] 14:42  Error: Insert `;`  prettier/prettier
[02:14:11.123] 23:39  Error: Delete `·`  prettier/prettier
[02:14:11.123] 24:16  Error: Insert `,`  prettier/prettier
[02:14:11.123] 28:3  Error: Insert `;`  prettier/prettier
[02:14:11.123] 29:64  Error: Insert `;`  prettier/prettier
[02:14:11.123] 41:18  Error: Insert `,`  prettier/prettier
[02:14:11.123] 52:3  Error: Insert `;`  prettier/prettier
[02:14:11.123] 53:64  Error: Insert `;`  prettier/prettier
[02:14:11.123] 62:16  Error: Insert `,`  prettier/prettier
[02:14:11.123] 66:2  Error: Insert `;`  prettier/prettier
[02:14:11.123] 67:42  Error: Insert `;`  prettier/prettier
[02:14:11.123] 76:16  Error: Insert `,`  prettier/prettier
[02:14:11.123] 80:2  Error: Insert `;`  prettier/prettier
[02:14:11.123] 81:42  Error: Insert `;`  prettier/prettier
[02:14:11.123] 91:16  Error: Insert `,`  prettier/prettier
[02:14:11.123] 95:3  Error: Insert `;`  prettier/prettier
[02:14:11.123] 96:60  Error: Insert `;`  prettier/prettier
[02:14:11.123] 107:3  Error: Insert `;`  prettier/prettier
[02:14:11.123] 108:72  Error: Insert `;`  prettier/prettier
[02:14:11.123] 121:2  Error: Insert `;`  prettier/prettier
[02:14:11.123]
[02:14:11.123] ./components/ui/dropdown-menu.tsx
[02:14:11.123] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.123] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.123] 4:71  Error: Insert `;`  prettier/prettier
[02:14:11.123] 5:59  Error: Insert `;`  prettier/prettier
[02:14:11.123] 7:33  Error: Insert `;`  prettier/prettier
[02:14:11.123] 9:48  Error: Insert `;`  prettier/prettier
[02:14:11.123] 11:58  Error: Insert `;`  prettier/prettier
[02:14:11.123] 13:54  Error: Insert `;`  prettier/prettier
[02:14:11.123] 15:56  Error: Insert `;`  prettier/prettier
[02:14:11.124] 17:50  Error: Insert `;`  prettier/prettier
[02:14:11.124] 19:64  Error: Insert `;`  prettier/prettier
[02:14:11.124] 24:20  Error: Insert `;`  prettier/prettier
[02:14:11.124] 32:16  Error: Insert `,`  prettier/prettier
[02:14:11.124] 39:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 41:47  Error: Insert `;`  prettier/prettier
[02:14:11.124] 51:16  Error: Insert `,`  prettier/prettier
[02:14:11.124] 55:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 57:47  Error: Insert `;`  prettier/prettier
[02:14:11.124] 69:18  Error: Insert `,`  prettier/prettier
[02:14:11.124] 74:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 75:76  Error: Insert `;`  prettier/prettier
[02:14:11.124] 80:20  Error: Insert `;`  prettier/prettier
[02:14:11.124] 88:16  Error: Insert `,`  prettier/prettier
[02:14:11.124] 92:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 93:70  Error: Insert `;`  prettier/prettier
[02:14:11.124] 103:16  Error: Insert `,`  prettier/prettier
[02:14:11.124] 115:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 117:49  Error: Insert `;`  prettier/prettier
[02:14:11.124] 127:16  Error: Insert `,`  prettier/prettier
[02:14:11.124] 138:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 139:80  Error: Insert `;`  prettier/prettier
[02:14:11.124] 144:20  Error: Insert `;`  prettier/prettier
[02:14:11.124] 152:16  Error: Insert `,`  prettier/prettier
[02:14:11.124] 156:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 157:72  Error: Insert `;`  prettier/prettier
[02:14:11.124] 168:3  Error: Insert `;`  prettier/prettier
[02:14:11.124] 169:80  Error: Insert `;`  prettier/prettier
[02:14:11.124] 180:4  Error: Insert `;`  prettier/prettier
[02:14:11.124] 181:2  Error: Insert `;`  prettier/prettier
[02:14:11.124] 182:58  Error: Insert `;`  prettier/prettier
[02:14:11.124] 200:2  Error: Insert `;`  prettier/prettier
[02:14:11.124]
[02:14:11.125] ./components/ui/footer.tsx
[02:14:11.125] 1:19  Error: Replace `'react'` with `"react";`  prettier/prettier
[02:14:11.125] 2:18  Error: Replace `'next/link'` with `"next/link";`  prettier/prettier
[02:14:11.125] 3:26  Error: Replace `'./document.svg'` with `"./document.svg"`  prettier/prettier
[02:14:11.125] 4:27  Error: Replace `'./PearLight70x70.svg'` with `"./PearLight70x70.svg";`  prettier/prettier
[02:14:11.125] 10:26  Error: Replace `ax-w-6xl·mx-auto·px-4·sm:px-6">⏎` with `x-auto·max-w-6xl·px-4·sm:px-6">`  prettier/prettier
[02:14:11.125] 13:27  Error: Replace `grid·md:grid-cols-12·gap-8·lg:gap-20·mb-8·md:mb-12">⏎` with `mb-8·grid·gap-8·md:mb-12·md:grid-cols-12·lg:gap-20">`  prettier/prettier
[02:14:11.125] 18:15  Error: Insert `··`  prettier/prettier
[02:14:11.125] 19:17  Error: Insert `··`  prettier/prettier
[02:14:11.125] 20:1  Error: Insert `··`  prettier/prettier
[02:14:11.125] 21:1  Error: Insert `··`  prettier/prettier
[02:14:11.125] 24:19  Error: Replace `<PearLightLogo` with `··<PearLightLogo·`  prettier/prettier
[02:14:11.125] 25:1  Error: Insert `··`  prettier/prettier
[02:14:11.125] 26:1  Error: Insert `··`  prettier/prettier
[02:14:11.125] 27:55  Error: Replace `·>Privacy·Policy</Link>············` with `>⏎··················Privacy·Policy⏎················</Link>`  prettier/prettier
[02:14:11.125] 28:64  Error: Replace `·>Terms·of·Service</Link>` with `>⏎··················Terms·of·Service`  prettier/prettier
[02:14:11.125] 29:1  Error: Replace `··············</div` with `················</Link`  prettier/prettier
[02:14:11.125] 30:15  Error: Insert `</div>⏎`  prettier/prettier
[02:14:11.125] 31:46  Error: Replace `Supercharge·your·development·in·an·editor·designed·for·less·coding,·with·AI.` with `⏎················Supercharge·your·development·in·an·editor·designed·for·less⏎················coding,·with·AI.⏎··············`  prettier/prettier
[02:14:11.125] 35:29  Error: Replace `md:col-span-8·lg:col-span-7·grid·sm:grid-cols-3·gap-8">⏎⏎⏎⏎············</div>⏎` with `grid·gap-8·sm:grid-cols-3·md:col-span-8·lg:col-span-7"></div>`  prettier/prettier
[02:14:11.125] 45:1  Error: Delete `⏎`  prettier/prettier
[02:14:11.125] 47:28  Error: Replace `flex·mb-4·md:order-1·md:ml-4·md:mb-0` with `mb-4·flex·md:order-1·md:mb-0·md:ml-4`  prettier/prettier
[02:14:11.125] 49:22  Error: Replace `·href="https://github.com/orgs/trypear/repositories"·target="_blank"·className="flex·justify-center·items-center·text-purple-600·bg-gray-800·hover:text-gray-100·hover:bg-purple-600·rounded-full·transition·duration-150·ease-in-out"·aria-label="Github"` with `⏎··················href="https://github.com/orgs/trypear/repositories"⏎··················target="_blank"⏎··················className="flex·items-center·justify-center·rounded-full·bg-gray-800·text-purple-600·transition·duration-150·ease-in-out·hover:bg-purple-600·hover:text-gray-100"⏎··················aria-label="Github"⏎················`  prettier/prettier
[02:14:11.125] 50:23  Error: Replace `·className="w-8·h-8·fill-current"·viewBox="0·0·32·32"·xmlns="http://www.w3.org/2000/svg"` with `⏎····················className="h-8·w-8·fill-current"⏎····················viewBox="0·0·32·32"⏎····················xmlns="http://www.w3.org/2000/svg"⏎··················`  prettier/prettier
[02:14:11.125] 56:22  Error: Replace `·href="https://www.instagram.com/panangbros/"·target="_blank"·className="flex·justify-center·items-center·text-purple-600·bg-gray-800·hover:text-gray-100·hover:bg-purple-600·rounded-full·transition·duration-150·ease-in-out"·aria-label="Instagram"` with `⏎··················href="https://www.instagram.com/panangbros/"⏎··················target="_blank"⏎··················className="flex·items-center·justify-center·rounded-full·bg-gray-800·text-purple-600·transition·duration-150·ease-in-out·hover:bg-purple-600·hover:text-gray-100"⏎··················aria-label="Instagram"⏎················`  prettier/prettier
[02:14:11.125] 57:23  Error: Replace `·className="w-8·h-8·fill-current"·viewBox="0·0·32·32"·xmlns="http://www.w3.org/2000/svg"` with `⏎····················className="h-8·w-8·fill-current"⏎····················viewBox="0·0·32·32"⏎····················xmlns="http://www.w3.org/2000/svg"⏎··················`  prettier/prettier
[02:14:11.126] 65:22  Error: Replace `·href="https://docs.google.com/document/d/14jusGNbGRPT8X6GgEDbP1iab5q4X7_y-eFXK7Ky57IQ/edit#heading=h.4w42owbrw5n8"·className="flex·justify-center·items-center·text-purple-600·bg-gray-800·hover:text-gray-100·hover:bg-purple-600·rounded-full·transition·duration-150·ease-in-out"·target="_blank"·aria-label="Documentation"` with `⏎··················href="https://docs.google.com/document/d/14jusGNbGRPT8X6GgEDbP1iab5q4X7_y-eFXK7Ky57IQ/edit#heading=h.4w42owbrw5n8"⏎··················className="flex·items-center·justify-center·rounded-full·bg-gray-800·text-purple-600·transition·duration-150·ease-in-out·hover:bg-purple-600·hover:text-gray-100"⏎··················target="_blank"⏎··················aria-label="Documentation"⏎················`  prettier/prettier
[02:14:11.126] 66:44  Error: Replace `w-7·h` with `h-7·w`  prettier/prettier
[02:14:11.126] 68:20  Error: Delete `·`  prettier/prettier
[02:14:11.126] 72:29  Error: Replace `text-gray-400·text-sm·mr-4">©·Pear·AI·-·All·rights·reserved.</div>⏎` with `mr-4·text-sm·text-gray-400">⏎··············©·Pear·AI·-·All·rights·reserved.⏎············</div>`  prettier/prettier
[02:14:11.126] 74:17  Error: Delete `⏎`  prettier/prettier
[02:14:11.126] 79:4  Error: Insert `;`  prettier/prettier
[02:14:11.126]
[02:14:11.126] ./components/ui/header.tsx
[02:14:11.126] 4:27  Error: Replace `'./PearLight70x70.svg'` with `"./PearLight70x70.svg";`  prettier/prettier
[02:14:11.126] 8:33  Error: Replace `w-full·z-30` with `z-30·w-full`  prettier/prettier
[02:14:11.126] 9:24  Error: Replace `ax-w-6xl·mx-auto·` with `x-auto·max-w-6xl·`  prettier/prettier
[02:14:11.126] 10:30  Error: Replace `items-center·justify-between·h-20` with `h-20·items-center·justify-between`  prettier/prettier
[02:14:11.126] 12:27  Error: Replace `shrink-0·mr-4` with `mr-4·shrink-0`  prettier/prettier
[02:14:11.126] 20:1  Error: Replace `⏎··········</div>⏎` with `··········</div>`  prettier/prettier
[02:14:11.126] 26:38  Error: Replace `justify-end·flex-wrap·items-center` with `flex-wrap·items-center·justify-end`  prettier/prettier
[02:14:11.126] 30:31  Error: Replace `ont-medium·text-purple-600·hover:text-gray-200·px-4·py-3·flex·items-center·transition·duration-150·ease-in-out` with `lex·items-center·px-4·py-3·font-medium·text-purple-600·transition·duration-150·ease-in-out·hover:text-gray-200`  prettier/prettier
[02:14:11.126] 38:31  Error: Replace `ont-medium·text-purple-600·hover:text-gray-200·px-4·py-3·flex·items-center·transition·duration-150·ease-in-out` with `lex·items-center·px-4·py-3·font-medium·text-purple-600·transition·duration-150·ease-in-out·hover:text-gray-200`  prettier/prettier
[02:14:11.126] 45:37  Error: Replace `'production'·&&·<AuthButton·/>}·{/*·AuthButton·is·hidden·in·production·*/}·` with `"production"·&&·<AuthButton·/>}{"·"}⏎··········{/*·AuthButton·is·hidden·in·production·*/}`  prettier/prettier
[02:14:11.126]
[02:14:11.126] ./components/ui/input.tsx
[02:14:11.126] 1:31  Error: Insert `;`  prettier/prettier
[02:14:11.126] 3:33  Error: Insert `;`  prettier/prettier
[02:14:11.126] 15:20  Error: Insert `,`  prettier/prettier
[02:14:11.126] 20:6  Error: Insert `;`  prettier/prettier
[02:14:11.126] 21:4  Error: Insert `,`  prettier/prettier
[02:14:11.126] 22:2  Error: Insert `;`  prettier/prettier
[02:14:11.126] 23:28  Error: Insert `;`  prettier/prettier
[02:14:11.126] 25:17  Error: Insert `;`  prettier/prettier
[02:14:11.126]
[02:14:11.126] ./components/ui/label.tsx
[02:14:11.126] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.126] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.126] 4:56  Error: Insert `;`  prettier/prettier
[02:14:11.126] 5:66  Error: Insert `;`  prettier/prettier
[02:14:11.126] 7:33  Error: Insert `;`  prettier/prettier
[02:14:11.126] 10:95  Error: Insert `,`  prettier/prettier
[02:14:11.127] 11:2  Error: Insert `;`  prettier/prettier
[02:14:11.127] 23:3  Error: Insert `;`  prettier/prettier
[02:14:11.127] 24:52  Error: Insert `;`  prettier/prettier
[02:14:11.127] 26:17  Error: Insert `;`  prettier/prettier
[02:14:11.127]
[02:14:11.127] ./components/ui/mobile-menu.tsx
[02:14:11.127] 1:1  Error: Replace `'use·client'` with `"use·client";`  prettier/prettier
[02:14:11.127] 3:45  Error: Replace `'react'` with `"react";`  prettier/prettier
[02:14:11.127] 4:18  Error: Replace `'next/link'` with `"next/link";`  prettier/prettier
[02:14:11.127] 7:69  Error: Insert `;`  prettier/prettier
[02:14:11.127] 9:50  Error: Insert `;`  prettier/prettier
[02:14:11.127] 10:49  Error: Insert `;`  prettier/prettier
[02:14:11.127] 16:11  Error: Replace `!mobileNavOpen·||·mobileNav.current.contains(target·as·Node)·||·trigger.current.contains(target·as·Node))` with `⏎········!mobileNavOpen·||⏎········mobileNav.current.contains(target·as·Node)·||⏎········trigger.current.contains(target·as·Node)⏎······)⏎·······`  prettier/prettier
[02:14:11.127] 17:30  Error: Insert `;`  prettier/prettier
[02:14:11.127] 19:31  Error: Replace `'click',·clickHandler)` with `"click",·clickHandler);`  prettier/prettier
[02:14:11.127] 20:47  Error: Replace `'click',·clickHandler)` with `"click",·clickHandler);`  prettier/prettier
[02:14:11.127] 21:5  Error: Insert `;`  prettier/prettier
[02:14:11.127] 27:30  Error: Insert `;`  prettier/prettier
[02:14:11.127] 29:31  Error: Replace `'keydown',·keyHandler)` with `"keydown",·keyHandler);`  prettier/prettier
[02:14:11.127] 30:47  Error: Replace `'keydown',·keyHandler)` with `"keydown",·keyHandler);`  prettier/prettier
[02:14:11.127] 31:5  Error: Insert `;`  prettier/prettier
[02:14:11.127] 38:50  Error: Replace `'active'` with `"active"`  prettier/prettier
[02:14:11.127] 45:22  Error: Replace `w-6·h-6·fill-current·text-gray-300·hover:text-gray-200·transition·duration-150·ease-in-out` with `h-6·w-6·fill-current·text-gray-300·transition·duration-150·ease-in-out·hover:text-gray-200`  prettier/prettier
[02:14:11.127] 59:29  Error: Replace `top-full·z-20·left-0·w-full·px-4·sm:px-6·overflow-hidden·transition-all·duration-300·ease-in-out` with `left-0·top-full·z-20·w-full·overflow-hidden·px-4·transition-all·duration-300·ease-in-out·sm:px-6`  prettier/prettier
[02:14:11.127] 60:16  Error: Replace `mobileNavOpen·?·{·maxHeight:·mobileNav.current?.scrollHeight,·opacity:·1·}·:·{·maxHeight:·0,·opacity:·0.8·}` with `⏎··········mobileNavOpen⏎············?·{·maxHeight:·mobileNav.current?.scrollHeight,·opacity:·1·}⏎············:·{·maxHeight:·0,·opacity:·0.8·}⏎········`  prettier/prettier
[02:14:11.127] 64:18  Error: Replace `·href="/"·className="flex·font-medium·w-full·text-purple-600·hover:text-gray-200·py-2·justify-center"·onClick={()·=>·setMobileNavOpen(false)}` with `⏎··············href="/"⏎··············className="flex·w-full·justify-center·py-2·font-medium·text-purple-600·hover:text-gray-200"⏎··············onClick={()·=>·setMobileNavOpen(false)}⏎············`  prettier/prettier
[02:14:11.127] 71:26  Error: Replace `font-medium·w-full·inline-flex·items-center·justify-center·border·border-transparent·px-4·py-2·my-2·rounded-sm·text-white·bg-purple-600·hover:bg-purple-700·transition·duration-150·ease-in-out"` with `my-2·inline-flex·w-full·items-center·justify-center·rounded-sm·border·border-transparent·bg-purple-600·px-4·py-2·font-medium·text-white·transition·duration-150·ease-in-out·hover:bg-purple-700"⏎·············`  prettier/prettier
[02:14:11.127] 79:4  Error: Insert `;`  prettier/prettier
[02:14:11.127]
[02:14:11.127] ./components/ui/popover.tsx
[02:14:11.127] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.128] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.128] 4:60  Error: Insert `;`  prettier/prettier
[02:14:11.128] 6:33  Error: Insert `;`  prettier/prettier
[02:14:11.128] 8:38  Error: Insert `;`  prettier/prettier
[02:14:11.128] 10:48  Error: Insert `;`  prettier/prettier
[02:14:11.128] 23:18  Error: Insert `,`  prettier/prettier
[02:14:11.128] 28:3  Error: Insert `;`  prettier/prettier
[02:14:11.128] 29:66  Error: Insert `;`  prettier/prettier
[02:14:11.128] 31:51  Error: Insert `;`  prettier/prettier
[02:14:11.128]
[02:14:11.128] ./components/ui/slider.tsx
[02:14:11.128] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.128] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.128] 4:58  Error: Insert `;`  prettier/prettier
[02:14:11.128] 6:33  Error: Insert `;`  prettier/prettier
[02:14:11.128] 16:16  Error: Insert `,`  prettier/prettier
[02:14:11.128] 25:3  Error: Insert `;`  prettier/prettier
[02:14:11.128] 26:54  Error: Insert `;`  prettier/prettier
[02:14:11.128] 28:18  Error: Insert `;`  prettier/prettier
[02:14:11.128]
[02:14:11.128] ./components/ui/sonner.tsx
[02:14:11.128] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.128] 3:39  Error: Insert `;`  prettier/prettier
[02:14:11.128] 4:43  Error: Insert `;`  prettier/prettier
[02:14:11.128] 6:56  Error: Insert `;`  prettier/prettier
[02:14:11.128] 9:42  Error: Insert `;`  prettier/prettier
[02:14:11.128] 28:4  Error: Insert `;`  prettier/prettier
[02:14:11.128] 29:2  Error: Insert `;`  prettier/prettier
[02:14:11.128] 31:19  Error: Insert `;`  prettier/prettier
[02:14:11.128]
[02:14:11.128] ./components/ui/switch.tsx
[02:14:11.128] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.128] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.128] 4:59  Error: Insert `;`  prettier/prettier
[02:14:11.128] 6:33  Error: Insert `;`  prettier/prettier
[02:14:11.129] 15:16  Error: Insert `,`  prettier/prettier
[02:14:11.129] 22:181  Error: Insert `,`  prettier/prettier
[02:14:11.129] 26:3  Error: Insert `;`  prettier/prettier
[02:14:11.129] 27:55  Error: Insert `;`  prettier/prettier
[02:14:11.129] 29:18  Error: Insert `;`  prettier/prettier
[02:14:11.129]
[02:14:11.129] ./components/ui/tooltip.tsx
[02:14:11.129] 1:13  Error: Insert `;`  prettier/prettier
[02:14:11.129] 3:31  Error: Insert `;`  prettier/prettier
[02:14:11.129] 4:60  Error: Insert `;`  prettier/prettier
[02:14:11.129] 6:33  Error: Insert `;`  prettier/prettier
[02:14:11.129] 8:50  Error: Insert `;`  prettier/prettier
[02:14:11.129] 10:38  Error: Insert `;`  prettier/prettier
[02:14:11.129] 12:48  Error: Insert `;`  prettier/prettier
[02:14:11.129] 23:16  Error: Insert `,`  prettier/prettier
[02:14:11.129] 27:3  Error: Insert `;`  prettier/prettier
[02:14:11.129] 28:66  Error: Insert `;`  prettier/prettier
[02:14:11.129] 30:68  Error: Insert `;`  prettier/prettier
[02:14:11.129]
[02:14:11.129] ./components/zigzag.tsx
[02:14:11.129] 1:19  Error: Replace `'next/image'` with `"next/image";`  prettier/prettier
[02:14:11.129] 3:25  Error: Replace<EMAIL_ADDRESS>with `"@/public/images/features-03-image-01.png";`  prettier/prettier
[02:14:11.129] 4:25  Error: Replace<EMAIL_ADDRESS>with `"@/public/images/features-03-image-02.png";`  prettier/prettier
[02:14:11.129] 5:25  Error: Replace<EMAIL_ADDRESS>with `"@/public/images/features-03-image-03.png";`  prettier/prettier
[02:14:11.129] 10:24  Error: Replace `ax-w-6xl·mx-auto` with `x-auto·max-w-6xl`  prettier/prettier
[02:14:11.129] 11:25  Error: Replace `py-12·md:py-20·border-t·border-gray-800">⏎` with `border-t·border-gray-800·py-12·md:py-20">`  prettier/prettier
[02:14:11.129] 14:28  Error: Replace `ax-w-3xl·mx-auto·text-center·pb-12` with `x-auto·max-w-3xl·pb-12·text-center`  prettier/prettier
[02:14:11.130] 15:29  Error: Replace `inline-flex·text-sm·font-semibold·py-1·px-3·m-2·text-green-600·bg-green-200·rounded-full·mb-4">Reach·goals·that·matter` with `m-2·mb-4·inline-flex·rounded-full·bg-green-200·px-3·py-1·text-sm·font-semibold·text-green-600">⏎··············Reach·goals·that·matter⏎············`  prettier/prettier
[02:14:11.130] 17:50  Error: Replace `Excepteur·sint·occaecat·cupidatat·non·proident,·sunt·in·culpa·qui·officia·deserunt·mollit·laborum·—·semper·quis·lectus·nulla.` with `⏎··············Excepteur·sint·occaecat·cupidatat·non·proident,·sunt·in·culpa·qui⏎··············officia·deserunt·mollit·laborum·—·semper·quis·lectus·nulla.⏎············`  prettier/prettier
[02:14:11.130] 22:1  Error: Delete `⏎`  prettier/prettier
[02:14:11.130] 24:29  Error: Replace `md:grid·md:grid-cols-12·md:gap-6·items-center` with `items-center·md:grid·md:grid-cols-12·md:gap-6`  prettier/prettier
[02:14:11.130] 26:19  Error: Replace `·className="max-w-xl·md:max-w-none·md:w-full·mx-auto·md:col-span-5·lg:col-span-6·mb-8·md:mb-0·md:order-1"·data-aos="fade-up"` with `⏎················className="mx-auto·mb-8·max-w-xl·md:order-1·md:col-span-5·md:mb-0·md:w-full·md:max-w-none·lg:col-span-6"⏎················data-aos="fade-up"⏎··············`  prettier/prettier
[02:14:11.130] 27:23  Error: Replace `·className="max-w-full·mx-auto·md:max-w-none·h-auto"·src={FeatImage01}·width={540}·height={405}·alt="Features·01"` with `⏎··················className="mx-auto·h-auto·max-w-full·md:max-w-none"⏎··················src={FeatImage01}⏎··················width={540}⏎··················height={405}⏎··················alt="Features·01"⏎···············`  prettier/prettier
[02:14:11.130] 30:19  Error: Replace `·className="max-w-xl·md:max-w-none·md:w-full·mx-auto·md:col-span-7·lg:col-span-6"·data-aos="fade-right"` with `⏎················className="mx-auto·max-w-xl·md:col-span-7·md:w-full·md:max-w-none·lg:col-span-6"⏎················data-aos="fade-right"⏎··············`  prettier/prettier
[02:14:11.130] 32:60  Error: Replace `text-xl·text-purple-600·mb-2">More·speed.·Less·spend` with `mb-2·text-xl·text-purple-600">⏎····················More·speed.·Less·spend⏎··················`  prettier/prettier
[02:14:11.130] 34:33  Error: Replace `text-xl·text-gray-400·mb-4">Lorem·ipsum·dolor·sit·amet,·consectetur·adipiscing·elit,·sed·do·eiusmod·tempor·incididunt·ut·labore·et·dolore·magna·aliqua.` with `mb-4·text-xl·text-gray-400">⏎····················Lorem·ipsum·dolor·sit·amet,·consectetur·adipiscing·elit,·sed⏎····················do·eiusmod·tempor·incididunt·ut·labore·et·dolore·magna⏎····················aliqua.⏎··················`  prettier/prettier
[02:14:11.130] 35:34  Error: Replace `text-lg·text-gray-400·-mb-2` with `-mb-2·text-lg·text-gray-400`  prettier/prettier
[02:14:11.130] 36:36  Error: Replace `flex·items-center·mb-2` with `mb-2·flex·items-center`  prettier/prettier
[02:14:11.130] 37:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.130] 42:36  Error: Replace `flex·items-center·mb-2` with `mb-2·flex·items-center`  prettier/prettier
[02:14:11.130] 43:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.130] 49:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.130] 60:29  Error: Replace `md:grid·md:grid-cols-12·md:gap-6·items-center` with `items-center·md:grid·md:grid-cols-12·md:gap-6`  prettier/prettier
[02:14:11.130] 62:19  Error: Replace `·className="max-w-xl·md:max-w-none·md:w-full·mx-auto·md:col-span-5·lg:col-span-6·mb-8·md:mb-0·rtl"·data-aos="fade-up"` with `⏎················className="rtl·mx-auto·mb-8·max-w-xl·md:col-span-5·md:mb-0·md:w-full·md:max-w-none·lg:col-span-6"⏎················data-aos="fade-up"⏎··············`  prettier/prettier
[02:14:11.130] 63:23  Error: Replace `·className="max-w-full·mx-auto·md:max-w-none·h-auto"·src={FeatImage02}·width={540}·height={405}·alt="Features·02"` with `⏎··················className="mx-auto·h-auto·max-w-full·md:max-w-none"⏎··················src={FeatImage02}⏎··················width={540}⏎··················height={405}⏎··················alt="Features·02"⏎···············`  prettier/prettier
[02:14:11.130] 66:19  Error: Replace `·className="max-w-xl·md:max-w-none·md:w-full·mx-auto·md:col-span-7·lg:col-span-6"·data-aos="fade-left"` with `⏎················className="mx-auto·max-w-xl·md:col-span-7·md:w-full·md:max-w-none·lg:col-span-6"⏎················data-aos="fade-left"⏎··············`  prettier/prettier
[02:14:11.130] 68:59  Error: Replace `·text-xl·text-purple-600·mb-2">More·speed.·Less·spend` with `·mb-2·text-xl·text-purple-600">⏎····················More·speed.·Less·spend⏎··················`  prettier/prettier
[02:14:11.131] 70:33  Error: Replace `text-xl·text-gray-400·mb-4">Lorem·ipsum·dolor·sit·amet,·consectetur·adipiscing·elit,·sed·do·eiusmod·tempor·incididunt·ut·labore·et·dolore·magna·aliqua.` with `mb-4·text-xl·text-gray-400">⏎····················Lorem·ipsum·dolor·sit·amet,·consectetur·adipiscing·elit,·sed⏎····················do·eiusmod·tempor·incididunt·ut·labore·et·dolore·magna⏎····················aliqua.⏎··················`  prettier/prettier
[02:14:11.131] 71:34  Error: Replace `text-lg·text-gray-400·-mb-2` with `-mb-2·text-lg·text-gray-400`  prettier/prettier
[02:14:11.131] 72:36  Error: Replace `flex·items-center·mb-2` with `mb-2·flex·items-center`  prettier/prettier
[02:14:11.131] 73:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.131] 78:36  Error: Replace `flex·items-center·mb-2` with `mb-2·flex·items-center`  prettier/prettier
[02:14:11.131] 79:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.131] 85:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.131] 96:29  Error: Replace `md:grid·md:grid-cols-12·md:gap-6·items-center` with `items-center·md:grid·md:grid-cols-12·md:gap-6`  prettier/prettier
[02:14:11.131] 98:19  Error: Replace `·className="max-w-xl·md:max-w-none·md:w-full·mx-auto·md:col-span-5·lg:col-span-6·mb-8·md:mb-0·md:order-1"·data-aos="fade-up"` with `⏎················className="mx-auto·mb-8·max-w-xl·md:order-1·md:col-span-5·md:mb-0·md:w-full·md:max-w-none·lg:col-span-6"⏎················data-aos="fade-up"⏎··············`  prettier/prettier
[02:14:11.131] 99:23  Error: Replace `·className="max-w-full·mx-auto·md:max-w-none·h-auto"·src={FeatImage03}·width={540}·height={405}·alt="Features·03"` with `⏎··················className="mx-auto·h-auto·max-w-full·md:max-w-none"⏎··················src={FeatImage03}⏎··················width={540}⏎··················height={405}⏎··················alt="Features·03"⏎···············`  prettier/prettier
[02:14:11.131] 102:19  Error: Replace `·className="max-w-xl·md:max-w-none·md:w-full·mx-auto·md:col-span-7·lg:col-span-6"·data-aos="fade-right"` with `⏎················className="mx-auto·max-w-xl·md:col-span-7·md:w-full·md:max-w-none·lg:col-span-6"⏎················data-aos="fade-right"⏎··············`  prettier/prettier
[02:14:11.131] 104:60  Error: Replace `text-xl·text-purple-600·mb-2">More·speed.·Less·spend` with `mb-2·text-xl·text-purple-600">⏎····················More·speed.·Less·spend⏎··················`  prettier/prettier
[02:14:11.131] 106:33  Error: Replace `text-xl·text-gray-400·mb-4">Lorem·ipsum·dolor·sit·amet,·consectetur·adipiscing·elit,·sed·do·eiusmod·tempor·incididunt·ut·labore·et·dolore·magna·aliqua.` with `mb-4·text-xl·text-gray-400">⏎····················Lorem·ipsum·dolor·sit·amet,·consectetur·adipiscing·elit,·sed⏎····················do·eiusmod·tempor·incididunt·ut·labore·et·dolore·magna⏎····················aliqua.⏎··················`  prettier/prettier
[02:14:11.131] 107:34  Error: Replace `text-lg·text-gray-400·-mb-2` with `-mb-2·text-lg·text-gray-400`  prettier/prettier
[02:14:11.131] 108:36  Error: Replace `flex·items-center·mb-2` with `mb-2·flex·items-center`  prettier/prettier
[02:14:11.131] 109:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.131] 114:36  Error: Replace `flex·items-center·mb-2` with `mb-2·flex·items-center`  prettier/prettier
[02:14:11.131] 115:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.132] 121:27  Error: Replace `·className="w-3·h-3·fill-current·text-green-500·mr-2·shrink-0"·viewBox="0·0·12·12"·xmlns="http://www.w3.org/2000/svg"` with `⏎························className="mr-2·h-3·w-3·shrink-0·fill-current·text-green-500"⏎························viewBox="0·0·12·12"⏎························xmlns="http://www.w3.org/2000/svg"⏎······················`  prettier/prettier
[02:14:11.132] 130:1  Error: Replace `⏎··········</div>⏎` with `··········</div>`  prettier/prettier
[02:14:11.132] 136:4  Error: Insert `;`  prettier/prettier
[02:14:11.132]
[02:14:11.132] ./lib/utils.ts
[02:14:11.132] 1:45  Error: Insert `;`  prettier/prettier
[02:14:11.132] 2:41  Error: Insert `;`  prettier/prettier
[02:14:11.132] 5:31  Error: Insert `;`  prettier/prettier
[02:14:11.132] 9:17  Error: Insert `;`  prettier/prettier
[02:14:11.132] 10:23  Error: Insert `;`  prettier/prettier
[02:14:11.132] 11:20  Error: Insert `;`  prettier/prettier
[02:14:11.132] 12:19  Error: Insert `;`  prettier/prettier
[02:14:11.132] 13:2  Error: Insert `;`  prettier/prettier
[02:14:11.132] 72:4  Error: Insert `;`  prettier/prettier
[02:14:11.132] 73:2  Error: Insert `;`  prettier/prettier
[02:14:11.132]
[02:14:11.132] info  - Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/basic-features/eslint#disabling-rules
[02:14:11.169] error Command failed with exit code 1.
[02:14:11.169] info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[02:14:11.206] Error: Command "yarn run build" exited with 1
[02:14:11.669]

I will work on this branch and apply prettier to all!


Collections showing all the other items insted of its own items

What happened?
go to https://canary.kodadot.xyz/bsx/collection/1865909717
or any collection, it will not show the NFTs of that specific collection

#6868 fixes it

Same for me


Tx History: when multi-asset transaction is detected, take in consideration internal/external chain of the addresses to figure out if is an inbound/outbound amount for that specific asset

In this case, we show + XXX when actually that plus is the output of our change address to marina. We should show a simple outbound transaction in this case, with the amount to be the sum of all addresses not owned by marina
the amount will be the cumulative of the address not owned by marina ie. vout0 + vout1 + vout2

You can replicate also send it to a simple unconfidential address, this tx is shown as inbound showing the change amount.
https://liquid.network/testnet/tx/5d8b48ca55e9f2012c2e023944b0e19a5288b54819ddeeff526d319275be5237

Ok seems the real problem are unconfidential addresses messing up the history


Add specs

I did some refactoring and published 1.0. Please let me know if you experience any issues. Thanks!

@jonschlinkert I actually had const, let and even arrow functions for the spec originally, but you're losing tests on legacy Node versions that way. Thus, my switch away from ES6 syntax.


Game forgets previous radial menu selection when losing focus

To Reproduce
Steps to reproduce the behavior:

Go in-game and press Alt+Shift+M
Select Mounts tab
Set show in center hotkey
Set center behavior: previous
Close menu
Hold down center hotkey and select a mount
Check whether the game remembers your choice
Alt-tab out
Alt-tab back to GW2
Check whether the game remembers your choice

Observed behavior
Choice is not remembered after after alt-tab.
Expected behavior
The game should remember mount choice after alt-tab.
System configuration

OS: Windows 7
GPU: GTX970

If you alt-tab while playing in full screen, the addon has to fully unload itself because of how DirectX 9 works. I'm afraid you'd have to play in (borderless) windowed mode to circumvent that issue.

Thanks for the response! For me, the issue persists after I switch to windowed fullscreen, even if I switch to (fully) windowed mode. As soon as the game loses focus the last mount choice is gone is gone from the wheel.

Hmm, in that case, let me investigate.


Allow switching between embedded assets and hot-loadable ones

Both devs and users might want to hot-swap assets (i.e. textures, shaders).
But when using this only as a dependency, it might be better to have the assets directly embedded (maybe that's the only option then?).

This is probably required for a release.
Try making another repo locally and point to this repo as a dependency via git, not the local filesystem.
I expect the assets to be missing if this is not fixed.


Add Infomaniak in Hosting

Is there a reason that the doc link redirects to https://www.infomaniak.ch/fr/support/faq/1940 a Swiss domain which is in French?

They have a "short link" for every FAQ entry. See "Link to this FAQ:" at the bottom of the page.
Should I change to the full link with the English version? This URL:
https://www.infomaniak.ch/en/support/faq/1940

Infomaniak is Swiss company, I guess the redirection is expected. The .com domain is a synonym.

It's just a little jarring to go from the home page link in English to that, so I'd say, yeah, go with the full link to the English.

Done.


R18 displaying invalid series data

Not sure how to resolve this if the page itself is returning an invalid html. Saving the page as a html directly returns the correct series data, but using Invoke-Webrequest returns an invalid one.
Expected Behavior
PS C:\> Javinizer -Find KNAM-001 -R18
Url           : https://www.r18.com/videos/vod/movies/detail/-/id=h_491knam00001/?i3_ref=search&i3_ord=1
...
Series        : Full Raw STYLE@XX
...

Current Behavior
PS C:\> Javinizer -Find KNAM-001 -R18
...
Series        : Full Raw <span class="__cf_email__" data-cfemail="f9aaada0b5bcb9a1a1"
...

The HTML acquired from (Invoke-Webrequest -Uri 'https://www.r18.com/videos/vod/movies/detail/-/id=h_491knam00001/?i3_ref=search&i3_ord=1').Content returns the following invalid series string:

Full Raw [email protected]

Your Environment

Module version used: 2.2.11
Operating System and PowerShell version: W10, 7.1.1

Fixed by forcing the r18 scraper to always perform a request on the r18 series page and grab the full name.

Fixed by forcing the r18 scraper to always perform a request on the r18 series page and grab the full name.


What is jquery required for?

I see http://rrag.github.io/stockcharts-demo/ uses jquery. What is this required for? Would it be possible to remove so that we don't have to include both react and jquery?

That demo is super old. one of the first full react + redux apps I built.
I did not even know a lot of javascript back then.
jquery is cool though I love it, still do :)


Settings

I can no longer open my settings when I installed this theme. How do I uninstall this theme?

The default keyboard shortcut for opening the settings is Ctrl+,. Or you can just open your the command palette (default is Ctrl+P) and type "settings").
The reason I hide the leftmost vertical bar is that I use shortcut keys or command palette to go to everything lol. If you rely heavily on your mouse, then the theme is not for you.


use of system()

I don't think system() is the right command to be using, I think the proper way to do it (and at least Neovim-compatible) would be to create a terminal buffer using :term or some plugin that can manage that, and then collect the output from that process.

When I wrote this, :term wasn't available in the version (admittedly old, even then) of Vim I was using.
I have ended up shelling out for all of my uses of zf and actually don't use this plugin myself. I'm super open to any suggestions or PRs to make this repo better for anyone who does!

Ah, okay that is good to hear—could I see how you're shelling out to zf? I would be interested because telescope-zf-native is a bit slow still (shelling out is still snappier)

Unfortunately, I'm shelling out with yet another system() call 'cause that's all I had at the time. But I assume you can collect the output of :term in the same fashion. But here's my write-up on one of my tools that uses zf and is mostly Bash and as little vimscript as possible:
https://ratfactor.com/cards/ratlink
I really like having the majority of the functionality in a shell script for two reasons:

As crazy as shell scripts are, they're 87.5% less crazy than vimscript.
I can call them from anywhere so the functionality isn't tied up in Vim.