monoT5 fine-tuning process

Is there any plan to make the fine-tuning process of monoT5 & duoT5 public?
We follow the steps in the paper to finetune the T5-base & T5-3B in pytorch framework using model parallelism and data parallelism. At present, we just completed the base version and got NDCG@10 0.62 compared to yours 0.68. For 3B model, so far 67k steps have been trained, the best NDCG@10 less than 0.68. We are curious if there are any other training strategies, such as warmup steps, optimizer(adafactor?), dropout ratio, etc.

We will be sharing a pytorch training script in a week or two that gets close to the original TF training.

We will be sharing a pytorch training script in a week or two that gets close to the original TF training.

Would you mind sharing the Adafactor config in advance? We're following the config by Huggingface pytorch verision and confused about some details, like wheather to add "scale-parameter", "weight-decay"  and "lr-warm-up-stragety". Much thanks.

Hi guys
You can check all these parameters and the finetuning script draft (working) here: https://github.com/vjeronymo2/pygaggle/blob/master/pygaggle/run/finetune_monot5.py
I'll be doing a PR soon

Thanks for releasing the excellent work.
In finetune_monot5.py, I find the base_model is castorini/monot5-base-msmarco-10k, the discriptions on huggingface is as follows

This model is a T5-base reranker fine-tuned on the MS MARCO passage dataset for 10k steps (or 1 epoch).

I am confused this model is already finetuned after 1 epoch from original google T5-base? but the 10k steps is not consistent, the same thing happened on castorini/monot5-base-msmarco

This model is a T5-base reranker fine-tuned on the MS MARCO passage dataset for 100k steps (or 10 epochs).

I'm not sure if there's something wrong with the name. The overall finetuning process needs 10 epochs, namely total 1000K steps? Besides, i just find the training strategy is very different from the paper.

The MS MARCO dataset has ~530k query-positive passage pairs. We don't count negatives because they are virtually infinity. Using a batch of size 128, half of which are made of positive passages, we do approximately one epoch on the positive examples after training for 10k steps (64*10k=640k positives seen).
Does that make sense?

so amazing that just see roughly all query-positive passage pairs once can almost match the final performance. just curious how you get 10k checkpoints from T5-base?

In finetune_monot5.py, I find the base_model is castorini/monot5-base-msmarco-10k, the discriptions on huggingface is as follows

Oh, thanks for bringing this up! The default is supposed to be the regular 't5-base' model, not 'castorini/monot5-base-msmarco-10k', that has already been finetuned. Sorry for the confusion

just curious how you get 10k checkpoints from T5-base?

You can train the model with the first 640k lines from triples.train.small.tsv, which would result in 1280k samples ( 640k positives + 640k negatives). The batch_size we're using is 128, so the total number of steps is 1280k/128 = 10k, hence, 1 epoch.
Let me know if this doesn't answer your question.

Got it, much thanks. ;-)
Is there a plan to release t5-3b fine-tuning script? we try to use the framework of NVIDIA/Megatron-LM to fine-tune the 3b model, but the performance is so bad, we are working on the problems.

We don't plan to release the script for fine-tuning 3B as we also found it is quite complicated to do so with current Pytorch frameworks. In that case, I highly recommend using Mesh Tensorflow.

It seems that mesh tf is compatible with TPU well than GPU cluster. We almost replicated the effect of the monot5-base model with the model & data parallel framework using the parameters you provide. :-)
We use the same set of config to try monot5-3b model but not very well as expected. Would you mind share some training parameters or strategies for 3B model, such as lr, warmup steps, weight decay, dropout ratio, etc.

Hi @yixuan-qiao, sorry for taking so long.  Thanks a lot!!!
As you said in the paper, i use the output from monot5 as input to the duoT5. Specifically, for each query, take top 50  according to the score from monot5-3b, built 50*49=2450 pairs in sequence, finally total 12.8M training examples.
After training for about 50K iterations, i got about 0.72 ndcg@5, 0.71 ndcg@5, much lower than yours.
Is the process of constructing second stage training data as mentioned above, or are there other key points that I haven’t noticed?

Hi @yixuan-qiao, for training duoT5, we used the original triples.train.small from MS MARCO as in the training of duoBERT: https://github.com/castorini/duobert#training-duobert
That is, triples of <query, negative_doc, positive_doc> or  <query, positive_doc, negative_doc> are given as input to the model, where negative_doc and positive_doc are from triples.train.small.tsv.
Note that during training, duoT5 never sees a triple of <query, negative_doc, negative_doc> or <query, positive_doc, positive_doc>.

Note that during training, duoT5 never sees a triple of <query, negative_doc, negative_doc> or <query, positive_doc, positive_doc>.

I am not sure why duoT5 can not see the triple format. It takes the following format as input,
Query: 𝑞 Document0: 𝑑𝑖 Document1: 𝑑𝑗 Relevant: true(or false)
But from the point of loss function, duoT5 indeed use LM loss not the triple loss.

duoT5 cannot see during training both positive or negative documents because how would you define the target? That is, if p_{i_j} = 1 means that doc i is more relevant than doc j, which probability should we use if both doc_i and doc_j are relevant (or not relevant).

The MS MARCO dataset has ~530k query-positive passage pairs. We don't count negatives because they are virtually infinity. Using a batch of size 128, half of which are made of positive passages, we do approximately one epoch on the positive examples after training for 10k steps (64*10k=640k positives seen). Does that make sense?

(1) The negative documents are sampled from BM25 or randomly sampled?
(2) In each epoch, do you resample the negative documents or use the same negative documents as the previous epoch?

Hi @HansiZeng,
(1) We use the original triples.train.small.tsv which has a complicated sampling procedure. We exchanged some emails with them a while a ago, and IIRC, they use a BM25-ish version to sample the negatives not from the 8.8M passages but from the inner join of all top-1000 passages retrieved for all training queries.
(2) In each epoch, a new negative is sampled.

Hi @rodrigonogueira4,
I appreciate your response, but I still have a question about the triples.train.small.tsv file. I noticed that it only has about 400K relevant query-passage pairs, which is less than the total number of 532K relevant query-passage pairs in the training set. Is there a way to select negative passages for the remaining 132K relevant query-passage pairs that are not included in the triples.train.small.tsv file?
In your paper https://aclanthology.org/2020.findings-emnlp.63.pdf. It seems like using all 532K relevant query-passage pairs in training.

Can you confirm if in every epoch each relevant query-document pair is seen exactly once, and 10 epochs equate to seeing the same relevant pair 10 times?

Re: 532k vs 400k, that is a mistake in the paper: the model was finetuned on 400k positive pairs, all from triples.train.small. If we finetune on the 532k from the "full" triples.train, the effectiveness drops a bit (surprisingly).

https://github.com/vjeronymo2/pygaggle/blob/master/pygaggle/run/finetune_monot5.py

Hi @rodrigonogueira4,
I have a question about constructing negative documents for each query. Could you please help me to clarify the following points?
(1) Apart from using negative documents from BM25 top-1000, are there any other sampling techniques they use for each query?
(2) I am a little unclear about your previous response: "they use a BM25-ish version to sample the negatives not from the 8.8M passages but from the inner join of all top-1000 passages retrieved for all training queries." Could you please provide more details or explain this further?

Hi @HansiZeng,
(1) No.. but just as a warning: we were never able to generate as good negatives as the ones in the triples.train.small.tsv. We tried multiple strategies (dense + bm25, avoid sampling from top 10, etc), but there seems to be something special in the way MS constructed the original triples train.
(2) I don't fully understand their negative sampling method but perhaps @lintool can explain or have a pointer?

https://github.com/castorini/duobert#training-duobert

The link pointing to the triplets dataset is no longer valid. Can you please point me to the new link where the dataset can be downloaded?

@vjeronymo2 Thanks for making this finetune_monoT5.py for reference. However, in this file, since you are using trainer class, keys in the dictionary variable 'dataset_train' should be the same as the variable in the T5 model's forward function, otherwise the key will be ignored by the trainer. Thus I think the key 'text' in  'dataset_train' should be changed to 'input_ids'.


Add FalkordbRM Retriever Class for Enhanced Querying and Embedding Retrieval

This pull request introduces the FalkordbRM retriever class, designed to integrate FalkorDB for efficient querying and passage retrieval based on embeddings. The class supports both local and cloud-based FalkorDB sessions and uses OpenAI's embedding services by default
Key Changes:

FalkordbRM Retriever Class
Embedding Provider Integration
Error Handling
Customization Options

@okhat @arnavsinghvi11 can you please merge?

Thanks @kingtroga @gkorland  for this PR! Seems like some merge conflicts should be resolved if you pull from current main! should pass the failing test as well
also added a comment to support pip install dspy-ai[falkordb] correctly.

@arnavsinghvi11 I've made the necessary changes. Please try the merge again 🙏🏾

@arnavsinghvi11

Thanks @kingtroga !
we're currently planning an internal refactor of how we support RMs in DSPy and hence will leave this PR open to avoid any future code reversions. However, if the PR requires merging to be usable in DSPy, we'll do so! Please let us know

Hi @arnavsinghvi11 , thanks for the update! This PR does need merging to be usable in DSPy. Let me know if there's anything I can do to help with it.

Thanks @kingtroga !


Made the tab context menu dynamic.

As requested in PR #141, the context menu shown when right clicking on tabs is now dynamic.
For example, if there are no tabs to the right, the option to close tabs to the right will not be shown.
The option to close the console is now hidden as it's a little nicer for UX.

Thanks!


docs not updated in almost 3 months

your website docs are for version 0.5.13 which was released nearly 3 months ago.. are you going to update the docs soon?

@vesper8 Yes, we will update that soon. We got busy with NativeBase 2.0 meanwhile.
We are very much supporting NativeBase 0.x till Jan 2018.


Cant start a new playlist when playing

If i use a playlist and want to start a new playlist that cant be done from Spotify (Android or Windows).
It works if i change output to local device (android or windows) and start a new playlist and after this change the output to librespot again.
I might do something wrong or it could be a little bug.

Are you sure you are using the latest version?

Built it yesterday from master repo

Can confirm this is a bug, just tried it and got the same behaviour. When connected to librespot, one can create a playlist and add songs, but any attempt to play the new playlist via librespot causes the currently playing track to either restart or jump back a seemingly random amount.
At a wider level, playback appears to break after adding a playlist and attempting to use librespot; attempting to select a different song/album/etc. just causes the next song in the queue to play. I suspect we will need to do some reverse engineering of Protobuf again.

hello, I'm really looking for solution for this issue. I'm just curious if there is any chance this will be checked ?

it seems this bug is still open.
is there any way one can help?

I can't reproduce this myself.
Librespot seems quite happy playing a freshly made playlist on dev branch on Windows.
Are you seeing this happen with a new build @haja ?

Closing, no further feedback.


Proof for google plus

It would be nice to add my Google Plus profile beside my Twitter and Github accounts.
My Facebook profile is private as I share it only with people I know personally, and I use GPlus for anything public/open-source/dev-related.

Noted in https://github.com/keybase/proofs/issues/12 and an attempt at implementation at https://github.com/keybase/proofs/pull/40.


Endless loop

From DEBUGGRAPH=1 pytest numba_rvsdg/tests/test_mock_asm.py::test_mock_scfg_fuzzer_case0 in #42.
We need special handling for endless loop like this:

A potential fix is described in: https://github.com/phate/jlm/pull/71/files#diff-5da2c1eea581b6b09d5820765778b4d657700c2b2fbb46c64fa498d66bcd182fR259-R260

Tracking https://github.com/numba/numba-rvsdg/blob/371b3dfa23d72ad93de1a60cced38ce8c45b1141/numba_rvsdg/tests/test_mock_asm.py#L264


demonstration of model level to pressure level stratification resampling

demonstration of single column axis resampling, using a provided pressure field and defined pressure levels to restratify temperature data onto pressure levels

I have checked through all the code changes for the pressure level examples and also run them on Linux VDI desktop where they work as expected. Therefore the changes can be merged.

I have reviewed all the changes for the pressure level interpolation examples and have run them on the Linux desktop where they work as expected. Therefore these can now be merged.

I have reviewed all the changes for the pressure level interpolation examples and have run them on the Linux desktop where they work as expected. Therefore these can now be merged.


Sending the list of commands to device using RxAndroidBle

Summary
Hi, i'm trying to connect and send the list of commands, consisting of 16 bytes to BleDevice. How can i do this properly?
p.s. I'm pretty new to JavaRx

It is topical issue for me too. With Every connecting to ble device i need send "start" commnad and after that i can send next commands. In my case the ble device store some data for 7 days . To obtain the all data for one day I need send 3 commands. Therefore to get the data in the last 7 days, need to send a team of 21 (+ start command). Please can you give advice how solve this problem ? May be you know nice solution for commands queue that can easily integrated with rxAndroidBle lib? Thanks.

I'm not sure if I get it correctly. Are you trying to write some data to a characteristic in a given order? If yes, you can just flatMap write operations and the order will be preserved.

@DKKovalev @ardmn Could you follow up?

Sorry, @uKL I will try it tomorrow :)

@uKL Hi. I tried to find answer to this issue, but it still not work. May you give some helpful advice if it is not difficult for you :)
public void startWriteCommucation(final ArrayList<byte[]> b) {         if (isConnected()){                 connectionObservable                         .flatMap(new Func1<RxBleConnection, Observable<Observable<byte[]>>>() {                             @Override                             public Observable<Observable<byte[]>> call(RxBleConnection rxBleConnection) {                                 final List<Observable<byte[]>> list = new ArrayList<>();                                 for (byte[]  bytes: b){                                     Log.e("MyTag", Arrays.toString(bytes));                                     list.add(rxBleConnection.writeCharacteristic(BleDevice.characteristicWrite, bytes));                                 }                                 return Observable.from(list);                             }                         })                         .flatMap(new Func1<Observable<byte[]>, Observable<byte[]>>() {                             @Override                             public Observable<byte[]> call(Observable<byte[]> observable) {                                 return observable;                             }                         })                         .observeOn(AndroidSchedulers.mainThread())                         .subscribe(                                 new Action1<byte[]>() {                                     @Override                                     public void call(byte[] bytes) {                                         Log.e("MyTag2", Arrays.toString(bytes));                                         view.setTextStatus("WRITE SUCCESS");                                     }                                 },                                 new Action1<Throwable>() {                                     @Override                                     public void call(Throwable throwable) {                                         view.setTextStatus("!!!FAIL WRITE!!!");                                         throwable.printStackTrace();                                     }                                 }                         );             }     }
This code works, and writes that it was successfull, but device does't responed.

I think this question should go to www.stackoverflow.com with #rxandroidble
If I understood you correctly - you just want to perform some data exchange between the device and the app before something else will happen. In this situation you can write your own connecting function like:
public Observable<RxBleConnection> establishConnectionToMySpecificDevice(RxBleDevice device) {
  return rxBleDevice.establishConnection(this, false)
    .flatMap(rxBleConnection ->
        rxBleConnection.writeCharacteristic(uuid, bytes)
        .flatMap(bytes -> rxBleConnection.readCharacteristic(uuid))
        .map(bytes1 -> /*do something with read bytes*/ rxBleConnection)
    );
}

And use it wherever you need in the code?

@dariuszseweryn we have detail description of this issue on stackoverflow.
http://stackoverflow.com/questions/38250610/sending-the-list-of-commands-to-device-using-rxandroidble-rxjava


Add EventBuilding cut

close https://github.com/dachengx/axidence/issues/19

coverage: 56.774% (+0.9%) from 55.902%
when pulling c0ad6fe89a4585eae1531bb3e2dd90c934aba242 on cut_event_building
into c2cf9078ccb9e34a78ffdfa26a7b6fe76d14dd6b on main.


pipenv install fails with autobahn 21.3.1 for python 3.9.4

Description
Running pipenv install results in the following error:

ERROR: No matching distribution found for autobahn==21.3.1

Environment

Python version: 3.9.4
pipenv version: 2020.11.15
pip version: pip 21.1.1 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)

To Reproduce

Checkout master branch
Run pipenv install in src directory
See error

Observed behavior
Packags failed to install.
Expected behavior
Expectation is pipenv install to install packages listed in the lock file.
How to fix
Re-run pipenv.lock which will result in pip resolving autobahn to 21.2.1
My guess is that my version of python (latest) is not yet supported by version 21.3.1.
As stated by PyPI:

Autobahn|Python up to version v19.11.2 supported Python 2 and 3.4+, and up to version v20.7.1 supported Python 3.5+, and up to version v21.2.1 supported Python 3.6+.

Yeah it could be that Autobahn 21.3.1 does not support python 3.9.
In our Pipfile and pipfile.lock, we are trying to specify python version 3.6.

Ah I see now. Thanks, I'll give it a go.
Technically the python version is specified in pipfile but in order to provide smoother installation experience perhaps we update the Readme to explicitly include version 3.6?

Totally possible I'm doing something dumb but still getting the error even with Python 3.6. (and also 3.5.5).
Downgrading autobahn to 12.2.1 works though 🤷♂ 🤷♂ 🤷♂ 🤷♂


Export/Import Hasura project section is incomplete

The Export/Import Hasura project section of the documentation is incomplete.

Not relevant anymore in hasura cli workflow. Closing this.


Any plans to add SOTE?

Any plans to add SOTE?

SOTE is planned to be either the next quest worked on, or the one after that.

Added with https://github.com/Zoinkwiz/quest-helper/commit/bd2273f2ac4a99e910d49554e932e95b69b031fe.

Added with https://github.com/Zoinkwiz/quest-helper/commit/bd2273f2ac4a99e910d49554e932e95b69b031fe.


iCal results in wrong date

I am trying to find out where the problem lies.
The following iCal file gets loaded but the events are one day off.
I think it is a timezone problem.
Is the problem in the calendar module or the ical file?
The event Supportzeit gets parsed as "event started and is going to end in 1 day" it should say "event was one day ago".
The event Testtermin2 gets parsed as "9 hours remaining" it should say "event is going to be tomorrow at 11".
I wrote this on 3rd of May 21:38 Timezone +1 (Berlin)
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//www.admidio.org//Admidio4.2.5//DE
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-TIMEZONE:Europe/Berlin
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:STANDARD
DTSTART:19701025T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19700329T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20230502T154941
LAST-MODIFIED:20230503T202824
<EMAIL_ADDRESS>SUMMARY:SielNet Supportzeit
DESCRIPTION:Internetsupport\n
DTSTAMP:20230503T203933
LOCATION:
DTSTART;TZID=Europe/Berlin:20230502T180000
DTEND;TZID=Europe/Berlin:20230502T200000
END:VEVENT
BEGIN:VEVENT
CREATED:20230503T203922
LAST-MODIFIED:
<EMAIL_ADDRESS>SUMMARY:Testtermin2
DESCRIPTION:
DTSTAMP:20230503T203933
LOCATION:
DTSTART;TZID=Europe/Berlin:20230503T110000
DTEND;TZID=Europe/Berlin:20230503T120000
END:VEVENT
END:VCALENDAR

I don't see that
attached is the log of the processing (see this is config.js)
	logLevel: ["INFO", "LOG", "WARN", "ERROR","DEBUG"], // Add "DEBUG" for even more logging

both with my system set to my timezone and the calendar event timezone
and a screenshot with belin timezone set
I had to change the start/end date on both as they were in the past
so, moved the day +2 in both start/end in both events

somefile.txt

I will debug it later.
here is a screenshot from "post timestamp"

@sdetweil is this something to be investigated or can we close this?

@sielnet

I disabled the displaying of past events to work around the error.

we don't display past events, ever.. w might display a repeating event scheduled to start in the past, but only its current and future instances..

I am seeing this problem as well. Full day calendar events appear on the wrong day. I have only tried using this public holiday calendar which only has full day events so I don't know if I have the same problem with shorter events. Here is a relevant snippet from<EMAIL_ADDRESS>BEGIN:VEVENT
DTSTART;VALUE=DATE:20231123
DTEND;VALUE=DATE:20231124
DTSTAMP:20231117T230821Z
<EMAIL_ADDRESS>CLASS:PUBLIC
CREATED:20231003T144050Z
DESCRIPTION:Public holiday
LAST-MODIFIED:20231003T144050Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Thanksgiving Day
TRANSP:TRANSPARENT
END:VEVENT

But it is being rendered as "Wednesday". Also notice that Christmas is being shows as Dec 24th.

Here is my calendar config:
{
  module: "calendar",
  header: "US Holidays",
  position: "top_left",
  config: {
    maximumEntries: 5,
    calendars: [{
      fetchInterval: 7 * 24 * 60 * 60 * 1000,
      symbol: "calendar-check",
      url<EMAIL_ADDRESS>    }]
  }
}

@scelfo what time zone is your system set to?

America/Denver

I used both your individual event and the full ics like and both produced the correct info .  both in my timezone (chicago) and yours.  (denver)

@scelfo can you do this
edit config.js and change thelogLevel like this
logLevel: ["INFO", "LOG", "WARN", "ERROR","DEBUG"],

then stop all other MM.s
pm2 stop all
or whatever
then , with the one event ics URL
cd ~/MagicMirror
npm start >somefile.txt 2>&1

wait til the UI is up
then ctrl-q
then examine the somefile.text
search for "parsed data={"
and post 20-50 lines.
the data would look like this
[18.11.2023 08:49.57.738] [DEBUG] Processing entry...
[18.11.2023 08:49.57.740] [DEBUG] Event:
{"type":"VEVENT","params":[],"start":"2023-11-23T06:00:00.000Z","datetype":"date","end":"2023-11-24T06:00:00.000Z","dtstamp":"2023-11-17T23:08:21.000Z","uid":"20231123_6b64ndbva1c6ptufj345j4opno@google.com","class":"PUBLIC","created":"2023-10-03T14:40:50.000Z","description":"Public holiday","lastmodified":"2023-10-03T14:40:50.000Z","sequence":"0","status":"CONFIRMED","summary":"Thanksgiving Day","transparency":"TRANSPARENT"}
[18.11.2023 08:49.57.740] [DEBUG] start: Thu Nov 23 2023 00:00:00 GMT-0600 (Central Standard Time)
[18.11.2023 08:49.57.741] [DEBUG] end:: Fri Nov 24 2023 00:00:00 GMT-0600 (Central Standard Time)
[18.11.2023 08:49.57.741] [DEBUG] duration: 86400000
[18.11.2023 08:49.57.741] [DEBUG] title: Thanksgiving Day
[18.11.2023 08:49.57.742] [DEBUG]  if no tz, guess based on now
[18.11.2023 08:49.57.757] [DEBUG] initial tz=America/Chicago
[18.11.2023 08:49.57.757] [DEBUG] corrected tz=America/Chicago
[18.11.2023 08:49.57.758] [DEBUG] start date/time=Thu Nov 23 2023 00:00:00 GMT-0600 (Central Standard Time)
[18.11.2023 08:49.57.760] [DEBUG] start offset=-360
[18.11.2023 08:49.57.760] [DEBUG] start date/time w tz =Thu Nov 23 2023 00:00:00 GMT-0600 (Central Standard Time)
[18.11.2023 08:49.57.760] [DEBUG] event date=Thu Nov 23 2023 00:00:00 GMT-0600 (Central Standard Time)
[18.11.2023 08:49.57.760] [DEBUG] event offset=-360 hour=0 event date=Thu Nov 23 2023 00:00:00 GMT-0600 (Central Standard Time)
[18.11.2023 08:49.57.760] [DEBUG] adjustHours=0
[18.11.2023 08:49.57.761] [DEBUG] Processing entry...

@sdetweil thanks for looking and the detailed instructions. I can do that.
I'm running MM via docker inside kubernetes (k3s) but I'll adapt your instructions and get what you're looking for. I'll reply back soon.

I bet the docker container system date is wrong. all the date calcs are done on the mm server side

8.11.2023 16:12.07.224] [DEBUG] Processing entry...
[18.11.2023 16:12.07.224] [DEBUG] Event:
{"type":"VEVENT","params":[],"start":"2023-11-23T00:00:00.000Z","datetype":"date","end":"2023-11-24T00:00:00.000Z","dtstamp":"2023-11-18T16:12:07.000Z","uid":"20231123_6b64ndbva1c6ptufj345j4opno@google.com","class":"PUBLIC","created":"2023-10-03T14:40:50.000Z","description":"Public holiday","lastmodified":"2023-10-03T14:40:50.000Z","sequence":"0","status":"CONFIRMED","summary":"Thanksgiving Day","transparency":"TRANSPARENT","method":"PUBLISH"}
[18.11.2023 16:12.07.224] [DEBUG] start: Thu Nov 23 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
[18.11.2023 16:12.07.224] [DEBUG] end:: Fri Nov 24 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
[18.11.2023 16:12.07.224] [DEBUG] duration: 86400000
[18.11.2023 16:12.07.224] [DEBUG] title: Thanksgiving Day
[18.11.2023 16:12.07.225] [DEBUG]  if no tz, guess based on now
[18.11.2023 16:12.07.272] [DEBUG] initial tz=Africa/Abidjan
[18.11.2023 16:12.07.272] [DEBUG] corrected tz=Africa/Abidjan
[18.11.2023 16:12.07.272] [DEBUG] start date/time=Thu Nov 23 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
[18.11.2023 16:12.07.273] [DEBUG] start offset=0
[18.11.2023 16:12.07.274] [DEBUG] start date/time w tz =Thu Nov 23 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
[18.11.2023 16:12.07.274] [DEBUG] event date=Thu Nov 23 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
[18.11.2023 16:12.07.274] [DEBUG] event offset=0 hour=0 event date=Thu Nov 23 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
[18.11.2023 16:12.07.274] [DEBUG] adjustHours=0

Definitely a timezone problem in docker. Do you know where npm gets the timezone configuration?
I am setting the correct /etc/localtime file for the docker container. Here's some examples of commands executed in the pod:
# k3s kubectl exec pod/magic-mirror-6f89d6cc7d-tfpw6 -- date
Sat Nov 18 09:16:18 MST 2023
# k3s kubectl exec pod/magic-mirror-6f89d6cc7d-tfpw6 -- tail -n 1 /etc/localtime
MST7MDT,M3.2.0,M11.1.0
# k3s kubectl exec pod/magic-mirror-6f89d6cc7d-tfpw6 -- cat /etc/timezone
Etc/UTC

So it looks like /etc/timezone isn't set up correctly, does npm use that? Or maybe it uses a TZ environment variable?

I do not know timezone in docker container

My question isn't about docker, it's about how npm gets the timezone. Either way, I know what the problem is and I'll track down a fix and if necessary propose a patch to magic mirror.

each container is its own little system which can have a separate time zone unrelated to what the system time zone is that docker is running on

I updated my kubernetes config to set the TZ environment variable inside docker to be "America/Denver" and now everything works.

awesome. can we close this now?

Reading back through this bug, my root cause seems to be different than the original discussion in the bug. I have no more concerns.


Update report creation logic to support nested structures

Current report representation using OM types is for a simple report, it doesn't support a nested structure. Should be able to model reports with more complex structures.

Depends on #304


Fixed #4 Live demo video link in README.md

Fixes Issue
This PR fixes the following issues :
#4

Changes proposed
The live demo video is fixed on the README.md file. I converted the AVI file into GIF which supported by github markdown syntax.
Thank You :pray:
-![Live Demo](https://github.com/kaiwalyakoparkar/flashtype/blob/master/doc_images/FlashType.avi)
+![Live Demo](https://github.com/kaiwalyakoparkar/flashtype/blob/master/doc_images/FlashType.gif)

Check List (Check all the boxes which are applicable)

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] All new and existing tests passed.
[x] This PR does not contain copyrighted content.
[x] The title of my pull request is a short description of the requested changes.

Screenshots

Thank You for accepting my pull request :pray:

Your efforts worth it! keep contributing to open source :+1:


[Discuss] Producer and consumer add a strategy to connect to NameServer

Producers and consumers connecting to NameServer to obtain routing information are random, and data is obtained by randomly selecting a NameServer from the given NameServer list for connection. This situation has the following disadvantages:

The better machines deployed by NameServer cannot exert all their machine performance, while the poorer machines may connect to many, causing the service to crash.
Cannot specify a NameServer for connection (except for configuring a single NameServer address).

Therefore, it is considered to add a strategy pattern for selecting a NameServer for connection in the client (producer and consumer). The developer can choose or implement the strategy to select the NameServer for connection. The following strategies can be considered:

Random strategy: randomly select a NameServer for connection (current mode).
Specified strategy: specify a specific NameServer for connection.
Polling strategy: the current application's clients select from the given NameServers on their own.
NameServer minimum client connection strategy: obtain the current NameServer with the minimum number of client connections for connection.

Other strategies can be added in the future.

In general, the configuration of NameServer should be the same and should be hidden behind the load balancing service. At this time, the server maintainer can select random, polling, minimum connections and other policies on the server. This centralized management is more conducive to operation and maintenance.


Random stop sign on a motorway exit where no crossing exists (one in one out road, both in OSM and in a generated map)

I see nothing weird in OSM data - https://www.openstreetmap.org/way/526029626#map=19/49.99680/19.85761&layers=N

Similarly nonexisting stop sign appeared on https://www.openstreetmap.org/node/285684369#map=19/50.05583/19.90324

Crossing on name change leads sometimes to bizarre results: https://www.openstreetmap.org/#map=19/50.06940/19.92413&layers=N (though once cycleways are supported crossings here will be needed)


Floral Website made using flexbox

Please provide demo or ss of the project and description as well to help me better.


Timeraa.PreMiD version 2.2.0

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

This application, on its own, doesn't appear to have any interface. Clicking the Start menu link seems to do nothing, and only on launching twice is an error message generated:

From the project's GitHub page, it appears to be similar to a Discord plugin in functionality, changing an attribute of the user's profile.

Is there another application, web link, or other means of interfacing with this application without Discord?
Should Discord be a dependency?

Hi @stephengillie
PreMiD does have a GUI (sort of), But you have to right-click on the PreMiD icon to bring that up

PreMiD also requires a browser extension to interface with a desktop app to tell Discord what are you doing on a browser and
display it in Discord in the form of Discord Rich Presence.
If PreMiD is working properly (And assuming you already installed a browser extension) you should see something like this on Discord

Also, Yes!,  Discord should be a dependency for this program to work

PreMiD for Chromium-based browser
PreMiD for Firefox

Cheers,
Patin Muangjan


ModuleNotFoundERROR: No module named 'dataclasses'

Describe the bug
Module dataclasses is not found, even though this library is a built-in since Python 3.7
To Reproduce

Add from dataclasses import dataclass in openpype/__init__.py
Build OpenPype
Run openpype_gui.exe or openpype_console.exe

Desktop (please complete the following information):

OS: Windows 10 Professional / build 19042.1586
OpenPype 3.8.2
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] (as sys.version tells)

Additional context
>>> run disk mapping command ...
*** Cannot get OpenPype path from database.
Finding latest version
  - booting version: 3.9.0
>>> Injecting OpenPype version to running environment  ...
>>> Validating version [ (...)\OpenPype\build\exe.win-amd64-3.7 ]
--- version is valid
>>> loading environments ...
  - for Avalon ...
Traceback (most recent call last):
  File "(...)\OpenPype\.venv\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 113, in run
    module_init.run(name + "__main__")
  File "(...)\OpenPype\.venv\Lib\site-packages\cx_Freeze\initscripts\Console.py", line 15, in run
    exec(code, module_main.__dict__)
  File "start.py", line 1146, in <module>
  File "start.py", line 1055, in boot
  File "start.py", line 330, in set_avalon_environments
  File "(...)\OpenPype\build\exe.win-amd64-3.7\openpype\__init__.py", line 8, in <module>
    from dataclasses import dataclass
ModuleNotFoundError: No module named 'dataclasses'

Add "dataclasses" to install_requires list in ./setup.py


Reduce "Refresh" and "OpenInPortal" references in package.json

Not a requirement, but I find that this helps keep the package.json cleaner.  https://github.com/microsoft/vscode-azurestaticwebapps/blob/main/package.json#L310-L323
By using a Regex, you don't need multiple declarations of .refresh commands.  By grouping it as 9, you're guaranteeing that it'll be at the bottom of the list (unless for some reason we ever hit more than 9 groups 🥴)
Originally posted by @nturinski in https://github.com/microsoft/vscode-cosmosdb/issues/1793#issuecomment-763146346

This issue has become stale and is at risk of being closed. The community has 60 days to upvote the issue. If it receives 5 upvotes we will keep it open and take another look. If not, we will close it. To learn more about how we handle issues, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this issue has received less than 5 community upvotes and we closed it. Still a big Thank You to you for taking the time to create it! To learn more about how we handle issues, please see our documentation.
Happy Coding!


Emmet not working if use Shopify settings in style.scss.liquid

VSCode Version: Latest
OS Version: macOS 10.12.6

Steps to Reproduce:

Create styles.scss.liquid (Shopify format)
Add some styles and add setting from admin, for example color: {{ settings.was_price_color }};
Before this setting, emmet works fine, but after not working

I recorded video, please look http://take.ms/bys3c

Does this issue occur when all extensions are disabled?: Yes

any updates?

What is the language mode of the file being used?
If it is not css/less/sass, can you share what extension you used to help with this file type?

I work with style.scss.LIQUID files and use SCSS language mode

Can you provide some documentation on the using the {{ and }} as css property value?

Please see  Using Liquid in Sass files

@sergeche I recall you mentioning on working on a better parser for scss and less. Would this case be covered there?

This example works fine with current CSS parser in CodeMirror and Atom. Might be an issue with VS Code plugin


SQLBuilder feature

Hello, seeing unexplained behaviour when trying to use the SQLBuilder option in jsforce. Below is my lines of code. I would expect the jsforce query to return only two rows; however I observe details of all the users are logged out. Seems like the condition is not being applied at all. Is the feature available to use ?
         var queryConfig = {
            fields: [ "Name", "Profile.Name" ],
            table: "User",
            condition: {
                $or: [
                    { Id: '005D0000003d8xS' },
                    { Id: '005L0000003djbr' }
                  ]
              }
        };

        connection.query(queryConfig).on("record", function(record) {
            console.log(record);
          }).execute();

Hi @anupamabalahara,
You have a typo in your query config. condition should be conditions with an 's'.


Simplify filter implementation

This simplifies the filter implementation. I've run emit-sil, and the sil for the while loop is a tiny bit smaller (because it doesn't need to reference !=). I think the readability is much better. I'm not 100% if performance is better. What's the recommended way to performance-test this?

I didn't do a benchmark yet, but here's my test program and the respective SIL of next1 and next2:
https://gist.github.com/chriseidhof/602e125c35a5c557a56d

I updated the gist above to include an XCTestCase (with performance tests). With -O, the code is actually faster when filtering a generator that generates structs (almost 20%) and the performance is the same when filtering a generator that generates objects.
The loop is tighter, it doesn't need to call !=. (I guess if != would be inlined it could be the same).

Thanks @chriseidhof !


Fix doc render on Firefox

Fix for issue #1523

 You should sign our Contributor License Agreement in order to get your pull request merged.

Great fix, @ffrizzo!  Thank you!
Merge as 217ffa8 (master) and f022ecd (v0.14.docs).


Provide a way to access a parent log from a child log

Motivation:
RequestId is used for tracking the request and the response pair.
A request can be executed multiple times by RetryingClient.
It is difficult to group and trace all retried requests without the request ID of the original request.
By accessing the parent log from the current request context, we are able to log the parent and current request ID pair.
Modifications:

Add parent() to RequestLogAccess
Include the request ID of parent log to toString() in DefaultClientRequestContext

Results:

You can now access a parent log from a child log.
DefaultClientRequest.toString() contains a parent request ID if available.
Fixes #2588

Thanks a lot, @ikhoon !

Thanks for reviewing!


Translate State as a Snapshot page to Indonesia

Closes #448
Description
Translate the State as a Snapshot page.
Page URL: https://id.react.dev/learn/state-as-a-snapshot

Some changes requested. @lionelritchie29

I think it is okay to change it to that.

I've updated the content as suggested.
Thank you.


[BUG] Pull requests are failing 😢

🙁 Actual behavior
idk why pull request of many people including me are failing
is there an issue in depolyment ??
🙂 Expected behavior
Pull request should be successful 😤
🔢 Steps to Reproduce the Problem
No response

@gunwant11 Are you talking about the merge conflicts?

@gunwant11 I think pull requests are not failing, it's just that maybe the owner of the repo can only be able to manage the deployment with vercel.

Yes, @gunwant11 The vercel team account has ended and that's why the documentation deployment is failing. We are working on setting up a new domain and host the site there.


Add skew component to transform & pipeline

Adds skew x & y to the Transform component, TransformMatrix, and MultiPipeline.
Example: https://github.com/photonstorm/phaser3-examples/pull/335

This was requested in #3911 .

This was requested in #3911 .

[force push was to fix lint]

[force push was to fix lint]

Hmm, this is really frustrating because I love the thought of adding this feature! But it definitely breaks input (skewed objects are not correctly hit detected any longer) and breaks all the Bounds functions (and anything that relies on them, like alignment) and it'll certainly cause physics bodies to be misaligned, although that's a more manageable problem I guess.

Hmm, this is really frustrating because I love the thought of adding this feature! But it definitely breaks input (skewed objects are not correctly hit detected any longer) and breaks all the Bounds functions (and anything that relies on them, like alignment) and it'll certainly cause physics bodies to be misaligned, although that's a more manageable problem I guess.

Input is easy, I've updated with a fix for that; tests updated @ https://github.com/photonstorm/phaser3-examples/pull/335 .
Meanwhile, I'll take a stab @ Bounds (, alignment, ?).
I'd appreciate some advice on physics; obviously arcade is going to be screwy (but it doesn't work well with scale or rotation as is, so how worried should I be?). I'm guessing, if anything, this would be an acceptable break? LMK.

Input is easy, I've updated with a fix for that; tests updated @ https://github.com/photonstorm/phaser3-examples/pull/335 .
Meanwhile, I'll take a stab @ Bounds (, alignment, ?).
I'd appreciate some advice on physics; obviously arcade is going to be screwy (but it doesn't work well with scale or rotation as is, so how worried should I be?). I'm guessing, if anything, this would be an acceptable break? LMK.

GetBounds required me to double check my linear algebra, but it also is supported (test updated). I've still done nothing with physics; let me know your preferred next steps!

GetBounds required me to double check my linear algebra, but it also is supported (test updated). I've still done nothing with physics; let me know your preferred next steps!

I'm really sorry, but I'm going to close this PR without merging it. I love the thought of adding this, and I really do appreciate the work you put in, but I honestly think it's going to cause me so many problems in the future, for edge cases we haven't even considered, that I'm happy for this to remain a Phaser 4 only feature (where it's already implemented).


Implement API Gateways with Ocelot

Most of this article is understandable, but some sections could use some editing for more clear English. For example:
Although you can see how the arrows in blue would be simplified, from a client apps perspective, when using the aggregator pattern by reducing chattiness and latency in the communication, ultimately significantly improving the user experience for the remote apps (mobile and SPA apps), especially.
I read this sentence several times, but still have no idea what it is trying to say.

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

ID: 10ce8eaa-b3ff-9b69-fea1-131eed36b9ec
Version Independent ID: 771d9f72-b506-79ef-5398-030c1705ee9a
Content: Implementing API Gateways with Ocelot
Content Source: docs/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot.md
Product: dotnet-architecture
Technology: microservices
GitHub Login: @nishanil
Microsoft Alias: nanil

Hi @ronmhii , thank you for your feedback.


[Isuue: #2554] clean code

about issue #2554
work list:

[x] clean some warning code

Codecov Report

Merging #2585 (1523486) into master (017b655) will decrease coverage by 0.52%.
The diff coverage is 37.50%.

@@             Coverage Diff              @@
##             master    #2585      +/-   ##
============================================
- Coverage     61.15%   60.63%   -0.53%
+ Complexity     4237     4202      -35
============================================
  Files           653      653
  Lines         18532    18511      -21
  Branches       1659     1657       -2
============================================
- Hits          11334    11224     -110
- Misses         6305     6403      +98
+ Partials        893      884       -9

Impacted Files
Coverage Δ

...ugin/base/condition/data/ParameterDataFactory.java
100.00% <ø> (+33.33%)
:arrow_up:

...in/base/condition/judge/PredicateJudgeFactory.java
100.00% <ø> (+16.66%)
:arrow_up:

.../base/condition/strategy/MatchStrategyFactory.java
100.00% <ø> (+25.00%)
:arrow_up:

.../shenyu/plugin/context/path/ContextPathPlugin.java
53.12% <0.00%> (+1.60%)
:arrow_up:

...u/plugin/cryptor/request/CryptorRequestPlugin.java
60.00% <0.00%> (ø)

...plugin/cryptor/response/CryptorResponsePlugin.java
53.33% <0.00%> (ø)

...lugin/cryptor/strategy/CryptorStrategyFactory.java
46.66% <ø> (+2.91%)
:arrow_up:

...pache/shenyu/plugin/cryptor/utils/CryptorUtil.java
61.53% <ø> (+4.39%)
:arrow_up:

...g/apache/shenyu/plugin/cryptor/utils/JsonUtil.java
63.04% <0.00%> (+1.34%)
:arrow_up:

...common/handler/AbstractDubboPluginDataHandler.java
0.00% <0.00%> (ø)

... and 57 more

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 017b655...1523486. Read the comment docs.


2744 routing refactor

Creating a PR for more convenient commenting / discussion.

Overall I like the react-router structure a lot; it's much less ad hoc than the links system we were using before.
Made a number of efficiency / organization comments above.  Nothing jumped out at me as a show-stopper.  I'm not going to do another full code review of this, so I'll leave it up to you (@stephensprinkle) to address my comments where you it's appropriate / beneficial.  You can go ahead and merge to master when you think it's ready!


iOS Push broken after upgrade to 2.2.6

After upgrade parse-server from 2.2.2 to 2.2.6, APNS broken. I couldn't send a notification to iOS anymore. In log, it shows:
ERR!
parse-server-push-adapter APNS
cannot find vaild connection for XXXXXXXXXXXXXXX

Update 1: Rollback to @2.2.5 error still happened. But sometimes Android worked, sometimes didn't. Sometimes iOS worked, sometimes not.... This time, APNS is silent failed, GCM failed with error code 401. Will change version to 2.2.4 and let you guys know soon.

The problem seems to be in APNS key, will re-open if found any issues.


Image Optimization

Used ImageAlpha and ImageOptim (through ImageOptim-CLI)  to squeeze out all the bytes.
TOTAL was: 220.521kb now: 79.273kb saving: 141.248kb (64.00%) quality: 100%

Thanks for the PR!

Cool. What did this fix?

Tami Reiss
CEO
Cyrus Innovation http://www.cyrusinnovation.com/
212-647-7186
Agile Reinforcement to accelerate your development
Dedicated to respect and diversity
@tamireiss / @cyrusinnovation
Learn about the difference between the Cyrus way
http://www.cyrusinnovation.com/differences-between-xp-vs-scrum-agile/ and
other consultancies.
On Tue, Dec 29, 2015 at 3:45 PM, Steve Brudz<EMAIL_ADDRESS>wrote:

Thanks for the PR!
—
Reply to this email directly or view it on GitHub
https://github.com/cyrusinnovation/just-not-sorry/pull/2#issuecomment-167874735
.

It makes the image files smaller so that they'll load a bit faster.


Added inspecting list function and added inspecting with deleting to tests

Description
Changes proposed in this pull request:

...
...
...

Related issue(s)
Closes #969

End on in-cluster-eventing

/retest

/retest

/test pre-busola-integration-test-k3s-namespace

Passed, but for sure:
/test pre-busola-integration-test-k3s-namespace

Passed, but for sure:
/test pre-busola-integration-test-k3s-namespace


Green CI

In order to get this to pass, we need to update the wrap-test-harness with the latest wrap/rust bindings.

Tests should pass once https://github.com/polywrap/javascript-client/pull/61 is merged and new versions of the Client's monorepo packages are added.

I've opened a PR that removes ENS-related deployers from our CLI and targeted this PR:
https://github.com/polywrap/cli/pull/1839


Ractor the estimator to estimator wrapper.

Description
The current estimator in foreshadow is a MetaEstimator instance, which wraps over the user specified estimator or the default AutoEstimator instance. However, to access the actual estimator, users have to use code like foreshadow.estimator.estimator or foreshadow.estimator.estimator.estimator (when using AutoEstimator) even though when creating the foreshadow instance, it is foreshadow = Foreshadow(estimator=YOUR_FAVORITE_ESTIMATOR_INSTANCE). This creates an inconsistency on the expectation.
This change adds an estimator_wrapper attribute and prevents users from accessing the estimator in the old way.
The ration behind is that if we have to expose the internal structure of Foreshadow's estimator, at least be explicit that the true estimator is wrapped.
Another possible solution is to return the actual estimator user specified or the AutoEstimator instance when accessing the estimator attribute. In fact, while I'm writing this down, I feel this might be a better solution to further align user expectations. Let me know your thoughts. Thanks!

It turns out that I've already implemented the better solution. I probably forgot I have done that since it was done more than a week ago...Anyway, I've updated the unit test to verify that user can access the estimator.


Is it possible to have a custom mimeType for an NDEF_DISCOVERED?

i want to have a custom mimeType for read a ndef, like to:
mimeType="application/vnd.hello.sample.nfcmanager".
The project already have text/plain and uri.
I need this for avoid conflicts with another applications on the devices.
Many thanks in advance for your answers

Hi @miltonTouchdown sorry for the late response.
You can add following intent filter into your AndroidManifest.xml to achieve this:
<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/vnd.hello.sample.nfcmanager" />
</intent-filter>

Thanks!

close inactive issue


Linux/GNU Issues

Expected Behavior
Works as it does in the Windows version.
Actual Behavior
Crashes when enemies have no valid path.
Relevant Information to Reproduce
Be a Linux owner and walk into a room where the enemies have no valid path
Category of Issue
Bug

Another issue with Linux/GNU has been fixed: The toolchain no longer requires a cmd prompt, which was prohibiting Linux/GNU users from making maps easily.

As it turns out, game crashes on at least some devices upon loading any game. Text input is glitchy.

closeSDL() (specifically line 255 of outermeSDL.c) still segfaults. Look into this!

Numerous issues appeared while testing on Linux:

Animation text box crashes
Quitting (crashes on cleanup for some reason)
Going out of Abilities menu

Animation text boxes and going out of the Abilities menu no longer crash.
Crashes that still occur:

Quitting (on cleanup)

Crashes that may still occur (probably fixed but unconfirmed):

Animations
Saving map-pack player data
???

Fixed quitting crash, animation crash, saving crash, and script disabled data being garbled. Looking into player name weirdness.

All known Linux issues have been fixed.


Feature request: Build executable based on project version in pyproject.toml

Feature request
Add the ability to run different scripts in the tool.poetry-pyinstaller-plugin.scripts section based on the project version in pyproject.toml.
For example, if the project version is pre-release, I want the script to be run that is designed to build pre-release exe files.
It would also be handy to specify in the script configuration that the project version from pyproject.toml will be appended to the build name.
Examples
Build stable release
[tool.poetry]
# ...
version = "1.0.0"

[tool.poetry-pyinstaller-plugin.scripts]
release_build = { source = "main.py", type = "onefile" }
prerelease_build = { source = "main.py", type = "onefile", prerelease=true }

pyinstaller directory structure after running poetry build
.
├── dist
│    ├── pyinstaller
│    │    ├── .specs/
│    │    └──release_build
.

Build prerelease
[tool.poetry]
# ...
version = "1.0.1b1"

[tool.poetry-pyinstaller-plugin.scripts]
release_build = { source = "main.py", type = "onefile" }
prerelease_build = { source = "main.py", type = "onefile", prerelease=true }

pyinstaller directory structure after running poetry build
.
├── dist
│    ├── pyinstaller
│    │    ├── .specs/
│    │    └──prerelease_build
.

Adding version to executable's name
[tool.poetry]
# ...
version = "1.0.0"

[tool.poetry-pyinstaller-plugin.scripts]
release_build = { source = "main.py", type = "onefile",  add_version=true }

pyinstaller directory structure after running poetry build
.
├── dist
│    ├── pyinstaller
│    │    ├── .specs/
│    │    └──release_build-1.0.0
.

Hi @vlaszdunov,
Both feature requests are covered by #30.
Adding version to executable's name

Implemented as requested.

Build release/prerelease

Made the choice to implement this use-case with a more explicit approach using when option.
when="release" -> Build if version match x.x.x
when="prerelease" -> Build if version match x.x.x(a|b|rc)
.post & .dev are not yet supported, PR are always appreciated.


fix: set min height of alert

The alert component should have at least the height of the icon. Right now, the icon overlapses the container in case it's height is higher than the container itself.

The solution may not fix the problem.

If you want empty alert works, I think you can pass this to n-alert.
<template #header> </template>

@07akioni my problem is the other way around: I want bigger icons but since the icon is absolutely positioned the box doesn't take the icon's size into consideration when calculating the layout.

@07akioni my problem is the other way around: I want bigger icons but since the icon is absolutely positioned the box doesn't take the icon's size into consideration when calculating the layout.

The design is intended to solve customization problem. Icon's position is customizable, so I used absolute position for icon.
If we want to make it take space we may need to figure out a way to keep icon's position customizable.

Hm, how's the icon's position customizable right now? Based on the code I can't see any possibility to move it anywhere else except for using specific custom styles.

Hm, how's the icon's position customizable right now? Based on the code I can't see any possibility to move it anywhere else except for using specific custom styles.

iconMargin can be customized.

If it's just about the margin I still don't understand why position absolute is used. A simple flex layout should do the same and even respect the size of the icon.

If it's just about the margin I still don't understand why position absolute is used. A simple flex layout should do the same and even respect the size of the icon.

Margin can make icon placed in arbitrary position.
Some designers in companys may request it placed in some strange position.

However I think this is a problem, it should be fixed in some way.


Added support for using local LLMs via ollama

This is basic support, enabling a few embedding models as well as Llama-3.2 for chat.
The tokenizer used is currently the cl100k_base encoding by way of tiktoken.

Users will need to have installed ollama, and have pulled down the model(s) they'd like to use.
It might be possible to do this automatically, and even make the list of models available a function of what is available in ollama.


Recognize Doxygen comments

I would like to recommend adding doxygen comments to the ftplugin. This allows convenient line breaking and text flowing using gwap in normal mode with comments in formatoptions formatoptions+=c enabled.
/// @brief Write the data of a single channel to the NWB file
///
/// @param locationID      HDF5 file identifier
/// @param path            Absolute path in the HDF5 file where the data should be stored
/// @param version         major NWB version
/// @param p               Filled #IPNWB::WriteChannelParams structure
/// @param tsp             Filled #IPNWB::TimeSeriesProperties structure
/// @param compressionMode [optional, defaults to NO_COMPRESSION] Type of compression to use, one of @ref CompressionMode

this is conveniently reflown using vip and gwap.
/// @brief Write the data of a single channel to the NWB file
///
/// @param locationID      HDF5 file identifier
/// @param path            Absolute path in the HDF5 file where the data should
///                        be stored
/// @param version         major NWB version
/// @param p               Filled #IPNWB::WriteChannelParams structure
/// @param tsp             Filled #IPNWB::TimeSeriesProperties structure
/// @param compressionMode [optional, defaults to NO_COMPRESSION] Type of
///                        compression to use, one of @ref CompressionMode

My current vimrc to make this happen looks like this:
set formatoptions=tcqornj
set formatlistpat+=\\\|^@param\\s\\+\\w\\+\\s\\+
if has("autocmd")
  augroup fileTypeCustom
  autocmd!
    autocmd FileType igorpro
      \ setlocal nospell |
      \ setlocal comments+=b:///
  augroup END
endif

Would it be possible to add the following lines to the ftplugin?
set comments+=b:///
set formatlistpat+=\\\|^@param\\s\\+\\w\\+\\s\\+

could also be extended to match the @brief keyword.

@ukos-git Go for it!


Better conversion for math functions

Replacement of custom conversion before math functions with a normal float cast.

Done in v1.0rc2


Export: Allow custom name for merged animation

Currently merged NLA strip animations are exported with the hardcoded name of "Animation". This would allow the user to select a custom animation name instead.

Thanks!


Added possibility to transform template name with own function

Hi,
I know this is very old plugin but we still use it in our company because we can't migrate to Ember CLI.
I implemented there support to specify custom transform function for the template name which we need.
Can you please review it and merge it if it's fine?
Thanks,
Fero

@flucivja overall it looks legit - checkout the feedback I had and I could have the opportunity to merge this Sun/Mon

@toranb I fixed it based on feedback. Thanks.

@flucivja great work here! I just merged this/ and published it on npm as v1.9.0
Can you pull this down/ ensure all is good 2 go? Thanks again! I really appreciate you keeping this alive for people who are stuck pre ember-cli

@toranb I tried it and all looks good. Thanks for quick response and for your time looking at this.


some search suggestion doesn't match the true search result

What happened?
A bug happened!
Please reproduce in steps
Click # 47
Expected Behavior
I've expected ...
search # 47
What browsers are you seeing the problem on?
Microsoft Edge
Are you logged in?
No response
At which address did you encounter bug?
No response
Screenshots
Paste from your clipboard or upload screenshots
https://user-images.githubusercontent.com/38389586/155561080-8a5a569e-af49-4b31-96db-df362f415fc5.mp4
see above
Relevant log output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Seems I can't reproduce, maybe it's fixed?
Uploading Screen Recording 2022-03-01 at 10.58.13.mov…


Eudic doesn't load CSS and JS files from .mdd file

Eudic (Android app) doesn't load CSS and JS files from mdd file packaged by writemdict. Other resources in mdd file, like images and sounds, work well. Is this issue related to dictionary encryption and registration?
Hope you can give me some advice! Thanks!

Thanks for the report! My own research into the mdd files is somewhat hampered because I don't have many examples of mdd files to begin with. Do you have an example of an mdd file that Eudic is able to read? If so, that would help me figure out what the problem is.

Here is an example, which actually contains the mdd file where I would like to substitue these JS and CSS files.
Access code: uj5v

I tried, and I cannot reproduce the issue. I wrote a small test dictionary, and the CSS style appears to load correct with 欧路词典 on Android.
The code I used to create it was this:
from __future__ import unicode_literals, print_function
from writemdict import MDictWriter

outfile = open("issue5_test.mdx", "wb")
d = {
    "test":"<link href=\"teststyle.css\" rel=\"stylesheet\" type=\"text/css\" />Definition",
    }
writer = MDictWriter(d, "Issue #5 test", "description")
writer.write(outfile)
outfile.close()

outfilemdd = open("issue5_test.mdd", "wb")

d = {"\\teststyle.css": "\nspan { color: #ff0000; font-style: italic; }\n".encode("ascii")}
writer = MDictWriter(d, "MDD", "MDD Description", is_mdd=True)
writer.write(outfilemdd)
outfilemdd.close()

Does this solve the issue for you?

All I want to do is substitute old css/js files in mdd file in previous example link. I first unpack mdd file using xwang's readmdict.py with python readmdict.py -x oald8.mdx, resulting in a data directory.  After replacing old css/js files, I pack mdd file using the following code, which Eudic refuses to load correctly.
from __future__ import unicode_literals, print_function
import os
from writemdict import MDictWriter

data_dir = 'data'
mdd_file = 'oald8_new.mdd'

def mdd_data_from_dir(directory):
    "Return mdd dict with contents from `directory`"
    directory = directory.rstrip('/')
    l = len(directory)
    paths = []
    for dir, subdirs, files in os.walk(directory):
        for file in files:
            path = os.path.join(dir, file)
            name = path[l:].replace('/', '\\')
            paths.append((path, name))
    data = {name: open(path, 'rb').read() for path, name in paths}
    return data

def write_mdd_file(directory, fname):
    "Write contents in `directory` to mdd file `fname`"
    outfilemdd = open(fname, "wb")
    d = mdd_data_from_dir(directory)
    writer = MDictWriter(d, "MDD", "MDD Description", is_mdd=True)
    writer.write(outfilemdd)
    outfilemdd.close()

write_mdd_file(mdd_file)

i think data read is right,try specify mdd formats.


GTM_ID_PATTERN to support IDs like G-XXXXXXXXXX

Request / Idea
Today got from the client the tag manager ID with pattern G-XXXXXXXXXX. vue-gtm thrown a validation exception when I tried to use it (of course). Maybe we should pass ID as is and let user and google validate it?
Additional Context
...

Never mind, that was my mistake, that ID is for https://www.googletagmanager.com/gtag, not for https://www.googletagmanager.com/gtm

Now I'm glad I implemented this pattern 😛
But thanks for using this plugin :slightly_smiling_face:


feat: make all pieces virtual

Warning
Requires https://github.com/sapphiredev/pieces/pull/344 to be merged and released to be able to use container.stores.loadPiece.

See aforementioned PR for more details about this change.
Notable changes:

Adds bundler support in @sapphire/framework as all FS operations have been removed.
StoreRegistry is not longer instantiated twice, if you used container.stores and then instantiated SapphireClient, all the changes made would get reverted.
As a side effect, this PR also allows a fix for #671.

No, because you can specify the category via CommandOptions:
https://github.com/sapphiredev/framework/blob/10539d494d4771c129d78035a3e5bdb9b55de468/src/lib/structures/Command.ts#L107


Qunit is out of date

Could you please update @types/qunit?
I am trying to use @types/qunit and it's a month out of date. DefinitelyTypes Qunit has the recent changes for QUnit v2.

Thanks! Looks like it was updated to the latest https://www.npmjs.com/package/@types/qunit


Selection find all similar strings but with case insensitive

VSCode Version: 1.21.0
OS Version: Windows 10 Pro x64

Steps to Reproduce:
create 2 variables with the same string value, and select 1 of them:

in CamelCase
in lowercase

notice it highlight both of them even though they aren't the same.

Does this issue occur when all extensions are disabled?:  Yes

Duplicate of https://github.com/Microsoft/vscode/issues/43190 .


Add crate: ggez

Please add crate to category: engines
Synopsis: A framework for making 2D games easily, with an API inspired by LÖVE2D.

Thanks, closing because #32


Google play error code: -505

This should be fixed as of last 0.1-67 update which was uploaded to Google Play yesterday but is still not available (to me at least). Not closing this for now, please let me know if this will persist even after the new update is rolled out to users.

WHATS NEW section at google play should contain a single word: "bugfixes". That would mean the very last version is available.

I can see a single Bugfixes now, though still says 0.1 (not 0.1-67). Same 505 error though.

Do you have a testnet and mainnet apps installed at once on a same device?

Yes, on my Nexus 6P I do have the testnet app installed but can't install the mainnet because of the 505.
On a second phone just installed both with no problems, mainnet first and then testnet.

OK, I think it will persist until testnet app is removed. It can be reinstalled later once again once mainnet is there, can you try it?

Yes, that worked. Uninstalled Bitcoin Lightning Wallet Testnet then installed Bitcoin Lightning Wallet  sucessfully, after that installed the testnet one with no issues, thanks heaps for the help.

Thanks for testing, this was a one time migration issue, won't be happening again.


how does producer node find genesis node

I can't figure out how producer find genesis node in the case of "tutorial bios boot sequence". genesis node is launched without specifying its listening p2p port, so that producer can't specify genesis node's p2p address as peer address. How does producer make it? please give me some hints.

There is no auto-discovery mechanism.  Basically the producers, including the genesis node, must publish their address info (listening endpoint).  A node can then add that peer using the --p2p-peer-address command line option to nodeos, or can specify the property in its config.ini file.

thx


How can i use it with ionic 2 typescript?

I've manage to get it to work with:
npm install tether-shepherd --save
npm install @ryancavanaugh/tether-shepherd --save (types)
Then inside component:
import * as Shepherd from "tether-shepherd";

I get "cannot read property 'jquery' of null" error, please help

@omkarkhalipe do you get this error when trying to initialise tour, addStep or showing individual step?

@omkarkhalipe  start your tour in the life cycle events, once dom has been loaded then start the tour. Use it in ionViewDidLoad method.

This seems to be an issue unrelated to Shepherd itself, so going to close. It sounds like people figured out ways around the problem.


Decide how to handle various error states on the bridge page

Examples:

User needs to switch network
Still needs to set their allowance

Possible approach is to disable the simulation until the proper criteria are met (network, allowance, etc..?) and therefore avoid showing or having to suppress error messages that are not useful.

Related to #70

Related to discussion in #90


[AsahiShimbunAJW] New Bridge

http://www.asahi.com/ajw/
Their site is not available using HTTPS.
Only the main site uses HTTPS, this AJW section with English language news is redirected to HTTP even though they have a valid certificate for www.asahi.com. mindblown
There is a feed per category because the HTML is much easier to parse and has the same content. If you want all the news from "Japan News" for example, subscribe to all the feeds directly, or add new commits to this PR.

Merged. Thanks for the PR!


This fails installation in Yarn

I had never seen this error before today, this is my first time installing anything from @graphql-armor but this happens for every package on the namespace for me. (even when defining a specific version)
❯ yarn add @escape.tech/graphl-armor-max-depth
➤ YN0027: @escape.tech/graphl-armor-max-depth@unknown can't be resolved to a satisfying range
➤ YN0035: The remote server failed to provide the requested resource
➤ YN0035:   Response Code: 404 (Not Found)
➤ YN0035:   Request Method: GET
➤ YN0035:   Request URL<EMAIL_ADDRESS>

Hello !
Package is not found because you made a typo error. graphl instead of graphql.
Please try to copy this command and re-open the issue otherwise.
yarn add @escape.tech/graphql-armor-max-depth

@probablykabari, the issue came from readme, I pushed a fix for this. Thanks for pointing out :)

Ahhhh hahah yea that was a copy/paste from the README, good catch and thank you!


sinkv2(cdc): improve conflict detector throughput in some cases

Signed-off-by: qupeng<EMAIL_ADDRESS>What problem does this PR solve?
Issue Number: close #7446 .
What is changed and how it works?
Firstly let's take a look at how conflict detector handles some cases without the patch:
Suppose a transaction A with 2 conflict keys, x and y. If x doesn't conflict with any other transactions but y conflicts with another transaction B, conflict detector will think that A only conflicts with B, and dispatches A to B's worker directly. We thought this is an enhancement. But tests shows it will cause sink workers unbalance.
This PR changes the behavior. Let's get back to the case again. Now conflict detector will think A conflict with 2 other transactions, B and X. It's not important that who is B, and the key point is A won't be dispatched to B's worker directly. So hungry should never happend again.
Check List
Tests

Integration test

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
None

Codecov Report

Merging #7445 (0585954) into master (f4754e1) will increase coverage by 0.0722%.
The diff coverage is 52.8571%.

Additional details and impacted files

Flag
Coverage Δ

cdc
67.5788% <97.1428%> (+0.1312%)
:arrow_up:

dm
52.0107% <ø> (+0.0025%)
:arrow_up:

engine
60.9862% <8.5714%> (+0.0177%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.
@@               Coverage Diff                @@
##             master      #7445        +/-   ##
================================================
+ Coverage   59.8150%   59.8873%   +0.0722%
================================================
  Files           803        803
  Lines         92129      92290       +161
================================================
+ Hits          55107      55270       +163
  Misses        32213      32213
+ Partials       4809       4807         -2

/merge

/merge

/run-all-tests

/run-dm-integration-test


how can I do to add a login screen before swrevealviewcontroller without using two storyboard?

Hi,
My SWRevealViewController works properly when Reveal View Controller is the initial VC but it does not work properly when I add a login VC before that. I don't want to have two storyboards.
Thanks

Used a sample code from previous issue.  #642


Couldn't load project.

I downloaded the project and try to open Swift Charts Examples. xcworkspace.
But I can't see anything. Please refer image below.

Works for me. Make sure you're running Xcode 14.


Auto encoder input layer neurons

Hi, thank you for the great module.
For the auto encoder part, it seems that a input layer with number of neurons same as features is defined. However, the same is also next defined as the first hidden layer. Is this often the case? Does the model will be too complex for data set with large number of features (e.g. 10000)?
Thanks,
Jing

Hi there,
I am a bit confused about your first question. You should not worry about the number of input feature space. For instance, your input is a [20000, 10000] matrix (20,000 samples with 10000 features), you could define hidden_neurons = [1024, 512, 64, 32, 32, 64, 512, 1024] or hidden_neurons = [2000, 1000, 500, 500, 1000, 2000]. All up to you. To be honest, it does not need to be symmetrical.
Let me know whether this makes sense.

Thank you for the reply.
For my case, the hidden_neurons is default ([64, 32, 32, 64]) and input has 19743 features. The model by default has 7 layers in total and the first two are related to feature numbers. I'm not sure if the first two layer is often necessary in auto encoder or just one layer is enough? The parameters is too large thus raise Resource exhausted error on my GPU server (8G memory).

I do not think that is necessary. Is there any way on your end to skip the second layer?

I tried to edit the additional layer building part of auto_encoder.py script. Looping hidden_neurons_ from index 1 seems can skip the second layer.
Before:
   # Additional layers
    for i, hidden_neurons in enumerate(self.hidden_neurons_, 1):
        model.add(Dense(
            hidden_neurons,
            activation=self.hidden_activation,
            activity_regularizer=l2(self.l2_regularizer)))
        model.add(Dropout(self.dropout_rate))

After:
    # Additional layers
    for i, hidden_neurons in enumerate(self.hidden_neurons_[1:], 1):
        model.add(Dense(
            hidden_neurons,
            activation=self.hidden_activation,
            activity_regularizer=l2(self.l2_regularizer)))
        model.add(Dropout(self.dropout_rate))`

perfect. as long as it could compile. It does not require symmetry so you are welcome to use the customized number of neurons, just FYI.

Thanks for the effort. By the way, why the neural network based methods are not benchmarked/compared in your doc?

The main reason is the benchmark is mainly on UCI datasets (which are too small for nn). May build some benchmark for nn in the future with large datasets. Feel free to suggest some :)


ING-1262: Make user_data overridable

Making user-data of a brod_group_subscriber_v2 member overridable comes in handy at the time of partition assignment. The assignment logic can be be based on the member metadata. For instance, in usecases where certain members get sticky assignments while the others get round-robin assignments.

Closing this one in favor of #2. The feature is built atop 3.15.6, which is the version that EPS uses.


Restore SG state after reset or mqtt conn lost

Hi @raomin,
figured out that after a connection loss to the mqtt broker, the SG state is always broken/wrong. I'm now using EEPROM to store the SG state and the state of the pins. Also refactored/removed some functions since the names are not appropriate any more.
Cheers,
Daniel

Additional:
For openHAB or ioBroker users like me, it could be annoying and unnecessary to have HomeAssistant discovery messages in the MQTT broker. Therefore one should be able to disable those messages. This is a simple and quick solution for that.

@raomin If you need any help merging please let me know.


QUESTION: How can I use a custom Chef library with Metal?

I wrote a very basic Chef library (i.e., a class in the libraries dir of my cookbook) to show colored output during a converge. It uses the technique Seth Vargo talks about here, like so:
$:.unshift *Dir[File.expand_path('../../files/default/vendor/gems/**/lib', __FILE__)]
require 'chef/resource'
require 'term/ansicolor'
class String
  include Term::ANSIColor
end
class Chef
  class Resource
    class Show < Chef::Resource
      def initialize(name, run_context=nil)
        super
        @resource_name = :show
...

Pretty nifty, but how can I use it with Metal? I ask because my converge is blowing up when Chef compiles the library. Understandably so, since it uses a gem Chef can't find, since that gem file I vendored to my_cookbook/files/default/vendor isn't on the node.
After I converge, I an SSH into the node and see this in the dir for my cookbook:
ubuntu@ip-172-31-17-75:/var/chef/cache/cookbooks/pipeline$ ls -al
total 80
drwxr-xr-x  5 root root 4096 Sep 15 15:19 .
drwxr-xr-x 19 root root 4096 Sep 15 15:20 ..
drwxr-xr-x  2 root root 4096 Sep 15 15:19 attributes
-rw-------  1 root root   51 Sep 15 15:19 Berksfile
-rw-------  1 root root  935 Sep 15 15:19 Berksfile.lock
-rw-------  1 root root   34 Sep 15 15:19 CHANGELOG.md
-rw-------  1 root root  960 Sep 15 15:19 chefignore
-rw-------  1 root root 6148 Sep 15 15:19 .DS_Store
-rw-------  1 root root  449 Sep 15 15:19 Gemfile
-rw-------  1 root root 2540 Sep 15 15:19 Gemfile.lock
-rw-------  1 root root  155 Sep 15 15:19 .gitignore
-rw-------  1 root root  173 Sep 15 15:19 .kitchen.yml
drwxr-xr-x  2 root root 4096 Sep 15 15:19 libraries
-rw-------  1 root root   72 Sep 15 15:19 LICENSE
-rw-------  1 root root 2374 Sep 15 15:19 metadata.rb
-rw-------  1 root root  593 Sep 15 15:19 README.md
drwxr-xr-x  2 root root 4096 Sep 15 15:19 recipes
-rw-------  1 root root  241 Sep 15 15:19 Thorfile
-rw-------  1 root root 3405 Sep 15 15:19 Vagrantfile

My cookbook attributes are in there, and my library is in there. But the files dir isn't. So Chef complains that it can't find one of the gems my code uses:
===========================================================================
Recipe Compile Error in /var/chef/cache/cookbooks/pipeline/libraries/show.rb
===========================================================================
LoadError
---------
cannot load such file -- term/ansicolor

Any ideas about how to make that fly?

Closing this since no movement has been made in months.  Please re-open if you want this supported!


Consider editing repository setings to remove "Packages" section

"Packages No packages published" is displayed right now, fortunately this pointless section can be removed.
Edit repo page config to remove it (cog next to the description).
I am not making a PR as it is defined in proprietary github settings, not in a git repository - and I have no rights to modify repo settings.

Done, thanks for the tip.


Inject LocalStorage and SessionStorage WebAPI Replacements ( Maybe a Plugin? )

Is your feature request related to a problem? Please describe.
I am wanting to create a desktop application for at least two web apps, Juju Lens and Cyber Chef and both use the window.localStorage APIs to persist user preferences. While the localStorage APIs technically "work" in webview, when the server is run on a different localhost port every time webview treats it like a different domain with different LocalStorage, therefore the data is not accessible to the app after closing and restarting it.
Describe the solution you'd like
I would like Tauri to replace the LocalStorage API with a wrapper for Tauri commands that will persist the storage in a JSON file in the user's ~/.local/share directory ( or equivalent ), somehow indexed by the tauri.bundle.identifier from the tauri.conf.json file.
Describe alternatives you've considered

I think that this could be implemented as a Tauri plugin, but as it is rather core web functionality it seems to make sense that it should work out-of-the-box and be built-in to Tauri core ( or whatever crate it needs to be in, I haven't verified yet ).
Another possible implementation strategy would be to somehow cause the tauri.bundle.identifier to resolve to localhost:[port that tauri started on] so that the domain could be the same across starts of the application, but I don't think that this is anywhere near possible with the current webview API ( I'm not experienced with webview, but I did look into it a little bit ).

Additional context
I need this for my Juju Lens application and I will probably start work right away on a Tauri plugin, but if you guys decide you would like it in Tauri core, I can start development inside Tauri core instead of a separate crate.

Unfortunately it looks like browsers to not allow overwriting the window.localStorage global like we currently do the window.Notification global. :confused: That's unfortunate unless someone knows some way around this.
Without being able to patch window.localStorage users would have to manually create a shim for their app that will use one or the other based on build arguments or the presence of window.__TAURI_INVOKE_HANDLER__.
That's not horrible. At least it's not hard to do, it just would have been nice if it was automatically supported. In the case that we can't automatically support it, maybe it would be a good idea to have this as an opt-in plugin for Tauri instead of building it in with the rest of the Tauri API.

semi-related to this issue, window.localStorage is disabled on local pages on Edge.  (i.e. with no-server).  No idea if webkit2gtk or safari behaves the same way

I realized a really easy way around the not being able to override window.localStorage. All we have to do is hook into the webview close event and then dump out all of the data in localStorage to a file when the view closes. Session storage would just work fine because it doesn't outlive the session anyway, duh :man_facepalming: :slightly_smiling_face:.

semi-related to this issue, window.localStorage is disabled on local pages on Edge. (i.e. with no-server). No idea if webkit2gtk or safari behaves the same way

I think that's a reasonable limitation. It seems like no-server is only useful for very small frontends anyway. When I tried to run my Quasar app with no-server on Linux it too 100% of one of my CPU cores for like 5 minutes before the window even showed up, and it still had to load longer after that so I didn't wait for it.
I'm not sure if that is a bug, or just a limitation.

On second thought, we could just make a Tauri API for local storage that would always be usable even if you are in no-server mode and we use the technique where we dump the browsers localStorage to a file when it closes. You would only want to use one at a time so Tauri could pick the one to use based on the server mode selected.
We could also test to see if a browser in no-server mode would allow you to set window.localStorage because it isn't already set? I don't think that would work, but it's worth a try.

I'm not sure if that is a bug, or just a limitation.
regarding 5 minutes - that's def a bug. quasar no-server should work instantly.

should probably regularly update the store instead of just on close, because there may be events like out-of-battery where there is no time to write to the store.

For the "persist when closed" technique for LocalStorage, the issue I see so far is that you could have different apps that, when run on the same port, will use the same local storage because the port is random. Even if the app's data was restored by Tauri every time the app started up, if we don't clear the LocalStorage as well it would still be able to read the keys from the other app's storage. I think this is a mild security risk, but even if it wasn't a security risk it could still be a very confusing thing if a Tauri app ever happened to run on the same port as another app that the user was hosting on localhost, for development probably.
The Tauri app could end up overwriting any keys that have the same name.
Maybe it would be better to just have a Tauri-specific API, and we provide small shim utility that will dynamically select which one to use so that it can be used in browser and Tauri without changes.

well - we've discussed that internally, and think that an app should have a specific ID within the ~/.my-app folder, so that you don't get that kind of overlap. but it is always a security risk when you put data in userspace. I've seen this a number of times in the wild with electron, and its very much concerning to me.

Well I've created a basic TaruiLocalStorage plugin for use with my app here.
Right now it could be more efficient because it synchronously opens, reads, and writes the storage file for every setKey request. Later I could spawn a thread to manage writing the file and then just send a non-blocking message over the channel to flush the data whenever it changes.
I'm not sure if this is something that we would want built-in to Tauri or not, but this works pretty well for me so far.

window.localStorage isn't super protected - it has an undefined setter, but you can get around it using Object.defineProperty(window, "localStorage", { value: replacement }) rather than assigning directly to inject a JS shim. If localStorage is replaced with something implementing the same interface as part of the webview bootstrapping process, then it should transparently allow use of the same interface in Tauri and the browser. Just have the Tauri storage write out to a directory in tauri_api::path::data_dir() when a key is set - so C:\Users\{username}\AppData\Roaming\my-tauri-app\ or OS equivalent.

Yes! That works! That is much nicer. In that case I think it would make sense to build it into Tauri as a standard so that all apps will support it transparently. My custom localStorage doesn't perfectly match the behaviour of the browsers localStorage, but it should work for most cases.
@nothingismagick would you be interested in a PR that adds this to Tauri as a built-in component?

I updated my local storage implementation to a point where I think it'd be ready for inclusion into Tauri. You can see it here:
https://github.com/katharostech/juju-lens/blob/649b01292d39c2649a2e3843452321a9d0e4f9ca/src-tauri/src/local_storage_plugin.rs#L1
It is now a drop-in replacement for the browsers local storage and should be transparent for, I'm guessing, almost all applications.

sorry for not getting back to you sooner @zicklag. In the core team we discussed this last night, and came to the conclusion that this is such an important feature that it should be inside of core instead of merely a plugin. Making it an option (on by default?) within the tauri.conf.json. Thankyou so much for working through this issue!

sorry for not getting back to you sooner @zicklag. In the core team we discussed this last night, and came to the conclusion that this is such an important feature that it should be inside of core instead of merely a plugin. Making it an option (on by default?) within the tauri.conf.json. Thankyou so much for working through this issue!

No problem. :smiley:
If I get some spare time I'll try out a PR for including it in core, but if anybody wants to get to it first feel free to beat me to it.

No problem. :smiley:
If I get some spare time I'll try out a PR for including it in core, but if anybody wants to get to it first feel free to beat me to it.

This is not a problem anymore since we use the custom protocol in production instead of a localhost server with a random port.

Which release implements this feature? Although this issue is closed, it is not associated with the corresponding commit.
@lucasfernog


Does not compile with latest rust

ahash (a dependency of sqlx) no longer builds, see https://users.rust-lang.org/t/error-e0635-unknown-feature-stdsimd/106445

The time crate also needs to be upgraded
https://users.rust-lang.org/t/time-crate-compilation-error/111789/4
https://github.com/rust-lang/rust/issues/125319


Mitmweb prevents all kinds of hot keys

Problem Description
In mitmweb you cannot use your "usual" hot key features anymore or so, as they all seem to be catched by mitmproxy – even if mitmproxy does not even do anything else with that.
Steps to reproduce the behavior:

Press F5 in your browser with mirmweb to reload, or Ctrl+L to focus the location bar (that works though).
-> It does not work.

Using the Firefox debugger I can see it somehow catches all keyboard events. (I pressed Ctrl+F5 there, which really should nearly never be catched by a website.)

System Information
Firefox 79
Mitmproxy: 5.2
Python:    3.7.3
OpenSSL:   OpenSSL 1.1.1d  10 Sep 2019
Platform:  Linux-5.4.51-v7l+-armv7l-with-debian-10.4

In mitmweb you cannot use your "usual" hot key features anymore or so

Could you clarify what that means? Does that mean hotkeys don't work for you at all (e.g., you cannot press r to replay a selected flow?), or only some hotkeys (in particular custom ones) don't work?

Only the ones of mitmproxy work, all browser hot keys are overwritten – like F5 for reloading or F11 for fullscreen.
Actually testing some hot keys I know, it seems the shortcuts with Ctrl work, but the function keys (F…) are certainly all overwritten.

I guess we should only preventDefault if we actually consume the keydown. Currently it prevents F5, F11 etc.
https://github.com/mitmproxy/mitmproxy/blob/218e69ddb2aecd2fcd224b06bf6bbde23156fd3e/web/src/js/ducks/ui/keyboard.js#L7-L15

Well, that should be easy to fix.
My try in https://github.com/mitmproxy/mitmproxy/pull/4140 (untested)