Qingping Motion Sensor CGPR1 trigger status is not normal after firmware update

Qingping Motion Sensor CGPR1 Firmeware Version: 1.1.1_0255
After updating the firmware in Mi Home App, I found that the trigger state of the sensor in Gateway 3, after the person left for a period of time, the sensor still changed between the trigger state and non-trigger state repeatedly. It is not synchronized with the state on the Mi Home App. At first I thought it was a problem with the occupancy_timeout of the sensor settings.
After my test, I found that the new version of the firmware has an additional parameter of unmanned movement determination time in addition to the sensor reporting time. This situation will be greatly alleviated when the unmanned movement determination time is reduced to 5s.

The principle of the unmanned movement determination parameter is that the sensor is not triggered within the set time and it is determined that there is no one. This parameter is currently incorporated into the parameter motion in gateway 3, that is, trigger and non-trigger. The best way to deal with it is to add a parameter to show whether there is someone or no one. Because I don't know much about the debugging to get this parameter by directly reading the Xiaomi multi-mode gateway log.So I hope someone can help me with this.

@catcracker Have same problem here after upgrading the firmware of Qingping PIR sensor. Have you found a way to solve it yet?

You need to collect integration debug logs for this moment

`2023-04-08 18:29:46 [D] SysInfo: {'installation_type': 'Home Assistant OS', 'version': '2023.3.6', 'dev': False, 'hassio': True, 'virtualenv': False, 'python_version': '3.10.10', 'docker': True, 'arch': 'aarch64', 'timezone': 'Europe/Berlin', 'os_name': 'Linux', 'os_version': '5.15.84-v8', 'user': 'root', 'supervisor': '2023.04.0', 'host_os': 'Home Assistant OS 9.5', 'docker_version': '20.10.22', 'chassis': 'embedded', 'xiaomi_gateway3_version': '3.1.0 (c33660c)'}
2023-04-08 18:32:11 [D] <IP_ADDRESS> [BASE] 582d3460970f (2691) setup ble CGPR1: motion, light, illuminance, battery, idle_time
2023-04-08 18:32:39 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 120}
2023-04-08 18:32:39 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1756091962,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"78000000"}],"frmCnt":91,"gwts":1680971559}}'
2023-04-08 18:32:52 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":63480967,"method":"_sync.ble_query_dev_list","params":{"devices":[{"mac":"58:2D:34:60:97:0F","pdid":2691},{"mac":"58:2D:34:60:61:B6","pdid":2691},{"mac":"58:2D:34:53:EF:9F","pdid":1398},{"mac":"E4:AA:EC:53:5B:F9","pdid":2443}]}}'
2023-04-08 18:34:24 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":610702992,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":15,"edata":"6c0000"}],"frmCnt":93,"gwts":1680971663}}'
2023-04-08 18:34:24 [D] <IP_ADDRESS> [BASE] binary_sensor.582d3460970f_motion | Extend delay: 3 seconds
2023-04-08 18:34:25 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":587267995,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"00000000"}],"frmCnt":94,"gwts":1680971664}}'
2023-04-08 18:34:25 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 0}
2023-04-08 18:34:24 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'motion': True, 'illuminance': 108}
2023-04-08 18:34:25 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 0}
2023-04-08 18:34:29 [D] <IP_ADDRESS> [BASE] binary_sensor.582d3460970f_motion | Extend delay: 3 seconds
2023-04-08 18:34:29 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1889705996,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":15,"edata":"520000"}],"frmCnt":96,"gwts":1680971668}}'
2023-04-08 18:34:29 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'motion': True, 'illuminance': 82}
2023-04-08 18:34:30 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":800456999,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"00000000"}],"frmCnt":97,"gwts":1680971670}}'
2023-04-08 18:34:30 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 0}
2023-04-08 18:34:32 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1420120004,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"05000000"}],"frmCnt":98,"gwts":1680971671}}'
2023-04-08 18:34:32 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 5}
2023-04-08 18:34:34 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1581339007,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"05000000"}],"frmCnt":99,"gwts":1680971673}}'
2023-04-08 18:34:34 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 5}
2023-04-08 18:34:36 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1525831011,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":15,"edata":"8f0000"}],"frmCnt":101,"gwts":1680971675}}'
2023-04-08 18:34:36 [D] <IP_ADDRESS> [BASE] binary_sensor.582d3460970f_motion | Extend delay: 3 seconds
2023-04-08 18:34:36 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'motion': True, 'illuminance': 143}
2023-04-08 18:34:37 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":444651014,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"00000000"}],"frmCnt":102,"gwts":1680971677}}'
2023-04-08 18:34:37 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 0}
2023-04-08 18:34:47 [D] <IP_ADDRESS> [BASE] binary_sensor.582d3460970f_motion | Extend delay: 3 seconds
2023-04-08 18:34:47 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'motion': True, 'illuminance': 148}
2023-04-08 18:34:48 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":434490029,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"00000000"}],"frmCnt":108,"gwts":1680971687}}'
2023-04-08 18:34:48 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 0}
2023-04-08 18:34:50 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1137139030,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"05000000"}],"frmCnt":109,"gwts":1680971689}}'
2023-04-08 18:34:50 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 5}
2023-04-08 18:35:42 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1673004049,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"3c000000"}],"frmCnt":112,"gwts":1680971741}}'
2023-04-08 18:35:42 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 60}
2023-04-08 18:36:00 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":548023053,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4106,"edata":"09"}],"frmCnt":114,"gwts":1680971759}}'
2023-04-08 18:36:00 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'battery': 9}
2023-04-08 18:36:02 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'illuminance': 108}
2023-04-08 18:36:44 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":6547063,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"78000000"}],"frmCnt":117,"gwts":1680971804}}'
2023-04-08 18:36:44 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 120}
2023-04-08 18:39:47 [D] <IP_ADDRESS> [MQTT] miio/report b'{"id":1451010095,"method":"_async.ble_event","params":{"dev":{"did":"blt.3.18riorhb4lk00","mac":"58:2D:34:60:97:0F","pdid":2691},"evt":[{"eid":4119,"edata":"2c010000"}],"frmCnt":119,"gwts":1680971986}}'
2023-04-08 18:39:47 [D] <IP_ADDRESS> [BLEE] 582d3460970f (2691) recv {'idle_time': 300}
`
I filtered the data based on the mac address, in addition the idle entity of the sensor in HA is not available

I will try to check this situation on my sensor. But I can't promise it will be soon.

Sensor sends motion event every "motion reported interval" during "no-one-moved" interval.
Hass occupancy_timeout should be more than "motion reported interval".


ERROR: Signature extraction failed (version 2019 03 14)

[x] I've verified and I assure that I'm running youtube-dl 2019.03.09
Installed on xubuntu 18.04 via sudo -H pip install --upgrade youtube-dl

myuser@my-pc:~$ youtube-dl  --version
2018.03.14

[x] At least skimmed through the README, most notably the FAQ and BUGS sections

[x] Searched the bugtracker for similar issues including closed ones

[x] Checked that provided video/audio/playlist URLs (if any) are alive and playable in a browser

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)

Video URL: https://www.youtube.com/watch?v=Rb0UmrCXxVA
myuser@my-pc:~$ youtube-dl https://youtu.be/Rb0UmrCXxVA --verbose
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['https://youtu.be/Rb0UmrCXxVA', '--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.03.14
[debug] Python version 3.6.7 (CPython) - Linux-4.15.0-46-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.4-0ubuntu<IP_ADDRESS>, ffprobe 3.4.4-0ubuntu<IP_ADDRESS>, phantomjs 2.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[youtube] Rb0UmrCXxVA: Downloading webpage
[youtube] Rb0UmrCXxVA: Downloading video info webpage
[youtube] Rb0UmrCXxVA: Extracting video information
WARNING: unable to extract html5 player; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
[youtube] {18} signature length 42.41, html5 player None
[youtube] Rb0UmrCXxVA: Downloading player https://www.youtube.com/yts/jsbin/player_ias-vflkyt12p/en_US/base.js
ERROR: Signature extraction failed: Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1191, in _decrypt_signature
video_id, player_url, s
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1102, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1163, in _parse_sig_js
jscode, 'Initial JS player signature function name', group='sig')
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/common.py", line 796, in _search_regex
raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract Initial JS player signature function name; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
(caused by RegexNotFoundError('Unable to extract \x1b[0;34mInitial JS player signature function name\x1b[0m; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.',)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1191, in _decrypt_signature
video_id, player_url, s
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1102, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1163, in _parse_sig_js
jscode, 'Initial JS player signature function name', group='sig')
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/common.py", line 796, in _search_regex
raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract Initial JS player signature function name; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1191, in _decrypt_signature
video_id, player_url, s
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1102, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1163, in _parse_sig_js
jscode, 'Initial JS player signature function name', group='sig')
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/common.py", line 796, in _search_regex
raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract Initial JS player signature function name; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/youtube_dl/YoutubeDL.py", line 785, in extract_info
ie_result = ie.extract(url)
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/common.py", line 440, in extract
ie_result = self._real_extract(url)
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1899, in _real_extract
encrypted_sig, video_id, player_url, age_gate)
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1201, in _decrypt_signature
'Signature extraction failed: ' + tb, cause=e)
youtube_dl.utils.ExtractorError: Signature extraction failed: Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1191, in _decrypt_signature
video_id, player_url, s
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1102, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py", line 1163, in _parse_sig_js
jscode, 'Initial JS player signature function name', group='sig')
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/common.py", line 796, in _search_regex
raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract Initial JS player signature function name; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
(caused by RegexNotFoundError('Unable to extract \x1b[0;34mInitial JS player signature function name\x1b[0m; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.',)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Newpipe already fixed it
https://github.com/TeamNewPipe/NewPipe/issues/2209#issuecomment-472739467

@dstftw I did not know that NewPipe and youtube-dl were related... Thanks


.mjs files

Enhance can't find any of my elements unless I use .mjs and this makes me sad; JavaScript belongs in .js files like our lord and savior Brendan Eich intended!!!
Architect allows for this: https://arc.codes/docs/en/guides/developer-experience/using-esm#es-modules-with-package.json

I hear you!
I hate it more than you can imagine, but this was the least horrible solution based on npm and node resolution issues in mixed projects.
using .mjs files will always work, where as there are too many caveats to cover and explain until .cjs goes the way of the dodo.


US 02.01.01

discuss how to edit ingredients in recipes

discuss how to edit ingredients in recipes


NugetNugget Tidyup

addition of modernizr to project
css update

You need to merge with upstream.

Not sure I did that right.


DEV – The waypoint editor opens as a Not Found page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number:
Reproducible in staging?: need reproduction
Reproducible in production?: needs reproduction
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?:
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @paultsimura
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1729104627493469
Action Performed:

Go to self-dm
Click "+" -> Track Expense (make sure the first tab that opens is the Distance request – if not, select it, close the RHP and start the Track Expense flow again)
Click the first waypoint

Expected Result:
the waypoint editor opens
Actual Result:
the "Not found" page opens
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
https://github.com/user-attachments/assets/04b59d1b-3661-44ba-83b6-8127d3558356

Add any screenshot/video evidence

View all open jobs on GitHub

This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989

Hm, I can't really triage this if it's dev only. @paultsimura adding you as you reported it. 👍

Proposal
Please re-state the problem that we are trying to solve in this issue.
the "Not found" page opens
What is the root cause of that problem?
Regression from https://github.com/Expensify/App/pull/50772
Not found page in waypoint page would show if there's no waypoints from the draft transaction.
In this case when we get the correct request type:
https://github.com/Expensify/App/blob/a1d92ef9feae7fd81c35956164a13d9ffad7fb02/src/pages/iou/request/IOURequestStartPage.tsx#L60
to init the draft transaction where we initialize the optimistic waypoints:
https://github.com/Expensify/App/blob/a1d92ef9feae7fd81c35956164a13d9ffad7fb02/src/pages/iou/request/IOURequestStartPage.tsx#L68
https://github.com/Expensify/App/blob/3a1d1a8fa0968da093b938aaf650e4f92b330709/src/libs/actions/IOU.ts#L341-L351
At this time the transactionDraft is null causing the transactionRequestType to be manual while it should be distance.
However, before https://github.com/Expensify/App/pull/50772, we attached a screen listener that triggers onTabSelected and then call resetIOUTypeIfChanged which eventually initialize the draft transaction with the correct request type (distance):
https://github.com/mkzie2/App/blob/a1d92ef9feae7fd81c35956164a13d9ffad7fb02/src/pages/iou/request/IOURequestStartPage.tsx#L85
So this works fine on staging and production.
But after https://github.com/Expensify/App/pull/50772, onTabSelected is only triggered when we manually select a new tab:
https://github.com/Expensify/App/blob/286212cc4f23b94426dca0bc28a039f61ca5c693/src/libs/Navigation/OnyxTabNavigator.tsx#L127-L129
This causes a problem when we previously select a tab, then close the RHP and reopen the RHP, the selectedTab is still the previously selected tab and thus onTabSelected is not triggered > resetIOUTypeIfChanged is not called > draft transaction is not init with the correct request type/tab.
What changes do you think we should make in order to solve the problem?

We should not check the request type barely based on transaction. It is null almost the time since we clearMoneyRequest before starting any request:
https://github.com/Expensify/App/blob/a1d92ef9feae7fd81c35956164a13d9ffad7fb02/src/pages/iou/request/IOURequestStartPage.tsx#L60
We can use selectedTab if transaction is undefined:
const transactionRequestType = useMemo(() => !isEmptyObject(transaction) ? TransactionUtils.getRequestType(transaction) : selectedTab, [transaction, selectedTab]);

https://github.com/Expensify/App/blob/a1d92ef9feae7fd81c35956164a13d9ffad7fb02/src/pages/iou/request/IOURequestStartPage.tsx#L63-L69
useEffect(() => {
    if (transaction?.reportID === reportID || isLoadingSelectedTab) {
        return;
    }
    IOU.initMoneyRequest(reportID, policy, isFromGlobalCreate, transactionRequestType);
}, [transaction, policy, reportID, iouType, isFromGlobalCreate, isLoadingSelectedTab]);

What alternative solutions did you explore? (Optional)
NA

@trjExpensify I think this should be a deploy blocker as a regression from https://github.com/Expensify/App/pull/50772 which will be deployed soon.

Noted: https://github.com/Expensify/App/pull/50772#issuecomment-2418129153

I left a comment here suggesting to fix this as a separate issue.

Yeah, I don't agree that it's a separate issue. That PR now causes users to hit an error page when they open the waypoints editor. We shouldn't send that to prod until it's fixed.

@trjExpensify what is your take here? Do you think we should let the offending PR author @bernhardoj fix this?

Yes, I think it should be treated as a regression personally.

We shouldn't send that to prod until it's fixed.

I agree that we should fix it before reaching prod, but the reason I personally don't think it counts as a regression is, that I or @rayane-djouah wouldn't expect that the money request initialization is not working correctly. It's a hidden bug and never works which is only discovered after the PR. There have been a few cases like this in the past.
In the past, I usually do the follow-up, but it doesn't count as a regression. I suggest treating it as a separate issue since @mkzie2 has already proposed a working solution. I can open the PR but I will borrow the solution above 😅.

This makes the Submit Scan/Distance expense flow completely malfunctioned and should be fixed with urgency. I can raise PR immediately if needed.

Ok, looks like the init issue causes other flows (https://github.com/Expensify/App/issues/51007 & https://github.com/Expensify/App/issues/51029) too which isn't covered by the proposal, so I'm going to do the follow-up PR. I'll explain all the root causes in the PR.

@flodnv is already assigned here, removing Ben.

CP'd the fix I will ask for a re-test when it succeeds.

Bug is fixed.
https://github.com/user-attachments/assets/0cd6a8cc-7b4e-4ee6-a48c-a78158885956

👋 Checklist time please, @paultsimura!

Ah cool, okay. Closing it out then!


iscsi-targetd: support for Chap authentication

this PR add support for chap authentication.
The ansible installer sets up chap authentication for discovery in target and stores the chap authentication credentials for session in a secret for later use by the provisioner.
It also sets up a storage class with chap authentication if configured.
The provisioner sets up chap session authentication in target using the previously configure secret via targetd. This call currently does not seem to work, see also this: https://bugzilla.redhat.com/show_bug.cgi?id=1490631
the project tenant is responsible to set up the secret that the iscsi storage provider will use. This secret will contain both discovery and session authentication.
The code in the PR should be fine. I'm still investigating the above bug. Any help with that is appreciated.

/assign @humblec
PTAL.
looks fine to me but I know nothing about CHAP

@wongma7 @humblec could we merge this? It there anything stopping it?

/lgtm
no let's get it merged,


Create ci-reporter.md

Adds ci-reporter to our app registry.

CI is failing for unrelated reasons, so I'm going to go ahead and merge this.


[BUG] - Smartcars 3 api  not detecting flight distance and flight duration mismatch

Describe the bug
when you add a flight in the phpvms admin panel and you set the flight duration for one hour and you also set the distance, smartCARS 3 sets the flight duration as 1 hour (sets 60 minutes to 60 hours) and the distance is shown as NaN. Also, the smartCARS says that you are not in the correct airport even tho you are and in gate and not moving.
How do you reproduce this bug?
when you add a flight in the phpvms admin panel and you set the flight duration for one hour and you also set the distance, smartCARS 3 sets the flight duration as 1 hour (sets 60 minutes to 60 hours) and the distance is shown as NaN. Also, the smartCARS says that you are not in the correct airport even tho you are and in gate and not moving.
Expected behavior
No response
Screenshots
No response
API Version
0.4.1
PHP Version
8.2
Database & version
5.7.44-Mysql
Webserver version
Apache/2.4.59
Browser
Opera GX
Additional context
No response

@BossOfGames Is this something we can look into please?

Describe the bug
when you add a flight in the phpvms admin panel and you set the flight duration for one hour and you also set the distance, smartCARS 3 sets the flight duration as 1 hour (sets 60 minutes to 60 hours) and the distance is shown as NaN. Also, the smartCARS says that you are not in the correct airport even tho you are and in gate and not moving.
How do you reproduce this bug?
when you add a flight in the phpvms admin panel and you set the flight duration for one hour and you also set the distance, smartCARS 3 sets the flight duration as 1 hour (sets 60 minutes to 60 hours) and the distance is shown as NaN. Also, the smartCARS says that you are not in the correct airport even tho you are and in gate and not moving.
Expected behavior
No response
Screenshots
No response
API Version
0.4.1
PHP Version
8.2
Database & version
5.7.44-Mysql
Webserver version
Apache/2.4.59
Browser
Opera GX
Additional context
No response

smartCARS complaining that you're not at the correct starting airport is a unrelated issue to the other issue at hand, which is more a display bug caused by an incorrect API response.
For the second issue where you can't start a flight, can you please take a screenshot of what the airports table looks like for the airports affected?
A case where this would cause a problem is if the ARP (Airport Reference Point) is too far away from the aircraft when starting the flight.

here are the screenshots of the flights from phpvms and smartCARS 3

the Airport issue was from our side it's working perfectly. The only present issue is the issue I mentioned with the interface and the included screenshots

That's what I figured.
v5 stores the time in hours and minutes separated by decimal, while v7 stores the value as total minutes as a integer, then uses a helper function to convert that to HH:MM for when it's called in the user interface though your website.
This is a similar case for the distance. Distance for v5 stores it as one unit and it's returned to the v5 api as such. v7 stores a unit in the database, then uses a helper function to convert the unit on the fly to the UI. What's being sent to smartCARS needs to be corrected.
For both issues, I have a fix I'm going to test in a little bit.

@mohammedbkr

Looks like I got it working.
Can you download this specific branch to confirm it on your end? You just need an updated FlightsController.php file.
https://github.com/invernyx/smartcars-3-phpvms7-api/tree/7-bug-smartcars-3-api-not-detecting-flight-distance-and-flight-duration-mismatch

I’ll check it and report back. Thank you!


How to get automatic reload?

I was able to get everything working (awesome work you guys, damn).
However, I can't seem to puzzle out how to get a rebuild of the .wasm to trigger parcel to pull the .wasm files into the dist folder.
Any ideas?

Solved by running the following in the cargo folder. My rebuild was making a new build folder, instead of updating the wasm in the pkg folder, which is what parcel was looking for.
"wasm-pack build"


How to ignore rules onto whole module included into HCL file

terrascan version: v1.9.0
Operating System: MacOs 10.15.4

Description
I'm trying to ignore some rules for specific module included into my IaC
What I Did
Here is my HCL file s3.tf
#ts:skip=AC_AWS_0207
#ts:skip=AC_AWS_0214
#ts:skip=AC_AWS_0497
#ts:maxseverity=None
module "backup_operator_s3_bucket" {
  count = var.backup_operator_enabled ? 1 : 0

  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 1.25"

  bucket               = lower(format("backup-operator-%s", var.cluster_spec.name))
  acl                  = "private"
  attach_public_policy = false

  logging = {
    target_bucket = local.backup_storage_logging_bucket
    target_prefix = format("Access_Log/S3/backup-operator-%s/", lower(var.cluster_spec.name))
  }

  server_side_encryption_configuration = {
    rule = {
      apply_server_side_encryption_by_default = {
        sse_algorithm = "AES256"
      }
    }
  }
}

And every time i got next failures:
Violation Details -

	Description    :	Ensure S3 buckets have access logging enabled.
	File           :	.terraform/modules/backup_operator_s3_bucket/main.tf
	Module Name    :	backup_operator_s3_bucket
	Plan Root      :	./
	Line           :	5
	Severity       :	MEDIUM
	Rule Name      :	s3BucketAccessLoggingDisabled
	Rule ID        :	AC_AWS_0497
	Resource Name  :	this
	Resource Type  :	aws_s3_bucket
	Category       :	Logging and Monitoring

	-----------------------------------------------------------------------

	Description    :	Ensure that S3 Buckets have server side encryption at rest enabled with KMS key to protect sensitive data.
	File           :	.terraform/modules/backup_operator_s3_bucket/main.tf
	Module Name    :	backup_operator_s3_bucket
	Plan Root      :	./
	Line           :	5
	Severity       :	HIGH
	Rule Name      :	s3BucketSseRulesWithKmsNull
	Rule ID        :	AC_AWS_0207
	Resource Name  :	this
	Resource Type  :	aws_s3_bucket
	Category       :	Data Protection

	-----------------------------------------------------------------------

	Description    :	Enabling S3 versioning will enable easy recovery from both unintended user actions, like deletes and overwrites
	File           :	.terraform/modules/backup_operator_s3_bucket/main.tf
	Module Name    :	backup_operator_s3_bucket
	Plan Root      :	./
	Line           :	5
	Severity       :	HIGH
	Rule Name      :	s3Versioning
	Rule ID        :	AC_AWS_0214
	Resource Name  :	this
	Resource Type  :	aws_s3_bucket
	Category       :	Resilience

	-----------------------------------------------------------------------

So, seems included module's resources don't inherit "skip" labels. Is there any possibility to make it workable?

Hi @gueux,
Currently rule skipping doesn't work within Terraform modules unless it's specified as a cli, but that would also skip the rules for all other resources in your template. Here's an example of the skip-rules cli flag:
$ terrascan scan -i terraform --skip-rules AC_AWS_0207,AC_AWS_0214,AC_AWS_0497


Qingwei/fix start time

Coverage decreased (-0.006%) to 28.852% when pulling 8b426fb7fb10dea29f9b4adb46729e1baf7ec725 on qingweibinary:qingwei/fix_start_time into 1ede2937425f21e251d1f3e3c1e5aadc959d5556 on binary-com:master.


[BUG] Keeping data alive via object data is unsound

In many cases where GTK apis require the callee to hold on to the returned pointer, gtk4-rs uses g_object_set_qdata to store a copy of the data so that it sticks around long enough. For example
https://github.com/gtk-rs/gtk4-rs/blob/fb59005041d06bc275de3ff23a740395b6332c1e/gtk4/src/subclass/entry_buffer.rs#L234-L238
However, this is only sound as long as this code path is not taken again until the caller stops using the returned data. In the following example, I subclass EntryBuffer to cause the pointer returned by gtk_entry_buffer_get_text to become invalid:
use imp::EbImp;
use gtk4::subclass::prelude::*;
use gtk4::prelude::*;

mod imp {
    #[derive(Default)]
    pub struct EbImp;
}

#[gtk4::glib::object_subclass]
impl ObjectSubclass for EbImp {
    const NAME: &'static str = "EbImp";
    type Type = Eb;
    type ParentType = gtk4::EntryBuffer;
    type Interfaces = ();
}

glib::wrapper! {
    pub struct Eb(ObjectSubclass<EbImp>) @extends gtk4::EntryBuffer;
}

impl ObjectImpl for EbImp {}

impl EntryBufferImpl for EbImp {
    fn length(&self, entry_buffer: &Self::Type) -> u32 {
        let _ = entry_buffer.text(); // invalidate the previous pointer returned by get_text
        self.parent_length(entry_buffer)
    }
}

In the following code path, gtk calls get_text immediately followed by get_length:
https://github.com/GNOME/gtk/blob/8550a04bf42f5e1d8af239ab953c3ff1235dc149/gtk/gtktext.c#L2140-L2141
The call to get_length invalidates the pointer returned by get_text.
This is currently masked by https://github.com/gtk-rs/gtk4-rs/issues/564

Indeed. This seems hard to fix nicely, it seems like a fundamental limitation of the underlying C API (i.e. https://github.com/gtk-rs/gtk3-rs/issues/333) by using transfer none return values and keeping it up to the caller and interface implementer to implement complicated lifetime rules that are rarely even documented.
From the Rust bindings side we have the conflicting requirements here to keep the pointer to the C string of the text alive "long enough" while also allowing other trait functions to be called that might invalidate the returned pointer. In this case, if the requirement is only that length() must not be able to invalidate the pointer, a potential solution would be to combine the text() and length() functions into a single one and also only updating the qdata if the string actually changed.
If that's enough for other usage patterns from C, I don't know.
Thanks for reporting this!

In that sense, this is the same as https://github.com/gtk-rs/gtk4-rs/issues/566 and I'm going to close the other one.

That's only a solution for this specific case, i.e. https://github.com/gtk-rs/gtk4-rs/issues/567 . For other cases this has to be carefully analyzed and implemented according to the requirements of the C API. If you find other cases that are broken, please report them here. I'm going to close this issue for now, let's fix this instance as part of https://github.com/gtk-rs/gtk4-rs/issues/566 and any other cases that are broken should get separate issues.


Ctrl + Enter bug

Is good old Ctrl + Enter getting tired?
#### Challenge Name

This is on JSON challenges that use button to write a message, maybe on others too
It happend to me on the following challenges (but i haven't yet tryed on others)
Change Text with Click Events Complete
Get JSON with the jQuery getJSON Method Complete   *
#### Issue Description

Here is whats going on, once you solve a challenge and hit Ctrl + Enter to submit and see if its correct if its correct you will get a message that you have passed with some cool text in the header but if you click on X to close that little pop up window and click a button that changes the content of your little iPhone look alike on the right or bottom depending on the device you are using then try Ctrl + Enter after that the window wouldn't pop-up
Browser Information

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0

Browser Name, Version: Above
Operating System: Above
Mobile, Desktop, or Tablet: I'm not sure if they have the same fature there somehow

Your Code

Screenshot

Hi @knox97, thanks for reporting this.
If I'm understanding you correctly, the issue is that the Ctrl+Enter shortcut doesn't trigger the expected behavior of running the tests if you click inside the mobile preview.
This isn't limited just to challenges with the mobile preview. In fact, if you click outside of the code editor on any challenge, it will lose focus and its shortcuts won't be functional. (See also the new "toggle comment" shortcut Ctrl+/ or Cmd+/)
I don't think there's an easy way to make such shortcuts global in the browser, and it could be that users have their own shortcuts with the same key bindings that have different behaviors when the editor is not in focus, so this probably won't be changed.
As a workaround, make sure to click inside the editor whenever you want to submit code with the shortcut, or with only the keyboard you can use Shift+Tab to return focus to the editor after clicking within the mobile preview (you might have to use Shift+Tab multiple times).

I'm going to close this issue for the reasons described above, but if you have more information to add or if I have misunderstood your initial report, please add another comment. Thanks again @knox97 and happy coding!


CORS_ORIGIN doesn't support a comma separated value contrary to what's stated in the docs

Describe the bug
Providing a comma separated list of URLS to the CORS_ORIGIN env var results in the following error on browser clients:
Access to fetch at '[REDACTED]' from origin '[REDACTED]' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values '[REDACTED],[REDACTED]', but only one is allowed. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

I expected this to work since the documentation states:

Origin URL or list of comma separated list of URLs to whitelist for CORS

Steps to reproduce the bug

Create an Unleash proxy with CORS_ORIGIN containing two domains
Access the proxy via a browser on either domain
Notice the error

Expected behavior
I expected this to work since the documentation states:

Origin URL or list of comma separated list of URLs to whitelist for CORS

Logs, error output, etc.
Access to fetch at '[REDACTED]' from origin '[REDACTED]' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values '[REDACTED],[REDACTED]', but only one is allowed. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

### Screenshots

_No response_

### Additional context

_No response_

### Unleash version

2.5.0

### Subscription type

Open source

### Hosting type

Self-hosted

### SDK information (language and version)

_No response_

Nevermind, turns out we were using a very old version of @unleash/proxy, my mistake.


Basic styling of checkbox should not require javascript initialisation

Without the class 'mdl-js-checkbox' before javascript initialisation, checkboxs are unstyled.

Just for references: That is due to us intentionally falling back to unstyled checkboxes for IE9.

FYI this was on webkit.
--
Tim Lind
<EMAIL_ADDRESS>| +27827895930
Incremental Code: Internet Software Studio
http://www.incremental.co
On Thu, Nov 19, 2015 at 10:34 PM, Surma<EMAIL_ADDRESS>wrote:

Just for references: That is due to us intentionally falling back to
unstyled checkboxes for IE9.
—
Reply to this email directly or view it on GitHub
https://github.com/google/material-design-lite/issues/1891#issuecomment-158189678
.

Yes, it happens everywhere because we need it to not style in IE9 due to
technical limitations. Once we drop support for this browser we can address
the core problem for all supported browsers.
On Nov 20, 2015 3:56 AM, "Tim Lind"<EMAIL_ADDRESS>wrote:

FYI this was on webkit.
--
Tim Lind
<EMAIL_ADDRESS>| +27827895930
Incremental Code: Internet Software Studio
http://www.incremental.co
On Thu, Nov 19, 2015 at 10:34 PM, Surma<EMAIL_ADDRESS>wrote:

Just for references: That is due to us intentionally falling back to
unstyled checkboxes for IE9.
—
Reply to this email directly or view it on GitHub
<
https://github.com/google/material-design-lite/issues/1891#issuecomment-158189678
.

—
Reply to this email directly or view it on GitHub
https://github.com/google/material-design-lite/issues/1891#issuecomment-158328886
.

Yup, @surma and @Garbee are both correct. With V2 we'll drop IE9 support, and we'll move to styling the component without JS (for everything but the ripple, at least).


clone-blockify reorders imports

Since cargo fmt doesn't sort imports on stable yet, it would be nice if it wouldn't remove and then re-add imports.
Like here use std::{cell::Cell, rc::Rc};
diff --git a/book/listings/gobject_memory_management/3/main.rs b/book/listings/gobject_memory_management/3/main.rs
index 712537c7705..bdcaff9338c 100644
--- a/book/listings/gobject_memory_management/3/main.rs
+++ b/book/listings/gobject_memory_management/3/main.rs
@@ -1,25 +1,17 @@
-use std::{cell::Cell, rc::Rc};
-
 use glib::clone;
 use gtk::prelude::*;
 use gtk::{self, ApplicationWindow, Button, Orientation};
 use gtk::{glib, Application};
-
+use std::{cell::Cell, rc::Rc};

Grouping this issue into https://github.com/jf2048/gobject/issues/15 since it will be fixed when we stop rewriting the file


Disable ETCD Learner Mode

ETCD Learner Mode went to Beta in k8s 1.29 and is now default enabled (see here, here).
When a new stacked etcd instance comes up, it joins the cluster in learner mode.
The API Server cannot perform rpc calls against its etcd instance, and fails to come online.
In theory the etcd instance should be promoted to a full member as done in kubeadm here.
This is not happening because our bottlerocket bootstrap container is not allowing etcd phase to complete.
We are disabling this feature for 0.19 and will likely enable it for 0.20 when we also incorporate new CAPI work that allows feature gates to be mutable.
The feature gate will likely go GA in upstream 1.31.
Issue #, if available:
This was causing failures on *129StackedEtcdUpgrade end to end tests.
Testing (if applicable):
Ran TestVSphereKubernetes128BottlerocketTo129StackedEtcdUpgrade with a custom built controller image that set this EtcdLearnerEnabled feature flag to false.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/cherrypick release-0.19

/lgtm

/approve


Add a README to every example

The README contains:

How to download the examples
How to install their dependencies and run it
How to deploy it to Now
What the examples are about

The structure is based on the Next.js examples README.

Thank you! I think we need to remove "swr": "link:../..", and add swr, react, react-dom into dependencies so they can be standalone projects.
As the benefit, we can add deploy buttons (https://github.com/zeit/now-examples/tree/master/nextjs), live examples (Codesandbox) to these examples in the future!


Automatically initialize based on the value of the bound input

If I render an input from my server with an ISO8601 date and I call .pickadate on that input, pickadate doesn't re-render the contents of that input based on whatever format it was configured with.
What is the correct approach to tell pickadate to read value on my input, parse it and reformat upon initialization?

Same issue here.

+1 for this -- The date shows as '24 November 2016' when you select it using the picker, but when you initialise the underlying field with a date (e.g. 2016-10-24), it simply appears with the same, unformatted value '2016-10-24'.
I managed to fix it for default values with the following:
$( 'input[type="date"]' ).pickadate(
	{
		onStart:function(){
			this.set( 'select', Date.parse( $( this.$node ).val() ) );
		}
	}
);

...which is fine if the value is set when the field is initialised. However, if you set the value later (via JavaScript), it doesn't help. I tried using this:
$( 'input[type="date"]' ).change(
	function(){
		$( this ).pickadate( 'picker' ).set( 'select', Date.parse( $( this ).val() ), {muted:true} );
	}
);

...but I get a 'too much recursion' error, so obviously pickadate is updating the input field itself internally, even when 'muted' is set to true.
Not sure how to solve this one, I might have to look for an alternative date picker.

$('.datepicker').on('change', function() {
let date = new Date($(this).val());
let nextDay = new Date(date);
nextDay.setDate(date.getDate() + 1);
endDatepicker.pickadate('picker').clear().set('min', nextDay);
});


Elfeed is too slow when when there are a lot of rss list

I have been using elfeed for a while now and build up like 30 to 50 rss list. Whenever I call elfeed-update to update everything, it takes quite a long time and hang emacs during the time. It might be 20mn, i am not sure. It consumes 100% of cpu and 54% of my ram which should be 4gb of 8gb of ram and garbage collection always collect. So, my question is, is there a way to make this run faster without interruption or hang emacs? Is that parsing xml consume that much cpu and took so long period of time? Isn't there async process?

Fetching 30 to 50 feeds should only disrupt Emacs for a couple of
seconds, so this isn't normal.
The very first thing to check is that Elfeed is using curl to fetch
feeds. The variable elfeed-use-curl indicates whether curl will be used
or not, and it will automatically set to t if curl was found when Elfeed
was loaded. If it's nil, you should install curl and ensure it's on your
PATH. This has two major benefits:

url-retrieve isn't nearly as asynchronous as advertised, especially
for certain platforms, but curl is always fully asynchronous. The
synchronous parts of url-retrieve will block Emacs, but not make it use
100% CPU.

url-queue-retrieve doesn't allow for custom headers, which means
Elfeed can't take advantage of ETag or If-Modified-Since. These features
prevent Elfeed from reparsing feeds that haven't changed. (It's also
much nicer to servers.) Elfeed spends most of its time parsing XML, and
XML parsing is not done asynchronously, so this is important. If you're
not using curl, Emacs will spend more time at 100% CPU when fetching.

Also make sure Elfeed has been byte-compiled. This should happen
automatically if you installed it via package.el.
Since you're seeing such excessive memory use, it sounds like one of the
feeds you're fetching may be humongous. A casual experiment suggests
that, on 64-bit computers, the s-expression representation of an RSS
feed is about four times larger than the XML content. This is due to all
the pointer overhead (lots of cons cells for each element). But if
you're seeing 4GB of memory use, then that puts the feed at about 800MB
(buffer + s-exp = 4GB), which seems unlikely. Even more so for the 8GB
case.
Take a look at each of the feeds in your list and see if any of them are
particularly large. Also have Elfeed fetch them one at a time to see
which one causes the problem. If you can narrow it down to a particular
feed, I'd like to know about it.

@skeeto, I have check elfeed-use-curl variable and it return true and it's already byte-compile as i seen .elc file there in my elfeed package dir.
Last night i have tried it again on my another more power computer and give gc-cons-threshold 8gb of ram as i got 16gb there and yes it took all the 8gb with 100% cpu again.

Also have Elfeed fetch them one at a time to see which one causes the problem
I will tried them. I doubt if reddit feed is the cause as i got many of them.

@skeeto, I have set

@skeeto, I have set my feed list to empty as below:
(setq elfeed-feeds
        '())

and then tried to call elfeed-update to see the cpu time but it still took 89% of cpu again. I doubt this might be because i have too many feeds (when calling elfeed). I got 6004 list of feed there listing from 2019-05-02 to 2018-12-16

When you set elfeed-feeds to an empty list, did you evaluate that
expression before using elfeed-search-fetch (G) or elfeed-update? That
should be a no-op when elfeed-feeds is empty.
The other thing to check is your search filter. The search buffer
listing is updated in full every time a feed completes.
Make sure you have a time cutoff (e.g. @1-week-ago), and sooner is
better.

I have tried delete ~/.elfeed folder in the purpose of testing this. After deleted this folder, elfeed is empty so then i  tried to call elfeed-update to update my feed. But before that, I have  already set filtering only show feed in the last 3 months. So, during the elfeed-update at the first time, everything seem smooth but after 1000 record was fetched, thing start to slow down. It took a while until reach 2000 record and it stuck there for so long but no more record is added beyond this. I doubt if it still fetch more data but only show the last 3 months of record.
If you don't mind, here is my configuration:
(use-package elfeed
  :ensure t
  :config
  (setq
elfeed-search-filter "@3-months-ago "
elfeed-feeds
'("https://www.reddit.com/r/programming/.rss" "https://www.xda-developers.com/feed/" "https://www.reddit.com/r/science/.rss" "https://www.reddit.com/r/kurzgesagt/.rss" "https://www.reddit.com/r/worldnews/.rss" "https://www.reddit.com/r/todayilearned/.rss" "https://www.reddit.com/r/LifeProTips/.rss" "https://www.reddit.com/r/explainlikeimfive/.rss" "https://www.reddit.com/r/DIY/.rss" "https://www.reddit.com/r/technology/.rss" "https://www.reddit.com/r/Android/.rss" "https://www.reddit.com/r/linux/.rss" "https://www.reddit.com/r/archlinux/.rss" "https://www.reddit.com/r/gadgets/.rss" "https://www.reddit.com/r/IAmA/.rss" "https://www.reddit.com/r/Futurology/.rss" "https://www.reddit.com/r/AskMen/.rss" "https://www.reddit.com/r/AskWomen/.rss" "https://www.reddit.com/r/vim/.rss" "https://www.reddit.com/r/YouShouldKnow/.rss" "https://www.reddit.com/r/learnprogramming/.rss" "https://www.reddit.com/r/investing/.rss" "https://www.reddit.com/r/hacking/.rss" "https://www.reddit.com/r/javascript/.rss" "https://www.reddit.com/r/java/.rss" "https://www.reddit.com/r/Piracy/.rss" "https://www.reddit.com/r/homeautomation/.rss" "https://www.reddit.com/r/quotes/.rss" "https://www.reddit.com/r/androidapps/.rss" "https://www.reddit.com/r/HowToHack/.rss" "https://www.reddit.com/r/arduino/.rss" "https://www.reddit.com/r/startup/.rss" "https://www.reddit.com/r/Entrepreneur/.rss" "https://lifehacker.com/tag/linux/rss" )))

Everything seems to work fine when I use this configuration directly,
but I can see how it would slow down over time. Several of these feeds
are very, very busy with several new entries per minute. After a few
days of regular pulling, you're going to end up with tons of entries.
Elfeed can handle this, but only if you don't always ask to see so much
of it all at once. Your broad default filter is constantly refilling and
redrawing the search listing, which puts a huge load on Emacs. That's
the real issue here. Change the default filter to something like
"@3-days-ago +unread" to significantly constrain what's being shown.
FYI, I tested your configuration by putting it (minus the use-package
part), in a file named tmp.el in the repository, then:
$ make clean
$ HOME=. make virtual ARGS='-l tmp.el'

That provides a clean, empty, isolated, temporary test environment. The
special "virtual" target in the Makefile imports a copy of your real
database by default, so the HOME=. part stops this from happening.

Sorry for late reply i was so busy in this month.
By the way, I am not sure what or how could i do your given idea. I have read it many time but still not sure about it. Should i download this Makefile from elfeed repo and then execute your given script:

$ make clean
$ HOME=. make virtual ARGS='-l tmp.el'

And what does it mean by? How it is really work?

That provides a clean, empty, isolated, temporary test environment. The
special "virtual" target in the Makefile imports a copy of your real
database by default.

And especially, this last word, how does it working and what should i do with it?:

so the HOME=. part stops this from happening

I was just describing how I was testing in isolation so you, or anyone
else following along, could reproduce it my tests if needed. You can
just ignore that if it doesn't make sense.

I have tried to reduce to "@15-days-ago +unread" and feed show around a thousand. Around this number, it seem works good.

@testinggithub1222 are you using Flycheck? If so, #448 could fix your problem.


Allow reflectwalk to walk down chains of pointers

reflectwalk currently panics is a dereferenced value turns out to be a
pointer.
The patch allows reflectwalk to continue traversing pointers and
interfaces, calling a PointerWalker at each step if necessary. It will
up to the reflectwalk consumer to determin the level of pointers found
during the walk.

I believe this needs a new test also to verify that PointerEnter/Exit are being called the right number of times. We've implemented "counter" test structs before so I recommend going that route, and also testing through all the crazy interface hoop jumps there too.

Good idea, that also might uncover what I'm seeing rying to fix copystructure

LGTM

Since this is still open, I pushed another related bugfix to this branch.

LGTM, hah!

Merging this since I realized you prob don't have merge (adding you now).


Repeater Plugin API Refactor

Fixes #1022 by refactoring plugin API according to new draft specified in the issue.
Note: these changes do not effect the repeater, repeater-list, and repeater-thumbnail developer APIs, only the plugin API. All functionality in regards to repeater, repeater-list, and repeater-thumbnail remains the same. Developing plugins for the repeater is the only thing that is different (and breaking)

Hey @kevinparkerson , is there some reason you can't rebase onto master instead of merging master into your branch? It's much cleaner in the long run.

Concur. @kevinparkerson should rebase his working branch off of current master.

Closed because I'm creating a new PR to address the merge problems.


cold_storage configuration - I can limit how much old data we need to maintain as active or readily available

I'd love it if old data past n days/years is sent to a bucket or iceberg!


Errors in Sample::AddUserWithUI

XUserHandle user hides variable from the outer scope:
https://github.com/microsoft/Xbox-GDK-Samples/blob/e4d83410b150dbd2d9981f8cbafea530e9cfc4ec/Samples/Live/Fundamentals_Desktop/Fundamentals_Desktop.cpp#L177
resolveAsyncBlock is not used. asyncBlockInner should be replaced to resolveAsyncBlock at #L192 and #L196
I guess deleting asyncBlockInner at #L201 leads to deleting it one more time at L#206

I believe this warning was fixed some time ago. Let us know if it still repros for you.


Make a "don't list"?

Give examples of what NOT to do, and examples of spam commits that aren't helping anyone.

This could potentially be named "Hacktoberfest Quality Standards" as well


Add "ekskom"@ to "mail from" list for send mail to attendees

Since we want to send from an actual list (ekskom@) we can't send from the aliases. We should rather add a reply-to header to the email, which indicates who to reply to.

Made irrelevant by #2370


LightningCSS @custom-media does not work

Stackblitz (https://stackblitz.com/edit/remix-run-remix-bgjqjp?file=app%2Fstyles%2Findex.css)
@custom-media does not work either in dev mode nor production build.
Steps to reproduce:

Uncomment @media (--mx-1) condtion in styles:

/routes/_index.tsx:
const styles = stylex.create({
  x: {
    color: {
      default: 'gray',
      // '@media (width < 1024px)': 'blue',
      '@media (--mx-1)': 'blue',
    },
  },
});

Output log:
12:48:34 PM [vite] Internal server error: Custom media query --mx-1 is not defined
  Plugin: vite:css
  File: vite-plugin:stylex.css:4:1
  2  |  .x1p7i66b{font-family:system-ui,sans-serif}
  3  |  .xwxc2jc{line-height:1.8}
  4  |  @media (--mx-1){.x19mpqw0.x19mpqw0{color:blue}}
     |   ^

Note that the custom css file included in root.tsx processes @custom-media as expected:
/styles/index.css:
@import './reset.css';

@custom-media --mx-1 (width <= 1024px);

.primary {
  // ...

  @media (--mx-1) {
    color: blue;
  }
}

So the problem may be related to the wrong order of importing the styles, e.g. stylex build css simply ignores the @custom-media described in the imported /styles/index.css.
I also added an example of how manual css import using ?url can be handled in remix (so we handle import order from user perspective), but this plugin does not support this feature for manual stylex css import. (addressed in this issue https://github.com/nonzzz/vite-plugin-stylex/issues/11).
import { LinksFunction } from '@remix-run/node';

import $styles from '~/styles/index.css?url';

export const links: LinksFunction = () => [
	// Preload CSS as a resource to avoid render blocking
	// avoid HMR issues in dev mode
	...(!import.meta.env.DEV ? [{ rel: 'preload', href: $styles, as: 'style' }] : []),

	// These should match the css preloads above to avoid css as render blocking resource
	{ rel: 'stylesheet', href: $styles },
];

The example using custom import from similar package vite-plugin-stylex:
/styles/index.css:
@import './core/custom-media.css';
@import './core/reset.css' layer(core);
@import './core/fonts.css' layer(core);

@stylex stylesheet;

This issue may same as #14

Unfortunately, the custom media does not work.. same errors. But can confirm that other LightningCSS related issues have been resolved, very thanks!
Here's a new Stackblitz based on an remix-demo example from the repo.
❯ pnpm dev

> remix-demo@ dev /home/predaytor/remix-stylex
> remix vite:dev

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h + enter to show help
1:37:24 PM [vite] Pre-transform error: Custom media query --mx-1 is not defined
1:37:24 PM [vite] Error when evaluating SSR module /app/Card.tsx: failed to import "vite-plugin:stylex.css"
|- SyntaxError: Custom media query --mx-1 is not defined

❯ pnpm build

> remix-demo@ build /home/predaytor/remix-stylex
> remix vite:build

vite v5.2.8 building for production...
✓ 85 modules transformed.
x Build failed in 922ms
SyntaxError: [vite-plugin-stylex] Custom media query --mx-1 is not defined
    at napi_new_instance (file:///home/predaytor/remix-stylex/node_modules/.pnpm/lightningcss@1.24.1/node_modules/lightningcss/node_modules/napi-wasm/index.mjs:770:19)
    at wasm://wasm/02920906:wasm-function[99]:0x37a6e
    at wasm://wasm/02920906:wasm-function[76]:0x1d52e
    at Object.bundle (file:///home/predaytor/remix-stylex/node_modules/.pnpm/lightningcss@1.24.1/node_modules/lightningcss/node_modules/napi-wasm/index.mjs:262:19)
    at bundleAsync (file:///home/predaytor/remix-stylex/node_modules/.pnpm/lightningcss@1.24.1/node_modules/lightningcss/async.mjs:72:23)
    at Module.bundleAsync (file:///home/predaytor/remix-stylex/node_modules/.pnpm/lightningcss@1.24.1/node_modules/lightningcss/wasm-node.mjs:74:10)
    at compileLightningCSS (file:///home/predaytor/remix-stylex/node_modules/.pnpm/vite@5.2.8_lightningcss@1.24.1/node_modules/vite/dist/node/chunks/dep-whKeNLxG.js:33250:46) {
  fileName: '',
  loc: { line: 9, column: 1 },
  data: { type: 'CustomMediaNotDefined', name: '--mx-1' },
  code: 'PLUGIN_ERROR',
  plugin: 'vite-plugin-stylex',
  hook: 'renderChunk'
}
 ELIFECYCLE  Command failed with exit code 1.

The only change I made was to remove  as it was already obsolete in Remix Vite.
https://remix.run/docs/en/main/future/vite#hmr--hdr

@predaytor My mistake. A typo cause it. I'll release a new version to fix it.

@nonzzz thank you!

Try it now. v0.5.1 has been released.


tokyo cabinet and out of disk space notification

In continuing onward with the tcb performance tarpitting as described in: #886
To handle some monster logs, I have devised the following procedure to keep the parsing speeds over 1KB/s (late in the month), usually the average is around 2KB/s to 3KB/s until around the 25th day of the month.
The directory structure is simple:
logs
logs/.goa  (long term storage for tcb files)
logs/.goaProcess (ephemerol shadow tmpfs for fast goaccess processing)

test if .goa is >3GB (if so continue on with a tmpfs shadow)
if > 3GB: create a tmpfs (du .goa + 3GB) then rsync all of .goa ==> .goaProcess
goaccess --db-path="./goaProcess/" ...
for tcb in ./goaProcess/*.tcb; do tcbmgr optimize -df "${tcb}"; done
rsync .goaProcess back to disk storage .goa

If I don't use the .goaProcess tmpfs, goaccess parsing drops down to ~100KB/s to ~900KB/s range with many stalls.
Anyhow, I made an error with creating the tmpfs .goaProcess, with du -bs .goa + 3GB, it was created at +1GB instead.  During processing, it continued without any problems, however I found that the .goaProcess directory was out of disk space.  This at least answered the question as to why the tcbmgr optimize was failing with invalid metadata errors.
So my question is, is there a way for the tokyo cabinet library to alert goaccess that where it is writing the tcb files to has run out of disk space and thereby the parsing operation can be halted?  If it isn't halted, then the postrun operations can rsync back the corrupted tcb files to .goa long term storage.

FWIW, the largest set of logs I'm dealing with requires around 10GB of .goaProcess tmpfs to handle properly for a full month.  Also, I've never seen a day's disk usage delta be over 2GB, which is why I use 3GB just to be safe.

Interesting findings you got there and thanks for sharing this. I was trying to find a way to prevent further writes if it hits a threshold, but unfortunately I didn't see anything that would do this in tcb.
One way to reduce the size of the database would be using a fixed-length database. Per this document, implementing this shouldn't be too bad since GoAccess is currently using the Abstract Database API  (might be as simple as replacing tcb to tcf extension on these files, haven't tested, though) and adding the following params "mode", "width", and "limsiz" here. BTW, if you don't need the query part from the request, you can remove it using -q, it may help save some space.
Also, it's probably to early to tell but I'm working on refactoring the on-disk implementation and use lmdb instead which appears to outperform tcb. Hope to have some news about this soon.

Would an optimized NoSQL type database work better for this and get away from straight Berkeley db type key/value stores?  It would allow you to have multiple values per key that have fast indexed lookups on the key itself.  I believe it might offer more extensible flexibility in handling more metrics in the future.  With key/value, it can paint you into a corner, that you have to solve by adding more db's to expand its scope/range.
I think my biggest concern with lmdb is that it uses mmap to bring the files into memory and possibly gobbling up tons of memory during its processing.  Also from readings its caveats, it seems that lmdb might be a little bit fragile in production.  My current largest log set is using 9.3GB of tcb (-df optimized) for 27 days.  I do have some that will be much larger, but I will have to handle those differently due to hardware limitations for which they reside.
As for Tokyo Cabinet, shame on their API/implementation for not properly handling an out of disk space condition and bubbling that up to the API consumer.  :(

Using a fixed length db wouldn't really work for us because we have some logs that its referrers are > 1024 chars.  Its not that I want to limit the size of the tcbs, I just want to more accurately allocate the tmpfs storage space, and if I somehow underestimate it, at least running out of disk space won't cause the malformed tcbs from being pushed back to the hard disk since there is no error condition to stop the process.  I will need to add another check and/or sub-process that monitors the disk space while its running and that sidecar process would be able to STOP the main process, resize it on the fly and then kick it with a CONT.  My only consternation is that there are more moving parts being added to handle something that should be dead stopped with an error.

One more thing on Tokyo Cabinet, I have found that tcbs created on Ubuntu, won't work on my Gentoo system.  Both are using the exact same version of tcbmgr and library, but when I try to optimize a tcb written by Ubuntu on a Gentoo system, I get hit with the dreaded metadata error.  :(

Would an optimized NoSQL type database work better for this and get away from straight Berkeley db type key/value stores?

When you said, NoSQL, are you thinking something more like Cassandra? I completely I agree that the ability to have multiple values per key would simplify a lot of things and give much more flexibility when it comes to new metrics.
Having said that, I'd also like to keep goaccess with minimal dependencies, and in the case where there's a dependency, I think it should be accessible without much hassle to install it.  However, as it stands right now, I'm open have a couple of implementations where the user has the option to  switch between them (e.g., default to hash tables for cases where the dataset does fit in memory and an additional on-disk implementation such as tokyo cabinet or fill-in-the-blank-a-db).
As far as lmdb, I still need to play with it and see how it performs. Though, I like the fact that it supports multiple values per key through MDB_DUPSORT. Also, I like the fact that it can make use of multiple cores. There is an FAQ that may clarify some questions. Regarding production ready, as I said, I'll have to run some good tests and see how it goes. There's a list of projects that apparently make use of it in some way, including InfluxDB which at some point I considered.

One more thing on Tokyo Cabinet, I have found that tcbs created on Ubuntu, won't work on my Gentoo system.

Thanks for sharing that. I was not aware of this and that explains why I wasn't able to read some files sent to me as part of a crash report.

Interesting that you mentioned InfluxDB, as I've used it for various metrics handling in our Kubernetes cluster.  More specifically: InfluxDB/Telegraf/Grafana and it seems to work rather well.  We also use Prometheus/Grafana as well since it ties in better to deep Kubernetes (Heapster/etc) metrics.  I can't really say that I like one over the other, however for CLI work, I lean towards InfluxDB for its SQL like interface, vs Prometheus's functional type syntax.  Both (TSDBs) though get the job done rather well for time series storage/query.
I see GoAccess handling metrics like a miner pickaxing a mine, where you read in the log and pick out individual metrics and bin them to key/value stores.  With a time series db, you would just parse/store the logs into the db, and pick out  what you want for the graphs without having to bin everything.
After working with and deep diving GoAccess/TokyoCabinet (TC), I believe that GoAccess is now at the end of the road with TC for several reasons:

overhead of binning the various metrics to many tcb files.
no way to effectively prune out old metrics based on date
metrics binning (KVs) vs metrics query/extraction (TSDBs)
not very flexible for adding new metrics in the future
performance degradation as data set grows and hash collisions become prominent
lack of scaling
lack of fsck/repair utils
inefficient reuse of deleted slots (requiring manual optimize)
etc...

After thinking about it, I believe taking a 2nd look at TSDBs might provide a better future growth path than NoSQL type DBs.  In short, let the TSDBs handle the metric heavy lifting (injection/storage/retrieval) and GoAccess focus on metric extraction/UX.
I really do like GoAccess UX due to its clear and concise view of one's web traffic with an 'at-a-glance-on-the-go' type overview in which it excels.  If one really wants to dive deeper with an analytics bent (also increased administrative complexity), than there are things like Piwik/GoogleAnalytics/customGrafana/SawMill/nowDefunctUrchin(RIP).

Disclaimer, I am a C to Go convert, and have never looked back (for new projects).
Just as an aside, have you looked at re-coding GoAccess into another language, like Go?  The more I worked with the C code, the more I saw a lot of (carefully) allocated string handling and also extensive structs usage that begged for tight methods.
I have been nothing but impressed with Go as it forces one to pretty much error check/handle everything (which is really good), along with struct/methods/composition, extensive library, multiple return values, go fmt, go doc, etc...
There are some custom modules I need to add to GoAccess for our particular infrastructure that will use cgo as the interface.

One more thing I should add, I really like that the Report output (report.html) is an all-inclusive/self-contained single file.  I believe that was a really good design decision.  :)

Since we have talked about Tokyo Cabinet and Go, just wanted to note that I've been doing some work on the Go Tokyo Cabinet library bindings at TerraTech/go-tokyocabinet

Actually I need to make a correction from my previous post, quoting from the current (v1.3) InfluxDB docs, it seems like they are now using their own implementation called Time Structured Merge Tree storage engine:

The 0.8 line of InfluxDB allowed multiple storage engines, including LevelDB, RocksDB, HyperLevelDB, and LMDB. The 0.9 line of InfluxDB used BoltDB as the underlying storage engine

I agree that TC is not really helping where it should be doing its job. I'll be honest, when parsing large logs, I've been spoiled with a machine that it's mostly idle with a bunch of RAM on it so I really haven't had the need for TC very much.
However, I'm aware of the performance issue as the data set grows and hash collisions start to occur, thus the need for a db replacement. Let me give as well a second thought to a TSDB implementation. I'm curious how InfluxDB would play and perform with goaccess, some immediate concerns that I can see here are the need for a JSON parser and SQL.

I really do like GoAccess UX due to its clear and concise view of one's web traffic with an 'at-a-glance-on-the-go' type overview in which it excels. If one really wants to dive deeper with an analytics bent (also increased administrative complexity).

I'm glad to hear you like GoAccess' report.  One of my goals with goaccess is to implement #117, allowing the user to filter the dataset, which is one of the features that I personally need ASAP.

Just as an aside, have you looked at re-coding GoAccess into another language, like Go?

I think implementing this on a language like Go would almost certainly attract more users and perhaps more contributions :) all kidding aside, I haven't really pay much attention of re-coding goaccess in another language. I can't really comment on Go's features, but I've been following Rust for sometime and indeed some of the features are really nice. However, I still don't change the easiness of C's fairly trivial building and running of programs on vanilla *nix.

I've coded in both rust and Go, and I would choose Go most every time for a new project.  The only exception I'd have for rust is if I want to get as close to the metal as possible.  rust has a rather steep learning curve, and I still get frustrated with it.    My biggest speed bumps with Go was a couple things:  1) using channels effectively and 2) using interfaces effectively.  Once I got past that, I could just sit down with a blank page and an idea and just start coding with beat and flow in Go.  Start with mapping out all the interfaces and data structures first, then write the methods to operate and support them.
So if you have taken the time to look at rust, then I would urge you to spend a few days with Go and let me know how you feel about your productivity.  :)
It may seem like I'm a fanboy of Go, but I'm really not, I've just had the pleasure of working with it and really appreciate what it has to offer.  It gives one the flexibility and ease of a scripting language, that compiles down to an all-inclusive single binary.  It also forces good programming techniques on you with its strict typing (which can be both a blessing and a curse).  If one is willing to accept the strict typing and work with it (instead of fighting it), then you are golden.  One more thing to mention, is that by nature I'm a procedural coder, and never really liked OOP or functional type coding, but Go got me to change my mind on that due to how they designed it.  You can mix and match all three styles effortlessly depending on what you are trying to solve and best of all, it just makes sense.
I think this really popped up in my head, as I was seeing a metric ton of untrusted and arbitrary data (that is under an external attacker's control) being fed into a somewhat sophisticated C program with a lot of processing paths.  From a security standpoint, it really does take careful and exceptional C coding to handle that kind of data.  To note, I see that you have spent a large amount of time with your memory management and bounds checking, but the old axiom still exists - you must protect and cover all while an attacker only needs to find one little (missed) pinhole to crawl though.  Even if your code is airtight, you still have to be concerned about all you link to (geoip, tokyocabinet, etc).

v1.4 has been released and uses a new optmizied in-memory storage. A dataset of about 400M hits (74G size) is parsed in ~1H 20 mins (in-memory) consuming about 12GB RAM. Please give it a shot and feel free to share the results.


Possible infinite loop waiting for ethereum backend to be synced

Summary
Using the goerli endpoint and depending on your timezone the function IsSynced may never ends: https://github.com/ethersphere/bee/blob/master/pkg/settlement/swap/transaction/backend.go#L27
I believe that the problem happens because the time delta comparison is not using the same timezone, both should be UTC.
So the blockTime.After may never get in the range of the maxDelay. The maxDelay is hardcoded for one minute in the node.go.
Here are some results of my debug:
BLOCKTIME:  2021-02-10 23:54:26 +0100 CET
MY TIME: 2021-02-10 22:57:05.911896254 +0000 UTC
DELAY TIME:  2021-02-10 22:56:05.911901424 +0000 UTC
TIMEOUT? false
BLOCKNUMBER: 4261271
BLOCKTIME:  2021-02-10 23:54:26 +0100 CET
MY TIME: 2021-02-10 22:57:06.020386141 +0000 UTC
DELAY TIME:  2021-02-10 22:56:06.02040609 +0000 UTC
TIMEOUT? false
BLOCKNUMBER: 4261271

The blocknumber were correct and matched with the ones shown here: https://goerli.etherscan.io/
The time of my machine:
$ timedatectl
               Local time: Wed 2021-02-10 23:58:13 CET
           Universal time: Wed 2021-02-10 22:58:13 UTC
                 RTC time: Wed 2021-02-10 22:58:13
                Time zone: Europe/Oslo (CET, +0100)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

Steps to reproduce
Change your timezone. For example, mine is in Norway (UTC+1).
Run a bee node using goerli endpoint: bee start --swap-endpoint=https://rpc.slock.it/goerli
Expected behavior
The node eventually sync.
Actual behavior
It gets stuck waiting for sync.
Fix
To fix it, I just converted the blockTime to UTC before compare:
blockTime := time.Unix(int64(header.Time), 0).UTC()

Hello, are there any specific steps to modify the block time? I didn't understand it very well when I first arrived. thank you very much.


Initial Meilisearch Support

implements #47

Integration fails now because initially test timeout was set to 10m, raised it to 20m to make it pass, but a better approach would be to make a matrix job which iterates over database and restore/upgrade

During @majst01 vacation, I took over this PR. 😅
I applied the following changes now:

Copying the old meilisearch binary after a backup and use this older version during the upgrade procedure, which no goes "start with old binary" -> "create a dump" -> "import with current binary" -> "done"
Stabilized the tests (integration tests take ~7m now, which I think is ok)

Longer probe timeouts as the wait process in the database pod was killed by K8s all the time, switching into exponential crash loop, which caused delays in the tests
Started the "helper databases" on Port 1 in order to prevent the wait process to assume that Meilisearch is already running during the restoration / upgrade

Proper usage of db-path and dump-dir to avoid a lot of path handling in the implementation
Moved example generation out of the tests into the Makefile, as well as added a start-meilisearch target for dev purposes
Rollback after failed recovery attempt in order not to start with empty database

Still need to think about all the error handling one more time.


[WFLY-14977] Remove unneccesary number object boxing

Fixes https://issues.redhat.com/browse/WFLY-14977

@chengfang Hello Cheng, could you please review and approve this PR?

/retest


Add timer

Demo
Changes

Removed position: absolute in favor of flex
Added a timer for turns

Screenshots
Without timer (default)

With timer
Base

Started

Paused

When time is up

Who are you playing with that needs this?
Not very inclined to merge this, just makes it harder to merge changes from upstream.

I was using Google's timer for this but it's annoying having to switch tabs to reset it after every turn, and to keep telling people about the time they have left.
I'm going to maintain this on my fork for the time being.

Closing this.


Reverted version of a repeatable script should be reapplied.

What version of Flyway are you using?
Flyway 4.0.3 by Boxfuse
What database are you using (type & version)?
SQL Server 2016 Developer Edition
What operating system are you using?
Microsoft Windows 10
What did you do?

I created a repeatable script to create/alter a stored procedure.
I migrated the database.
I made a change to the migration script
I remigrated the database successfully again.
I reverted the change to the repeatable script.
I tried to remigrate the database but it was not reapplied.

What did you expect to see?
The checksum of the migration changed, so I expected the script would be reapplied.
What did you see instead?
But it wasn't applied.  I had a look to the schema_version table and all previous versions are recorded. I guess that Flyway checks if the checksum already exists.
Proposed solution
I think the current scripts' checksum should be compared with the checksums of the latest version of the applied scripts in the database.
That is, if a given checksum is in something like:
select checksum
from <schema>.schema_version sv1
where version is null
  and not exists (
    select 1 from <schema>.schema_version sv2
    where sv1.script = sv2.script and sv1.installed_rank < sv2.installed_rank
  )

this way we would still be able to rename a script without applying it again.

Thanks for reporting! Fixed.