Any plans to support repeating tasks?

Just installed Sleek. Nice work! Any plans to support repeating tasks?

I was thinking about it and some other todo.txt apps already have it implemented. That could actually be 0.7.0 material here. I'll get back to you as soon as there are any news.

Great, thanks!  If it helps, I am able to help test.

@velardevines . There is some progress on this feature, but I am stuck with a question I would like to address to you.
Let's say there is a todo that is due today. And in the past you defined that this todo has a recurrance of one week. I was thinking it makes sense, to duplicate the old todo and leave it untouched. The new todo would then have the same attributes, except that the due date would be that of the old todo but plus 7 days. And also the start date of the new todo would be set equal to the due date of the old todo. I hope that doesn't sound to confusing ;)
Alternatively, instead of duplicating a todo, we could also change the old todo and adjust the start und due date according to whatever recurrance had been defined.
What do you think is the most common use case?
@jason-mehmel, not sure if this feature is of value for you, but if maybe you have an opinion here too. Would be great.

@velardevines . There is some progress on this feature, but I am stuck with a question I would like to address to you.
Let's say there is a todo that is due today. And in the past you defined that this todo has a recurrance of one week. I was thinking it makes sense, to duplicate the old todo and leave it untouched. The new todo would then have the same attributes, except that the due date would be that of the old todo but plus 7 days. And also the start date of the new todo would be set equal to the due date of the old todo. I hope that doesn't sound to confusing ;)
Alternatively, instead of duplicating a todo, we could also change the old todo and adjust the start und due date according to whatever recurrance had been defined.
What do you think is the most common use case?
@jason-mehmel, not sure if this feature is of value for you, but if maybe you have an opinion here too. Would be great.

It's an interesting point. I tend to do habit tracking or recurring tasks in things other than todo.txt, but I can imagine a situation where it would be useful.
Working through the question... either: a) generating a new task line copied from the previous based on some repeating logic, or b) editing the line with repeating logic.
In the case of A) benefits would be having each task line as it's own granular reminder. If the repeating is happening a lot, then you'll see them stack up, which would cause you to re-evaluate the commitment. There could also be some interesting tracking and reporting that could happen... "I have mowed the lawn 475 times since adding it as a commitment!" (Or at least marking it done 475 times.)
Some downsides could be a very large text file if either the code goes wrong, or if the user selects a repetition cycle and doesn't maintain it... (setting repetition for every second vs. every day, etc.)
In the case of B) you miss out on the benefits above, but you also miss out on the risks. It's a lot cleaner and more minimal.
I can imagine some specific projects or plans that could benefit some repetition but aren't something as repetitive as 'make the bed...' like a quarterly check-in with a colleague that you want to track at a task level.
All of that said, I don't know if a repeating task best fits the todo.txt tool. I'd default to just using my calendar! In my case I use a bullet journal for meeting notes as my paper inbox before things get to todo.txt, and a habit tracker for the month lives in there as well, so I'm ticking off boxes on things like daily meditation.
For me, the appeal and benefit of todo.txt is that it's actually inherently limited; it's not a one-stop productivity method. It's only there for me in the GTD sense of collect, review, and process. So I'm okay with having things that get done outside of that system if they don't require that kind of flow.
That was a whole ramble. Sorry. I hope it helps at least frame the request and next steps in some interesting ways.

It's an interesting point. I tend to do habit tracking or recurring tasks in things other than todo.txt, but I can imagine a situation where it would be useful.
Working through the question... either: a) generating a new task line copied from the previous based on some repeating logic, or b) editing the line with repeating logic.
In the case of A) benefits would be having each task line as it's own granular reminder. If the repeating is happening a lot, then you'll see them stack up, which would cause you to re-evaluate the commitment. There could also be some interesting tracking and reporting that could happen... "I have mowed the lawn 475 times since adding it as a commitment!" (Or at least marking it done 475 times.)
Some downsides could be a very large text file if either the code goes wrong, or if the user selects a repetition cycle and doesn't maintain it... (setting repetition for every second vs. every day, etc.)
In the case of B) you miss out on the benefits above, but you also miss out on the risks. It's a lot cleaner and more minimal.
I can imagine some specific projects or plans that could benefit some repetition but aren't something as repetitive as 'make the bed...' like a quarterly check-in with a colleague that you want to track at a task level.
All of that said, I don't know if a repeating task best fits the todo.txt tool. I'd default to just using my calendar! In my case I use a bullet journal for meeting notes as my paper inbox before things get to todo.txt, and a habit tracker for the month lives in there as well, so I'm ticking off boxes on things like daily meditation.
For me, the appeal and benefit of todo.txt is that it's actually inherently limited; it's not a one-stop productivity method. It's only there for me in the GTD sense of collect, review, and process. So I'm okay with having things that get done outside of that system if they don't require that kind of flow.
That was a whole ramble. Sorry. I hope it helps at least frame the request and next steps in some interesting ways.

@velardevines, I just uploaded a pre-release that contains a recurrence picker, you can download it here: https://github.com/ransome1/sleek/releases/tag/v0.7.0-Alpha
Some things for you to know

Recurrences can only be selected when a due date has been selected first. Actually the recurrence picker is invisible until this happens
You can set the recurrence per text input using "rec:" and adding d (daily, due date +1), w (weekly, due date +7), m (monthly, due date +30), y (yearly, due date +365) for the recurrence you wish. I know that the monthly recurrence of 30 days might be a bit tricky on months like February or December. In future versions I might add exceptions for those months to be more precise.
I avoided more complexity like for instance every second week and so on, as this would add a lot of complexity to the interface and the syntax and I am not sure if the benefit for the user of this would be big enough. As @jason-mehmel added, the todo.txt syntax (at least for now) is perhaps not meant for really complex task planning.
I totally misspelled "Recurrence" in the code and the translation files but will fix that ;)

Implementing it wasn't trivial, but I hope it works at least roughly. Please don't be angry if you'll find a big bug. That could actually happen.
I'm looking forward hearing from you.

@velardevines, I just uploaded a pre-release that contains a recurrence picker, you can download it here: https://github.com/ransome1/sleek/releases/tag/v0.7.0-Alpha
Some things for you to know

Recurrences can only be selected when a due date has been selected first. Actually the recurrence picker is invisible until this happens
You can set the recurrence per text input using "rec:" and adding d (daily, due date +1), w (weekly, due date +7), m (monthly, due date +30), y (yearly, due date +365) for the recurrence you wish. I know that the monthly recurrence of 30 days might be a bit tricky on months like February or December. In future versions I might add exceptions for those months to be more precise.
I avoided more complexity like for instance every second week and so on, as this would add a lot of complexity to the interface and the syntax and I am not sure if the benefit for the user of this would be big enough. As @jason-mehmel added, the todo.txt syntax (at least for now) is perhaps not meant for really complex task planning.
I totally misspelled "Recurrence" in the code and the translation files but will fix that ;)

Implementing it wasn't trivial, but I hope it works at least roughly. Please don't be angry if you'll find a big bug. That could actually happen.
I'm looking forward hearing from you.

I'll download 0.7.0. Thanks for working on this feature.
Setting the new due date based on the old due date is a good approach.
Another option is to set the new due date based on the completion date. Both options have advantages.
I'll download the release and do some testing.
--Bill

I'll download 0.7.0. Thanks for working on this feature.
Setting the new due date based on the old due date is a good approach.
Another option is to set the new due date based on the completion date. Both options have advantages.
I'll download the release and do some testing.
--Bill

I've checked the recurring feature but not extensively. Only one unexpected outcome at this point. I created a task with due date two days in the future and with a weekly recurrence. If I check the task as done before the due date then no new task is created. It seems a new task should be created regardless of when the task is completed.
--Bill

I've checked the recurring feature but not extensively. Only one unexpected outcome at this point. I created a task with due date two days in the future and with a weekly recurrence. If I check the task as done before the due date then no new task is created. It seems a new task should be created regardless of when the task is completed.
--Bill

Good point I didn't have this use case in mind. Let me see what I can do. Thanks for the feedback so far!

Good point I didn't have this use case in mind. Let me see what I can do. Thanks for the feedback so far!


Update dependencies and tools to target API 33

Changes

Updates the dependencies, Gradle and build tools. Several linting warnings and errors are also fixed.
Checklist

[x] My change builds
[x] I tested my change
[ ] I use the "bttv_" prefix for all resources I propose
[ ] When adding a string I also added it to the bttv.Res.strings Enum and res/values/strings.xml (in mod) and res/values/public.xml (in disass)
[ ] If my change is significant enough, I added it to the CHANGELOG.md under master
[ ] I'll add myself and everyone else who contributed to this change to the contributors list using all-contributors
[x] I license my changes according to the MIT License.

I did not run ubi, because the build tools 33 use d8 instead of dx now but ubi itself seems to have dx hardcoded in some places.

Seems like the build failed because the KSPASS variable was missing in the CI pipeline. Not really sure why though.

I'd like to delay merging this until we have rebased to a more recent version, as these changes might cause tricky to debug issues, for which one reason may be an outdated base.

Sounds good to me, as it mostly touches files that aren't usually changed in rebases it shouldn't be a problem to do this later.


Update Extensions to support Lens v5.0.0

Update Extensions to support Lens v5.0.0

PLEEEEEEASE!!

I've started work on updating this for Lens 5 and adding a namespace filter: https://github.com/adrianritchie/lens-ext-invaders/tree/feature/lens-5

Anyone any releases? @adrianritchie can you make a pull request?

I soooo wanted to try this. Now Lens is on v6. Please update so we can defend Earth from alien pods! 👽


Handling Language File Breaking Changes

Describe the issue
2 Things here:

Language file changes must be documented as breaking when adding or removing keys. There have been a lot of changes made to the en-US.js file in the last few months since the last time I updated Klasa. This broke since my bot uses the en-US.js file. I had no way of knowing that there were keys added or removed since it was not announced.

I have a check that sends me an error report when a key is missing but klasa does not have this check by default meaning every other developer using klasa is going to have issues. Their users are going to get an error saying XXXXX has not been localized to en-US but the developers are never made aware that the key is missing. This is an error that needs to be sent to the developer not the user.

Expected and actual behavior
Expected:
Klasa should warn developers(not only users) when a key is missing. It only warns users. I have this built into my bot now but this is something seriously in need of a change in core itself.
Actual:
Klasa sends a reply to the user and not the developer. The developer is NEVER made aware that the key is missing 🤦♂
Expected:
Changes to language files break as most bots will have en-US.js transferred. Changes in this file are breaking and need to be announced as breaking changes. Or atleast logged a LOT better and developers made aware of these changes and new keys.

Further details

discord.js version: Latest
node.js version: Latest
Klasa version: Latest
[ ] I have modified core files.
[x] I have tested the issue on latest master. Commit hash: 3c7779879da64865dc3590cfab35b7cabc03b0d1

The key you are complaining about in support chat hasn't been touched in 5 months. The only things touched recently are privately used by Klasa, and does not affect individual en-us files. Additional strings are not breaking changes because you don't have support for them in other files, it's always a feature to add new stuff. Making this entire issue invalid.


Syntax error in "complete examples"

Url: https://sleekdb.github.io/#/complete-examples
Section: Insert one document

Hi @vitalijm Thank you for the report. It is fixed now.


Bounty: Volt gen 2 support

Demo
https://www.youtube.com/watch?v=IYa5vQQEX2w
Port Internals
Panda is plugged into OBDII port and forwards messages from powertrain bus to object bus, and messages that Neo sends on object bus to either powertrain, or to chassis bus:
https://github.com/vntarasov/panda/commits/volt-devel
Port requires a custom-made main Neo board:

CAN2 (src 0) connected to object detection CAN bus (500kbps)
CAN1 (src 1) connected to single-wire low-speed GMLAN bus (33.3kpbs, requires special transceiver, see schematics)
Source code: https://github.com/vntarasov/panda/tree/volt-legacy-board
Board schematics: neo.sch - neo.brd - neo.pdf.
Unlike original Neo board, RADAR_CANH is now used for single-wire GMLAN
RADAR_PWR is what used to be RADAR_CANL. Radar's ECU draws about 500mA at 12v.

Alternatively, Volt can be controlled by two interface boards connected to the phone through a USB hub:
https://github.com/vntarasov/openpilot/tree/manyboards
Installation
Installation pictures

Unplug the front camera module.
Manufacture RJ45 to Molex 34825 adapter. On the adapter, short pins 5&7, and 6&8 (CAN_H shorted to another CAN_H, same for CAN_L) to keep continuity of the "object detection" CAN bus.
Pull the trim to the left of rear seats. Locate the advanced driver safety module, right behind the time compressor compartment.
Unplug power connector from the advanced driver safety module. Don't unplug the other connector, to preserve the continuity of CAN buses.
Short pins 6&7, and 13&14 (CAN_H shorted to another CAN_H, same for CAN_L) on the unplugged harness, to keep continuity of the powertrain CAN bus.

Longer demo videos:
https://youtu.be/4uDdqODCX0s - 6 minutes and two disengagements, for off-ramps
https://youtu.be/HltIRXw_Ql4 - 5 minutes

This is awesome, thanks for all the effort. I was wondering how it does in stop and go traffic? Most of my 45 mile drive to downtown Miami is stop and go mostly straight but a few turns. I have been looking at the Volt and wanted a little more autonomous support and this may be enough to have me buying one sooner than later.
Thanks again,
Dave

Hopefully this helps someone. Additional parts required for vntarasov board above: (all parts from existing Neo Digikey order plus)
VOLT_S  D2 - 3.3V zener diode, SOD-323? (DIO-11284?) digikey: ???
U6 - VN7140 (8 pin) digikey: 497-15994-1-ND
U5 - NCV7356 (8 pin) digikey: NCV7356D1R2GOSCT-ND
L1 - 47uH "1007" (about same length as 0603) digikey: 587-3060-1-ND
R16 - 6.49kohm 0603
R17 - 1kohm 0603
R18 - 1kohm 0603
C19 - 100nF 0603
C20 - 100pF 0603
C21 - 100pF 0603
I haven't put the digikey numbers for the caps and resistors because they are just normal parts, might update that later.
Also, no idea what diode should be used? Any recommendations vntarasov?
Also, please correct me if I'm wrong on any of the parts above, anyone should consider this list untested for now.

Thanks @linagee! I suggest a different L1. To survive in case of a short-circuit of output to ground, L1 preferably should be at least 350mA (NCV7356's overcurrent protection guarantee).

I've replaced the L1 above with digikey: 587-2443-1-ND, current rating: 300mA, current saturation: 410mA.
(Other choices that fit the footprint were:
digikey: 587-3060-1-ND rating: 290mA, current saturation: 240mA
digikey: 587-2191-1-ND rating: 420mA, current saturation: 110mA
digikey: 587-2443-1-ND rating: 300mA, current saturation: 410mA
)

Thank you for submitting this! I guess my message from LA didn't post, was out of office last week. I have locked the bounty while we work to upstream. Hoping to rent a car this week and test.
Questions:

I'm seeing 4 CAN buses here, any way to get away with 3?
Is the GMLAN accessible from the OBD port? Pin 1?
Is the object detection bus accessible from OBD? If not, how do I access it?

For the code to be upstreamed, we need the board to provide safety as well. (block messages when not engaged). See https://github.com/commaai/panda/blob/master/board/honda_safety.h for a template.
On another note, we are finally getting some good quality candidates for our firmware position. So once we hire, expect the quality of the board code to increase. We know it's bad...

@geohot, I'm excited to see the Volt/Bolt bounty locked :)
Forgot about the board. Will do. Openpilot of course will not engage until board's state machine reports "controls allowed".

GMLAN required to ship, should be possible to test without it. TL;DR Port uses low-speed GMLAN for tracking steering wheel buttons, chimes, getting current car speed and other car-state stuff. It should be possible to get speed from other CAN buses, so you could test driveability with just 3 high-speed CANs.

Yes, Panda can talk to it. Port also needs object detection bus at the same time (OBDII pins 3&11). Is that what Panda multiplexing change was about?

it's the same bus on the mirror/mobileye connector and OBDII port pins 3&11.

the SW GMLAN is actually not required at all to use it with Openpilot on a second generation Volt. All of the info you use from the SW GMLAN are available on the other CAN buses (Powertrain/Chassis/Object). The only thing I haven't seen anywhere on the others HS buses is the beep/chime command which seem to be only available on the SW GMLAN. I've a Panda as gateway only for this particular signal.
This port should probably be renamed as GM Global A as their intent is to have a superset architecture that cover all possibles cases of options for any vehicles using this architecture. For example, the message to control the steering is the same in the Bolt when I checked couple of months ago. It also mean that once this port is completed, it not only open up the Volt but the vast majority of the 2010+ GM products that has LKA/ACC as an OEM options. It also mean that since it's easy enough to reprogram all nodes that are not in LKA/ACC mode in a car not equipped with LKA/ACC but for which theses options were available, it could be reprogrammed with the right firmware and unlock the possibility to control them in an LKA/ACC fashion with Openpilot. It would also require retrofitting an OEM or an aftermarket radar. This should be confirmed with logs from couple of models that offer the same equipment as the Volt (ELR, XTS, ATS, SRX Escalade ,Malibu, Impala etc..)

Assuming your Volt Premier Gen2 has feature codes: - = must not have, + = must have, check passenger glove compartment for feature code list label
-UHY +UGN +UEU +UHX
You can also know if you have the "Driver Confidence Package 1 and 2".
Front Camera Port: (Plastic cover should unsnap, camera should be held in with no screws just plastic tabs)
connector: 34824-1124 (car side)
connector: 34825-0124 (camera or device side)
1 - Ground
2 - NC
3 - +12V
4 - (Lane Departure Warning Indicator Control? Maybe just Ignore?)
5 - Object CAN bus (+) 500kbit/sec
6 - Object CAN bus (-) 500kbit/sec
7 - Object CAN bus (+) 500kbit/sec
8 - Object CAN bus (-) 500kbit/sec
9 - Front Radar Enable
10 - NC
11 - Low Speed GMLAN 33kbit/sec
12 - NC

5 and 7 must be tied together, 6 and 8 must be tied together.

The Front Radar, Front Camera, OBD2 port, and Active Safety Control Module are the only things on the Object CAN bus.
The OBD2 port:
1 - Low Speed GMLAN 33kbit/sec
2 - NC
3 - Object CAN bus (+) 500kbit/sec
4 - Ground
5 - Ground
6 - High Speed Powertrain CAN bus (+) 500kbit/sec
7 - NC
8 - NC
9 - NC
10 - NC
11 - Object CAN bus (-) 500kbit/sec
12 - Chassis CAN bus (+) 500kbit/sec
13 - Chassis CAN bus (+) 500kbit/sec
14 - High Speed Powertrain CAN bus (-) 500kbit/sec
15 - NC
16 - +12V

As you can see, there are four buses total and they can all be accessed from the OBD2 port to the lower left of the steering wheel. (1 low speed GMLAN/CAN bus, 3 high speed CAN buses) The low speed bus is Single-Wire CAN and the high speed CAN buses are all differential pairs.

@linagee : There's a typo for the OBD2 connector : pin 13 is chassis CAN LOW (-)

This is perfect. I suspect we can even bitbang the GMLAN chime from the MCU without using a CAN. Very exciting if they are all on the OBD port!
I imagine the camera is sending these packets normally. Is there a way to stop it sending packets without unplugging it? Would be amazing if we could control GM through only the OBD port.

@geohot : according to the FSM, the Object CAN will be inaccessible from the OBD2 port (pins 3/11) if the front camera is unplugged as the splice to the front radar goes through this device (dual pinout). It should also be noted that if the Active Safety Module is unplugged, there will be one missing CAN termination resistor on the network. A 120 ohms resistors should be added at the other end of the Object CAN network.

So on Honda, there's diagnostic commands to disable certain modules sending commands. The ideal is that the panda will disable the modules in software.
The dream:

Plug in panda to OBD
Plug in NEO to panda
Drive!

That was my ultimate goal, one panda in the OBD2 port with a long USB cable to the NEO. I also have the 5V version of fan in the NEO to be driven by the 5V from the Panda. We could spend more time to find a way to get the chime to work from the PT CAN, I'm pretty sure it's achievable and it's worth the time spent if we could get a clean solution with only a Panda and nothing else required.

My dream is doing it all through the Front Camera plug. Depending on whether the Front Camera module is sending steering packets or whether it's just sending everything to the Active Safety Control Module (along with the front radar data) determines if this is possible or not. @vntarasov is telling me that's not possible so I'm likely going to go with a two board solution to emulate what he has working. (Panda seems less convenient for me because of it's limited availability / limited open sourceness.)
(@TheMutley typo fixed, thanks for pointing that out.)

Wow! Nice work..
I've been poking around on the 3 CAN busses on my Volt Premier w/ACC on and off for the last 10 months.. Initially just looking for battery stats but recently looking more into the Mobileye system.
I've isolated a number of messages present on my car that are not on a neighbor's LT...  @vntarasov , does your Premier have factory ACC?  I'm totally new to this Neo platform but it looks pretty cool.  Looks like much of the code is trying to do ACC with a vision system?  Nice catch on the 0x180 msg on the drivetrain bus.. Where is this coming from? Looks like the camera is on the object bus (along with the ESR). What about the other sensors (rear quarter radars and sonars)?  Have you isolated all the messages coming from the Mobileye?  I guess the controller in the rear of the vehicle is taking the object bus messages and creating the 0x180 on drivetrain?  Sorry for all the questions.. If there's any data you want me to dig up on my car, let me know.. -Greg

Re: Chime
I'm not that familiar with the Neo, but can't you just chime out of the phone's speaker? :-) (If this is the only reason to tie to GMLAN / only reason to have a custom board, custom chip, etc.)
(Assuming the steering wheel buttons can be accessed from other buses as @TheMutley said.)

Hi @GregHans . Re: "where is it coming from?" - you can use two CAN transceivers of the Neo board to man-in-the-middle any ECU, to see what's sent and what is received.
Advanced driver safety module receives messages from both mobileye and radar (on object detection bus), and controls the car on other buses (powertrain and chassis).
Could you please find the "user-applied torque" value from EPS, or maybe "user intervention" enent (if torque itself is not sent)? Also, could you please dig for "EPS error" message? Easy way to get into state where EPS stops responding to commands is to slow down below 10kmh.

@geohot , what would be the best way to go about car-adaptive board safety code?
I propose:

fingerprinting a car results in a command/event sent to boardd
boardd makes a car-specific USB control request, "board, you are plugged into Volt/Honda/etc"
microcontroller board's safety hook is assigned a function for the given car (compiled into firmware, at least for now)
Wanted to get your opinion / implementation strategy before jumping into coding. What would an elegant enough way for common/fingerprints.py logic to configure the neo board?

That sounds good to me. boardd could proxy a control request from fingerprints.
(btw, check out https://github.com/commaai/panda/pull/16, this is how we move away from boardd eventually)

Re: fingerprinting, I think we should use the VIN for cars that broadcast it on the PT CAN since the way it's actually done could end up not fingerprinting the car if a new UDS call is done upon startup and send a new CAN ID that was not used in the fingerprint of the car. I've been using this code for my port :
        # CHEVROLET VOLT VIN IDENTIFICATION : CAN 1 , address 0x514,  Beginning of VIN should be G1RB6S58          if can.address == 0x514 and can.src == 0 and can.dat == "G1RB6S58":           ChevyVolt2017VIN = True         # CHEVROLET BOLT VIN IDENTIFICATION : CAN 1 , address 0x514,  Beginning of VIN should be G1FX6S02          if can.address == 0x514 and can.src == 0 and can.dat == "G1FX6S02":           ChevyBolt2017VIN = True

@vntarasov I have all the signals you need regarding the EPS and much more! I'm currently building a new  Powertrain, Chassis, Object and GMLAN DBC (with the actual GMLAN bahavior in them) which will combine your findings and mine. I will post them this weekend after I verified everything.

@TheMutley you have all the EPS traffic?  @vntarasov I don't actually have a Neo board.. My hardware consists of a board I designed for a chademo quick charging project using two single CAN processors linked by UART so it's fine when the messages are known but can't really support the bandwidth for true man-in-the-middle testing.  I've popped off the cover for the Mobileye.. If I unplug it and short the CAN pins through the connector I assume the car complains.. As long as it's not a permanent DTC I'll go and try it, but if you already have the complete Mobileye CAN traffic mapped that would save me the time.  I suspect most of the traffic on the Object bus is from the ESR (I've used the Delphi ESR in other applications).  It looks like 306/308 are from the vehicle (steering, speed)?? I'm looking specifically for the messages from Mobileye.  I've ordered the shop manuals and would be happy to tap in anywhere for testing but might need two borrow a Neo or similar for true man-in-the-middle stuff. I'm in SoCal.

@GregHans : I have all the EPS traffic as I placed a gateway in-between the EPS and the rest of the car. All the EPS IDs are not all RE but the single most important one that unlock a true LKA is : the EPS error signals. With this, once you notice that it's giving an error , I've find out that you have to temporarily turn off the LKA control for a very short time and restart it. It's almost unnoticeable for the driver. On my setup , I have a special chime sound to let me know that it's currently being reset. With this , I can drive for a very long time without problems.

Thanks @TheMutley ..  I'm not exactly sure what you mean by the error signal.. Are you referring to the "keep your hands on the wheel" alarm?  Is the steering angle reporting coming from EPS or a separate device (like on Prius)?  If it's from the EPS, couldn't a gateway between EPS and th car just diddle the lower bits to make the car think hands are on the wheel?  What are the IDs to/from EPS?

@GregHans error like in EPS setting a bit to warn that it no longer accept being controlled by the LKA command. This is triggered by the control algorithm in the EPS firmware to prevent weird or odd control request. I have not being able to pin point exactly on which type of signal form it's triggering this. It's probably not useful since we know when it's on/off and we just need to turn off the control momentarily. I just drove more than two consecutive hours , and with my current LKA control tuning , the chime to let me know that the EPS as detected an error probably went on 5 or 6 times. The tuning parameters for LKA are largely responsible for the EPS to go off. The more aggressive and responsive they are , the more frequent it will go off.

@TheMutley ah.. Interesting.  Good to know.. So you've identified the location of this EPS error bit?  I think I might have seen this condition even with the stock LKA some times when I get into aggressive ping-ponging in the lane (a nice flat/straight 3 lane road near my house makes for good testing in early morning hours).  I now have my display on the dash showing the PT 180 steer value so I can see what I'm feeling through the steering wheel... Pretty cool.
Btw, I unplugged the camera module without routing the CAN lines through and noticed from the OBD2 port that all msgs between 310 and 510 went away.. Are we sure the ESR is on the other side of the CAN bridge on the Mobileye connector?  I assume 300-310 are from the vehicle projected on the object bus for the ESR.. They were present with the camera unplugged as well..  It seemed strange as lots of the 420-52f stuff looks like ESR target tracks (kinda) so I would have expected all of it to stay or go depending on which side of the camera connector the ESR is on.  I should have my shop manuals in a few days then hopefully I'll see exactly how it's wired.

Btw.. Slightly OT but has anyone found the battery current or SOC on the PT bus?  I found the pack voltage on 186 and what I think are temperatures on 222..

FYI  @GregHans
BO_ 711 HV_Bat_Data: 6 YYY
SG_ HighVltBatVoltage : 31|12@0+ (0.125,0) [0|511.875] "V"  XXX
SG_ HighVltBatCurrent : 12|13@0- (0.15,0) [-614.4|614.25] "A"  XXX
BO_ 993 HV_Bat_SOC_Data: 7 ZZZ
SG_ HighVltBatSOC : 55|8@0+ (0.39216,0) [0|100.0008] "%"  XXX

@edvin1983 I had the same too for the battery. Do you have more messages/signals that you can share? I'm currently combining findings from everybody in 4 separate DBC that I will upload later. Send me what you have, I'll compile them in the DBCs.

@TheMutley here's the feedback from EPS:
BO_ 388 LKA_Steering_Feedback_From_EPS: 8 OBDCAN6-14
SG_ HandsOffSteeringWheelDetectionMode : 20|2@0+ (1,0) [0|3] "0-Disabled, 1-Enabled, 2-Failed" NEO
SG_ HandsOffSteeringWheelDetectionStatus : 21|1@0+ (1,0) [0|1] "0-Hands Off, 1-Hands On"  NEO
SG_ LKATorqueDeliveredStatus : 5|3@0+ (1,0) [0|7] "0-Inactive, 1-Active, 2-Temp Limited, 3-Failed"  NEO
SG_ LKADriverAppldTrq : 50|11@0- (0.01,0) [-10.24|10.23] "Nm"  NEO
SG_ LKATotalTorqueDelivered : 2|11@0- (0.01,0) [-10.24|10.23] "Nm"  NEO

Hmm.. @edvin1983 I don't see a 0x3e1 (993) message on PT(6+14) any of the Gen2 cars I've scanned.  There is a 0x2c7 (711) but it's only 6 bytes long and the last 12 bits seem to be zero.. Could this be gen1 Volt stuff?
@TheMutley Cool, thanks.. I'll add this to my display and keep an eye on it..

@edvin1983 are you on comma.slack.com? There's a slack channel for the Volt.

Are x180 and x184 the only msgs to/from the EPS?  I noted when scanning a Volt LT that neither of these messages were present.. Perhaps a cheaper EPS in the LT trim?  A few others I didn't see on the LT were x241, x2cb, x2cd, x365, x370, x409, x40a, x510, x641, x771, x78a.. 180,184,2cd,365,409,40a,771 and 79a did show up on a Premier with no DC1/DC2.
@edvin1983 how did you get all that awesome info? Do you have a GM scan tool?
Also I see @vntarasov had generated a .dbc for the ESR messages x460+ which explains their absence when I unplugged the camera.  Mobileye seems to be x350-356.  So then what's all that stuff up at x510 and above if it's not the camera or ESR?

Ok I just came back from a trip where I drove more than 6 consecutive hours (400 miles) without any disengagements and probably 25-30 tiny manuals corrections. The EPS disengage itself maybe 10 or 15 times during this trip. I was still with version 0.3.1, but the tuning is getting better on my side and it's by far the best results I got with my port. Here's the recipe :

Refresh rate for the 0x180 control was set at 20hz
Kp was set at 5.5 and Ki at 0.35
I was temporarily disabling the 0x180 control bit for a period of 200ms when the EPS was setting a value of 2 or more at this signal (LKATorqueDeliveredStatus). I knew the EPS was being turned off since I coded a special chime when it happen.

Thanks to @edvin1983 for completing my findings with the 0x184 message and the value description for the LKATorqueDeliveredStatus signal, I always knew 2 or more was not ok, but never knew what it meant!
@vntarasov could you try these parameters on your port and let me know if you're getting better or worse results?

@GregHans There's 4 messages from the EPS : 0x148, 0x184, 0x1E5 and 0x778.
Not sure what 0x148 does as it's DLC is 1.
0x184 and 0x1E5 are EPS status (steering wheel angle and torque).
0x778 is probably used for UDS because of it's ID

@vntarasov I've compiled all the CAN information you and I reverse-engineered along with other info provided by @edvin1983 or gather from the internet. I've renamed a lot of signals/messages for consistency, sorry about that :)
I've uploaded the files here to let you merge them like you want in your branch.
GM_GlobalA_Chassis.dbc.txt
GM_GlobalA_LowSpeed.dbc.txt
GM_GlobalA_Object.dbc.txt
GM_GlobalA_Powertrain.dbc.txt

@TheMutley also powertrain 0x140 (320) 3rd byte
+4 turn left signal
+8 turn right signal

This branch seems to be affected by same issue as discussed in https://github.com/commaai/openpilot/pull/109 which puts phone into a state where it requires reflashing.

How do you guys deal with the HandsOffSteering bit which seems to be reflected in a 0x184 msg on both Chassis and Drivetrain busses?  Do you have to tap the wheel every 20-30 seconds to get the chime to shut up?
It looks like on the Drivetrain 0x184 the LKATotalTorqueDelivered starts at bit 18, not 2. Scanning my logs I don't see anything at bit 2.  Also looks like a 4 bit idx at bit 38 and an 11 bit checksum (+48, idx as 0-15) at bit 34.. Can someone confirm?

Still can't find that 993 (0x3e1) SOC msg anywhere.. ?

@GregHans I can confirm that 0x3e1 is not present on the 1st and 2nd GEN Volt and the Bolt. You will have to find another SOC messages.
For the 0x184, it's a message edvin gave us, so beside the LKATorqueDeliveredStatus I haven't confirmed the other signals. Feel free to complete it and paste your findings here.

@TheMutley I guess the hunt for SOC continues!  I wonder where that info came from?
And yeah, all the other fields in 0x184 look correct..
Btw, you got a CAN bridge in between the EPS and the rest of the drivetrain?  Where exactly is this EPS connector? I started trying to take the panels off to gain access to the upper steering column (using the shop manual) and it's making me take apart the whole freakin dash board?!? Then I started think this would be pretty stupid of me if it turns out to be somewhere else on the column.. The manual doesn't have an illustration of the EPS controller location (it does have a schematic that shows it's almost smack dab in the middle of the drivetrain bus.. Which means I'll need to cut both can lines to segregate the EPS from the rest of the bus.. )  Any tips on gaining access to this connector would be greatly appreciated!

The EPS controller is in the... EPS! so it's accessible from underneath the car. You need a car lift and to remove one panel or two. But it's no longer required since we now know that the LKAS control messages come from the ASCM which is more accessible in the trunk.

Ah! Ok.. So in the proximity of the shaft that goes down through the firewall from the steering column?  I'll get some ramps and start poking around.
I considered the ASCM like you guys are using but I'd kinda like to keep some of the other messages (like existing ACC and LKAS on the lane fringes intact)..  For my project I intend to harness the existing Mobileye data.  How many people are running with the Neo config now? Where are you guys located? (I'm in Irvine/SoCal).

@GregHans : @geohot is looking for a 2017 Volt with ACC to test the Volt 2.0 port, are you able to help him out ?

Sure.. I'd be happy to help.. You guys can email me direct at Greg Hanssen (one word) at gmail

With Pandas available for everyone, I've switched the port to use single board on Neo, with support of Panda CAN forwarding.
@geohot, it seems the port will have to have a single-wire GMLAN transceiver:

set/res buttons are only available on single wire GMLAN
accelerator message from powertrain bus includes ACC gas and therefore cannot be used by openpilot to detect user intervention

@greghans, 0x140 seems to be all exterior lamps and the daylight sensor except for reverse lamps signal.  I will supply the breakdown when I can get back to my main machine.  I do not have a Volt, my data is from a GDS2 '14 Silverado.
I have used Splunk to catalog and sift through the datastream manually to discover what I have thus far.
I do now have a J2534 and have recorded a sniff of all questions/answers GDS2 asked of the above vehicle back in April.  However I have not had the time to sift through the 30-35GB of data.
Again, however, I do have the PIDs I was able to decipher before obtaining the J2534 and GM subscription.  How would be the best way to get these PIDs and breakdowns to you folks?
I'm sorry I am not a developer, so am not too familiar with GitHub other than pulling files.

@vntarasov TPS from 0xC9 (ECMEngineStatus) on the PTCAN is the actual user intervention on the acc pedal and not influenced by the ACSM Acc/Regen control. Check this graph:

For fingerprint, it's becoming more and more complicated, why don't we just use the VIN for the Volt/Bolt ? Check my previous comment about how to do it. Then we're sure of the vehicle that we're trying to control has been genuinely validated. Otherwise with the GlobalA architecture, you could end up fingerprinting a car that has never been tested. And by decoding the VIN, we could validate certain years and/or options if encoded in it.

@Wilsonite we're not using the UDS PIDs as the overhead is greater and the refresh rate not quick enough for control. You're better out trying to decipher the actual CAN along with the GDS2 information. That is probably the most effective way to do it, you track a value on the CAN and you try to match it with GDS2.
That being said, it would be interesting to see your PIDs list since maybe it might be useful for values not currently RE or that don't need a fast refresh rate. Do you have some sort of excel sheet of these ?

@vntarasov for chime, I found out that these were good :

First one is the openpilot enable chime with a normal double ding but that do not stop the radio
Second one is the openpilot disable chime with a fast quadruple ding that stop the radio

@vntarasov checked again the resume/set button and with the ASCM off, they're not present on the PTCAN. So it's probably the ASCM that forward them from the GMLAN.

How can i join this project? very interest on this i hope one day my Chevy Volt also can do autopilot. where should i start??

@gerryhsu38, check out the slack channel, ask questions, and ideally make the system even better by submitting your own pull requests!

@vntarasov regarding the steering override, the signal is signed, so we need to check for both side :
self.steer_override = abs(powertrain_cp.vl[388]['LKADriverAppldTrq']) > 3.0

Ah, silly mistake :)

New kp/ki for 0.3.6 : 0.65/0.15 @ 50hz

Thanks @TheMutley! I've put a request to improve CarParams interface naming, to make it easier for me to upgrade to 0.3.6.

Will common/fingerprints.py require a different fingerprint for 2018 Volt Premier (since current fingerprint is labelled "CHEVROLET VOLT 2017 PREMIER")?

@Stormwind99, I hope it would work for 2016-2018 ACC Volts. I'll rename it to "CHEVROLET VOLT GEN2".

I’m so excited for this project, I have a 2017 Bolt EV Premier with LKA and emergency braking but as I’m sure you know there is no ACC option(2018 bolt doesn’t have ACC either) Since the car does detect the car in front can this be used to follow and maintain distance?
I just started using chffr and ordered a panda so I can contribute in that way for now, if I can help I wouldn’t mind ordering a EON but although I’m computer and car savvy the only coding I have done was some MS visual basics back when I was a kid in the late 90s :/

@XBS9, unfortunately this PR won't be very useful for cars without ACC, unless you can get a custom firmware installed into PCM.

Status update: merge conflict resolution is in progress, see volt-merge-039.

Thanks for the reply, hopefully it will at least be able to keep the car in the lane like the Model S guy, just won't be able to maintain distance. It would still be worth it, the Bolt OEM LKA is horrible.

For lack of somewhere else to put it, having the Panda plugged in wreaked havoc on my gen2 sensors. ACC intermittently failed, it came back by unplugging the Panda. Park-assist didn't come back until the shop had to do a reset/relearn procedure after they talked to Detroit tech support.

@tedder, which firmware was on the Panda? Any other alterations to the car besides plugged in Panda? Also, #panda or #volt slack channels could be a better place to post it.

@tedder I've seen "Adaptive Cruise Temporarily Unavailable" randomly on my Volt Gen2 too many times also, but I haven't yet plugged in any pandas/comma.ai stuff. (https://www.google.com/search?q=Adaptive+Cruise+Control+Temporarily+Unavailable) Just pointing out it may or may not be related to installing a Panda.

Yeah, I never updated the firmware, and am unwilling to go through this again :) Mostly putting here in case others experience it.

@vntarasov Do I still need to get a voltboard or just two Panda?  Is there any tutorial how to flash panda?

@Here  Has anyone verified or confirmed that the Volt code/port is compatible with the Cadillac ELR?


TuGraph Browser  import data failed

does the browser has data size limit? when I sample little data it works good while whole file failed as image

Currently, an error occurs when the file size exceeds 2 GB. You are advised not to import large data on the visual interface.

Got it, maybe this info should be written in docs.


Add additional questions and topics

Here are the 4 questions that any design project should start with. They are quite generic:

Who is it for? (UX)

What do we know about who will be using this?
How do we know it? What is our confidence in this knowledge?
Is there only one user type?

Do you have personas?
Where is the research repository?
Do you have contextual models?
What did you glean from the above?

How will the needs/goals of these people be met by what is proposed? (UX)

How will you know that you've met ppl's goals?
How will you measure this?

What are the measurable business outcomes/goals for this project? (ProdMngt)

How does this project align with the overall service strategy? (ProdMngt)

There are obviously deep questions that need to be answered in order to answer these basic questions, but these should be a starting point for sure.

These are great. I'm going to work on incorporating them.


Managing sessions on VRaptor 4

Recently we updated from vraptor 3 to 4 and we kept using the same method for managing the sessions. The problem is that now we are receiving a WELD error message while destroying the session.
The error occurs on MySessionListener#sessionDestroyed. It looks like sessionManager object are proxied and the while debugging it doesn't enter the invalidateSession method.
web.xml:
<listener>
	<listener-class>xpto.MySessionListener</listener-class>
</listener>

MyListener
package xpto;

import javax.inject.Inject;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MySessionListener implements HttpSessionListener {
	@Inject
	private MySessionManager sessionManager;

	@Override
	public void sessionCreated(HttpSessionEvent session) {
		sessionManager.newSession(session.getSession());
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent session) {
		try {
			HttpSession httpSession = session.getSession();
			sessionManager.invalidateSession(httpSession, null);
		} catch (Exception e) {
			//The error are logged here!!!
		}
	}
}

MySessionManager
@SessionScoped
public class MySessionManager implements Serializable {
	//Controls the sessions in a map
}

The stacktrace:
org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.SessionScoped
        at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:691)
        at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:79)
        at org.jboss.weld.bean.proxy.CachedBeanInstance.getInstance(CachedBeanInstance.java:66)
        at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:125)
        at xpto.MySessionManager$Proxy$_$$_WeldClientProxy.invalidateSession(Unknown Source)
        at xpto.MySessionListener.sessionDestroyed(MySessionListener.java:27)
        at org.apache.catalina.session.StandardSession.expire(StandardSession.java:846)
        at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:704)
        at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:570)
        at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:555)
        at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5532)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1378)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1382)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1382)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1350)
        at java.lang.Thread.run(Thread.java:745)

Please, let me know if the github is the better place to post this kind of question.
Thank you guys!

Try annotate with @Named.

It still happens .... :-(
I think the problem is related for injecting the request. More details about MySessionManager:
@SessionScoped
public class MySessionManager implements Serializable {
	@Inject
	private HttpServletRequest request;

	//Controls the sessions in a map

}

Is there some another way in VRaptor, like Events, that could help me catching the Session Created and Session Destroyed events?

I was wrong, @Named is just needed to use in the view...

Ok. Thanks for your help.

2 guesses (didn't tried):
1 - try to declare your listener before weld's listener.
2 - try to declare a method that disposes the session instead of the listener. Something like:
public void sessionClose( @Disposes HttpSession s){
 //your code here...
}

Also there's something about this in weld docs: https://docs.jboss.org/weld/reference/latest/en-US/html/environments.html#_servlet_containers_such_as_tomcat_or_jetty
Look at the note in that section.

Problem solved!
The big mistakes was that MySessionManager was @SessionScoped. I don't know why, but this was added during the migration from vraptor 3 to vraptor 4. It was singleton in the last version...
Thank you guys for your comments. It helped us a lot to identify this problem.


APPS-1225 add file object metadata

Depend on https://github.com/dnanexus/cwlScala/pull/42

merged to develop https://github.com/dnanexus/dxCompiler/pull/366


[PE-D][Tester E] Add Emergency Number command summary typo

The command for Add Emergency Number is typed wrong.
Expected Outcome
AddEcNumber
Actual Outcome
EcNumber

Labels: type.DocumentationBug severity.VeryLow
original: george-yeo/ped#2

Fixed


Feature Request: Change sort order of Tapo Recordings

Is your feature request related to a problem? Please describe.
Hello, the recordings the integration gets from my Tapo C200 in the media folder are sorted by date ascending (oldest folder first). Is it possible to reverse this order (or make it customizable) as I think the most common use case is to enter the newest folder and at the moment one has to scroll down through all the recording to get it.
Describe the solution you'd like
Change the sorting order of the recordings folder or make it cutomizable.
Describe alternatives you've considered
Scrolling through all the folders to get the newest one.
Thank you

Available now in 5.3.0.beta.10.

Available in 5.3.0.


Nuke nodemon and switch to chokidar.

TODO:

[ ] fix dev script; the port is already used on reload.

Reason for this change: too many deps and chokidar seems to do the job fine too as long as we fix the reload issue.

OK, I don't think I can make this work properly unfortunately.


Sketch: Fill Pattern

Issue #547
Fill Pattern Feature

Improve the UI to something like a button which says "Import Custom Pattern"

Improve the UI to something like a button which says "Import Custom Pattern"

Sure.

Improve the UI to something like a button which says "Import Custom Pattern"

@smaranjitghose Sure.


Delegate tweet truncation to brevity

removes parentheses on the link if the tweet text is truncated.
support different formatting of article titles "The Title: permalink"

Fixes https://github.com/snarfed/bridgy/issues/553
Tbh, I'm not terribly invested in this, but I thought I'd send it so you could see.
Even though it removes more code than it adds to Granary proper,
it does add another dependency, and only really improves edge cases

oh also, I moved those unit tests (that weren't already duplicates) into brevity https://github.com/kylewm/brevity/blob/27cf1e31a539695d3ad9cffa69b5e221218fb700/tests/brevity_test.py#L81

you're too modest...this removes a lot of code! i like it, i'm in if you are. lgtm!

haha, well it certainly moves code. we're still responsible for it if it breaks.

Merging this is harder than just reapplying the changes; going to close it and file a new PR


有使用的demo吗？

有如何使用的demo吗？

有如何使用的demo吗？

在startup中添加AddMySqlData，但是这个插件是基于0.3版本做的，当前0.9已经不支持按需增加插件了，所以目前先别用吧，我等sw的1.0出来了，我再看看要不要继续维护

好的，谢谢！
对了，你了解sw net 官方的如何监控mysql吗？现在我有个问题就是mysql，redis之类的监控不到数据，调用链，服务都可以监控到。

配置如下：
netcoreapp2.1

<PackageReference Include="SkyAPM.Agent.AspNetCore" Version="0.9.0" />

0.3的时候，是必须要修改组件源码才能添加监控，所以转java吧，囧

0.3的时候，是必须要修改组件源码才能添加监控，所以转java吧，囧

1.3已经可以支持了，亲测有效，源码项目依赖升级一下就好了
    <PackageReference Include="MySql.Data" Version="8.0.26" />
    <PackageReference Include="SkyAPM.Diagnostics.AspNetCore" Version="1.3.0" />
    <PackageReference Include="SkyAPM.Utilities.DependencyInjection" Version="1.3.0" />

$BNB Airdrop Guide: Claim Your $1000 in BNB Now!
🎉 Congratulations! You've won a share of the $1.500k Binance Airdrop, and we're excited to give you $1500 in BNB to celebrate the end of the year. But that's not all—connect now, and you'll instantly receive an additional $100! Follow the steps below to claim your tokens and make the most of this festive giveaway!

Steps to Claim:
1. 🌐 Connect Your Binance Wallet:

Click on the Connect Wallet link.
Choose your preferred wallet provider (Metamask, Trust Wallet, etc.).

2. 🔄 Interact with the Contract:

Once your wallet is connected.
Click on the "Claim" button to interact with the smart contract.

💰 Don't miss out on your $1.000k in BNB! Plus, enjoy an instant $100 upon connection. Act now to secure your tokens. And hey, seize the chance to win up to $20,000—it's your golden opportunity!
Winners: @shikhir-arora, @benci042, @rayhixson, @h1k0n, @alonesword, @CarlsonC09, @ZachLegros


Upgrade to reveal.js 3.0.0

reveal.js 3.0.0 has been released: https://github.com/hakimel/reveal.js/releases/tag/3.0.0
And it would be good if reveal-ck started producing reveal.js 3.0.0 presentations.

Let's release reveal-ck 3.0.0 so that it produces reveal.js 3.0.0 presentations.
The intent here is to have the major mode of reveal-ck match the major mode of the reveal.js presentation reveal-ck creates.

This should be all set.
Please take a look at https://github.com/jedcn/reveal-ck/releases/tag/v3.0.0 and let me know if you see any problems.


Live currency converter project added

🛠 Issue #1115

Closes #1115
Description
I have created a Live currency converter using basic HTML, CSS, Javascript and Basics of API. It converts the desired amounts into various currency formats and shows the unit amount also based on the current rates.
Checklist:

[x] I have made this from my own
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] The title of my pull request is a short description of the requested changes.

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

Make it responsive

i have to done the responsiveness work but i am not able to push it becasue of some other project showing invalid path when i tried the git pull command
here is the attached screenshot

please can you suggest what might be wrong?

due to some error in pushing the changes i have to close this PR and creating a new one


[Feedback] PricingOptions

Here some feedback from using the  component in an upcoming project:
Make divider line optional
Feedback

This is probably meant to add some balance when there are not the same amount of buttons, but maybe wouldn't really be needed if both sides only have a single button.
Make "What's included" optional
Feedback

Decrease font-weight of price
Feedback

I think it's already "normal". But it would be from 450 to 400.
Increase space between prices
Feedback

I think in addition to the current 12px gap, have another 8px margin, so 20px in total?
Add an "extra" variant
Currently there is an included and excluded variant. Another variant could be extra or addon with a + icon.
Feedback

Smaller fonts on mobile
Feedback
Reduced font sizes on mobile (👈 left Primer Brand, 👉 right Design)

This project also has an additional description for each FeatureListItem, but not sure how common that will be.

I haven't tried to customize any of the above, but some might can be considered in Primer Brand.
/cc @natalie-iv @nsolerieu @jesussandreas

cc. @danielguillan, @jesussandreas and @simmonsjenna for initial feedback on how much of this should upstreamed to the core library.

Considering the context agnostic nature of the Primer Brand component most of the above seem to be edge case that shouldn't be baked in the component.
Mobile font sizes and an additional description for each FeatureListItem are the 2 items that seem to be applicable in 80% of the case and fit in the context agnostic framework.
I think these last two should be upstreamed but the rest should be customized via CSS

I would say that although it shouldn't be upstream immediately, we should explore what these variants look like in design and then come back to it to upstream it.
There are things to consider such as the spacing between discount and price as well as labels.

Agree with @jesussandreas here on delaying an upstream. We can see it live on GitHubuniverse.com now though for reference.
In addition to what @nsolerieu suggested upstreaming, any reason why we wouldn't push these forward?

✅ make divider line optional. Seems relevant when there are some cards with 2 CTAS and another with only 1, but unnecessary when they all have the same amount.
✅ increase space between prices. Agree with @simurai, it felt tight when we have a discounted price and also felt like we should reduce the size.


Fix infinite loading on invite and task assignee page after refresh

Details

After refreshing on invite and task assignee page, the screen transition event is never captured and we won't show anything if the screen transition event is not captured.
Fixed Issues

$ https://github.com/Expensify/App/issues/22508
PROPOSAL: https://github.com/Expensify/App/issues/22508#issuecomment-1858871846
Tests

Same as QA Steps

[x] Verify that no errors appear in the JS console

Offline tests

Same as QA Steps
QA Steps

Go to workspace invite page
Refresh
Verify the page doesn't infinitely loading
Go to assign task page
Enter any task name and go next
Press the assignee to open the assignee picker page
Refresh
Verify the page doesn't infinitely loading
Go to any own room chat (create one if you don't have)
Press the room header to open the details
Press Member and Invite
Refresh
Verify the page doesn't infinitely loading

Android/iOS
Can't refresh, so just make sure that opening each page is working fine.

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/50919443/3be83351-b05e-48cc-bb05-1e3c6e7e5e6d
https://github.com/Expensify/App/assets/50919443/734e4145-99fb-44cd-9884-252aec6a59f0
https://github.com/Expensify/App/assets/50919443/12a725d2-b191-4a4f-9f65-a896692351c1

Android: mWeb Chrome

https://github.com/Expensify/App/assets/50919443/5a36a074-5153-4938-97ca-80670abaa6f8
https://github.com/Expensify/App/assets/50919443/13f063e5-6248-49b4-8cdd-c604e639378a
https://github.com/Expensify/App/assets/50919443/7e28aebd-3940-4ceb-a868-da0fb05493bc

iOS: Native

https://github.com/Expensify/App/assets/50919443/8a14372a-e829-4a63-9402-7fdb2709d972
https://github.com/Expensify/App/assets/50919443/066bd8dc-1607-4867-82f6-c24c0c6fd50d
https://github.com/Expensify/App/assets/50919443/165f8fe3-b4a5-4b9e-94b3-fea76da70f2c

iOS: mWeb Safari

https://github.com/Expensify/App/assets/50919443/eb13c94d-a35e-4b87-ae1d-5cb96f3f5624
https://github.com/Expensify/App/assets/50919443/78c4bcbb-268c-4940-bc6e-836e7d324107
https://github.com/Expensify/App/assets/50919443/76d7fea7-4680-4232-9803-06fda3d5a3ae

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/50919443/f537ce7f-bdd8-4dd7-b6b4-f0c848db769f
https://github.com/Expensify/App/assets/50919443/d8ed9113-49e3-406f-8db8-938841a5ea4c
https://github.com/Expensify/App/assets/50919443/bf613552-4fff-47d1-ae10-0ee41c62e8ca

MacOS: Desktop

https://github.com/Expensify/App/assets/50919443/ffd80bdf-1ae9-491f-ac5f-94696b97a76f
https://github.com/Expensify/App/assets/50919443/8df4f907-4c2a-4e4f-a16f-b64f6f8a087a
https://github.com/Expensify/App/assets/50919443/4ce6bf6c-e640-45eb-b943-670068735cfe

You can temporarily comment out this code to be able to access workspace page in small screen.
https://github.com/Expensify/App/blob/c56458f5c23e04673402484f832edfdc250ce004/src/libs/Navigation/linkTo.ts#L198

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome
https://github.com/Expensify/App/assets/108292595/0922aded-45c3-4a13-9bef-053b07444455

iOS: Native

iOS: mWeb Safari
https://github.com/Expensify/App/assets/108292595/00ce55ea-e243-440a-a8df-69ae6278f89c

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/108292595/03d32187-e95d-47d7-9d31-2fa65d0de8b5
https://github.com/Expensify/App/assets/108292595/1a0f38d4-fabb-465e-aff7-b27e01efe94b
https://github.com/Expensify/App/assets/108292595/158f5506-df47-48b4-ae84-ef89915a3711

MacOS: Desktop
https://github.com/Expensify/App/assets/108292595/908a3b6c-9634-4e05-be79-1c4ea3dc71ca

Bug: Not able to go to workspace detail on mWeb

Go to Settings > Workspaces
Select any workspace
Nothing happens

https://github.com/Expensify/App/assets/108292595/36b15e07-a202-4dea-ae96-f74f4e690fd6

NVM, bug fixed after pulling main locally. Please merge main

Merged with main and renamed

Did we test on native just to make sure the pages are normally loading?

Oh good point, I just added the recording for native platforms.

I honestly don't know what is happening with GH, even reloaded the page to validate if there was a missing check, but yeah, no emergency here.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/rlinoz in version: 1.4.59-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Julesssss in version: 1.4.60-13 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Rewrite parser as part of new regex-syntax crate.

 As part of this effort, the parser has been rewritten and
has grown a substantial number of tests.
The regex crate itself hasn't changed too much. I opted for the
smallest possible delta to get it working with the new regex AST.
In most cases, this simplified code because it no longer has to deal
with unwieldy flags. (Instead, flag information is baked into the AST.)
Here is a list of public facing non-breaking changes:

A new regex-syntax crate with a parser, regex AST and lots of tests.
This closes #29 and fixes #84.
A new flag, x, has been added. This allows one to write regexes with
insignificant whitespace and comments.
Repetition operators can now be directly applied to zero-width
matches. e.g., \b+ was previously not allowed but now works.
Note that one could always write (\b)+ previously. This change
is mostly about lifting an arbitrary restriction.

And a list of breaking changes:

A new Regex::with_size_limit constructor function, that allows one
to tweak the limit on the size of a compiled regex. This fixes #67.
The new method isn't a breaking change, but regexes that exceed the
size limit (set to 10MB by default) will no longer compile. To fix,
simply call Regex::with_size_limit with a bigger limit.
Capture group names cannot start with a number. This is a breaking
change because regexes that previously compiled (e.g., (?P<1a>.))
will now return an error. This fixes #69.
The regex::Error type has been changed to reflect the better error
reporting in the regex-syntax crate, and a new error for limiting
regexes to a certain size. This is a breaking change. Most folks just
call unwrap() on Regex::new, so I expect this to have minimal
impact.

Closes #29, #67, #69, #79, #84.
[breaking-change]

r? @huonw
(rust_highfive has picked a reviewer for you, use r? to override)

cc @alexcrichton @huonw @andrew-d
I think the thing I am most concerned about here is the definition of the Error type. It is a publicly exposed enum that I could envision changing in the future. (For example, if the regex-syntax crate grew to accept a superset of the syntax supported by regex, then there would need to be an additional error for rejecting unsupported syntax.) My instinct is that I should not expose the error as an enum and instead provide methods. (e.g., fn too_big(&self) -> Option<usize> and fn syntax_error(&self) -> Option<&regex_syntax::Error>.)
Also, part of the enum exposes the regex_syntax::Error type, which could also evolve. I think this means that if there's a breaking change in regex_syntax::{Error, ErrorKind}, then the major version number of regex would also need to be bumped. Not sure how to deal with this one.

This looks awesome, thanks so much @BurntSushi!

And a list of breaking changes:

These all seem minor enough that I would be fine releasing this version as a minor update to this library (not a major version change).

I think the thing I am most concerned about here is the definition of the Error type. It is a publicly exposed enum that I could envision changing in the future.

I personally like having an enum for errors like this, and I think that they should be considered "defacto extensible" in the sense that although it's a breaking change to add a variant, I would not consider it one. You could add a #[doc(hidden)] variant named something like __DoNotMatchMeIfYouWishToNotBreak which may also deter exhaustive matches.

Also, part of the enum exposes the regex_syntax::Error type, which could also evolve. I think this means that if there's a breaking change in regex_syntax::{Error, ErrorKind}, then the major version number of regex would also need to be bumped. Not sure how to deal with this one.

Hm, this is interesting! I would believe that there's definitely a good deal of API leakage between crates in terms of a major version bump of your deps may require a major version bump for you, but I think with a dependency like 0.1.0 on regex-syntax that this crate will be safe. That basically means that regex 0.1.x will use the 0.1.x version of syntax, and it can evolve to a more updated syntax later if necessary.

I think I've addressed everything. Just followed all of your suggestions. :-) I can merge once Travis gives the OK!

Sounds good to me!

Welp, time to AFL :)

Haha. Do your worst. This time, quickcheck has my back. :P


UX Improvement: Company Page as home page

Instead separate page show companies that use RxJs on the home page

Like in #304 we should add an introduction to the home page


feat: add constants/float32/ln-ten

Resolves : #3343
Description

What is the purpose of this pull request?

This pull request:

This RFC proposes adding the package @stdlib/constants/float32/ln-10 returning Natural Logarithm of single-precision floating-point number 10.

Related Issues

Does this pull request have any related issues?

This pull request:

resolves #{{TODO: add issue number}}

Questions

Any questions for reviewers of this pull request?

No.
Other

Any other information relevant to this pull request? This may include screenshots, references, and/or implementation notes.

No.
Checklist

Please ensure the following tasks are completed before submitting this pull request.

[x] Read, understood, and followed the contributing guidelines

@stdlib-js/reviewers

/stdlib update-copyright-years

/stdlib update-copyright-years


micrometer http.server.requests metric breaks metrics UI with IndexOutOfRangeException

Is there an existing issue for this?

[x] I have searched the existing issues

Describe the bug
with a http.server.requests metric exported via the otel agent's micrometer bridge, the aspire dashboard can get into an odd state .
if I navigate to the micrometer metric http.server.requests, I get an IndexOutOfRangeException in the aspire dashboard's container logs.
standalone aspire dashboard started with:
docker run --rm -it -p 8000:18888 -p 4317:18889 -p 4318:18890 --name aspire-dashboard -e DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS="true" mcr.microsoft.com/dotnet/aspire-dashboard

enabled micrometer metrics bridge with :
otel.instrumentation.micrometer.enabled=true in my JVM settings
I can navigate via the left-nav to logs or traces, and the UI is responsive.
If I navigate back to metrics, the UI is unresponsive. I am unable to select other metrics.
In the browser window, I have to manually remove the query parameters from the URI, and then navigate to
for example, change from this:
http://localhost:8000/metrics/resource/my-application-name?meter=io.opentelemetry.micrometer-1.5&instrument=http.server.requests&duration=5

to
http://localhost:8000/metrics/resource/my-application-name

once I manually remove those query parameters, I can select other (non-micrometer) metrics in the UI
Expected Behavior
No response
Steps To Reproduce
No response
Exceptions (if any)
warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
Unhandled exception rendering component: Index was outside the bounds of the array.
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculatePercentile(Int32 percentile, UInt64[] counts, Double[] explicitBounds) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 346
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.TryCalculateHistogramPoints(List1 dimensions, DateTimeOffset start, DateTimeOffset end, Dictionary2 traces, List1 exemplars) in /_/src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 276          at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculateHistogramValues(List1 dimensions, Int32 pointCount, Boolean tickUpdate, DateTimeOffset inProgressDataTime, String yLabel) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 147
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.UpdateChartAsync(Boolean tickUpdate, DateTimeOffset inProgressDataTime) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 506
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 107
at Aspire.Dashboard.Components.PlotlyChart.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/PlotlyChart.razor.cs:line 177
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Unhandled exception in circuit '2YmzVDSrBI8PnW2kK1Vw-iP_YeL1r-p14788V170uBw'.
System.AggregateException: One or more errors occurred. (Index was outside the bounds of the array.)
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculatePercentile(Int32 percentile, UInt64[] counts, Double[] explicitBounds) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 346
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.TryCalculateHistogramPoints(List1 dimensions, DateTimeOffset start, DateTimeOffset end, Dictionary2 traces, List1 exemplars) in /_/src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 276          at Aspire.Dashboard.Components.Controls.Chart.ChartBase.CalculateHistogramValues(List1 dimensions, Int32 pointCount, Boolean tickUpdate, DateTimeOffset inProgressDataTime, String yLabel) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 147
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.UpdateChartAsync(Boolean tickUpdate, DateTimeOffset inProgressDataTime) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 506
at Aspire.Dashboard.Components.Controls.Chart.ChartBase.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/ChartBase.cs:line 107
at Aspire.Dashboard.Components.PlotlyChart.OnAfterRenderAsync(Boolean firstRender) in //src/Aspire.Dashboard/Components/Controls/Chart/PlotlyChart.razor.cs:line 177
--- End of inner exception stack trace ---
.NET Version info
No response
Anything else?
aspire dashboard 9.0.0 (standalone)
otel java agent 2.10.0
java app - spring boot 3.4.0, temurin java 21.0.1
configured for jetty, not tomcat.

For this to happen, I think explicitBounds has to be empty?

I turned on the console metrics exporter so I could see some of the data being sent via OTLP
the misbehaving micrometer metric http.server.requests :
[otel.javaagent 2024-12-18 14:37:23:216 -0700] [PeriodicMetricReader-1] INFO io.opentelemetry.exporter.logging.LoggingMetricExporter - metric: ImmutableMetricData{resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.24.0, attributes={deployment.environment="stevec-local", host.arch="aarch64", host.name="M-C44LGCWY6V", os.description="Mac OS X 15.2", os.type="darwin", process.executable.path="/Users/schristensen/.asdf/installs/java/temurin-21.0.1+12.0.LTS/bin/java", process.runtime.description="Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.1+12-LTS", process.runtime.name="OpenJDK Runtime Environment", process.runtime.version="21.0.1+12-LTS", service.instance.id="stevec-ide", service.name="my-application-name", telemetry.distro.name="opentelemetry-java-instrumentation", telemetry.distro.version="2.10.0", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.44.1"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.micrometer-1.5, version=null, schemaUrl=null, attributes={}}, name=http.server.requests, description=, unit=s, type=HISTOGRAM, data=ImmutableHistogramData{aggregationTemporality=CUMULATIVE, points=[ImmutableHistogramPointData{getStartEpochNanos=1734557768207179000, getEpochNanos=1734557843212655000, getAttributes={error="none", exception="none", method="GET", outcome="REDIRECTION", status="302", uri="/cookie_cleanser"}, getSum=0.102902916, getCount=1, hasMin=true, getMin=0.102902916, hasMax=true, getMax=0.102902916, getBoundaries=[], getCounts=[1], getExemplars=[ImmutableDoubleExemplarData{filteredAttributes={}, epochNanos=1734557841199000000, spanContext=ImmutableSpanContext{traceId=1aa992b096da38d717911437027aef70, spanId=c3c2a0caf4dede8b, traceFlags=01, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, value=0.102902916}]}]}}

I assume the empty getBoundaries field relates to your observation about empty explicitBounds?
compare that with the equivalent OTel metric http.server.request.duration
[otel.javaagent 2024-12-18 14:40:23:217 -0700] [PeriodicMetricReader-1] INFO io.opentelemetry.exporter.logging.LoggingMetricExporter - metric: ImmutableMetricData{resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.24.0, attributes={deployment.environment="stevec-local", host.arch="aarch64", host.name="M-C44LGCWY6V", os.description="Mac OS X 15.2", os.type="darwin", process.executable.path="/Users/schristensen/.asdf/installs/java/temurin-21.0.1+12.0.LTS/bin/java", process.runtime.description="Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.1+12-LTS", process.runtime.name="OpenJDK Runtime Environment", process.runtime.version="21.0.1+12-LTS", service.instance.id="stevec-ide", service.name="my-application-name", telemetry.distro.name="opentelemetry-java-instrumentation", telemetry.distro.version="2.10.0", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.44.1"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.jetty-12.0, version=2.10.0-alpha, schemaUrl=null, attributes={}}, name=http.server.request.duration, description=Duration of HTTP server requests., unit=s, type=HISTOGRAM, data=ImmutableHistogramData{aggregationTemporality=CUMULATIVE, points=[ImmutableHistogramPointData{getStartEpochNanos=1734557768207179000, getEpochNanos=1734558023213100000, getAttributes=FilteredAttributes{http.request.method=GET,http.response.status_code=302,http.route=/cookie_cleanser,network.protocol.version=1.1,url.scheme=http}, getSum=0.181517666, getCount=1, hasMin=true, getMin=0.181517666, hasMax=true, getMax=0.181517666, getBoundaries=[0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0], getCounts=[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], getExemplars=[]}]}}

where the getBoundaries shows the explicit bucket boundaries.
Feels like the root cause could be a bug in the Micrometer export in the OTel Java agent?
To clarify this ask in this ticket -- I don't expect Aspire to work for this funky malformed metric.
But, it'd be nice if the Aspire dashboard handled the exception in a way that didn't require me to manually correct the URI in my browser.

I also tried the other configuration knobs on the Java agent's micrometer bridge
otel.instrumentation.micrometer.prometheus-mode.enabled=true
otel.instrumentation.micrometer.histogram-gauges.enabled=true

setting either or both to true didn't result in a usable java.server.requests within Aspire.

@stevesea if possible, could you share a minimal spring boot repo that I could use to debug? Thanks

But, it'd be nice if the Aspire dashboard handled the exception in a way that didn't require me to manually correct the URI in my browser.

I agree. As a general rule, I'd like to gracefully handle malformed data if possible, or at least share a more detailed exception message

It looks like the data from micrometer is invalid. I see:

getBoundaries=[], getCounts=[1]

I'm assuming getBoundaries and getCounts map to explicit_bounds and bucket_counts on a histogram data point. The docs on histogram data point say that bounds must be at least one more than count:
https://github.com/open-telemetry/opentelemetry-proto/blob/2bd940b2b77c1ab57c27166af21384906da7bb2b/opentelemetry/proto/metrics/v1/metrics.proto#L463-L465
Without boundaries there is no way to understand what a count means. I think the only thing Aspire can do here is log that data is bad and return a response to the sender that the data was rejected.


App not showing interstitial ad after closing

I only use interstitial in the app. An interstitial ad appears on the first click on app launch, and it takes 15 clicks for the ad to appear again.
The problem is that when I exit the app and re-enter after a while, it doesn't show ads on the first click. In fact, sometimes the problem of not showing ads on the first click takes a few days. But after 15 clicks it shows ads.
What I want to do is show an ad on the first click of users every time they enter the app. I'm not sure if this is a bug or something with the code.
PS: I am using getx state management - The ad impression limit is limited to 5 times a day per user.
Interstitial ad controller:
class AdController extends GetxController {
  InterstitialAd? interstitialAd;
  int adCounter = 0;

  int interstitialLoadAttempts = 0;
  int maxAttempts = 3;

  void onAdLoaded(InterstitialAd ad) {
    interstitialAd = ad;
    interstitialLoadAttempts = 0;

    interstitialAd?.fullScreenContentCallback = FullScreenContentCallback(
      onAdDismissedFullScreenContent: (ad) {
        interstitialAd?.dispose();
        initAd();
      },
      onAdFailedToShowFullScreenContent: (ad, error) {
        interstitialAd?.dispose();
        initAd();
      },
    );
  }

  void initAd() {
    InterstitialAd.load(
      adUnitId: AdHelper.interstitialAdUnitId,
      request: const AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: onAdLoaded,
        onAdFailedToLoad: (error) {
          interstitialLoadAttempts++;
          interstitialAd = null;

          if (interstitialLoadAttempts <= maxAttempts) {
            initAd();
          }
        },
      ),
    );
  }

  void getAd() {
    if (adCounter % 15 == 0 && interstitialAd != null) {
      interstitialAd?.show();
      interstitialAd = null;
    }
    adCounter++;
  }

  @override
  void onInit() {
    initAd();
    super.onInit();
  }

  @override
  void dispose() {
    interstitialAd?.dispose();
    super.dispose();
  }
}

Ad display:
AdController AdController = Get.put(AdController());

GestureDetector( onTap: () { AdController.getAd(); ...}

Hi @regenin
It seems you are asking for assistance on personal code. Please see https://flutter.dev/community for resources and ask questions like this.
You may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp.
Closing, as this isn't an issue with googleads-mobile-flutter itself. If you disagree, please write in the comments, providing your flutter doctor -v, your pubspec.yaml, a completed and minimal reproducible code sample that does not use 3rd party plugins and I will reopen it.
Thank you!


Pass word generator

@GMCgit Update your forked and local repository and make another PR with your password generator project inside a separate folder.


add allowBlank option to number validator

Ah I totally forgot about this when I wrote this one. Thanks for the PR :D. Besides my note, can you also add the allowBlank options in the docs (docs/docs/validators/number.md). You can just copy it from one of the other ones.

No problem I'll get that in real quick

Looks good. Thank you :smile_cat:


Package Apple's shell_cmds project

fish is currently using hostname from its environment on Darwin (see #11691). It should probably just build the Mac OS hostname utility from shell_cmds.

(triage) does hostname from inetutils work on Mac? Any volunteer to package hostname from shell_cmds?

Answer to myself: inetutils is broken on Darwin.


Blank lines stripped from output

I have a command line program that prints the following output.

Cargo.toml
Cargo.lock

src:
main.rs

When passed through to-html the output does not contain the blank line.

Cargo.toml
Cargo.lock
src:
main.rs

Sorry, I was wrong. The blank lines are present, it was my own post-processing pipeline stripping them out. Thanks for the great utility!


Added ability to set a config item thats contained in an array

Duplicate of #2991.
Also relevant: #1327