a question about a technical point in your blog

Hi there, I hope my message is not misplaced but I haven't found a comment section in your blog Reverse Engineering Night Raid so I thought maybe I could post my question here.
Your blog is indeed a fascinating read but there is one part I don't understand, in your blog you have written:
If we restart, Night Raid we can use the IV name to create a variable name that we can then monitor for changes. In our case, the full command will be IV 191D:205e currentWave.
Could you tell me how do you get the address 191D:205e? I would really appreciate it if you could offer some clarity on this!
Regards,
Tuo ZHANG

This was found by first finding the location of the format string Assault Wave %d. That string has a memory address of 0x08d8. The only question from here is its segment address. We use a scalar search in ghidra to find any references to 0x08d8 and there was only one, at location 16c8:2f37 (but there could have been more). Remember that is the segment address as Ghidra has assigned, not the one that Dosbox will assign.
From there we can look up at the disassembly to see that the number being printed in the format string is the 3rd parameter and that is the address 0x205e. Again, we don't know the segment address, but that's the memory address if we find the segment address.
The good news is that the segment addresses are split between code and data, so once we find one we'll find the other. If I remember correctly the way I identified the segment addresses for code and data was to pause the game (break point) at random intervals and see what the ds and cs registers were. Those will be the segments for the data segment and code segement. From there you can find the data by prepending the ds register's value to the location such as 0x205e. It's a cheap trick, but it works.

This was found by first finding the location of the format string Assault Wave %d. That string has a memory address of 0x08d8. The only question from here is its segment address. We use a scalar search in ghidra to find any references to 0x08d8 and there was only one, at location 16c8:2f37 (but there could have been more). Remember that is the segment address as Ghidra has assigned, not the one that Dosbox will assign.
From there we can look up at the disassembly to see that the number being printed in the format string is the 3rd parameter and that is the address 0x205e. Again, we don't know the segment address, but that's the memory address if we find the segment address.
The good news is that the segment addresses are split between code and data, so once we find one we'll find the other. If I remember correctly the way I identified the segment addresses for code and data was to pause the game (break point) at random intervals and see what the ds and cs registers were. Those will be the segments for the data segment and code segement. From there you can find the data by prepending the ds register's value to the location such as 0x205e. It's a cheap trick, but it works.

Thanks for your reply. If I understand correctly, we need to run the game to get the value 0x205e, right? And this value will be the value in AX on line 16c8: 2f3d as shown in the screenshot in your blog:

Please correct me if my understanding is faulty.

No, we need to run the program to get the ds register of 0x191d . The address of CurrentWave will always be 0x205e, as it's the offset inside of that memory segment. The symbol CurrentWave at address 16c8:2f32 in the above screen shot is just an alias in ghidra for the address XXXX:205e where XXXX is whatever the data segment register is (likely 0x191d in DOSBox, but ghidra has it loaded at 0x2730).

Reverse Engineering Night Raid

No, we need to run the program to get the ds register of 0x191d . The address of CurrentWave will always be 0x205e, as it's the offset inside of that memory segment. The symbol CurrentWave at address 16c8:2f32 in the above screen shot is just an alias in ghidra for the address XXXX:205e where XXXX is whatever the data segment register is (likely 0x191d in DOSBox, but ghidra has it loaded at 0x2730).

Oh, I just noticed that 20 5e was pushed to AX on the first line in the screenshot. Now I understand. Thank you for your clarification!


getmap is not defined in GoogleMaps plugin

I've tried to add the Google Maps plugin to my app, but when I use the camera option the map canvas is completely white and there's an error: 'getMap' is not defined in GoogleMaps plugin.
This is the code I used:
var div = document.getElementById("map");
var map;

// Initialize the map view
map = plugin.google.maps.Map.getMap(div, {
    'controls': {
        'myLocationButton': true,
        'zoom': true
    },
    'gestures': {
        'scroll': true,
        'tilt': true,
        'rotate': true,
        'zoom': true
    },
    'camera': {
        'zoom': 15
    }
});

If I remove the camera option the map canvas becomes grey with the Google logo in the left corner and the zoom buttons etc. at the right side of the screen.
This is the code I used without the camera option:
var div = document.getElementById("map");
var map;

// Initialize the map view
map = plugin.google.maps.Map.getMap(div, {
    'controls': {
        'myLocationButton': true,
        'zoom': true
    },
    'gestures': {
        'scroll': true,
        'tilt': true,
        'rotate': true,
        'zoom': true
    }
});

This problem is also referenced in #434.
Is this a bug or am I doing something wrong?

I originally posted the problem with #434, and it was resolved in release 1.25.
I'm currently on 1.32 and will be upgrading to 1.33 and don't have this particular problem anymore.
You should at minimum list the version numbers/platform involved so the maintainer can have an idea where the problem is occurring.  However if you cannot get the map to appear, then it sounds like it might be an API key problem/library problem that should be resolved first.

Thanks for your reply, I'm using the Ionic platform. Ionic is on version 1.6.5, cordova is on version 5.3.3 and plugin.google.maps is on version 1.3.2.
I was referring to the last comment on #434, but I now see that one just missed a container div. Not sure what goes wrong with mine. I will check the API key for Android for the second problem (iOS works btw).

For android, use monitor to look at the log information from the app (filter out the messages there are a lot, your app should be of the form com.mycom,myapp) and look at the error messages.
The API key that the plugin uses to  connect to google will appear there if there is a problem.  When you created the API key to enter into the Google developer console, you had to use a debug.keystore, Make sure that the debug.keystore is on the build machine in the home directory of the development account.
I'm not sure what the change was for 1.25 that fixed the first problem for me, but it sounds like yours is a new installation so this is probably a new/different problem.  Do you get the geMap problem on both platforms?

I could not find an error with the API key in the logs. The problem is only on Android for me, iOS is working fine.

I have the same problem. But everything works fine with iOS.
Cordova CLI: 5.2.0 Gulp version:  CLI version 3.9.0 Gulp local:   Local version 3.9.0 Ionic Version: 1.1.0 Ionic CLI Version: 1.7.0 Ionic App Lib Version: 0.5.1-beta.0 ios-deploy version: 1.7.0  ios-sim version: 3.1.1  OS: Mac OS X El Capitan Node Version: v0.12.2 Xcode version: Xcode 7.0.1 Build version 7A1001

please provide a minimal project where I can see the problem. I can't reproduce.

https://github.com/jsappme/phonegap-google-maps-ionic-demo

I figured up the problem.
map = plugin.google.maps.Map.getMap(div, options); does not work anymore.
it should be replace by:
var map = plugin.google.maps.Map.getMap({
  'backgroundColor': 'transparent',
  'mapType': plugin.google.maps.MapTypeId.HYBRID,
  'controls': {
    'compass': true,
    'myLocationButton': true,
    'indoorPicker': true,
    'zoom': true
  },
  'gestures': {
    'scroll': true,
    'tilt': true,
    'rotate': true,
    'zoom': true
  },
  'camera': {
    'zoom': 0,
  }
});
var div = document.getElementById("map_canvas");
map = plugin.google.maps.Map.getMap(div);

no more getmap error but all the options are not taken into account. it's still very buggy. I keep investigate.

@otined , when you just see the google logo with a grey map, it's only related to wrong API keys.
Check #669
Maybe there is really a bug when passing "camera", but when you remove it, your error-report is definitely API-Key related. Please recheck the Wiki and installation tutorial.

When camera was the problem, try "zoom": "1" or "zoom": "1.0" (cause it has a float-cast) - and I'm not sure how Java handle this.

for me camera was the problem

I do experience the same issue as reported originally by otined. Version is 1.3.9. Before upgrading everything went fine.
iOS works fine.
Android fires on SOME devices (Nexus 6, Samsung G S7) error getMap not defined. Map is grey then. On other testing-devices (Samsung G5) everything works as expected. That's why it can't be the API-Key.
Will do some debugging now - but maybe you could already support with some ideas, tell me...

@Hirbod You should take care of this by you if you reopen this.

Hi,
I'm getting the same error:
'getMap' is not defined in GoogleMaps plugin. (15:38:51:252 | error)
at file:///android_asset/www/plugins/cordova-plugin-googlemaps/www/googlemaps-cdv-plugin.js:133
Using Cordova 6.1.1., cordova-plugin-googlemaps 1.3.9
Testing on Android 5.1.1 (Honor 5x)
Any general solution yet?
Thanks in advance.

I ran into this issue but for my case I defined my API_KEY metadata in the wrong section in the android manifest file

Make sure these two entries is within the tags inside android manifest and not outside of it. Having it outside or not at all will get the error 'getMap' is not defined in GoogleMaps plugin.
The plugin gives a popup warning if API_KEY is not equal to API_KEY_FOR_ANDROID, but perhaps it should check for null or empty API_KEY as well and pop up an appropriate message. For my case my API_KEY is null.
Try to put a breakpoint at line 432 to see if you are able to get the API_KEY, if you can then it is a different issue already.
Hope this helps someone.

Thank you very much!
Do you got an example where to place the API_KEY in the android manifest?
In which source do have to set the breakpoint at line 432?
Sorry, I'm kinda new to this.

Somehow I managed to fix this error.
But instead of a map, there's a blank space in the app.
I checked with Map.isAvailable. And it is available!
I tried map.setVisible(true) but all I get is an error "Cannot call determinedVisibility() - never saw a connection for the pid...".  The map is still blank.
Googled this error withot finding a fix.
Any ideas how to fix this?

@alfabetagama Thank you!!! This was the only thing stopped me from being android ready.
Removing the camera section from
this.googleMaps.create(element, {
'backgroundColor': 'white',
'controls': {
'compass': false
},
'camera':{
},
'gestures': {
},
'styles': [
{
"stylers": [
{
"saturation": -5
},
{
"lightness": 25
}
]
},
{
"featureType": "landscape",
"elementType": "geometry.fill",
"stylers": [
{
"lightness": 55
}
]
}
]
});
Fixed it for me.


Unable to build on windows platform

Bug Description
Bytewax cannot be compiled and built on windows platform due to rdkafka library.
Compile conditionally for windows platform and it will work fine.
Python version (python -V)
rust issue
Bytewax version (pip list | grep bytewax)
bytewax 0.16.1
Relevant log output
No response
Steps to Reproduce
cargo build

The root cause is that the rdkafkalibrary uses the sasl2-sys library
The sasl2-sys library contains feature:vendored for windows platform, but rdkafka does not provide this feature.
We need to add the conditional compilation target_os = " windows " to enable the vendored and openssl-vendored features of sasl2-sys

fixed in #249


Handle request as stream to allow preemptive cancellation of file upload to save bandwidth

Currently I have implemented file upload in nancy fx like that:
Client code:
 var testData = new byte[1024 * 1024];
 File.WriteAllBytes("testdata.bin", testData);

 var client = new WebClient();
 var res = client.UploadFile(host + "/upload", "testdata.bin");

Server code:
public class UploadModule : NancyModule
{
  public UploadModule()
  {
      Post["/upload"] = x =>
      {
          const int userQuota = 10000;

          var file = Request.Files.Single();
          var outFilePath = Path.Combine(Path.GetTempPath(), "out.bin");
          using (var outFile = File.Create(outFilePath))
          {
              var readBytesSum = 0;

              int readBytes;
              var buffer = new byte[8192];
              while ((readBytes = file.Value.Read(buffer, 0, buffer.Length)) != 0)
              {
                  readBytesSum += readBytes;
                  if (readBytesSum > userQuota)
                      throw new InvalidOperationException("Max file size exceeded!");

                  outFile.Write(buffer, 0, readBytes);
              }

              outFile.Flush();
          }

          return HttpStatusCode.OK;
      };
  }
}

If a user now uploads a 10 mb file the operation on the server will be canceled after all 10 mb are first recieved and then checked.
I wondered if there is a possibility in Nancy to get the request data as a stream and make a fast fail path if incoming data reaches a defined quota. If quota is reached the connection could be dropped and no further download bandwidth on server will be wasted.
As far as I get to know is that Nancy will always buffer the whole input data either in memory or in temp file. So I think my requirement would need more access to the low level request pipeline?
also on stack overflow: http://stackoverflow.com/questions/35842479/nancy-handle-request-as-stream-to-allow-preemptive-cancellation-of-file-upload-t

So just my two cents here...
If you are wanting to avoid the bandwidth on the server being wasted and since in your case you have client side code so you aren't restricted to a non-javascript solution, couldn't you check the size of the file uploaded on the client side and not upload it if it exceeds the limit? Then the server side code would remain as is so in the event someone is modifying the javascript to bypass the upload limit then the server would still catch it.

Could you please explain how the server could detect manipulation of the javascript code?
Also the client code should be possible in arbitrary programmning language and the server should be possible to enforce this cancellation without restriction on the client side.

I might have misunderstood your original question but I'll explain what I was thinking to my original response.
With Javascript you could detect the file size somewhat like [this] (http://stackoverflow.com/questions/4112575/client-checking-file-size-using-html5) and if the filesize is greater than the limit you wouldn't bother sending it to the server (so that would avoid the bandwidth usage on the server), else if it's less than the limit then you would send it to the server.
Since I was using javascript as the example which someone could modify the limit on the client side and then the fall back would be that if the server side code would just enforce the limit like it currently does - so granted it doesn't solve your issue of avoiding the extra bandwidth completely but in theory it might be one method to handle this.

ok. thx for the suggestions!


NoMethodError: undefined method `where' for HistoryTracker:Class

I am using mongoid-history(0.5.0) with an rails(5.0.0) and mongoid(github master branch). The changes are
#app/models/history_tracker.rb
class HistoryTracker
  include Mongoid::History::Trackable
end

#config/initializers/history_tracker.rb
Mongoid::History.tracker_class_name = :history_tracker

#app/models/user.rb
class User
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::History::Trackable
  include Mongoid::Attributes::Dynamic

  ...
  field :name, type: String
  field :points, type: Integer, default: 0
  ...

  track_history on: [:name, :points], track_create: false, track_update: true, track_destroy: true
end

When I run 'user.history_tracks' in rails console, I get
2.3.0 :012 > user = User.last
 => #<User _id: 10de0dd7710542, created_at: 2016-09-13 15:10:07 UTC, updated_at: 2016-09-13 15:10:07 UTC, email<EMAIL_ADDRESS>encrypted_password: "$2a$10$ByExx918bnV6", remember_created_at: nil, sign_in_count: 1, current_sign_in_at: 2016-09-13 15:10:07 UTC, last_sign_in_at: 2016-09-13 15:10:07 UTC, current_sign_in_ip: "::1", last_sign_in_ip: "::1", github_handle: "prasad", active: true, name: "Prasad Surase", provider: "github", uid: "56", avatar_url: "https://avatars.githubusercontent.com/u/56?v=3", points: 0, version: nil, modifier_id: nil>
2.3.0 :013 > user.version
 => nil
2.3.0 :014 > user.modifier_id
 => nil
2.3.0 :015 > user.history_trac
user.history_trackable_options  user.history_tracks
2.3.0 :015 > user.history_tracks
NoMethodError: undefined method `where' for HistoryTracker:Class
    from /Users/prasad/.rvm/gems/ruby-2.3.0/gems/mongoid-history-0.5.0/lib/mongoid/history/trackable.rb:75:in `history_tracks'
    from (irb):15
    from /Users/prasad/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:110:in `start'
    from /Users/prasad/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in `start'
    from /Users/prasad/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:68:in `console'
    from /Users/prasad/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /Users/prasad/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
    from ./bin/rails:4:in `require'
    from ./bin/rails:4:in `<main>'

Am I missing something or is this a valid bug?

I released 0.6.0 an hour ago, can you please try that?

@dblock I created sample app using ruby 2.3.0, rails 5.0.0, mongoid(github master branch) and mongoid(0.6.0).

Can't create a new User because of validation errors

2.3.0 :014 >   user = User.create(email<EMAIL_ADDRESS>password: 'prasad123', password_confirmation: 'prasad123')
 => #<User _id: BSON::ObjectId('57d8e68b5f10de200053b8f6'), created_at: nil, email<EMAIL_ADDRESS>modifier_id: nil, name: nil, points: 0, updated_at: nil, version: nil>
2.3.0 :015 > user.valid?
 => false
2.3.0 :016 > user.errors
 => #<ActiveModel::Errors:0x007f9af9def670 @base=#<User _id: BSON::ObjectId('57d8e68b5f10de200053b8f6'), created_at: nil, email<EMAIL_ADDRESS>modifier_id: nil, name: nil, points: 0, updated_at: nil, version: nil>, @messages={:modifier=>["can't be blank"]}, @details={:modifier=>[{:error=>:blank}]}>

@dblock This issue has been raised because of belongs_to_required_by_default has been set to true once we add mongoid-history gem in Gemfile actually it should not. I have gone through code but I didn't find anywhere where we are overriding mongoid options.

I would try to turn it into a failing spec here next.

@dblock @sivagollapalli that might be the case but the app link that I have provided in the latest comment runs on rails 4.2.

for further explanation,
2.3.0 :003 > HistoryTracker.ancestors
 => [HistoryTracker, Mongoid::History::Trackable, Object, PP::ObjectMixin, EasyDiff::SafeDup, ActiveSupport::Dependencies::Loadable, Mongoid::Extensions::Object, BSON::Object, Origin::Extensions::Object, JSON::Ext::Generator::GeneratorMethods::Object, Kernel, BasicObject]

expect for Mongoid::History::Trackable and Mongoid::Extensions::Object no other Mongoid classes/modules are present in the chain which seems weird.

Not entirely sure if this is related, but I'll just throw it out there.
I've had an issue with Rails 5.0.1, Mongoid 6.0.2 and Mongoid-History 0.6.0. The app acts as a standalone API and shares its database with a Rails 4 app.
The Rails 5 app is read-only and I did not have a problem with it up until today when I opened a rails console and tried to update a record, which always returned false.
Even without calling save or validate every record had errors and was invalid right from when loaded. When I inspected the errors I got
record.errors.messages
#=> :modifier=>["can't be blank"]

So, after a little research (with a short stop in this thread) I ended up reading the mongoid config specs and realised they are setting Mongoid.belongs_to_required_by_default = true by default, which is in compliance with the rails 5 active record default setting (changed from default = false to default = true).
Simply adding an initializer solved the problem:
# config/initializers/mongoid_belongs_to_required_by_default.rb

Mongoid.belongs_to_required_by_default = false

It sounds like a separate (and real) problem @Ninigi.

@dblock so, should I open an issue? The problem is an unexpected behaviour because of the Mongoid default setting, a simple comment about it in the README would already fix it (since you only need to add the initializer)

I think you should and maybe try to write a spec for it? At the very least it's a bug, and your solution is a workaround, but we should actually fix the underlying issue.

Ok, will do. I think the solution is going to be easy enough, so probably will have a PR attached. Thanks for your time :)

@Ninigi you just saved my butt on a project, thanks for that.

@DarthHater thanks for the PR, I wanted to do it and never found the time... And then I forgot >.<

What do we do with this issue here? Looks like Mongoid.belongs_to_required_by_default was required? Not sure I understand what's going on.

@dblock The issue basically is that ActiveRecord changed its policy towards relations with Rails 5. Before, when you defined a belongs_to relation, the foreign key was not required (could be null or not), now it is required by default unless stated otherwise.
Mongoid adopted that behavior, which breaks mongoid-history if you try to save a history without setting the modifier_id (belongs_to relation), because modifier_id will now be validated for presence by default - hence the :modifier => "cant be blank" error message.
It is not related to the original issue I think, but rather to  the issue that prasadsurase ran into when creating a sample app:
2.3.0 :014 >   user = User.create(email<EMAIL_ADDRESS>password: 'prasad123', password_confirmation: 'prasad123')
 => #<User _id: BSON::ObjectId('57d8e68b5f10de200053b8f6'), created_at: nil, email<EMAIL_ADDRESS>modifier_id: nil, name: nil, points: 0, updated_at: nil, version: nil>
2.3.0 :015 > user.valid?
 => false
2.3.0 :016 > user.errors
 => #<ActiveModel::Errors:0x007f9af9def670 @base=#<User _id: BSON::ObjectId('57d8e68b5f10de200053b8f6'), created_at: nil, email<EMAIL_ADDRESS>modifier_id: nil, name: nil, points: 0, updated_at: nil, version: nil>, @messages={:modifier=>["can't be blank"]}, @details={:modifier=>[{:error=>:blank}]}>

Okay, so I think what we need is either or both documentation that explains this in README and much better error messaging. Care to contribute @Ninigi?

Would love to help, though kind of new to open source.
I'm facing the same issue - switching belongs_to_required_by_default off allows me to crud my models but obviously doesn't track the user that did it as there is nothing forcing MH to write the modifier.
When I don't turn it off, I simply get an :modifier=>["can't be blank"] error.
Can't establish if I should set the modifier manually (doesn't seem like the correct approach), or how to debug this and have mongoid history set the modifier to the current_user

I have a solution to my question. Posting it for feedback, or in case anyone else has the problem ...
In #139 @dblock mentions that you need to set the modifier explicitly. Seeing as though there is one model at the moment that I want to track changes in, I've added a merge to the strong params method which now looks like this:
def deal_params       params.require(:object).permit(:field1, :field2).merge(modifier: current_user)     end
This works, so I'll keep it like this for now, unless anyone has a better implementation idea

Issue for me was that creating through console the modifier_id needs to be passed manually or as some id from seed or as default value like, example:
  field :modifier_id, type: String, default: -> { self._id }

thanks for that @Ninigi


Fix(preprocess): Use space delimiter for debug_text_only also

@TheBloke , I couldn't find the corresponding PR that you mentioned in the earlier issue https://github.com/OpenAccess-AI-Collective/axolotl/pull/462 .
This PR will fix debug_text_only having outputs without space.
Before:
<s><|im_start|>system<0x0A>Youareahelpfulassistant.<|im_end|><0x0A><|im_start|>user<0x0A>LetXbeacompactconnected

Thanks for the PR Nano, and sorry I never got around to making it myself.
I've not tried your code so don't know in what way it's wrong.  But when I have fixed this locally, I did it with a single line:
delimiter = " "

And that seemed to work fine for me?

I noticed that , when printing the tokens, there were "empty" tokens, which led to the extra spacing. Maybe all I need is a check if string has len>0, to include them.


#25 - Sponsor page use yml

Use new real data for sponsor page
Add images

Needs https://github.com/acl-org/acl-2020-virtual-conference-sitedata/pull/10
I did not change the layout yet.

The session timestamps are not localizing yet, I tried the same solution as on the https://github.com/acl-org/acl-2020-virtual-conference/blob/master/templates/poster.html but I did not get it working yet.

The regex to match times is fussy and wants it to be surrounded by parentheses. This should probably be relaxed - the poster page things can be easily changed to allow this (here, here)

I fixed the times, update the submodule and deleted the bogus files.

Are we gonna keep this font and blue header color? For me, it does not look ACL like.

Can you help me with the submodule and why there is a conflict? I am not too familiar with submodules.

Can you help me with the submodule and why there is a conflict? I am not too familiar with submodules.

Since the PRs on the sitedata_acl2020 are merged, you can do
cd sitedata_acl2020
git pull
cd ..
git commit -am "bump sitedata_acl2020 version"

This should work. But let me know if doesn't -- we can chat on RocketChat.


Container in Restarting Loop

Hello Community,
need help! Conducted a docker restart deconz container restart. Since then, the container is in a restart loop, each approx 1 minute long.
docker logs deconz gives following result, repeated endlessly.
Prior to that loop, I was trying to connect a TRADFRI motion sensor, which worked fine, but failed in adding the respective tradfri light bulb. I hoped a restart would fix it, but it made it crash. No backup available. The WAF drowned quickly grmpft.
Any ideas how to fix it without an entirely new configuration from scratch?
Thanks!
CG
12:14:52:533 ZCL attribute report 0x84182600000C4289 for cluster: 0x0006, ep: 0x03, frame control: 0x18, mfcode: 0x0000 12:14:53:052 don't close database yet, keep open for 900 seconds 12:14:55:224 dev /dev/ttyAMA0 12:14:55:224 GW firmware version: 0x26580700 12:14:55:224 GW firmware version is up to date: 0x26580700 12:14:58:177 don't close database yet, keep open for 900 seconds 12:15:05:169 don't close database yet, keep open for 900 seconds 12:15:11:192 don't close database yet, keep open for 900 seconds 12:15:16:169 don't close database yet, keep open for 900 seconds 12:15:22:172 don't close database yet, keep open for 900 seconds 12:15:22:691 no button map for: RWL021 ep: 0x02 cl: 0x0001 cmd: 0x0A pl[0]: 021 12:15:22:691 ZCL attribute report 0x0017880102C19BB6 for cluster: 0x0001, ep: 0x02, frame control: 0x08, mfcode: 0x0000 12:15:28:154 don't close database yet, keep open for 900 seconds 12:15:28:252 ZCL attribute report 0x7CB03EAA0A00F3C8 for cluster: 0x0006, ep: 0x03, frame control: 0x18, mfcode: 0x0000 12:15:33:172 don't close database yet, keep open for 900 seconds 12:15:39:168 don't close database yet, keep open for 900 seconds 12:15:40:167 Current channel 15 12:15:40:173 Device TTL 3839 s flags: 0x7 12:15:45:259 don't close database yet, keep open for 900 seconds 12:15:52:099 don't close database yet, keep open for 900 seconds 12:15:59:049 don't close database yet, keep open for 900 seconds 12:16:04:169 don't close database yet, keep open for 900 seconds 12:16:11:166 don't close database yet, keep open for 900 seconds 12:16:17:961 don't close database yet, keep open for 900 seconds 12:16:24:168 don't close database yet, keep open for 900 seconds 12:16:28:618 ZCL attribute report 0x7CB03EAA0A00D23C for cluster: 0x0006, ep: 0x03, frame control: 0x18, mfcode: 0x0000 12:16:31:172 don't close database yet, keep open for 900 seconds 12:16:38:020 don't close database yet, keep open for 900 seconds 12:16:40:168 Current channel 15 12:16:40:175 Device TTL 3779 s flags: 0x7 12:16:45:051 don't close database yet, keep open for 900 seconds 12:16:51:172 don't close database yet, keep open for 900 seconds 12:16:56:172 don't close database yet, keep open for 900 seconds 12:17:03:169 don't close database yet, keep open for 900 seconds 12:17:09:991 don't close database yet, keep open for 900 seconds 12:17:17:050 don't close database yet, keep open for 900 seconds 12:17:24:164 don't close database yet, keep open for 900 seconds 12:17:30:175 don't close database yet, keep open for 900 seconds 12:17:37:172 don't close database yet, keep open for 900 seconds 12:17:40:169 Current channel 15 12:17:40:177 Device TTL 3719 s flags: 0x7 12:17:44:000 don't close database yet, keep open for 900 seconds 12:17:50:144 don't close database yet, keep open for 900 seconds 12:17:56:173 don't close database yet, keep open for 900 seconds 12:18:02:179 don't close database yet, keep open for 900 seconds 12:18:09:166 don't close database yet, keep open for 900 seconds 12:18:15:996 don't close database yet, keep open for 900 seconds 12:18:23:049 don't close database yet, keep open for 900 seconds 12:18:29:168 don't close database yet, keep open for 900 seconds 12:18:34:172 don't close database yet, keep open for 900 seconds 12:18:40:167 Current channel 15 12:18:40:175 Device TTL 3659 s flags: 0x7 12:18:41:169 don't close database yet, keep open for 900 seconds 12:18:48:002 don't close database yet, keep open for 900 seconds 12:18:55:049 don't close database yet, keep open for 900 seconds 12:18:55:223 dev /dev/ttyAMA0 12:18:55:224 GW firmware version: 0x26580700 12:18:55:224 GW firmware version is up to date: 0x26580700 12:19:01:227 don't close database yet, keep open for 900 seconds 12:19:06:193 don't close database yet, keep open for 900 seconds 12:19:10:125 ZCL attribute report 0x7CB03EAA0A0159D6 for cluster: 0x0006, ep: 0x03, frame control: 0x18, mfcode: 0x0000 12:19:13:170 don't close database yet, keep open for 900 seconds 12:19:20:006 don't close database yet, keep open for 900 seconds 12:19:27:055 don't close database yet, keep open for 900 seconds 12:19:34:171 don't close database yet, keep open for 900 seconds 12:19:40:176 don't close database yet, keep open for 900 seconds 12:19:40:194 Current channel 15 12:19:40:202 Device TTL 3599 s flags: 0x7 12:19:47:169 don't close database yet, keep open for 900 seconds 12:19:49:572 ZCL attribute report 0x84182600000C4289 for cluster: 0x0006, ep: 0x03, frame control: 0x18, mfcode: 0x0000

I dont understand whether this is normal: no button map for: RWL021 ep: 0x02 cl: 0x0001 cmd: 0x0A pl[0]: 021 12:15:22:691 ZCL attribute report 0x0017880102C19BB6 for cluster: 0x0001, ep: 0x02, frame control: 0x08, mfcode: 0x0000 `
But I also do not see a reason for container restart. Does anyone?

Oh wait!
Is it about the GUI, that tries to start? docker logs deconz | grep restart returns:
/usr/bin/xauth:  file /root/.Xauthority does not exist
libEGL warning: DRI2: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:${ORIGIN}/dri:/usr/lib/dri)
libEGL warning: DRI2: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:${ORIGIN}/dri:/usr/lib/dri)
libpng warning: iCCP: known incorrect sRGB profile
libEGL warning: DRI2: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:${ORIGIN}/dri:/usr/lib/dri)
libEGL warning: DRI2: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:${ORIGIN}/dri:/usr/lib/dri)
libpng warning: iCCP: known incorrect sRGB profile
libEGL warning: DRI2: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:${ORIGIN}/dri:/usr/lib/dri)
libEGL warning: DRI2: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:${ORIGIN}/dri:/usr/lib/dri)
libpng warning: iCCP: known incorrect sRGB profile

How can I force the headless start when the container restarts?

Can you give more detail on your config? What version, arch?

Of course! Thanks for having a look. Hope it is not too much info!
By the way: Recognised two suspicious entries in the docker inspect deconz result:
-->       "ExitCode": 134,
**"Error": "error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory"
-->      the other on was the hostname (which I had changed temporarily, but now is back original (pha-rasp-4ha)
I have unplugged all other USB connections, the /dev/ttyACM0 is present...
See below some details:
Raspberry Pi 4 8GB
Raspian (see below)
docker (ioBroker, deconz, portainer)

cat /etc/os-release:

PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

docker version

Client: Docker Engine - Community
Version:           19.03.13
API version:       1.40
Go version:        go1.13.15
Git commit:        4484c46
Built:             Wed Sep 16 17:07:02 2020
OS/Arch:           linux/arm
Experimental:      false
Server: Docker Engine - Community
Engine:
Version:          19.03.13
API version:      1.40 (minimum version 1.12)
Go version:       go1.13.15
Git commit:       4484c46
Built:            Wed Sep 16 17:00:52 2020
OS/Arch:          linux/arm
Experimental:     false
containerd:
Version:          1.3.7
GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
runc:
Version:          1.0.0-rc10
GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version:          0.18.0
GitCommit:        fec3683

docker ps -a

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                      PORTS                                            NAMES
01c8fac2c6fd        buanet/iobroker:v5.0.0    "/bin/bash -c /opt/s…"   7 weeks ago         Up 15 hours                                                                  myIObroker
333b24f93bb9        buanet/iobroker:v5.0.0    "/bin/bash -c /opt/s…"   2 months ago        Exited (0) 3 weeks ago                                                       myIObroker.old
d9533a084c1c        portainer/portainer:arm   "/portainer"             2 months ago        Up 16 hours                 <IP_ADDRESS>:8500->8000/tcp, <IP_ADDRESS>:9500->9000/tcp   portainer2.1
aa5339b3c09c        elswork/samba             "/entrypoint.sh -u l…"   3 months ago        Exited (0) 2 months ago                                                      dreamy_fermat
1b8e684bb268        marthoc/deconz            "/tini -- /start.sh"     3 months ago        Exited (134) 15 hours ago                                                    deconz

docker inspect deconz

[
{
"Id": "1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf",
"Created": "2020-07-29T12:00:53.340905127Z",
"Path": "/tini",
"Args": [
"--",
"/start.sh"
],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 134,
"Error": "error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory",
"StartedAt": "2020-10-28T21:50:49.630871227Z",
"FinishedAt": "2020-10-28T21:50:50.089540508Z"
},
"Image": "sha256:4efb692bd168d1c953e18d7cc465b9651f194e0107aa9bd872b8265bef1be2df",
"ResolvConfPath": "/var/lib/docker/containers/1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf/hostname",
"HostsPath": "/var/lib/docker/containers/1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf/hosts",
"LogPath": "/var/lib/docker/containers/1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf/1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf-json.log",
"Name": "/deconz",
"RestartCount": 54,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/etc/localtime:/etc/localtime:ro",
"/opt/deconz:/root/.local/share/dresden-elektronik/deCONZ"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "host",
"PortBindings": {},
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Capabilities": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [
{
"PathOnHost": "/dev/ttyACM0",
"PathInContainer": "/dev/ttyACM0",
"CgroupPermissions": "rwm"
}
],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": null,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/c2da624524f85ac8374fc57bfc0f09ce1a537e3f156d756f663fe19131aa170d-init/diff:/var/lib/docker/overlay2/5ba995732fde2ab089572869cbfddecbad7ca9841ebbab58c797a21cd1b680c2/diff:/var/lib/docker/overlay2/b615575f0ec3d618a51e9ad1c6af68076db12d32167065b4b035e933ba8fbf0f/diff:/var/lib/docker/overlay2/721e851658bf6e35774c18c1a9e89844fd7ef5dabc6ae3ffb463de2e3b4f6eaf/diff:/var/lib/docker/overlay2/eb7a99cd32afdf549d231eb740cf36435a374883a1b1a90337a21d193443da6f/diff:/var/lib/docker/overlay2/71239454619cf7d6a256a738bd94716551d12161a19481a1c52a986a677e0b9c/diff:/var/lib/docker/overlay2/e717ed87088c16d6628ff26c763cfa0db43b5d9c47212f7cc1c3343fd0b01c31/diff:/var/lib/docker/overlay2/211d642dcf7fa07eb2d078862ce8650c345ab4c16a41b10c6152a84cc5946319/diff:/var/lib/docker/overlay2/2c78a289d96f8b2d51703aaf61547411920c4288dbfc3333d330eca303d9dae2/diff:/var/lib/docker/overlay2/c48922a85273543ee27c3ae462136b47bab1941d389f7f606cdefd77dc3ac44a/diff:/var/lib/docker/overlay2/0cb3fdaede0b629e79b03e74d75c7c7b0698f0e04ff1a3a58fc08b486a7e5441/diff:/var/lib/docker/overlay2/90014a6bf23837481fd206a25118eafda472c7628ba6a1d70785f7116326a5b9/diff:/var/lib/docker/overlay2/f5ee2f08635ea83ea086a64d6406d945225dd0212d9bfe81c8051b5e87781b8a/diff:/var/lib/docker/overlay2/cae4b7a6590e23674487fd03f864626e0bc8d01a933147bed9714366888125a8/diff:/var/lib/docker/overlay2/4e02058bbf6226d0b1df024a59f046f5f54d5f8a192e103a0160612c75e157a2/diff:/var/lib/docker/overlay2/4ca18d1519aa2d162ae45ba3e5b2b99de4683b724976e48b7e80730882d39431/diff:/var/lib/docker/overlay2/7bfeedf81c82dfc58bfe708ca18cfd503ef2188fc57134c571f86fd8814357e6/diff:/var/lib/docker/overlay2/7dd48e5a8529a2dc659a18958e5fceebc3f781c003e4afa67a83ddde05213f1d/diff:/var/lib/docker/overlay2/0454305d6e0edceb02e49823819e20bd7733e832b9427a40d3187224ce526062/diff:/var/lib/docker/overlay2/59454a4597e8e581fae2cc2a957c256fa963d11c296335e1d0a58a89673d4486/diff:/var/lib/docker/overlay2/c65bdc86e00316250a5f625426089b92e77af9f41af83951d27f828d45befd6b/diff:/var/lib/docker/overlay2/d1bf3e90717b5a751e68379f4ff7fdec375476309af184087bb9ed501dff1020/diff",
"MergedDir": "/var/lib/docker/overlay2/c2da624524f85ac8374fc57bfc0f09ce1a537e3f156d756f663fe19131aa170d/merged",
"UpperDir": "/var/lib/docker/overlay2/c2da624524f85ac8374fc57bfc0f09ce1a537e3f156d756f663fe19131aa170d/diff",
"WorkDir": "/var/lib/docker/overlay2/c2da624524f85ac8374fc57bfc0f09ce1a537e3f156d756f663fe19131aa170d/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/etc/localtime",
"Destination": "/etc/localtime",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/opt/deconz",
"Destination": "/root/.local/share/dresden-elektronik/deCONZ",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "pha-rasp-4ha",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"443/tcp": {},
"5900/tcp": {},
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"DECONZ_VNC_MODE=1",
"DECONZ_VNC_PASSWORD=xxxxxxx",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LC_ALL=C.UTF-8",
"DEBIAN_FRONTEND=noninteractive",
"UDEV=off",
"TINI_VERSION=0.18.0",
"DECONZ_VERSION=2.05.79",
"DECONZ_WEB_PORT=80",
"DECONZ_WS_PORT=443",
"DEBUG_INFO=1",
"DEBUG_APS=0",
"DEBUG_ZCL=0",
"DEBUG_ZDP=0",
"DEBUG_OTAU=0",
"DECONZ_DEVICE=0",
"DECONZ_VNC_DISPLAY=0",
"DECONZ_VNC_PORT=5900",
"DECONZ_UPNP=1"
],
"Cmd": null,
"Image": "marthoc/deconz",
"Volumes": {
"/root/.local/share/dresden-elektronik/deCONZ": {}
},
"WorkingDir": "",
"Entrypoint": [
"/tini",
"--",
"/start.sh"
],
"OnBuild": null,
"Labels": {
"io.balena.architecture": "armv7hf",
"io.balena.qemu.version": "4.0.0+balena2-arm"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "32c18eaa7ca60858751918514f247b788f64e8982c3d98dbeaa67xxxxxx",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/default",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"host": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "ed44c68ced769299e7137b18ba5780092f55662c1d11xxxxx",
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
}
}
]

Can you check ls -lah /dev/ttyACM0.

Oh, I have forgotten something important maybe:
Recently installed a HM-MOD-RPI-PCB and run piVCCU following this documentation: https://github.com/alexreinert/piVCCU/blob/master/docs/setup/raspberrypi.md
Results of
ls -lah /dev/ttyACM0

crw-rw---- 1 root dialout 166, 0 Okt 29 13:52 /dev/ttyACM0
ls /dev/serial/by-id
usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2214916-if00

Guess that looks as it should?
Many thanks spending your time in my issue!!

it would be better to use /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2214916-if00 in the docker config

Could you give me advice how to change that without loosing my zigbee config?

should have googled first. I will try it by workaround 2 as described in
https://bobcares.com/blog/docker-change-container-configuration/

but I wonder if that is the problem. Having rebooted the raspi (15minutes ago), docker container is in the loop again, but does not report that problem:

    "Created": "2020-07-29T12:00:53.340905127Z",
    "Path": "/tini",
    "Args": [
        "--",
        "/start.sh"
    ],
    "State": {
        "Status": "restarting",
        "Running": true,
        "Paused": false,
        "Restarting": true,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 0,
        "ExitCode": 134,
        "Error": "",
        "StartedAt": "2020-10-29T12:59:08.277382093Z",
        "FinishedAt": "2020-10-29T12:59:08.899031957Z"

Figure out what exitcode 134 is returned, can you run the container with daemonizing it and see where it stops?

I thought docker start deconz is the daemonized variant? What exactly should I do?

How can I get a bash in deconz container? docker exec -it either reports the container does not run, or, when started, that it is restarting and i should wait.
docker events by the way reports the following (network connect, container start, container die, network disconnect), when the restart occurs:

2020-10-29T14:34:07.072274381+01:00 network connect ed44c68ced769299e7137b18ba5780092f55662c1d11fd512694c16c1eed4d82 (container=1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf, name=host, type=host)
2020-10-29T14:34:07.319130190+01:00 container start 1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf (image=marthoc/deconz, io.balena.architecture=armv7hf, io.balena.qemu.version=4.0.0+balena2-arm, name=deconz)
2020-10-29T14:34:07.909735080+01:00 container die 1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf (exitCode=134, image=marthoc/deconz, io.balena.architecture=armv7hf, io.balena.qemu.version=4.0.0+balena2-arm, name=deconz)
2020-10-29T14:34:07.938480882+01:00 network disconnect ed44c68ced769299e7137b18ba5780092f55662c1d11fd512694c16c1eed4d82 (container=1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf, name=host, type=host)

docker exec -it deconz bash

You mean docker version?

Client: Docker Engine - Community
Version:           19.03.13
API version:       1.40
Go version:        go1.13.15
Git commit:        4484c46
Built:             Wed Sep 16 17:07:02 2020
OS/Arch:           linux/arm
Experimental:      false

docker exec -it bash returns

Error response from daemon: Container 1b8e684bb268121d86e2c1553113797405e6177608066a7ea1e486a2c11545cf is restarting, wait until the container is running

But, I think I am getting closer: Three issues raised when running docker logs deconz | grep ExitCode

hostname: No address associated with hostname

A VNC/X11 server is already running as :0 on machine localhost
QXcbConnection: Could not connect to display :0

probably leading to that follow-on error

eabihf/dri:${ORIGIN}/dri:/usr/lib/dri)
libEGL warning: DRI2: failed to open swrast (search paths /usr/lib/arm-linux-gnu

I believe it is either a hostname resolution error or a problem that some process started another display:0 VNC/X11?

Figure out what exitcode 134 is returned for? Could it be that the ports are in use?

Which ports do you mean? 80 shoukld be free. sudo netstat -tlnpu reports nothing about port 80

As far as i can tell you are on a older deCONZ version. I believe this was removed on 2.05.80.

As far as i can tell you are on a older deCONZ version. I believe this was removed on 2.05.80.

Thanks for that remark! I have howeverno clue how to backup the deconz config before trying to build a new container...

Are you using docker compose?
How do you start the docker image?
Is there a volume attached to /root/.local/share/dresden-elektronik/deCONZ ?

Are you using docker compose?

No, I just started a new deconz docker (on a basically fresh system) with
docker run -d --name deconz --net=host --restart=always -v /etc/localtime:/etc/localtime:ro -v /opt/deconz:/root/.local/share/dresden-elektronik/deCONZ --device=/dev/ttyACM0 -e DECONZ_VNC_MODE=1 -e DECONZ_VNC_PASSWORD=xxxxxx marthoc/deconz

How do you start the docker image?

It always started with system boot, restart policy was "always". Yesterday (when it broke) I conducted a docker restart deconz, I never had to stop it before...

Is there a volume attached to /root/.local/share/dresden-elektronik/deCONZ ?

no volume attached there. The folder deCONZ does not exist. Should it?

is there data in this folder: /opt/deconz?
If you have data in that folder, do:
docker stop deconz
docker pull marthoc/deconz
docker start deconz

I have data in that folder, yes:

4 -rw-r--r-- 1 root root    180 Okt 23 18:30 config.ini
16 -rw-r--r-- 1 root root  14671 Jul 29 14:15 deCONZ.tar.gz
8 -rw-r--r-- 1 pi   pi     6163 Okt 28 21:21 session.default
4 -rw-r--r-- 1 root root     35 Jul 29 12:59 zcldb.txt
180 -rw-r--r-- 1 pi   pi   184320 Okt 28 21:26 zll.db

Interestingly, some files are from pi, others root. Normal?
Sure I can pull a new image?

These are files create by the container, I should be save to pull the new image

Pull ran fine.
Started deconz --> Restarting (134)

Concerning the VNC/X11 error message: can I switch off the VNC option by any means?

Problem solved!
Killed the malfunctioning docker container "docker" and created a new one without VNC:
docker run -d --name deconz --net=host --restart=always -v /etc/localtime:/etc/localtime:ro -v /opt/deconz:/root/.local/share/dresden-elektronik/deCONZ --device=/dev/ttyACM0 marthoc/deconz
It seems that the entire config is still present.


Prevent lazy and debounce modifiers on entangled fields

The current implementation allows the user to add lazy and debounce modifiers to entangled fields, thus breaking functionality.
( Did it myself, added lazy to a toggle and wondered why Alpine complained about an undefined value)
This PR fixes that.
With this we also can remove the isLazy() check, on text-input and forget about it on future fields.

Thanks


add strikethrough prop

Type: Minor
Review: @kesla @iefserge

The only issue I take with this, and is not related to this PR specifically is that there is a TON of repetition in this JSON files we require. Is there a reason these have to be pure JSON files, and not scripts that export the resulting object you want? I just saw that you had to add the same thing in a bunch of different places because of this.
Other than that, everything looks fine.

@danmakenoise Yes there's a lot of repetition in the tests, I tried finding a better way to structure it for this PR but couldn't really think of anything where readability wouldn't suffer.

@danmakenoise I don't really see a big problem w repeating in tests, tbh.
Having a script exporting the resulting object means we write more code. More code that can have issues. So I somewhat prefer then to repeat things pure in JSON...

@kesla okay!


⚠ Bofrost.es has degraded performance

In 846f552, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1766 ms

Resolved: Bofrost.es performance has improved in 7735fec after 14 minutes.


Artifacts upload results in error 500

Description
When running the following pipeline on act_runner, the artifacts are not uploaded due to error 500.

build.yaml
name: Runner
run-name: ${{ gitea.actor }} is building
on: [push]

defaults:
  run:
    shell: powershell

jobs:
  Build:
    runs-on: [windows, gprbuild]
    steps:
      - uses: actions/checkout@v3
        with:
        ref: gitea
      - name: Prepare folders
        run: |
          mkdir bin -ErrorAction ignore
      - name: Build
        run: echo test > file.txt
      - name: 'Upload Artifact'
        uses: actions/upload-artifact@v3
        with:
          path: |
            file.txt

Runner Log
[Runner/Build] [DEBUG] Removing<EMAIL_ADDRESS>before docker cp
[Runner/Build] [DEBUG] C:\Users\usp00bo\.cache\act\286b80907b4f225f\act/actions/actions-upload-artifact@v3
[Runner/Build] [DEBUG] Stripping prefix:C:\Users\usp00bo\.cache\act\actions-upload-artifact@v3\ src:C:\Users\usp00bo\.cache\act/actions-upload-artifact@v3/
[Runner/Build] [DEBUG] executing remote job container: [node<EMAIL_ADDRESS>[Runner/Build] [DEBUG] Failed to setup Pty Unsupported
[Runner/Build]   💬  ::debug::followSymbolicLinks 'true'
| ::debug::followSymbolicLinks 'true'
[Runner/Build]   💬  ::debug::implicitDescendants 'true'
| ::debug::implicitDescendants 'true'
[Runner/Build]   💬  ::debug::omitBrokenSymbolicLinks 'true'
| ::debug::omitBrokenSymbolicLinks 'true'
[Runner/Build]   💬  ::debug::followSymbolicLinks 'true'
| ::debug::followSymbolicLinks 'true'
[Runner/Build]   💬  ::debug::implicitDescendants 'true'
| ::debug::implicitDescendants 'true'
[Runner/Build]   💬  ::debug::matchDirectories 'true'
| ::debug::matchDirectories 'true'
[Runner/Build]   💬  ::debug::omitBrokenSymbolicLinks 'true'
| ::debug::omitBrokenSymbolicLinks 'true'
[Runner/Build]   💬  ::debug::Search path 'C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt'
| ::debug::Search path 'C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt'
[Runner/Build]   💬  ::debug::File:C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt was found using the provided searchPath
| ::debug::File:C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt was found using the provided searchPath
| With the provided path, there will be 1 file uploaded
[Runner/Build]   💬  ::debug::Root artifact directory is C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor
| ::debug::Root artifact directory is C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor
| Starting artifact upload
| For more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging
| Artifact name is valid!
[Runner/Build]   💬  ::debug::Artifact Url: http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts?api-version=6.0-preview
| ::debug::Artifact Url: http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts?api-version=6.0-preview
[Runner/Build]   💬  ::debug::Upload Resource URL: http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts/3/upload
| ::debug::Upload Resource URL: http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts/3/upload
| Container for artifact "artifact" successfully created. Starting upload of file(s)
[Runner/Build]   💬  ::debug::File Concurrency: 2, and Chunk Size: 8388608
| ::debug::File Concurrency: 2, and Chunk Size: 8388608
[Runner/Build]   💬  ::debug::C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt is less than 64k in size. Creating a gzip file in-memory to potentially reduce the upload size
| ::debug::C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt is less than 64k in size. Creating a gzip file in-memory to potentially reduce the upload size
[Runner/Build]   💬  ::debug::The gzip file created for C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt did not help with reducing the size of the file. The original file will be uploaded as-is
| ::debug::The gzip file created for C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt did not help with reducing the size of the file. The original file will be uploaded as-is
| A 500 status code has been received, will attempt to retry the upload
| Exponential backoff for retry #1. Waiting for 4594 milliseconds before continuing the upload at offset 0
| Finished backoff for retry #1, continuing with upload
| A 500 status code has been received, will attempt to retry the upload
| Exponential backoff for retry #2. Waiting for 9357 milliseconds before continuing the upload at offset 0
| Total file count: 1 ---- Processed file #0 (0.0%)
| Finished backoff for retry #2, continuing with upload
| A 500 status code has been received, will attempt to retry the upload
| Exponential backoff for retry #3. Waiting for 18916 milliseconds before continuing the upload at offset 0
| Total file count: 1 ---- Processed file #0 (0.0%)
| Total file count: 1 ---- Processed file #0 (0.0%)
| Finished backoff for retry #3, continuing with upload
| A 500 status code has been received, will attempt to retry the upload
| Exponential backoff for retry #4. Waiting for 25252 milliseconds before continuing the upload at offset 0
| Total file count: 1 ---- Processed file #0 (0.0%)
| Total file count: 1 ---- Processed file #0 (0.0%)
| Finished backoff for retry #4, continuing with upload
| A 500 status code has been received, will attempt to retry the upload
| Exponential backoff for retry #5. Waiting for 33373 milliseconds before continuing the upload at offset 0
| Total file count: 1 ---- Processed file #0 (0.0%)
| Total file count: 1 ---- Processed file #0 (0.0%)
| Total file count: 1 ---- Processed file #0 (0.0%)
| Total file count: 1 ---- Processed file #0 (0.0%)
| Finished backoff for retry #5, continuing with upload
| A 500 status code has been received, will attempt to retry the upload
| ##### Begin Diagnostic HTTP information #####
| Status Code: 500
| Status Message: Internal Server Error
| Header Information: {
|   "cache-control": "max-age=0, private, must-revalidate, no-transform",
|   "content-type": "text/html; charset=utf-8",
|   "x-frame-options": "SAMEORIGIN",
|   "date": "Thu, 29 Jun 2023 11:23:53 GMT",
|   "transfer-encoding": "chunked"
| }
| ###### End Diagnostic HTTP information ######
| Retry limit has been reached for chunk at offset 0 to http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts/3/upload?itemPath=artifact%5Cfile.txt
[Runner/Build]   🚧  ::warning::Aborting upload for C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt due to failure
| ::warning::Aborting upload for C:\Users\usp00bo\.cache\act\286b80907b4f225f\hostexecutor\file.txt due to failure
[Runner/Build]   ❗  ::error::aborting artifact upload
| ::error::aborting artifact upload
| Total size of all the files uploaded is 0 bytes
| File upload process has finished. Finalizing the artifact upload
[Runner/Build]   💬  ::debug::Artifact Url: http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts?api-version=6.0-preview
| ::debug::Artifact Url: http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts?api-version=6.0-preview
[Runner/Build]   💬  ::debug::URL is http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts?api-version=6.0-preview&artifactName=artifact
| ::debug::URL is http://aeme1025/api/actions_pipeline/_apis/pipelines/workflows/48/artifacts?api-version=6.0-preview&artifactName=artifact
| Finalize artifact upload - Attempt 1 of 5 failed with error: Artifact service responded with 500
| Finalize artifact upload - Attempt 2 of 5 failed with error: Artifact service responded with 500
| Finalize artifact upload - Attempt 3 of 5 failed with error: Artifact service responded with 500
| Finalize artifact upload - Attempt 4 of 5 failed with error: Artifact service responded with 500
| Finalize artifact upload - Attempt 5 of 5 failed with error: Artifact service responded with 500

Gitea log
Gitea Version
1.20.0-rc0
Can you reproduce the bug on the Gitea demo site?
No (actions are unavailable)
Log Gist
No response
Screenshots
No response
Git Version
No response
Operating System
Windows 10
How are you running Gitea?
Self hosted on windows 10
Database
SQLite

I think this should be fixed by #24874

I have a similar problem and if it's the same it's related to a wrong path separator in the artifact URL when running on windows host runner instead of https://github.com/go-gitea/gitea/pull/24874 i think.
from my gitea logs i get:
...actions/artifacts.go:310:uploadArtifact() [E]  Error checking artifact name contains invalid character
routing/logger.go:78:func1() [W] router: failed PUT /api/actions_pipeline/_apis/pipelines/workflows/185/artifacts/12/upload?itemPath=test-artifact-windows%5Ctest-artifact
i guess that %5c or '\' in the url is wrong and will be filtered by uploadArtifact. instead it should be changed to '/' probably before uploading in the upload-artifact action.

I've got same error when pushing docker image. Gitea version: 1.21.0+dev-351-gb167f3511
+ /usr/local/bin/docker push ***

The push refers to repository

bbde14fa043d: Preparing

6dca6b3e8763: Preparing

bbde14fa043d: Retrying in 5 seconds

6dca6b3e8763: Retrying in 5 seconds

bbde14fa043d: Retrying in 4 seconds

6dca6b3e8763: Retrying in 4 seconds

bbde14fa043d: Retrying in 3 seconds

6dca6b3e8763: Retrying in 3 seconds

bbde14fa043d: Retrying in 2 seconds

6dca6b3e8763: Retrying in 2 seconds

bbde14fa043d: Retrying in 1 second

6dca6b3e8763: Retrying in 1 second

bbde14fa043d: Retrying in 10 seconds

6dca6b3e8763: Retrying in 10 seconds

bbde14fa043d: Retrying in 9 seconds

6dca6b3e8763: Retrying in 9 seconds

bbde14fa043d: Retrying in 8 seconds

6dca6b3e8763: Retrying in 8 seconds

bbde14fa043d: Retrying in 7 seconds

6dca6b3e8763: Retrying in 7 seconds

bbde14fa043d: Retrying in 6 seconds

6dca6b3e8763: Retrying in 6 seconds

bbde14fa043d: Retrying in 5 seconds

6dca6b3e8763: Retrying in 5 seconds

bbde14fa043d: Retrying in 4 seconds

6dca6b3e8763: Retrying in 4 seconds

bbde14fa043d: Retrying in 3 seconds

6dca6b3e8763: Retrying in 3 seconds

bbde14fa043d: Retrying in 2 seconds

6dca6b3e8763: Retrying in 2 seconds

bbde14fa043d: Retrying in 1 second

6dca6b3e8763: Retrying in 1 second

bbde14fa043d: Retrying in 15 seconds

6dca6b3e8763: Retrying in 15 seconds

bbde14fa043d: Retrying in 14 seconds

6dca6b3e8763: Retrying in 14 seconds

bbde14fa043d: Retrying in 13 seconds

6dca6b3e8763: Retrying in 13 seconds

bbde14fa043d: Retrying in 12 seconds

6dca6b3e8763: Retrying in 12 seconds

bbde14fa043d: Retrying in 11 seconds

6dca6b3e8763: Retrying in 11 seconds

bbde14fa043d: Retrying in 10 seconds

6dca6b3e8763: Retrying in 10 seconds

bbde14fa043d: Retrying in 9 seconds

6dca6b3e8763: Retrying in 9 seconds

bbde14fa043d: Retrying in 8 seconds

6dca6b3e8763: Retrying in 8 seconds

bbde14fa043d: Retrying in 7 seconds

6dca6b3e8763: Retrying in 7 seconds

bbde14fa043d: Retrying in 6 seconds

6dca6b3e8763: Retrying in 6 seconds

bbde14fa043d: Retrying in 5 seconds

6dca6b3e8763: Retrying in 5 seconds

bbde14fa043d: Retrying in 4 seconds

6dca6b3e8763: Retrying in 4 seconds

bbde14fa043d: Retrying in 3 seconds

6dca6b3e8763: Retrying in 3 seconds

bbde14fa043d: Retrying in 2 seconds

6dca6b3e8763: Retrying in 2 seconds

bbde14fa043d: Retrying in 1 second

6dca6b3e8763: Retrying in 1 second

bbde14fa043d: Retrying in 20 seconds

6dca6b3e8763: Retrying in 20 seconds

bbde14fa043d: Retrying in 19 seconds

6dca6b3e8763: Retrying in 19 seconds

bbde14fa043d: Retrying in 18 seconds

6dca6b3e8763: Retrying in 18 seconds

bbde14fa043d: Retrying in 17 seconds

6dca6b3e8763: Retrying in 17 seconds

bbde14fa043d: Retrying in 16 seconds

6dca6b3e8763: Retrying in 16 seconds

bbde14fa043d: Retrying in 15 seconds

6dca6b3e8763: Retrying in 15 seconds

bbde14fa043d: Retrying in 14 seconds

6dca6b3e8763: Retrying in 14 seconds

bbde14fa043d: Retrying in 13 seconds

6dca6b3e8763: Retrying in 13 seconds

bbde14fa043d: Retrying in 12 seconds

6dca6b3e8763: Retrying in 12 seconds

bbde14fa043d: Retrying in 11 seconds

6dca6b3e8763: Retrying in 11 seconds

bbde14fa043d: Retrying in 10 seconds

6dca6b3e8763: Retrying in 10 seconds

bbde14fa043d: Retrying in 9 seconds

6dca6b3e8763: Retrying in 9 seconds

bbde14fa043d: Retrying in 8 seconds

6dca6b3e8763: Retrying in 8 seconds

bbde14fa043d: Retrying in 7 seconds

6dca6b3e8763: Retrying in 7 seconds

bbde14fa043d: Retrying in 6 seconds

6dca6b3e8763: Retrying in 6 seconds

bbde14fa043d: Retrying in 5 seconds

6dca6b3e8763: Retrying in 5 seconds

bbde14fa043d: Retrying in 4 seconds

6dca6b3e8763: Retrying in 4 seconds

bbde14fa043d: Retrying in 3 seconds

6dca6b3e8763: Retrying in 3 seconds

bbde14fa043d: Retrying in 2 seconds

6dca6b3e8763: Retrying in 2 seconds

bbde14fa043d: Retrying in 1 second

6dca6b3e8763: Retrying in 1 second

received unexpected HTTP status: 500 Internal Server Error

exit status 1


Complex json event - syntax error

Testing lambda by the call:
$ sam local invoke -e sns_event_struct0.json HelloWorld
returns:
2017/08/31 19:58:47 Successfully parsed template.yaml
2017/08/31 19:58:47 Connected to Docker
2017/08/31 19:58:47 Fetching lambci/lambda:nodejs6.10 image for nodejs6.10 runtime...
nodejs6.10: Pulling from lambci/lambda
Digest: sha256:b9a57b98dcfe226cac3fb0b8329594eefb62ba7089fa27cf8ac968e5736cc04a
Status: Image is up to date for lambci/lambda:nodejs6.10
2017/08/31 19:58:48 Invoking index.handler (nodejs6.10)
START RequestId: b33ec217-b676-12cc-d536-101d1233ef7a Version: $LATEST
Unable to parse input as json: Unexpected token
in JSON at position 503: SyntaxError
in JSON at position 503
at Object.parse (native)
END RequestId: b33ec217-b676-12cc-d536-101d1233ef7a
REPORT RequestId: b33ec217-b676-12cc-d536-101d1233ef7a	Duration: 10.13 ms	Billed Duration: 0 ms	Memory Size: 0 MB	Max Memory Used: 28 MB
The beginning of the even file:
{ "Records": [
{ "EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:aws:sns:eu-west-1:916174725480:new-fmi-opendata-rcrhirlam-surface-grib:b290c21a-2c65-48d6-b4bd-a7fd09f3fc0a",
"Sns": {
"Type": "Notification",
"MessageId": "8d6d28db-33dc-52f6-9521-7adc18cf7536",
"TopicArn": "arn:aws:sns:eu-west-1:916174725480:new-fmi-opendata-rcrhirlam-surface-grib",
"Subject": "Amazon S3 Notification",
"Message": "{"Records":
[{"eventVersion":"2.0",
The problem could be that it is json, inside json, as after the Message variable there is the Records one followed by colon which seems to be the problem.. ( counted to be at 503 line buffer)
How to fix it?
The even.json seems to be a legitimate output as generated by a lambda triggered by an sns event.

@aniecki that doesn't look like valid JSON towards the end there:

"Message": "{"Records":

Looks like there's an extra quote – should it be "Message": {"Records":?

Or it's possible that Message is supposed to be a string, in which case all quotes inside it need to be escaped:
"Message": "{\"Records\": ... "

Yes, the json event as reported is just beginning of the whole file (for the sake of space clarity), and yes it is escaped, though the escape characters are somehow deleted by the github editor.
One more thing, when validated by freeformatter.com it gives:
The JSON input is NOT valid according to RFC 4627 (JSON specification). Unexpected character ( ) at position 503.
Then again, such json even is caught by a lambda function (sns trigger) thus I assume that it should also be processed by sam service?

Supplied is the screenshot of the event json file..

@aniecki is that a newline in the middle of a string? (on line 10, 11, 12, etc)
They should also be escaped as \n
It looks to me like it should be:
"Message": "{\"Records\":\n[{\"eventVersion\":\"2.0\",\n\"eventSource\":\"aws:s3\",\n ...

Thanks for that info, Indeed I have modified the string to be user friendly, didn't know that this new line can spoil the event.
I will check and update later.

Ok, this event  is now good in sam service,
Yet when validating by  freeformatter.com, it comes as (see below)
How to validate such event to be ok for sam invoke?

Issue fixed, even when there is no info on the validator..


LESQ-1024: Put lesson downloads behind sign in PART DEUX

Description
Music year: 1979

Swaps Auth0 for Clerk
Login/sign-up pages are very basic and will follow in another ticket
Heading reads "Sign in to Oak AI Experiments" this will change with a coming config change in Clerk

How to test
With the feature flag

You'll need the use-auth-owa feature flag enabled
Go to https://deploy-preview-2701--oak-web-application.netlify.thenational.academy/teachers/programmes/art-secondary-ks3-l/units/pop-art-modern-popular-culture-4928/lessons/chila-kumari-burman-part-1-cdh3jc
Mouse over the "Download resources" button
You should see the button links to downloads-auth and not downloads this indicates that the feature flag has been applied
Click on "Download resources"
You should see a login screen
Sign-in
You should be redirected back to the original page where you can download as usual

Without the feature flag/incognito session

Go to https://deploy-preview-2650--oak-web-application.netlify.thenational.academy/teachers/programmes/art-secondary-ks3-l/units/pop-art-modern-popular-culture-4928/lessons/chila-kumari-burman-part-1-cdh3jc
Click on "Download resources"
You should be able to download without signing up
No clerk related requests should be made to the network

Testing
Richard added some notes to the original ticket for Auth0 which might be useful for testing this since we should have parity https://www.notion.so/oaknationalacademy/I-want-the-downloads-page-to-be-blocked-by-a-sign-in-requirement-7c611ae3be5d41ccafb107b190a5ee0a
Screenshots
https://github.com/user-attachments/assets/ddb811ed-aaf7-4795-83c9-bd746ec8f6ae
Checklist

[ ] Added or updated tests where appropriate
[ ] Manually tested across browsers / devices
[ ] Considered impact on accessibility
[ ] Design sign-off
[ ] Approved by product owner
[ ] Does this PR update a package with a breaking change

:tada: This PR is included in version 1.521.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Added introduction documentation to the init.py file

In the future, it's generally better to update the same PR with new changes. I'll close this one in favour of #551


JAMES-3508 Avoid uneeded data copy upon IMAP append

Before

After

Nice improvment for APPEND...
Each APPENDed message being ~1MB...

Merged


photo buffer not clearing, PTP protocol in STA mode

photo buffer not clearing, PTP protocol in STA mode
the buffer clearing icon beside the card icon will keep doing the animation forever, the red LED card busy indicator will stay on forever. the camera is inoperable until a full power reset
observed on A7RIV by a user I've been helping

second thing, I added code to dump the buffered image object data into nothingness, but it doesn't work too well. I believe it's actually because of a performance issue within the ESP32. My debug messages say that it's dumping and dumping until it hangs and the RX buffer times out without finishing the entire dump.

Hopefully fixed by https://github.com/frank26080115/alpha-fairy/commit/736cdaa499539507c8b1f32803b438a00eeefd4a

Issue seems to be resolved on my A1 and RX0M2, also the original reporter of this issue has indicated that the new instructions are helpful and avoids this issue.


[JN-693] Allow study admins to mark surveys as required or optional

DESCRIPTION
This allows study admins to set surveys as optional or required during creation or from the study content view.
https://github.com/broadinstitute/juniper/assets/7257391/1a8482f9-e0c9-464f-88fb-96723e6c6969
TO TEST:  (simple manual steps for confirming core behavior -- used for pre-release checks)

Go to the form view: https://localhost:3000/ourhealth/studies/ourheart/env/sandbox/forms
Toggle an existing survey as required/optional
Verify that you can create a new required survey

Yeah, the "reloadPortal" call reloads the portal 'god object' which is going to force a rerender of pretty much everything.  It's outside the scope of this PR, but as we're working in the admin tool, we need to be slowly reducing the dependence on that 'god object' and having each subpage load its own content.  That will allow for smarter refresh behavior.


nerdctl system prune --all --force : not clearing the unused images

Description
Hi Team,
We are using AWS EKS cluster v1.25.  It is supporting containerd. There is some space issue in all worker nodes and seems the EKS garbage collecter is not working as expected. So we manually tried to delete the unsed images using "crictl rmi --prune". But it not worked. Then we connected with AWS team and they recommended to use "nerdctl".
We installed it and ran "nerdctl system prune --all" which again not resolved our space issue. Not sure what is the issue. Need urgent help.
Steps to reproduce the issue
1.yum install nerdctl -y
2. nerdctl system prune --all
3.
Describe the results you received and expected
nothing.
What version of nerdctl are you using?
nerdctl version
Client:
Version:
OS/Arch:       linux/amd64
Git commit:    .m
buildctl:
Version:
Server:
containerd:
Version:      1.6.6
GitCommit:    10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version:      1.1.4
GitCommit:    5fd4c4d144137e991c4acebb2146ab1483a97925
Are you using a variant of nerdctl? (e.g., Rancher Desktop)
None
Host information
No response

For kubernetes you may have to specify --namespace=k8s.io

correct me if my understanding is wrong:
we have 10+ namespaces so do we have to run
nerdctl system prune --all --namespace=
OR
nerdctl system prune --all --namespace=k8s.io

@shishir84 containerd uses the namespace k8s.io for k8s. so everything you see with kubectl or crictl is in this namespace.
the command nerdctl system prune --all --namespace=k8s.io is therefore correct.


LiteDB.LiteException: 'Collection 'nameOfCollection' lock timeout when entering in reserved mode after 00:01:00

LiteDB.LiteException
HResult=0x80131500
Message=Collection 'UserAccount' lock timeout when entering in reserved mode after 00:01:00
Source=LiteDB
StackTrace:
at LiteDB.Engine.LockService.EnterReserved(String collectionName)
at LiteDB.Engine.Snapshot..ctor(LockMode mode, String collectionName, HeaderPage header, UInt32 transactionID, TransactionPages transPages, LockService locker, WalIndexService walIndex, DiskReader reader, Boolean addIfNotExists)
at LiteDB.Engine.TransactionService.g__create|38_0(<>c__DisplayClass38_0& )
at LiteDB.Engine.TransactionService.CreateSnapshot(LockMode mode, String collection, Boolean addIfNotExists)
at LiteDB.Engine.LiteEngine.<>c__DisplayClass26_0.b__0(TransactionService transaction)
at LiteDB.Engine.LiteEngine.AutoTransaction[T](Func2 fn)    at LiteDB.Engine.LiteEngine.Update(String collection, IEnumerable1 docs)
at LiteDB.LiteCollection1.Update(T entity)    at LiteDB.LiteRepository.Update[T](T entity, String collectionName)    at ViettelIM.Core.Persistence.Repositories.UserAccountRepository.Update(UserAccount resource) in D:\Projects\CSharp\Desktop app\Viettel Change SIM AI\ViettelIM.Core\Persistence\Repositories\UserAccountRepository.cs:line 35    at ViettelIM.Core.Services.UserAccountService.<>c__DisplayClass5_0.<UpdateAsync>b__0() in D:\Projects\CSharp\Desktop app\Viettel Change SIM AI\ViettelIM.Core\Services\UserAccountService.cs:line 98    at System.Threading.Tasks.Task1.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
This exception was originally thrown at this call stack:
LiteDB.Engine.LockService.EnterReserved(string)
LiteDB.Engine.Snapshot.Snapshot(LiteDB.Engine.LockMode, string, LiteDB.Engine.HeaderPage, uint, LiteDB.Engine.TransactionPages, LiteDB.Engine.LockService, LiteDB.Engine.WalIndexService, LiteDB.Engine.DiskReader, bool)
LiteDB.Engine.TransactionService.CreateSnapshot.__create|38_0(ref LiteDB.Engine.TransactionService.<>c__DisplayClass38_0)
LiteDB.Engine.TransactionService.CreateSnapshot(LiteDB.Engine.LockMode, string, bool)
LiteDB.Engine.LiteEngine.Update.AnonymousMethod__0(LiteDB.Engine.TransactionService)
LiteDB.Engine.LiteEngine.AutoTransaction(System.Func<LiteDB.Engine.TransactionService, T>)
LiteDB.Engine.LiteEngine.Update(string, System.Collections.Generic.IEnumerable<LiteDB.BsonDocument>)
LiteDB.LiteCollection.Update(T)
LiteDB.LiteRepository.Update(T, string)
ViettelIM.Core.Persistence.Repositories.UserAccountRepository.Update(ViettelIM.Core.Domain.Models.UserAccount) in UserAccountRepository.cs
...
 Or a query IEnumerable without dispose?

I got same error on a pretty easy code and in this issue too https://github.com/mbdavid/LiteDB/issues/1431
Downgrade to 5.0RC version fix all and work great, for me

@mincasoft Could you test it with v5.0.1?

 Or a query IEnumerable without dispose?

Faced the same problem without dispose, for me an increase to v5.0.1 solved the problem.

5.0.1 solved the problem for me

Closing the issue as it has been resolved by updating to 5.0.1

hi
I get same error in
5.0.10
{"Collection 'SerialPortData' lock timeout when entering in write mode after 00:01:00"}

I have had a similar issue (probably).
Exception was:
Collection 'MyCollection' lock timeout when entering in write mode after 00:01:00
... thrown by the same logic that was rock stable when awaited from the UI synchronization context. But as soon as a SignalR handler tried to execute this method these exception occured. Looks like in your stack trace, that the DB calls were also done from a different synchronization context.
Manually awaiting this method from the UI synchronization context again fixed all issues immediately. Like so:
private void MySignalrEventHandler()
{
    Task.Factory.StartNew(
        async () =>
        {
            await MyUsuallyRockstableMethod(); // executing up to thousands of upserts on tens of collections
        },
        CancellationToken.None,
        TaskCreationOptions.None,
        taskSchedulerForDesiredSyncContext // eg get via TaskScheduler.FromCurrentSynchronizationContext(); while on UI thread and pass around
        );
}

Hope it helps!


Problems with HitBTC clientOrderId

Hi.
I am using your latest version and I was trying to make a limit buy order on HitBTC.
The error that pops out is
ccxt.errors.ExchangeNotAvailable: hitbtc POST http://api.hitbtc.com/api/1/trading/new_order?nonce=6154297&apikey=****&clientOrderId=6154297&symbol=ETHBTC&side=buy&quantity=7&type=limit&price=0.0756940000 409 Conflict  {"code":"InvalidArgument","message":"Fields are not valid: clientOrderId"}

The thing is, I overrided the nonce() method so that now it returns something smaller than the 8 digit number that they require.
In HitBTC create_order(..) method could you replace the line
clientOrderId = self.nonce()
with something from here
https://docs.python.org/3/library/uuid.html
So that everyone who's using it gets good results.
Thank you.
Good luck.

The thing is, I overrided the nonce() method so that now it returns something smaller than the 8 digit number that they require.

In HitBTC create_order(..) method could you replace the line
clientOrderId = self.nonce()

Yes )

with something from here
https://docs.python.org/3/library/uuid.html

No, because we have to make it portable, but we will add something like an overrideable createClientOrderId () method, so that you could work around this.
And, as always, thanks for posting this! We will fix it very soon.

This is fixed in version 1.5.14+. No changes in your code are required, you can simply update the library and continue ) Thank you very much for reporting this!

Version ccxt-1.5.21
HitBTC createOrder clientOrderId = self.nonce().
Just in case you forgot to upload :) .

@marinsokol5 no, I didn't forget to upload. That's strange, because I really did and that line should read clientOrderId = self.milliseconds (). Could you please check your version once again?
See:
https://github.com/kroitor/ccxt/blob/master/ccxt/exchanges.py#L9515

Yup my side.
I upgraded it but PyCharm was a bit slow at updating it.
Thank you.

Thx for reporting back!


chore(master): release 1.1.57

:robot: I have created a release beep boop
1.1.57 (2023-09-04)
Bug Fixes

deps: update dependency wayofdev/laravel-cycle-orm-adapter to v4.0.83 (dd3d3ca)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/wayofdev/laravel-webhook-client/releases/tag/v1.1.57 :sunflower:


DragDrop

Is your feature request related to a problem? Please describe.
Can Accept DragDrop From OS's Other App(eg. Explorer.   env: avalonia 11.0.6 on windows 11)？
Describe the solution you'd like
Accept DragDrop From OS's Other App（11.0.6 on windows 11）
Describe alternatives you've considered
No response
Additional context
No response

class DragSource : IPlatformDragSource
{
    public unsafe Task<DragDropEffects> DoDragDrop(PointerEventArgs triggerEvent,
        IDataObject data, DragDropEffects allowedEffects)
    {
        Dispatcher.UIThread.VerifyAccess();

        triggerEvent.Pointer.Capture(null);

        using var dataObject = new DataObject(data);
        using var src = new OleDragSource();
        var allowed = OleDropTarget.ConvertDropEffect(allowedEffects);

        var objPtr = MicroComRuntime.GetNativeIntPtr<Win32Com.IDataObject>(dataObject);
        var srcPtr = MicroComRuntime.GetNativeIntPtr<Win32Com.IDropSource>(src);

        UnmanagedMethods.DoDragDrop(objPtr, srcPtr, (int)allowed, out var finalEffect);

        // Force releasing of internal wrapper to avoid memory leak, if drop target keeps com reference.
        dataObject.ReleaseWrapped();

        return Task.FromResult(OleDropTarget.ConvertDropEffect((Win32Com.DropEffect)finalEffect));
    }
}

It seems surrport, But Test :
        var border = new Border(){Background = Brushes.Aquamarine};

        DragDrop.SetAllowDrop(border, true);
        border.AddHandler(DragDrop.DragEnterEvent, OnDragEnter);
        SetContent(border);

        "OnDragEnter" Not Fired. And Inner(Application) Drag Works well.

why not work even by win.adminstrator


Improve fetching of own PeerId

/**
 * Given a map of peers, determine which one is you.
 */
export function getMyPeerId(peers: Record<string, Peer>) {
  // TODO: Find a better way to do this than using env var?
  const myApiUrl = new URL(process.env.REACT_APP_FM_CONFIG_API as string);
  return Object.entries(peers).find((peer) => {
    const apiUrl = new URL(peer[1].api_url);
    return myApiUrl.origin === apiUrl.origin;
  })?.[0];
}

Originally posted by @garyray-k in https://github.com/fedimint/fedimint/pull/2360#discussion_r1186991790

We do this betterer now.


Font format

This is probably more of a question than an issue/feature request. Is there a way to load evil icons as a font into our HTML?

Sorry, but no.
It's the worst what can be done with Evil Icons for several reasons:

Icons are not graphemes, they require more precise rendering which can't be achieved with a font.
With font we can't color an icon using more than one color.
It's impossible to make responsive icons with font.
Font for icons is a hack and we have less hacky ways to load icons.

Also, we're going to implement dynamic sprite building which can't be done with font.


display more results for one word, right now it only displays 1 type of response i.e and adjective or  whatever

this was already done, results are both verbs, and nouns, no further action is required


Add avatars

Allow users to upload a picture to the system, which will be displayed in their profile and near their names.

Do you mind if we'd create a new folder for these avatars, and this folder will be in the gitignore files?


Problem: Embedded spreadsheet schedule doesn't look nice on mobile

To reproduce: Go to https://2017.resbaz.com/tucson on a mobile browser.

I get a DNS issue on my mobile phone (Android). DNS address count not be found

That's because I had a typo in the URL. D'oh. Try again.

It's readable and what not on my Android. I'd put the times on the right side and in the middle just so people can see that more easily. I also assume having the header with Room being locked would be nice.


[ko]: Fixes wrong link in assign-pod-node.md

This PR fixes #29164

/assign
@anushkamittal20
Thank you for your contribution!
/lgtm
/approve

/approve cancel
@anushkamittal20
As k8s-ci-robot has mentioned, Kubernetes/website doesn't allow commits with specific keywords that can automatically close issues.
https://github.com/kubernetes/website/pull/29169#issuecomment-889937832
Could you change the commit message and retry again?

/hold

Hey @ClaudiaJKang, thank you so much!! I have fixed the commit message. Could you please review again. Thank you!

/hold cancel

@anushkamittal20 Thank you!
/lgtm
/approve


Missing dataset The dataset associated with this chart no longer exists in create filter box chart

I use the CLIENT_CACHE feature by setting CLIENT_CACHE to true in superset/config.py, when I choose a table of examples database and choose filter box to create a chart,  the result page comes with following error message:
Missing dataset The dataset associated with this chart no longer exists in create filter box chart
How to reproduce the bug

Go to Charts -> + CHART
choose a table and choose filter box chart
Press CREATE NEW CHART

Expected results
The create chart should run without any problem
Actual results
Missing dataset
The dataset associated with this chart no longer exists
1st image

2nd imag

Environment
(please complete the following information):

browser type and version: Google Chrome Version  103.0.5060.53 (Official Build) (x86_64)
superset version: 1.5
python version: 3.8.13
node.js version:  node 16.15.0
any feature flags active: CLIENT_CACHE

Checklist
Make sure to follow these steps before submitting your issue - thank you!

[ ] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[x] I have reproduced the issue with at least the latest released version of superset.
[x] I have checked the issue tracker for the same issue and I haven't found one similar.

Additional context
Already present in the newest versions of Superset
Is there any configuration that I am might missing here? Is this fixable? Thanks in advance for any help and comment.

I've noticed the same error as above with Filter box and most other legacy charts such as World Maps. Trace below seems to indicate security permission issue. I was using an unmodified admin account. RBAC is disabled.
Nov 02 03:58:59 ubuntu-focal superset[717]: SupersetSecurityException
Nov 02 03:58:59 ubuntu-focal superset[717]: Traceback (most recent call last):
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 483, in check_datasource_perms
Nov 02 03:58:59 ubuntu-focal superset[717]:     datasource_id, datasource_type = get_datasource_info(
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 275, in get_datasource_info
Nov 02 03:58:59 ubuntu-focal superset[717]:     raise SupersetException(
Nov 02 03:58:59 ubuntu-focal superset[717]: superset.exceptions.SupersetException: The dataset associated with this chart no longer exists
Nov 02 03:58:59 ubuntu-focal superset[717]: The above exception was the direct cause of the following exception:
Nov 02 03:58:59 ubuntu-focal superset[717]: Traceback (most recent call last):
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/base.py", line 212, in wraps
Nov 02 03:58:59 ubuntu-focal superset[717]:     return f(self, *args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/utils/log.py", line 244, in wrapper
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/utils/log.py", line 244, in wrapper
Nov 02 03:58:59 ubuntu-focal superset[717]:     value = f(*args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/utils/cache.py", line 226, in wrapper
Nov 02 03:58:59 ubuntu-focal superset[717]:     response = f(*args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 440, in wrapper
Nov 02 03:58:59 ubuntu-focal superset[717]:     check_perms(*args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 487, in check_datasource_perms
Nov 02 03:58:59 ubuntu-focal superset[717]:     raise SupersetSecurityException(
Nov 02 03:58:59 ubuntu-focal superset[717]: superset.exceptions.SupersetSecurityException: The dataset associated with this chart no longer exists
Nov 02 03:58:59 ubuntu-focal superset[717]: 2022-11-02 03:58:59,088:WARNING:superset.views.base:SupersetSecurityException
Nov 02 03:58:59 ubuntu-focal superset[717]: Traceback (most recent call last):
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 483, in check_datasource_perms
Nov 02 03:58:59 ubuntu-focal superset[717]:     datasource_id, datasource_type = get_datasource_info(
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 275, in get_datasource_info
Nov 02 03:58:59 ubuntu-focal superset[717]:     raise SupersetException(
Nov 02 03:58:59 ubuntu-focal superset[717]: superset.exceptions.SupersetException: The dataset associated with this chart no longer exists
Nov 02 03:58:59 ubuntu-focal superset[717]: The above exception was the direct cause of the following exception:
Nov 02 03:58:59 ubuntu-focal superset[717]: Traceback (most recent call last):
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/base.py", line 212, in wraps
Nov 02 03:58:59 ubuntu-focal superset[717]:     return f(self, *args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/utils/log.py", line 244, in wrapper
Nov 02 03:58:59 ubuntu-focal superset[717]:     value = f(*args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/utils/cache.py", line 226, in wrapper
Nov 02 03:58:59 ubuntu-focal superset[717]:     response = f(*args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 440, in wrapper
Nov 02 03:58:59 ubuntu-focal superset[717]:     check_perms(*args, **kwargs)
Nov 02 03:58:59 ubuntu-focal superset[717]:   File "/usr/share/superset/venv/lib/python3.8/site-packages/superset/views/utils.py", line 487, in check_datasource_perms
Nov 02 03:58:59 ubuntu-focal superset[717]:     raise SupersetSecurityException(
Nov 02 03:58:59 ubuntu-focal superset[717]: superset.exceptions.SupersetSecurityException: The dataset associated with this chart no longer exists

seeing the same issue when attempting to create mapbox-based charts

I have the same issue. Do not close this topic.

How to solve the same problem as this？

How to solve the same problem as this？
config the FEATURE_FLAGS
CLIENT_CACHE: Fasle
It works for me

Not sure the current status of this, but it seems to have gone silent. Hopefully it's fixed. The original issue involved Filter Box, which is deprecated, and will be gone in 4.0. If this is still an issue in 3.x, please open a new issue with updated context and a reproducible example. Thanks!


Statistics Function Deprecations

Clean up deprecated functions including their usages throughout the MathTools library.

Quick and easy improvements.


Performance Tweaks

See #62

Alright, just saw the failing test. Will investigate and come back - rendering worked fine in my tests but I forgot to run the tests entirely 😅

@nsaunders Tests are fixed now. I had the closing curly in the wrong place. Now your question also makes sense!


DependencyTelemetry.TryGetOperationDetail isn't as helpful as it could be

See microsoft/ApplicationInsights-dotnet-server#897.

There is no indication as to what values can be passed as the key.
There is no type-safety in the values returned.

tl;dr there's no way for anyone to know that they can call
if (myDependencyTelemetryInstance.TryGetOperationDetail("HttpRequest", out var rawMsg)
    && rawMsg is HttpRequestMessage message)
{
    // do something with message
}

The only reason I know to do the above is because I trawled through issues and PRs in this repo. Most people probably won't be as patient, and they shouldn't need to be.
Suggestion

Publicly expose relevant RemoteDependencyConstants keys.
Add specific overloads on DependencyTelemetry that reflect what HttpCoreDiagnosticSourceListener and HttpProcessing are storing:

  bool TryGetHttpRequestOperationDetail(out HttpRequestMessage message);
  bool TryGetHttpResponseOperationDetail(out HttpResponseMessage message);
  bool TryGetHttpResponseHeadersOperationDetail(out WebHeaderCollection headers);

Actually publicise the existence of these predefined keys and values in the official docs for DependencyTelemetry.TryGetOperationDetail.

Not stale.

I think I can give this a shot when #2524 gets merged. Shouldn't be too hard hopefully, it looks like it will be pretty straight forward.

Need to evaluate if similar concept can be extended to Requesttelemetry as well. We have quite large number of customers asking for mechanism to read request/response body. While it can't be done by SDK by default (privacy etc.), if we populate the request/response objects in this way, users can access it in initializer and add to telemetry as desired.
@cijothomas

That would be very helpful! I guess that could be a separat issue? We are adding the body today in middleware's, would be very neat to be able to use initializers like we can with DependencyTelemetry.

Not stale, reopen!

@IanKemp did #2566 solve it for you or do you need something else?


Implement API for adding custom rules

I'm debating an API that looks somewhat like this (CoffeeScript syntax for brevity, think of it like JS-aware pseudocode):
system.rule(
  rule: 'block',
  prefix: '.',
  transform: (prefix, rule) ->
    "#{prefix + rule}"
)

system.rule(
  rule: 'element',
  prefix: '--',
  transform: (prefix, rule) ->
    if @inModifier? and @inBlock? then<EMAIL_ADDRESS><EMAIL_ADDRESS>+ prefix + rule}"
    if @inElement? then<EMAIL_ADDRESS>+ prefix + rule}"
    if @inBlock? then<EMAIL_ADDRESS>+ prefix + rule}"
    else system.error "[FATAL]: rule `element` must be nested inside a parent rule."
)

system.rule(
  rule: 'modifier',
  prefix: '.\\+',
  transform: (prefix, rule) ->
    if @inElement? then<EMAIL_ADDRESS>+ prefix + rule}"
    else<EMAIL_ADDRESS>+ prefix + rule}"
)

However I think this might present a problem in regards to modules that are nested underneath multiple other modules (modifiers, elements or states...) I think having extra properties, like @blocks, @elements, @modifiers, for example, which resolve to an array of each respective module the selector belongs to, in order of which they appear, might be enough to make this a powerful enough API for selector transformation.
Also, it's important to note that each rule that is defined will be added to the @<module>, @<modules>, and @in<Module> API.
A further breakdown of exactly what's going on here - the rule parameter represents the argument that was passed to the module, @<module>.selector is the full CSS selector string of every module up until and including the current module. The prefix argument represents the prefix property passed to system.rule. You might think this is not needed, but if another user wishes to use your module, having the prefix and suffix set explicitly will allow them to customise it in system's settings.
system.error is basically a utility helper that throws node errors through postcss, which will make debugging a lot easier since right now, there's no way of throwing selector-level errors in system due to the nature of how they are detected.

Perhaps making the API a little more terse might be of some benefit:
system.rule '--:element:', (mod) ->
  if (@inModifier and @inBlock)?
<EMAIL_ADDRESS><EMAIL_ADDRESS>+ mod.pre + mod.arg + mod.suf}"
  else if (

Just an addition, perhaps a @next and @previous pointer to the previous or next module (if available) might also be of some use.


[DH-495] Company Name partial matching filter in Contact.

This adds Contact search filter that allows filtering by partially matching company name.

Codecov Report

Merging #412 into develop will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff            @@
##           develop     #412   +/-   ##
========================================
  Coverage    96.02%   96.02%
========================================
  Files           85       85
  Lines         2895     2895
  Branches       250      249    -1
========================================
  Hits          2780     2780
  Misses          81       81
  Partials        34       34

Impacted Files
Coverage Δ

datahub/search/contact/views.py
90.9% <ø> (ø)
:arrow_up:

datahub/search/elasticsearch.py
95.32% <100%> (-0.09%)
:arrow_down:

datahub/search/dsl_utils.py
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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