Applab V0.9.0 - some things feel off

Maybe it is just me, but...

  1. The divider between the edit window and the monitor window, at times feels like it is
    ignoring me trying to move where it is. I might try to drag it down and it ignores the first couple of attempts and then it works.

like if it is in the state:


Sometimes dragging the divider up works, other times ignored, when it works, it does not appear to at first but if you go up farther it snaps up...

If I drag it up sometimes I can drag it back down on first attempt, sometimes takes a few attempts.

  1. Find functionality.
    a) which pane am I finding in? sometimes when I click on the window and then wish to do a find, it starts find in different section of window, sometimes not sure where.

b) often times, when I do a find, the selected line is not in the visible region of a file. maybe a line or two above? Like I asked for it to go to the next find of "range"


Where is it?

c) If I try to find the next one, which is visible within the window, it does not not just select that line it also moves the whole window view to again having the selected line off the top of the window.

d) If I try to edit something while find is still up, find jumps...
For example suppose I wish to fin axis_ranges and edit something on that line:


I have the cursor on that line as maybe I was going to add something like info.fuzz to that list, I hit the backspace and where am I?

The line jumped out of view, it did remove the character, but...

...

For problem 1, VS Code also behaves like that, and I believe that it is normal.

Is this the behavior you are referring to?:

console-sash

I wasn't able to reproduce this. However, there is a "snap" between the collapsed and expanded state, and you must drag the divider for some distance before the console will switch from the collapsed state and the expanded state, or from the minimal height expanded state to the collapsed state.

Can you provide step by step instructions I can follow to reproduce the fault?

Thanks for your report. I confirm the bugs. The Arduino App Lab developers have already prepared a fix, so this will be resolved in the next release as a matter of course.

It is hard to get exact steps, as it is not always consistent.

Like I have had a few times in the last several minutes where:
a) have it in the state that shows the open console: the window is showing lines 1-37
b) drag it up to where it now only shows up to line 30 in source window.
c) now try to drag it up some more in this case the first two attempts failed, it worked on the third.

Now drag it down to line 31 again. Now try to drag it down again and it failed once and then worked

Now try to drag it up, it failed first worked second.

Sometimes hard to figure out. I think one case is: suppose I am editing in one tab

And I decide that this causes me to need to make a change in another window, like the sketch; So I click on it's tab and then hit ctrl+f to start a find... Nothing happens.
I hit escape to maybe exit it, and then it shows sort of a text marker in the tabs:

which goes away when Inside that pane and cursor is there blinking.
and ctrl+f then brings up the find.

Wasn't going to jump in since @KurtE pretty much covered everything but over the last couple of days I have been running into an issue where all of sudden out of no where the Q will reboot and I have to close applab and reconnect, and once in a while I will get the following:

At this point I just close applab and restart applab and it works for a while and then it will crash again. ps have to power cycle the Q as well.

Here is the sketch that seems to generate the most reboots

/****************************************************
 *  Links
 * https://toptechboy.com/9-axis-imu-lesson-10-making-a-tilt-compensated-compass-with-arduino/
 * https://forums.adafruit.com/viewtopic.php?t=136640
 * 
 ******/

#include <Wire.h>
#include <LibPrintf.h>

/**************************************
 *    BNO055                          *
 *************************************/
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>


/* Set the delay between fresh samples */
uint16_t BNO055_SAMPLERATE_DELAY_MS = 100;

// Check I2C device address and correct line below (by default address is 0x29 or 0x28)
//                                   id, address
Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28, &Wire1);


#define MSGQ_MAX_MSGS 100
#define MSG_SIZE sizeof(struct sensor_msg)

struct sensor_msg {
    uint32_t timestamp;
    float roll;
    float pitch;
    float yaw;
    float heading;
};

/*
 * K_MSGQ_DEFINE:
 * Parameters
 *   q_name	Name of the message queue.
 *   q_msg_size	Message size (in bytes).
 *   q_max_msgs	Maximum number of messages that can be queued.
 *   q_align	Alignment of the message queue's ring buffer (power of 2).
*/
K_MSGQ_DEFINE(bno055_msgq, MSG_SIZE, MSGQ_MAX_MSGS, 4);

K_THREAD_STACK_DEFINE(bno055_thread_stack_area, 1024);
static struct k_thread bno055_thread_data;

K_THREAD_STACK_DEFINE(odometry_thread_stack_area, 1024);
static struct k_thread odometry_thread_data;



void bno055_thread(void *dummy1, void *dummy2, void *dummy3)
{
  /* Initialize sensor */
   Serial.println("Orientation Sensor Test"); Serial.println("");

    /* Initialise the sensor */
    if (!bno.begin())
    {
        /* There was a problem detecting the BNO055 ... check your connections */
        Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
        while (1);
    }
    bno.setExtCrystalUse(true);
    
    delay(1000);

    while (1) {
      struct sensor_msg msg;
      //sensors_event_t event;
      //bno.getEvent(&event);
      imu::Vector<3> euler = bno.getVector(Adafruit_BNO055::VECTOR_EULER);
      
    // Calculate heading
    float heading = 0;
      
        msg.timestamp = k_uptime_get_32();
        msg.yaw = euler.x();
        msg.roll = euler.y();
        msg.pitch = euler.z();
        msg.heading = 0;      
    

        int ret = k_msgq_put(&bno055_msgq, &msg, K_NO_WAIT);
        if (ret != 0) {
          Serial.println("Message queue full, dropping message");
        }

        delay(BNO055_SAMPLERATE_DELAY_MS);
    }
}

void odometry_thread(void *dummy1, void *dummy2, void *dummy3)
{
    struct sensor_msg msg;

    while (1) {
        int ret = k_msgq_get(&bno055_msgq, &msg, K_FOREVER);
        if (ret == 0) {
            printf("Uploading: time=%u roll=%f, pitch=%f, yaw=%f, heading=%f\r", msg.timestamp, msg.roll, msg.pitch, msg.yaw, msg.heading);
        }
    }
}


void setup() {
  Serial.begin(115200);
  delay(5000);
 
  k_thread_create(&bno055_thread_data, bno055_thread_stack_area,
          K_THREAD_STACK_SIZEOF(bno055_thread_stack_area),
          bno055_thread, NULL, NULL, NULL,
          7, 0, K_FOREVER);
  k_thread_name_set(&bno055_thread_data, "bno055_thread");

  k_thread_create(&odometry_thread_data, odometry_thread_stack_area,
          K_THREAD_STACK_SIZEOF(odometry_thread_stack_area),
          odometry_thread, NULL, NULL, NULL,
          5, 0, K_FOREVER);
  k_thread_name_set(&odometry_thread_data, "odometry_thread");
  
  k_thread_start(&odometry_thread_data);
  k_thread_start(&bno055_thread_data);

  Serial.println("Example Started");

}

void loop() {
  
	delayMicroseconds(100);
}

I did some more experimentation, but still wasn't able to reproduce it. Does it occur even if you create and open a basic new App, or is it specific to a certain real App of yours?

Thanks for the clarification. I understand the problem now and am able to reproduce it. The problem is that Arduino App Lab does not give the associated editor panel focus after you select a tab. It instead gives the tab element focus. This is contrary to the standard behavior we see in other editors, IDEs, etc., which focus the panel associated with the tab.

I submitted a formal report to the Arduino App Lab developers on your behalf.

I probably should have noticed more and mentioned, that at least most of the time I have seen this, the app is in the running state and/or transitioning to or from the running state.

Thanks,

Also if you click lets say

Up in that section, the focus is somewhere, not sure where...