OBC-PEER Crashes with "invalid memory address or nil pointer dereference" in ocbpbft.moveWatermarks

@jyellick   @kchristidis
Occurs in code with #687 fix (plus others)
commit 7abd041f5b9e5ce346d1608f26b6880f6e235a77
Merge: 5077256 4fd8ae5
Author: Binh Q Nguyen<EMAIL_ADDRESS>Date:   Wed Feb 17 13:29:30 2016 -0500

    Merge pull request #682 from adecaro/crash_issue669

    Fix for issue #669

Same setup and irritation as in #687. I have not modified PBFT parameters. VP3 crashed in this run:
21:47:27.441 [consensus/obcpbft] recvRequest -> DEBU 15115 Replica 3 received request: xLiYonKjyP43bjueApdggwgGibL6F3R7UcZbEaVt23vNZZX5qlFBcq3pr54J3Lowz1HMxxyY3MP9MGk9jBqWQA==
21:47:27.446 [consensus/obcpbft] recvRequest -> DEBU 15116 Replica 3 received request: 1LokxEyMUyRCAtTX8D5bEtO4mF1ctU4o0Vqn11rTO+oEdOSTSiiX1NcJ/scPGpJRZ1ggWzcI3WZHzmxOkgkQGw==
21:47:27.449 [consensus/obcpbft] recvRequest -> DEBU 15117 Replica 3 received request: oSrrJbXcOfiqPdXlPsvSnapoAd6M8UNeql9dyf9wIk/NnSUnecMu3hwcSL0ss2Lcm6os5NCJasQ+0/VynmHmOw==
21:47:27.450 [consensus/obcpbft] recvCheckpoint -> DEBU 15118 Replica 3 received checkpoint from replica 1, seqNo 470, digest rnI0/gpXpbBA8S4EcL1IN6yozzzANXehPXS9kfFFUZyXphbLLKljR5aeCRE91Fd1eH6hGOQ9BDqsnDmDayooXg==
21:47:27.450 [consensus/obcpbft] recvCheckpoint -> WARN 15119 Checkpoint sequence number outside watermarks: seqNo 470, low-mark 440
21:47:27.452 [consensus/obcpbft] recvCheckpoint -> DEBU 1511a Replica 3 received checkpoint from replica 2, seqNo 470, digest rnI0/gpXpbBA8S4EcL1IN6yozzzANXehPXS9kfFFUZyXphbLLKljR5aeCRE91Fd1eH6hGOQ9BDqsnDmDayooXg==
21:47:27.452 [consensus/obcpbft] witnessCheckpoint -> WARN 1511b Replica 3 is out of date, f+1 nodes agree checkpoint with seqNo 470 exists but our high water mark is 460
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 1511c Replica 3 cleaning quorum certificate for view=0/seqNo=446
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 1511d Replica 3 cleaning quorum certificate for view=0/seqNo=448
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 1511e Replica 3 cleaning quorum certificate for view=0/seqNo=445
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 1511f Replica 3 cleaning quorum certificate for view=0/seqNo=449
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15120 Replica 3 cleaning quorum certificate for view=0/seqNo=456
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15121 Replica 3 cleaning quorum certificate for view=0/seqNo=457
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15122 Replica 3 cleaning quorum certificate for view=0/seqNo=459
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15123 Replica 3 cleaning quorum certificate for view=0/seqNo=447
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15124 Replica 3 cleaning quorum certificate for view=0/seqNo=450
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15125 Replica 3 cleaning quorum certificate for view=0/seqNo=455
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15126 Replica 3 cleaning quorum certificate for view=0/seqNo=458
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15127 Replica 3 cleaning quorum certificate for view=0/seqNo=460
21:47:27.452 [consensus/obcpbft] moveWatermarks -> DEBU 15128 Replica 3 cleaning quorum certificate for view=0/seqNo=444
21:47:27.452 [peer] DeregisterHandler -> DEBU 15129 Deregistered handler with key: name:"vp2"
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0xa4f126]

goroutine 40 [running]:
github.com/openblockchain/obc-peer/openchain/consensus/obcpbft.(*pbftCore).moveWatermarks(0xc82012d900, 0x1d6)
	/go/src/github.com/openblockchain/obc-peer/openchain/consensus/obcpbft/pbft-core.go:879 +0xb36
github.com/openblockchain/obc-peer/openchain/consensus/obcpbft.(*pbftCore).witnessCheckpoint(0xc82012d900, 0xc824d0b350)
	/go/src/github.com/openblockchain/obc-peer/openchain/consensus/obcpbft/pbft-core.go:948 +0x50e
github.com/openblockchain/obc-peer/openchain/consensus/obcpbft.(*pbftCore).recvCheckpoint(0xc82012d900, 0xc824d0b350, 0x0, 0x0)
	/go/src/github.com/openblockchain/obc-peer/openchain/consensus/obcpbft/pbft-core.go:1003 +0x271
github.com/openblockchain/obc-peer/openchain/consensus/obcpbft.(*pbftCore).recvMsgSync(0xc82012d900, 0xc8202eb4c0, 0x2, 0x0, 0x0)
	/go/src/github.com/openblockchain/obc-peer/openchain/consensus/obcpbft/pbft-core.go:528 +0xe24
github.com/openblockchain/obc-peer/openchain/consensus/obcpbft.(*pbftCore).receive(0xc82012d900, 0xc8252b59d0, 0x64, 0x64, 0x2, 0x0, 0x0)
	/go/src/github.com/openblockchain/obc-peer/openchain/consensus/obcpbft/pbft-core.go:487 +0x23e
github.com/openblockchain/obc-peer/openchain/consensus/obcpbft.(*obcClassic).RecvMsg(0xc820317dc0, 0xc824fbcf80, 0xc8203fbd00, 0x0, 0x0)
	/go/src/github.com/openblockchain/obc-peer/openchain/consensus/obcpbft/obc-classic.go:70 +0x548
github.com/openblockchain/obc-peer/openchain/consensus/helper.(*ConsensusHandler).HandleMessage(0xc8202e0b70, 0xc824fbcf80, 0x0, 0x0)
	/go/src/github.com/openblockchain/obc-peer/openchain/consensus/helper/handler.go:74 +0x109
github.com/openblockchain/obc-peer/openchain/peer.(*PeerImpl).handleChat(0xc8201f2540, 0x7f35c3194948, 0xc820016650, 0x7f35c3195028, 0xc8203d0830, 0x1, 0x0, 0x0)
	/go/src/github.com/openblockchain/obc-peer/openchain/peer/peer.go:636 +0x679
github.com/openblockchain/obc-peer/openchain/peer.(*PeerImpl).chatWithPeer(0xc8201f2540, 0xc820352cd0, 0x10, 0x0, 0x0)
	/go/src/github.com/openblockchain/obc-peer/openchain/peer/peer.go:611 +0x9f5
created by github.com/openblockchain/obc-peer/openchain/peer.(*PeerImpl).PeersDiscovered
	/go/src/github.com/openblockchain/obc-peer/openchain/peer/peer.go:321 +0x36e

Full log files. Note the other peers kept running after VP3 crashed.
logs.zip

This failure seems to be rare. Since this single occurrence the same tests have all worked (modulo #699).

@kchristidis Here is a working theory for how this might be happening:
For whatever reason, we receive a commit message for a request which we have not received a preprepare.  Then the code enters into recvCommit.  The call:
                cert := instance.getCert(commit.View, commit.SequenceNumber)

is made, which internally, is this:
        idx := msgID{v, n}
        cert, ok := instance.certStore[idx]
        if ok {
                return
        }

        cert = &msgCert{}
        instance.certStore[idx] = cert
        return

So, because there is no msgCert in certStore, we create and insert one.  Now, there is a msgCert in certStore which has a nil prePrepare field.  Consequently, when we try to dereference cert.prePrepare.RequestDigest as seen in the logs above, we get a nil pointer dereference error.
One solution would be to check both the prePrepare, prepare, and commit fields for non-nil, and extract the request digest from whichever is present.  This would fix the bug, but the behavior seems inconsistent to me.
We discard prepares for requests which are not prePrepared, why are we storing commits which are not prePrepared or prepared? (I can see the advantage to storing them, in case things are received out of order, but then it seems that too, we should store the prepares).  Can you explain what's going on here @kchristidis

Reviewing the code for this.

(Clarified this with Jason on Slack, but posting here for reference as well. We do not discard prepares for requests which are not prePrepared.)

There's an if pre-prepare not found, discard prepare (or commit) logic we need to integrate.
I've added it to the recvPrepare and recvCommit functions already (https://github.com/kchristidis/obc-peer/commits/issues/696), but following the conversation Jason and I had with Marko and Jason's comments, I think this now probably belongs to the moveWatermarks routine.
Jason if I'm wrong, et me know.

@kchristidis I thought from our conversation with @vukolic that it is fine to to accept commits/prepares for requests which we did not receive a preprepare, in fact, this is a valid optimization.
Instead, moving the watermarks in the event of state transfer should have the special property of discarding all requests, and waiting for state transfer to catch us up.  Because we will be receiving prePrepares for all requests after the sequence number which state transfer recovers to, this discarding is safe.
Ultimately, to ensure that requests are not discarded in a segregated network, #394 will need to be implemented, but that is outside the scope of this bug.

I will be out of the office until Monday. If you want to test a fix the test procedure is given in #687.

This one seems to be fixed.


[Bug] Buggy selection when using VanillaJs

Initial checklist

[X] I agree to follow the code of conduct
[X] I searched issues and discussions and couldn’t find anything (or linked relevant results below)

Affected packages and versions
7.5.5
Link to runnable example
https://stackblitz.com/edit/vitejs-vite-di4hzj
Steps to reproduce
You need a VanillaJS or typescript project, DO NOT use a Framework like React or view.
You need a button to toggle the strong command
Select some text and click a button to make the selection strong
click the button again.
Try so select a single word or span the selection on multiple lines.
or use the code example:
 <button id="clickMeButton">Click me</button>

import { defaultValueCtx, Editor, rootCtx } from '@milkdown/kit/core';
import { commonmark, toggleStrongCommand, } from '@milkdown/kit/preset/commonmark';
import { callCommand } from '@milkdown/kit/utils';

const markdown = `# Milkdown Vanilla Commonmark

> You're scared of a world where you're needed.

This is a demo for using Milkdown with **Vanilla Typescript**.`;

const editor = Editor.make()
  .config((ctx) => {
    ctx.set(rootCtx, '#app');
    ctx.set(defaultValueCtx, markdown);
  })
  .use(commonmark);

editor.create();

document.getElementById('clickMeButton')!.onclick = (e) => {
  editor.action(callCommand(toggleStrongCommand.key));
};

Expected behavior
The selected text becomes bold
The selection is preserved
Actual behavior
The selected text becomes bold
The selection moves around, or the selection is lost, depending on how much text you select.
if you select a single word, the selection is lost
if the selection spans multiple lines, the selection moves
Please note,  this issue is not present when using frameworks like Vue or React., but only with VanillaJs

Runtime
Chrome
OS
macOS
Build and bundle tools
Vite

using onmousedown instead of onclick in combination with e.preventDefault(); seems to fix the problem.
But it's more a workaround rather than a true solution

You'll at least import css from @milkdown/prose/view/style/prosemirror.css because that's how prosemirror works https://prosemirror.net/docs/ref/#view

Make sure you load style/prosemirror.css as a stylesheet when using this module.

hello @Saul-Mirone, thanks for you answer.
importing the prosemirror.css doesn't seem to make any difference to the selection behaviour. Same as applying the nord-theme.
Have you tried the stackblitz and seen the buggy selection behaviour?

I see, using onmousedown instead of onclick in combination with e.preventDefault() is the right solution provided by prosemirror.
https://prosemirror.net/examples/menu/#:~:text=this.dom.addEventListener("mousedown"%2C e %3D> {
      e.preventDefault()
      editorView.focus()
      items.forEach(({command%2C dom}) %3D> {
        if (dom.contains(e.target))%0A%20%20%20%20%20%20%20%20%20%20command(editorView.state%2C%20editorView.dispatch%2C%20editorView)%0A%20%20%20%20%20%20%7D)%0A%20%20%20%20%7D)

thank you! I was very confused because it works with react and vue  but not with vanillaJs.
Then I will keep using onmousedown and e.preventDefault()


Logo design for locus

Hello! I am a graphic designer. I contribute to open source software via logo design. If you want, i can design a logo for locus. Actually, I have a my logo idea.  If you have an idea, you can say it.
I will waiting feedback. Have a nice day!

Hi,
I'm thankful for the offer, but for now I'm not looking for a logo - I don't think locus is fancy or big enough to even deserve one :-) I believe it could give off the impression that it does more than it actually does.
A nice day to you too; and thanks again!


firebase 2nd insert transaction ignores primary and does insert.

To see this you can use the example and just change line 55 of index_firebase.html to
return this.fillData_();//(results[0]['COUNT(*)'] == 0) ? this.fillData_() : Promise.resolve();
Then load the page 2 times. The second load inserts into firebase and creates duplicate records with a different R number. Then the query returns the duplicate data.

I assume you're talking about data_mode_firebase.js instead of index_firebase.html. The second run shall throw exceptions due to primary key violation. Need to investigate.

Yes, that is the file I meant, sorry about that.
On Fri, Oct 2, 2015 at 4:36 PM, Arthur Hsu<EMAIL_ADDRESS>wrote:

I assume you're talking about data_mode_firebase.js instead of
index_firebase.html. The second run shall throw exceptions due to primary
key violation. Need to investigate.
—
Reply to this email directly or view it on GitHub
https://github.com/google/lovefield/issues/98#issuecomment-145148327.

@arthurhsu  Awesome, thank you!


Question About Registry Templates

Is your feature request related to a problem? Please describe.
My registry template to stop drivers from installing does not work.
Question: Are registry templates applied before the first boot of a Windows install or do we need to reboot once to make sure they are applied?

My '1.reg' file put in the D:\Optimize-Offline-<IP_ADDRESS>\Optimize-Offline-<IP_ADDRESS>\Content\Additional\RegistryTemplates is not being applied, even though it says it's been added in the Optimise Offline log file.
Here is the '1.reg' file.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Metadata]
"PreventDeviceMetadataFromNetwork"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DriverSearching]
"DriverUpdateWizardWuSearchEnabled"=dword:00000000
"SearchOrderConfig"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
"ExcludeWUDriversInQualityUpdate"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CloudContent]
"DisableWindowsConsumerFeatures"=dword:00000001

However, if I had the same entries into the Additional Tweaks.reg file, the entries do get applied.
Now, to see if I need to reboot right after I log into Windows or if my registry entries applied during the Windows install are already active.

My '1.reg' file put in the D:\Optimize-Offline-<IP_ADDRESS>\Optimize-Offline-<IP_ADDRESS>\Content\Additional\RegistryTemplates is not being applied, even though it says it's been added in the Optimise Offline log file.
Here is the '1.reg' file.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Metadata]
"PreventDeviceMetadataFromNetwork"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DriverSearching]
"DriverUpdateWizardWuSearchEnabled"=dword:00000000
"SearchOrderConfig"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
"ExcludeWUDriversInQualityUpdate"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CloudContent]
"DisableWindowsConsumerFeatures"=dword:00000001

However, if I had the same entries into the Additional Tweaks.reg file, the entries do get applied.
Now, to see if I need to reboot right after I log into Windows or if my registry entries applied during the Windows install are already active.

Maybe this should have been a Bug Report but originally it was merely a question if registry entries were already active on first boot of an install.
It only became a bug when I found out the 1.reg file I put in the RegistryTemplates folder was not actually being applied.

Maybe this should have been a Bug Report but originally it was merely a question if registry entries were already active on first boot of an install.
It only became a bug when I found out the 1.reg file I put in the RegistryTemplates folder was not actually being applied.

And I found out, no, you don't need to reboot on the first boot for registry changes to be applied.
Just need to add your registry addictions to the Additional Tweaks.reg file, doesn't seem to be applying .reg files added to the RegistryTemplates folder.

And I found out, no, you don't need to reboot on the first boot for registry changes to be applied.
Just need to add your registry addictions to the Additional Tweaks.reg file, doesn't seem to be applying .reg files added to the RegistryTemplates folder.


docs: update contributors image

What type of PR is this?

docs
What does this PR do?

update contributors image
Which issue(s) does this PR fix?

Special notes for your reviewer:

Screenshots (if applicable):

Additional Comments:

@wuyingjun-lucky

/approve
/lgtm


Sending Bluetooth device a Hexadecimal command

Hey, I have been playing with this package, have connected to the bluetooth device i would like to, but cannot seem to figure out the way to send it a command. This device requires a Hexadecimal command. Any help would be much appreciated.

Do you require a GATT server that exposes a characteristic for another client to request reads on or write, or do you want to use Flutter Blue to access a GATT client on your mobile?
If it is a client and you are sending hexadecimal values you can write hexademical values as '0x00' to 'oxFF' in Dart. Then you can just pack them in a List or Uint8List type if you want stronger typing and convert to List when you send. The pub dev page for Flutter BLE has examples for reading and writing hexademical on characteristics that your Flutter BLE client is aware of. You will likely use characteristics and not descriptors unless you have a need to add metadata.
Read and write characteristics
// Reads all characteristics
var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
List value = await c.read();
print(value);
}
// Writes to a characteristic
await c.write([0x12, 0x34])
Read and write descriptors
// Reads all descriptors
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
List value = await d.read();
print(value);
}
// Writes to a descriptor
await d.write([0x12, 0x34])
Set notifications and listen to changes
await characteristic.setNotifyValue(true);
characteristic.value.listen((value) {
// do something with new value
});


Specify the encoding (UTF-8) that should be used when writing files

Fixes #18860 (hopefully)
Fixes #18618 (hopefully)

@bot-gradle test and merge

OK, I've already triggered a build for you.


Remove redundant slash

The trailing slash duplicates opening slash from DocumentRoot.

Thanks for the patch, but the change needed to merge here is to mod_proxy.xml rather than the generated HTML file.

Thanks!


Leading zeroes in barcodes are truncated

Describe the bug
Whenever I scan a barcode like this:

The result that gets printed is only the digits after the leading zeroes.
To Reproduce
Steps to reproduce the behavior:

Go to the barcode scanner app
Scan the barcode attached
Check result

Expected behavior
When the barcode is scanned, the value should be 00002408, not 2408.
Smartphone (please complete the following information):

Device: iPhone 7
OS: 13

Additional context
I take the value and I run these functions:
...

sBarcode(someVal) async {
  String bCode = await FlutterBarcodeScanner.scanBarcode("#ff6666", "Cancel", true);
  print(bCode);
  someVal.enterBarcode(bCode);
  return;
}
...
enterBarcode(barc) {
  flutterWebViewPlugin.evalJavascript(`document.getElementById('barcodenumber').value="${barc}";`);
  }

interesting, for me it adds a extra 0. hmm

Hi @chukwumaokere
I've checked the barcode, it is working fine. I've tested it on iPhone 8 plus (13.2.2).
One more thing,
sBarcode(someVal) async {
  String bCode = await FlutterBarcodeScanner.scanBarcode("#ff6666", "Cancel", true);
  print(bCode);    -> What does it print?
  someVal.enterBarcode(bCode);
  return;
}

Here, in print statement what does it prints?

@chukwumaokere
I'm not able to reproduce this issue on both Android and iOS.
Can you confirm the same?

I've modified my code to add the leading zeroes programatically using javascript, since all my barcodes are always 8 digits long, so right now im not necessarily "having" the issue but It would exist if I removed my workaround

@chukwumaokere Can you post some sample code with which you are facing the issue so that I can try to reproduce this?

Im attaching it

This is a barcode type: Interleaved2of5
Whenever I scan this barcode I expect the result to be 00002463 but I'm getting "1331" as a result
Any ideas why?
I've been trying to debug this

Nevermind I've solved the error.
Instead of doing this:
sBarcode(someVal) async {
  String bCode = await FlutterBarcodeScanner.scanBarcode("#ff6666", "Cancel", true);
  print(bCode);
  someVal.enterBarcode(bCode);
  return;
}
...
enterBarcode(barc) {
  flutterWebViewPlugin.evalJavascript(`document.getElementById('barcodenumber').value="${barc}";`);
  }

Do this
sBarcode(someVal) async {
  String bCode = await FlutterBarcodeScanner.scanBarcode("#ff6666", "Cancel", true);
  print(bCode);
  someVal.enterBarcode(bCode);
  return;
}
...
enterBarcode(barc) {
    String js = "document.getElementById('barcodenumber').value='$barc'";
    flutterWebViewPlugin.evalJavascript(js);
	flutterWebViewPlugin.evalJavascript("document.getElementById('barcodenumber').dispatchEvent(event)");
  }


Repeated star movement should move to the next word

This pull request:

Makes the first start keypress immobile
Makes the second star behave just like a regular star press, moving to the next word.

Even though this changes a core intent of the plugin, which is to change how the star key works, it provides a sane default for people used to the old star behavior.
Let me know what you think.

Thanks, I like the idea.

We should probably name the variable with b:slash_ prefix to avoid confusion/name clash.
Pressing * then # moves the cursor. Do you think it's desirable? Or should we make the user double-tap # to move?
Pressing * in visual mode leaves us in normal mode. A subsequent * will then select current word instead of the previous selection, but the cursor moves. I believe we can fix that by setting the value of the variable to a:seq[0:2] instead of 1 and compare it against the next a:seq.

I submitted a new commit. Please take a look.
Regarding pressing * then # I think it makes sense. Sometimes I use * and # to navigate back and forth in a word. Would be a little bit weird to have to double press every time you want to change navigation direction. Plus, with the current behaviour, it looks like it's a "press * to get into search mode, and navigate with * or #. Plus, it's easier to implement.
I didn't notice it. I think it makes a lot of sense for * and # to keep on moving forward and backward. I've committed a prototype implementation. Works, but it's a little complicated, so I would like your feedback in the code, if possible.

Sometimes I use * and # to navigate back and forth in a word.

Makes sense, though I always use n and N, so it never occurred to me.
Here's a simpler patch.
diff --git a/plugin/slash.vim b/plugin/slash.vim
index 6b99444..2949564 100644
--- a/plugin/slash.vim
+++ b/plugin/slash.vim
@@ -30,14 +30,19 @@ function! s:wrap(seq)
 endfunction

 function! s:immobile(seq)
+  let class = len(a:seq[:2])
+  if get(b:, 'slash_prev_immobile') == class
+    return a:seq
+  endif
   let s:winline = winline()
+  let b:slash_prev_immobile = class
   return a:seq."\<plug>(slash-prev)"
 endfunction

 function! s:trailer()
   augroup slash
     autocmd!
-    autocmd CursorMoved,CursorMovedI * set nohlsearch | autocmd! slash
+    autocmd CursorMoved,CursorMovedI * set nohlsearch | unlet! b:slash_prev_immobile | autocmd! slash
   augroup END

   let seq = foldclosed('.') != -1 ? 'zo' : ''

@junegunn I believe your implementation and my implementation do different things, at least when I tried to test the behavior in my machine.
My intention was to simulate the * to go forward and # to go backward when they are used in visual mode. The way my commit d8974bdb2e5e6dfaf53e74b62f3961726ee2d273 implements it, it works like this:

Visual select the term you want to search
Pressing * or # will take you to normal mode and activate the "star movement" keys
In normal mode, pressing * takes the user to the next term, pressing # takes to the previous.
When the user moves the cursor, it removes this special behavior, just like it removes the search highlight.

This is achieved by:

If visual star movement was activated by *, it means a forward search / was used, so * is redirected to n and # is redirected to N.
If visual star movement was activated by #, it means a backward search ? was used, so * is redirected to N and # is redirected to n.

The goal with this is to make it possible for users go star search using the * key to also use it for navigation.

Oh, I see, thanks for clarification. I don't think I'm going to need it though, because I always use n and N to move between the matches and I've never tried or wanted to use * and # instead, so I don't want extra code. I suggest that you use your fork if it suits your needs. Thanks.

@junegunn Just to let you know, in my fork of vim-slash (which I named vim-slasher), I've included some extra features, such as enhanced cgn substitution.
In case you're interested in taking a look: https://github.com/thalesmello/vim-slasher

Cool, thanks for sharing. cgn stuff sounds like a nice improvement.


The setup process as described does not work

The installation steps in the documentation does not work with the provided examples. The created module is not routable, because Route::module('resource') can not resolve the right Controller at the created path.
Nothing is running locally. Maybe it is a problem with the used sub domain, but no url from the route:list is accessible without any exception screen.
Please fix your documentation at the setup process.
Used package version constraint is: ^1.1

Hi @rokde! Thanks for reporting your issue.
However, our examples do not contain something looking like Route:: module('resource').
Module names should be plural in route definitions. Our example are Route::module('yourPluralModelName') or Route::module('people').
I guess you also created the module using the singular form of the name you want it to have. It is in our roadmap to make sure that the input of our artisan command is automatically pluralized to avoid the confusion.
Working with plural and singular forms of a model depending on context is a convention you'll come across a lot with Laravel.

No, I created a module named projects and this does not work with your generator. Theroute resolver tries to find it in an administration folder, but was created in a level above.

I'm sorry @rokde but "this does not work" is not enough for me to help you out. Any steps to reproduce? Feel free to share your repository if possible.
The folder your module's controller should have been created in is admin, not administration.
I see no reason for it to be created above, see this code in our generator:
https://github.com/area17/twill/blob/4d58468db4c2aec3bcbb7ed8c8de3dfb78c5240b/src/Commands/ModuleMake.php#L195-L212

Hi @jamais, we're sorry to see that your introduction to Twill hasn't been successful. We are currently working on many documentation improvements .
Your specific error is not really helping as this is usually another underlying error that is caught by the exception handler.
What do you mean by an installer like Worpdress? Wordpress is a blogging platform and a packaged solution, you can unzip a directory or use their installer and be ready to go to install a theme and create content (posts and pages). Twill is not opinionated and does not provide you with predefined content types. Everything is up to you. I agree that we could make the setup more seamless and improve docs (which we are) but you'll eventually need to set it up in code like any other Laravel package.

@ifox
Same problem here,
My route:list as below,
admin.<IP_ADDRESS>/demotwill/public/ | GET|HEAD  | http://<IP_ADDRESS>/demotwill/public/admin/login                | admin.login.form                                                       | A17\Twill\Http\Controllers\Admin\LoginController@showLoginForm                | web,noDebugBar,guest
When i visited http://<IP_ADDRESS>/demotwill/public/admin/login it's "NotFoundHttpException".
But when i check i can not found any folder with name "A17", vendor folder contains "area17".
so is there problem with "A17\Twill\Http\Controllers\Admin\LoginController@showLoginForm"
i install it in fresh laravel, complete all step as documentation but no luck to get working, Can you please help to fix this?

@ifox,
Is valet is functionality or hardly required for twill? I think it should not.


fix etctmp.c and etctmp/ leakage

Summary
There are etctmp.c and etctmp/ folder leaks after a build. This fix adds cleaning of them.
Impact
none
Testing
checked with canmv230/ksh

current behavior is by design thus canceling this request.


[Issue] Extension asks for game's .exe file even after cancelling the setup

Issue: When I put the non-installed local game (having just setup files) onto the Playnite library and hit the install button, then cancels the setup wizard, it still asks for game's .exe file as it's thinking I installed the game and If I cancelled that dialog window, it considers the game as installed anyway. Also I tried adding ROM but I experience the same issue. Hope this issue get's resolved soon :)

Will be shutting down this repository.  My plugin is now a Library plugin and is at
https://github.com/azuravian/playnite-LocalLibrary
This issue should be fixed in the new plugin.
Check it out


[Bug]: Quick copy export ignores fields to omit

Debug log ID
ZZCAQUWM-refs-euc
What happened?
In recent versions of BBT / Zotero, the Export -> Fields -> Fields to omit setting appears to be ignored.
BBT version: 6.7.94
Zotero version: 6.0.26
macOS 13.4.1
Steps to reproduce

Set some fields to ignore
Export to BibTeX via quick copy (Cmd-Shift-C)

Expected
The fields to omit should be omitted.
Actual
All fields appear to be included in the export.

You have the quick-copy translator set to BibTeX, not Better BibTeX.

Oh my, how embarrassing! Indeed, changing it back fixes things. 😅
Thanks for all of your work on BBT! 😄


No op vulnerability rebuild

Related Issue:  open-cluster-management/backlog#
Description of changes
Empty build to address vulnerabilities, and test e2e run success

closing this PR.


Rebuild calico/routereflector:v0.5.0 to fix the CVE's

Rebuild calico/routereflector:v0.5.0 to fix the CVE's
calico/routereflector:v0.5.0 does have following high critical CVE's, can you please rebuild the packages to pick latest fixes from base ubuntu:14.04?
root@jupiter-vm247:~/routereflector# docker run -ti --entrypoint sh calico/routereflector:v0.5.0
#
# apt list libc6
Listing... Done
libc6/now 2.19-0ubuntu6.13 amd64 [installed,local]
# apt list sensible-utils
Listing... Done
sensible-utils/now 0.0.9 all [installed,local]
#

https://usn.ubuntu.com/3584-1/  - fixed in sensible-utils - 0.0.9ubuntu<IP_ADDRESS>
https://usn.ubuntu.com/3534-1/ - fixed in libc6 - 2.19-0ubuntu6.14

@caseydavenport

@mkumatag I just built and pushed calico/routereflector:v0.5.1 which is a rebuild of v0.5.0 and should have the latest 14.04 CVE fixes.


[TDD] Remove applicant IDs from URLs

Design: Removing Applicant IDs from URLs
GitHub issue for development: #5576

Approved


[RFR] Fix build embedding required CSS

CSS are missing from current build (we are using a require('xxx.css') in <RichTextInput />.
react-create-app already handle CSS correctly, so we just have to embed missing CSS stylesheets.
Fixes #63.

Back to WIP: trying to figure out where root webpack config file is used.

Root config seems useless. Just removed it, and both build process and example run. Back to RFR.


About range-view format

Thank you for this excellent work. How can I convert LiDAR data to a range-view imagelike format. Could you share the code for this?

Hi, thanks for your interest.
We have prepared the front-view LiDAR imagelike format in our dataset, which could be downloaded here.
The transformation from the raw LiDAR to range-view image is not involved yet.


Use embeddings from other LLMs besides OpenAI for fewshot learning

https://github.com/refuel-ai/autolabel/blob/3eb3e8139028e454c7f51fcdfeba5579b7925228/src/autolabel/few_shot/__init__.py#L48
Currently for few shot learning, if you have any other provider than OpenAI in your config, it will error out because it tries to get embeddings from OpenAI.
Either add the ability to use embeddings from other sources or surface a more informative error message if someone tries to use this feature without OpenAI.

Thanks for opening this @alexisraykhel. Yep, definitely on our roadmap - we just included this in our weekly sprint for the current week.

Config addition:

Embedding model related specification will be part of a new "embedding" top-level key.
For now, this key can have two keys underneath - provider and model.

{
    "task_name": "ToxicCommentClassification",
    "task_type": "classification",
    "dataset": {...},
    "model": {...},
    "embedding": {
        "provider": "<string>",
        "model": "<string>",
    },
    "prompt": {...}

Expected behavior:

The "embedding" key is optional. If it is explicitly specified, we will use the embedding model specified in there.
If it is not specified, by default, the embedding model we use should be the one from the LLM provider
If the LLM provider does not provide any embedding model (e.g. Anthropic, Refuel LLM), we can use OpenAI as the default embedding model

Hi, I'm also interested in this feature. It looks like this is an active issue, but based on the comment above I tried using PaLM as the embedding provider and it didn't work yet, it still looks for the openai_api_key.

hey @bawinogr, thanks for your comment and interest in this library! Yes, we are working on adding support for other embedding providers - PR #404
If you haven't already, also consider joining our Discord: https://discord.gg/fweVnRx6CU

@alexisraykhel @bawinogr we just merged https://github.com/refuel-ai/autolabel/commit/f33271366c78dea83afd19392cc410144793461f -- this adds support for multiple embedding providers:

OpenAI (text-embedding-ada-002)
Google (textembedding-gecko@001)
Huggingface (internally this uses the sentence-transformers library: https://github.com/UKPLab/sentence-transformers, with all-mpnet-base-v2 as the default embedding model )

We're updating our docs to share a more comprehensive overview, but if you'd like to get started, you can do the following:

git clone and pull the latest main from https://github.com/refuel-ai/autolabel
pip install ".[all]" (this will download and install the library with all the extras)
If you're using semantic_similarity as few-shot selection technique, you can specify the relevant embedding model parameters (very similar to the "model" key in the config):

"embedding": {
         "provider": "huggingface_pipeline",
         "model": "sentence-transformers/all-mpnet-base-v2"
}

or
"embedding": {
         "provider": "google",
}

@alexisraykhel  @bawinogr take a look at https://docs.refuel.ai/guide/llms/embeddings/ for details on embedding model support - thank for you for the suggestions and feedback here!


Error installing<EMAIL_ADDRESS>

Hello,
For some reason I am unable to install the package. I get the following error:
Invalid response body while trying to fetch https://registry.npmjs.org/@types%2Fweb-bluetooth: ENOENT: no such file or directory, rename '/Users/marius/.npm/_cacache/tmp/d2560a15' -> '/Users/marius/.npm/_cacache/content-v2/sha512/2d/69/90b45908e84a5b46345d66597ff6ea81bd2be37fa362afd48e09f101c3882a79042ba6e35c0412dbb198648549aec2dc147f729053cbf7e45f73c6cc0061'
Renaming doesn't help, that file does not exist. Any help is very much appreciated!
I am using Ionic 7 and Capacitor 5
Thank you!
Marius

What is the command you are using to install version 3.0.0-1 of the package? I was successful using this:
npm install @capacitor-community/bluetooth-le@next

What is the command you are using to install version 3.0.0-1 of the package? I was successful using this: npm install @capacitor-community/bluetooth-le@next

Thank you for your reply. I am getting the same error..

Sorry to hear it didn't help! I'm not an expert on NPM, but this seems more like an npm or npm cache problem than a problem with this specific package.
Are you able to install other packages or other versions of this plugin?
What npm and node version are you using?
What operating system?
I'd try some of the ideas here (cleaning the cache, reinstalling NPM, or using NVM to install other or newer version of node and try again):
https://stackoverflow.com/questions/72856997/npm-invalid-response-body-while-trying-to-fetch-npm-cant-install-any-depende

Sorry to hear it didn't help! I'm not an expert on NPM (nor this package), but this seems more like an npm or npm cache problem than a problem with this specific package. Are you able to install other packages or other versions of this plugin? What npm and node version are you using? What operating system?
I'd try some of the ideas here (cleaning the cache, reinstalling NPM, or using NVM to install other or newer version of node and try again): https://stackoverflow.com/questions/72856997/npm-invalid-response-body-while-trying-to-fetch-npm-cant-install-any-depende

I tried clearing cache in the past but not with "npm cache clean --force"
This fixed the problem and installed successfully. Thank you for pointing it out!


Recursion

When used in recursion, after 3 layers, I get a label field that says 'Array must extend from Reorderable Array'. Luckily, the game I'm working on only requires 3 layers, so I can still use it. Would be interesting to look into, though.

This is a limitation of the Unity serializer. Your code results in a infinite serialization cycle.
You may have noticed a warning similar to this:
"Serialization depth limit 7 exceeded at 'Table.table'. There may be an object composition cycle in one or more of your serialized classes.
Serialization hierarchy:
8: WeatherTable.myTables
7: Malee::ReorderableArray`1.array"
Remove the "Reorderable" attribute and you'll notice you have the same limitations.
Unfortunately there's nothing I can do about this. So I'm closing this issue


wordpress import regex problem

I'm trying to import from Wordpress, and following the instructions here.
It fails with
SyntaxError: Invalid regular expression: /^([^\/:<>\*\?"\|]+(?:\/[^\/:<>\*\?"\|]+)?$/i: Unterminated group
    at new RegExp (<anonymous>)
    at reduceRouteComponents (/root/.local/share/datocms/node_modules/wpapi/lib/route-tree.js:83:3)
    at Array.reduce (<anonymous>)
    at reduceRouteTree (/root/.local/share/datocms/node_modules/wpapi/lib/route-tree.js:182:18)
    at /root/.local/share/datocms/node_modules/wpapi/lib/util/object-reduce.js:25:20
    at Array.reduce (<anonymous>)
    at module.exports (/root/.local/share/datocms/node_modules/wpapi/lib/util/object-reduce.js:24:3)
    at buildRouteTree (/root/.local/share/datocms/node_modules/wpapi/lib/route-tree.js:200:9)
    at WPAPI.bootstrap (/root/.local/share/datocms/node_modules/wpapi/wpapi.js:349:23)
    at new WPAPI (/root/.local/share/datocms/node_modules/wpapi/wpapi.js:88:4)
Endpoint detected, proceeding despite error...
Binding to https://www.chrisrichardson.info/wp-json/ and assuming default routes
✔ Destroy existing WordPress schema from DatoCMS project [19s]
❯ Import WordPress metadata
  ❯ Import WordPress categories
    ✔ Create DatoCMS model [4s]
    ✖ Retrieve categories from WordPress
    ◼ Import categories to DatoCMS
    ◼ Create category tree
  ❯ Import WordPress tags
    ✔ Create DatoCMS model [4s]
    ✖ Retrieve tags from WordPress
    ◼ Import tags to DatoCMS
  ❯ Import WordPress authors
    ✔ Create DatoCMS model [4s]
    ✔ Retrieve authors from WordPress [1s]
    ✖ Import authors to DatoCMS (1 of 2)
  ❯ Import WordPress assets
    ✖ Retrieve assets from WordPress
      › Unexpected token '<', "

        "... is not valid JSON
    ◼ Upload assets to DatoCMS
◼ Import WordPress pages and articles
    SyntaxError: Unexpected token '<', "

    "... is not valid JSON

This was initially on MacOS
% datocms help
VERSION
  @datocms/cli/2.0.0 darwin-x64 node-v18.17.1

But I thought it might be an issue with MacOS only supporting zsh now, so I spun up an Ubuntu docker container and tried it with Node 20, and it has the same problem.

Thanks, @stefanoverna. And sorry for the delayed response. I've just sent an email. Just putting this here to let you know that it happened, in case the email landed in your spam.
Thanks!
Chris


Make DS Campaign Config translatable

need to make all copy that's in DoSomething Configuration -> DoSomething Campaign translatable
related to #4988

we might need to turn on variable_translate and hook into that for dosomething helpers config variables.
we also might want to create custom forms per language we are translating to (depending who is doing the translation)


Fix for code dropdowns not populating

This PR is to fix the issue of code dropdowns not populating, which was caused by the underlying issue of patients' source_data_criteria having different hqmf_set_ids than the patient itself.  This difference was a result of an omission in the rake tasks that move patients.  This PR includes a fix for that omission as well as a rake task to fix up the database that needs only be run once.
A suggestion to remove this duplicated hqmf_set_id in the database was also added to the wiki here: https://gitlab.mitre.org/bonnie/internal-documentation/wikis/Bonnie-Improvements
Pull requests into Bonnie require the following. Submitter and reviewer should :white_check_mark: when done. For items that are not-applicable, note it's not-applicable ("N/A") and :white_check_mark:.
NOTE: There is one patient that fails to update due to having a dotted field:
[Error]         The dotted field '2.16.840.1.113883.6.12' in 'source_data_criteria.1.codes.2.16.840.1.113883.6.12' is not valid for storage. (57<EMAIL_ADDRESS>first: EncInMPInvldCustCode, last: IPPFail

So this rake task should be run after that issue gets resolved.
Submitter:

[x] This pull request describes why these changes were made.
[x] This PR is into the correct branch.
[x] JIRA ticket for this PR: https://jira.mitre.org/browse/BONNIE-1233
[x] JIRA ticket links to this PR
[x] Code diff has been done and been reviewed (it does not contain: additional white space, not applicable code changes, debug statements, etc.)
[x] If UI changes have been made, google WAVE plug-in has been executed to ensure no 508 issues were introduced.
[x] Tests are included and test edge cases
[x] Tests have been run locally and pass (remember to update Gemfile when applicable)
[x] Code coverage has not gone down and all code touched or added is covered.

See front-end testing instructions for getting coverage for front-end tests
In rare situations, this may not be possible or applicable to a PR. In those situations:

Note why this could not be done or is not applicable here:
Add TODOs in the code noting that it requires a test
Add a JIRA task to add the test and link it here:

[x] Automated regression test(s) pass

If JIRA tests were used to supplement or replace automated tests:

[x] N/A JIRA test links:
[x] N/A Justification for using JIRA tests:
[x] N/A JIRA tests have been added to sprint

Reviewer 1: @mayerm94
Name:

[x] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[x] The tests appropriately test the new code, including edge cases
[x] You have tried to break the code

If JIRA tests were used to supplement or replace automated tests:

[x] JIRA tests have been run and pass
[x] You agree with the justification for use of JIRA tests or have provided input on why you disagree

Reviewer 2: @c-monkey
Name:

[x] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[x] The tests appropriately test the new code, including edge cases
[x] You have tried to break the code

If JIRA tests were used to supplement or replace automated tests:

[x] JIRA tests have been run and pass
[x] You agree with the justification for use of JIRA tests or have provided input on why you disagree

To see the issue and verify that this fixes it, log into<EMAIL_ADDRESS>and open http://localhost:3000/#measures/E1CB05E0-97D5-40FC-B456-15C5DBF44309/patients/59f768b6942c6d15ec303d42/edit
The dropdown next to coded should be:
before:

after:

Regression script re-run after approvals and passes.


Instrument thread pools in RollupHandler

In order to get a better insight into the performance of the thread pools in RollupHandler this PR starts using instrumented thread pools. I also bumped the default timeout for rollups on read for now to verify whether it is not a bottleneck, but I eventually intend to make it configurable.

Coverage increased (+0.11%) to 52.0% when pulling f081e367bb93309f02fee3fb4e998f837768be5d on chinmay-gupte:chinmay/improve_performance_while_using_ES_for_mplot into 28b9428b61355cf18d2d3faa663eee4ae575c5a9 on rackerlabs:master.

+1

@GeorgeJahad Thanks for the +1.


Add docs for object invocation for call, cps, fork #1476

Adds missing documentation for passing context and fn as properties in an object to call, cps, and fork.  #1476

This looks good to me. But I would like to let @Andarist or @restrry check this PR since I'm not very good at English.

Thanks!


Fixed-Wing or Multirotor?

Is this for tuning FW vehicles, MR vehicles or both?

Hi @bernhardpg . It does not really matter. It's agnostic to the vehicle (or system) type.

That is great. I will attempt to gather some flight data tomorrow to use with this tool. Do you have any recommendations for what kind of flights are best suited for this?

@bernhardpg Sorry for the super late reply. I rarely check/maintain this package.
In general, you need to excite the system modes in the desired axes in order to get good enough data for system identification.