I tested it out with PageEditSoftLock and found the problem. The reason it tells you that another instance of you is editing the page is because of this statement in the checkpagestatus function:
$user = $this->users->get($user_id);
if($user === $this->user){
When a new repeater page is added, it goes through a $pages->save(). After $pages->save() finishes, it clears the in-memory page cache to ensure any future $pages->get/find operations in the same request aren't returning old versions (it has always done this). Users are pages. As a result, your $this->users->get($user_id) is returning a new instance of the current user than what is in $this->user, so a '===' comparison won't work, since it checks to see that two objects are the same instance. But the fix is easy, just change the above code segment to this:
if($user_id == $this->user->id) {
This is also more efficient, as there's no need to retrieve the user from $this->users->get() when all you need is the user ID, and you already have it.
---
Edit: fixed issue with the repeater labels note honoring the language setting. They should work properly now.