text:
Lost updates

Updates can be lost in the materializer as shown by the following riak_test case: https://gist.github.com/peterzeller/1e5a6ad396bbd9b6831072a94f49e65e
The test is not deterministic, but it will often miss number 10017, 10018, or 10019, which is directly after the garbage collector runs for the first time.
The problem seems to be in the assumption that vector_orddict is an orddict, but it is not.
For example, this assumption is used in clocksi_materializer, line 160, but it does not hold.
The order is reversed in several places, for example in the garbage collector in reverse_and_filter.
Some of the problems were maybe introduced with pull request https://github.com/SyncFree/antidote/pull/185

Thanks for making the test, it helped to find what was going on.
It looks like the bug was that after garbage collection the list of remaining operations was left in the reverse order than what it should be.  There is a function in the materializer "reverse_and_filter" https://github.com/SyncFree/antidote/blob/master/src/materializer_vnode.erl#L518 that was actually "incorrectly" reversing the list of operations.  It looks like I introduced this bug when we switched from using lists to tuples in the materializer which required using a different way to construct the tuple.
I added the fix plus (a slightly modified version of) your test here, see if it works for you:
https://github.com/SyncFree/antidote/commit/28d463badb58e1e4475ec4058aae4af992e76ba6
The reason that none of our current tests caught the bug was that they all used only the most recent snapshot after garbage collection, so it they didn't need to apply any of the old ops after gc.  We should probably make a "concurrency/load suite" of tests to catch things like this.
I will also try to clean up the materializer code a bit and add some text explaining how it works.

Also, just for info, the reason why lists are being reversed is here:
http://erlang.org/doc/efficiency_guide/listHandling.html#id68235

It works for me now. Thanks for the fast fix.

Fixed in https://github.com/SyncFree/antidote/pull/210

authors: peterzeller tcrain

repo: SyncFree/antidote


text:
Pubsub interDC, metadata handling

The pull includes the rewritten interDC layer, Tyler's changes to metadata handling (no more riak_core_metadata, removed vectorclock_vnode, comments from Tyler in the following post), as well as various bug fixes. All the tests are passing.
The main changes in the interDC layer:

ZeroMQ replaces raw TCP as the new message delivery method between DCs,
removed inter_dc_sender and inter_dc_rcvr (single point of failure and a possible bottleneck),
reading from the log is now done only in case of a message loss, and not in normal operation,
pub/sub approach to interDC communication - DCs publish transactions using a best-effort broadcast provided by ZeroMQ, and other DCs subscribe to transaction streams from other DCs,
transactions are now sent separately for each partition, balancing the load and reducing synchronization overhead.

EDIT: resubmitted with merged branch weak_meta_data_cert.

The idea of the meta-data changes is to replace riak-core-meta-data with something more appropriate for calculating the stable time.  The stable time is the min of all observed update timestamps from all nodes within a DC.  This needs to be calculated frequently or else stale data is observed by client transactions.
Basically the new meta-data gives only enough guarantees for this functionality.  It doesn't care about lost messages, persistence, crash and restart from a blank state, it just needs to be a lightweight collection and merging of values.  To do this, there is one fsm running on each erlang node, each vnode on this node will write its observed times to an ets table, the fsm will then merge these values and broadcast them to all other erlang nodes in this dc.  At the receiver end, this data is merged and then can be read by the vnodes on the node from an ets table.  Since for safety all nodes need to eventually participate to increase the time, if a read is done before all nodes have participated you get the initial value.
The merge functions are provided as input to the fsm for collection and sending, so a different function could be used (to take the max for example).  I added this because I will use (slightly) different functions for the partial replication.
The merge functions are in stable_time_functions.erl and the sending/collecting stuff is in meta_data_sender.erl and meta_data_manager.erl
Thing to add:
Right now on every update it checks to make sure the configuration of nodes/vndoes hasn't changed for the check to be sure all nodes have participated, but this should only be done when there was a change, this will be changed.
Send and merge in a tree structure to save work.
Performance:
Here is a 2 dc benchmark with 2 nodes using 2000 keys as counters.  Throughput x read/update ratio.  With riak-core-meta-data and with the new meta-data.  Even though the meta-data calculation is done in the background, using riak-core-meta-data was slowing down the whole system by huge amounts.
(The change also appears to improve the visibility of updates by tens of seconds, but I don't have a precise test for this written)

PS I would have put the meta-data changes in a different pull request, but I haven't quite finished all the pieces for it and it was delaying the pub-sub so they are pulling together.

Here are the latencies for the graphs above (the fall on the right side of the first graph is an artefact due to not being enough operations per time period).  The big latency seems to come from the call to get() in riak-core-meta-data, which is supposed to be a local operation so maybe we were calling it incorrectly?  The reason I was thinking to move away from riak-core-meta-data was because it uses version vectors, disk storage, and has support for more complex conflict resolution built in (all things we don't need) but it would be nice to use its tree dissemination, so maybe we can extract some parts?

@Eipifi @tcrain What is the status of this branch?

New InterDC is on a different branch, the updated version will be submitted via a different pull request. This one can be closed.

source: gharchive/pull-request

authors: Eipifi bieniusa tcrain

license_type: permissive

license_source: bigquery


text:
webhook-improvements

Webhook improvements

changed GET to POST method on runing public webhook
added possibility to provide parameters to run public webhook

LGTM. Other than Circle failing (which I hope they will fix soon) looks good :+1:

authors: jaskooo lifcio

repo: Syncano/syncano-ios

license: mit


text:
[Feature Request] Add SypherEngine to Jitpack

Currently, SypherEngine is just...code. No one can use any parts of the engine, unless they build the whole engine from the source, which is probably not something anyone wants to do unless necessary.
The Solution
Publish SypherEngine on Maven Central, so that it can be installed by build tools.
Alternative
Use Jitpack, which is a popular and simpler alternative to Maven Central.

Hi there! and thanks for your interest in SypherEngine! As for your problem... well, SypherEngine is complete to some extent... but it still lacks enough basic features that are necessary in a game engine... like cameras, and basic collision detection. So I feel that i can't really release SypherEngine for build tools just yet... but once the features are done... will do :P

You can always create a snapshot build, which only people who want to test out whatever you have atm can use, and create a proper build when you feel sypher to be completed

Although I agree with you... I still have to say no. People can test yes... but reinventing the wheel for things that the Game Engine itself should handle is kinda annoying from a user point of view... also tests are lacking and I'd hate to upload the engine API without testing all of its current features

That's understandable, but do publish it somewhere once it's at a usable state! :D

will do! :)

source: gharchive/issue

authors: AurumByte YeffyCodeGit

repo: SypherEngine/SypherEngine

license: MIT

license_source: github-api


text:
Unit of "Presets"

The Presets setting group needed any unit or descriptive subline to make it unequivocal, I never know is it about JPG quality or scaling percentage (or some third "quality"?)
Great job, BTW, to separate the app into tabs, make the setting groups foldable, and finally: Although I'm not a fan of animations in apps I've to say I love the new transition effects you've chosen, especially the tool headers and the explanatory icon animation of the edit tab.

Thanks!
And about presets, it is scaling percentage and jpg quality if it is less than 100 👀
I can add explanation info button like resize types has

Yes!

Let's say my new phone creates huuuuge images and I don't reduce resolution
each time, camera sided, when taking pictures. Now I need only 10 percent
side length of existing images. Then - using presets - I'd get colour
reduced, jaggy results. Shouldn't compression and quality be chosen
independently to avoid that?

In this case you can just adjust quality, and nothing breaks then, saving should work using preset f.e. 40 and 100 quality

I can add explanation info button like resize types has

Yes, please. That might be useful not only for more scroll experts of my sort.


text:
Failed to get batterie status

Hello,
i get the following error messages till some days. Batterie status is not updated.
2024-11-14 03:13:22.792 - error: nissan.0 (839197) Failing to get battery-status for SJNFA********* code: 404
2024-11-14 03:13:22.795 - error: nissan.0 (839197) AxiosError: Request failed with status code 404
2024-11-14 03:13:22.796 - error: nissan.0 (839197) {"timestamp":1731550402769,"status":404,"error":"Not Found","message":"No message available","path":"/bff-web/v1/cars/SJNFA**********/battery-status"}
2024-11-14 03:13:22.944 - error: nissan.0 (839197) Failing to get location for SJNFA********** code: 403
2024-11-14 03:13:22.944 - error: nissan.0 (839197) AxiosError: Request failed with status code 403
2024-11-14 03:13:22.944 - error: nissan.0 (839197) {"errors":[{"status":"403","code":"gateway.processing","title":"VNEXT","detail":"403 Forbidden: "{ "Status": "Unauthorized", "VehicleId": "SJNFAAZ*********", "GroupId": null, "ActivityId": "9d9c8abb-f6fa-4806-8e78-e9b054f2a65d", "MessageId": "bcb495d7-cc3d-4e2d-be63-f841ba0b8750", "MessageType": 2, "Payload": { "ErrorId": "54892e28-8aa3-4195-8c7c-41b2f0cd92a1", "ErrorMessage": "The vehicle is not authorized" }, "Priority": 1, "Time": "2024-11-14T02:13:22.8915699+00:00", "WasErrorResponse": true}"403 FORBIDDEN"}]}

Have you installed the latest beta version? otherwise please install v0.1.7

Exact the same issue here.
v0.1.7 installed.

Would you please check your version? The path /bff-web/v1/cars/SJNFA**********/battery-status is no longer present in the code!

Sorry you was right i did not check out the latest version.
After a crash i reinstalled iobroker and installed the  nissan 0.1.7.
But i still get error messages
2024-11-15 20:03:45.743 - info: nissan.0 (210) starting. Version 0.1.7 (non-npm: TA2k/ioBroker.nissan#fcf34b6ba25566a111fc8a5c18041972df9b6320) in /opt/iobroker/node_modules/iobroker.nissan, node: v20.18.0, js-controller: 6.0.11
2024-11-15 20:03:46.502 - info: nissan.0 (210) Login successful
2024-11-15 20:03:47.151 - info: nissan.0 (210) Found 1 vehicles
2024-11-15 20:03:47.172 - info: nissan.0 (210) Force Refresh is active. Please check your 12V Battery
2024-11-15 20:03:48.700 - info: host.iobroker instance system.adapter.discovery.0 in version "5.0.0" started with pid 225
2024-11-15 20:04:12.990 - error: nissan.0 (210) Failing to get battery-status for SJNFA****** code: 501
2024-11-15 20:04:12.992 - error: nissan.0 (210) AxiosError: Request failed with status code 501
2024-11-15 20:04:12.992 - error: nissan.0 (210) {"errors":[{"status":"Not Implemented","code":"501","title":"Not supported Feature","detail":"This feature is not technically supported by this gateway"}]}
2024-11-15 20:04:13.025 - error: nissan.0 (210) Failing to get location for SJNFA****** code: 403
2024-11-15 20:04:13.026 - error: nissan.0 (210) AxiosError: Request failed with status code 403
2024-11-15 20:04:13.026 - error: nissan.0 (210) {"errors":[{"status":"403","code":"gateway.processing","title":"VNEXT","detail":"403 Forbidden: "{ "Status": "Unauthorized", "VehicleId": "SJNFA******", "GroupId": null, "ActivityId": "e8e90567-a786-4564-ace2-8f533eac910b", "MessageId": "9283178d-62d6-4941-a23d-247d84609bb2", "MessageType": 2, "Payload": { "ErrorId": "bde6b095-dad5-4e02-971b-a8056ccefc9a", "ErrorMessage": "The vehicle is not authorized" }, "Priority": 1, "Time": "2024-11-15T19:04:12.9959313+00:00", "WasErrorResponse": true}"403 FORBIDDEN"}]}

Here my Log (quite the same as BertMoa's:)
2024-11-15 20:20:05.045	error	{"errors":[{"status":"Not Implemented","code":"501","title":"Not supported Feature","detail":"This feature is not technically supported by this gateway"}]}
2024-11-15 20:20:05.044	error	AxiosError: Request failed with status code 501
2024-11-15 20:20:05.038	error	Failing to get battery-status for SJNFAAZE********** code: 501
2024-11-15 20:20:04.475	error	{"errors":[{"status":"403","code":"gateway.processing","title":"VNEXT","detail":"403 Forbidden: "{ "Status": "Unauthorized", "VehicleId": "SJNFAAZE********", "GroupId": null, "ActivityId": "c1c7926c-f0b0-4680-b3ee-259d7409845c", "MessageId": "086f3980-46fc-4ebe-913d-1783a4b0420b", "MessageType": 2, "Payload": { "ErrorId": "18b3b5ae-62f5-450d-a692-7acceb67bcfc", "ErrorMessage": "The vehicle is not authorized" }, "Priority": 1, "Time": "2024-11-15T19:20:04.3858253+00:00", "WasErrorResponse": true}"403 FORBIDDEN"}]}
2024-11-15 20:20:04.474	error	AxiosError: Request failed with status code 403
2024-11-15 20:20:04.464	error	Failing to get lock-status for SJNFAAZE********* code: 403
2024-11-15 20:20:03.793	info	Force Refresh is not active. Updates only when you refresh in the App or via nissan.0.xx.remote.refresh
2024-11-15 20:20:03.768	info	Found 1 vehicles
2024-11-15 20:20:02.640	info	Login successful
2024-11-15 20:20:00.661	info	starting. Version 0.1.7 (non-npm: TA2k/ioBroker.nissan) in /opt/iobroker/node_modules/iobroker.nissan, node: v18.20.4, js-controller: 6.0.11

@TA2k would you please take over. Since I don't have a new leaf ;)

please test the GitHub version

As far as i see - something new:
Instead of:
{"errors":[{"status":"Not Implemented","code":"501","title":"Not supported Feature","detail":"This feature is not technically supported by this gateway"}]}
Now only a warning:
Battery status v2 not available switching to v1
The rest similar as be4...

please wait an update interval after this message

Tnx for your efforts!
But sadly no change at the 2nd interval

I need the log

um welches Fahrzeug handelt es sich

Ein Leaf BJ 2022

Hab eine Warnung auf die App gekriegt, dass am 10.11. wohl eine Wartung anstünde, und ab da ging dann nix mehr, da haben die von Nissan wohl wieder mal an Ihren Servern gebastelt. Die ganze Nissan SW (Auto, App, Cloud) ist ein Pain in the A**. Davon verstehen die offensichtlich gar nix. Interessanterweise funktioniert die MyLeaf App aber nach etwas "Schluckauf" nach der obigen Wartung wieder.

Hab nochmal genauer in den Objekten nachgeschaut:
Seit 0.1.7 kommt alles (z.B. "location", hvac-status"...) bis auf die (nicht ganz unbedeutenden) "battery-status"-Daten wieder herein. Vorher kam überhaupt nichts mehr. Sehr seltsam.
Auch "The vehicle is not authorized" finde ich sehr irritierend...

Bei mir das gleiche Problem wie beschrieben. Leaf Bj. 2023.
warn	Battery status v2 not available switching to v1
error	Failing to get battery-status for SJNFAAZE1....... code: 501
alle anderen Parameter werden offensichtlich gelesen.

0.1.5 geht auch nicht?

Bei der 0.1.5 bekomme ich die nachfolgende meldung
2024-11-16 15:34:53.723 - info: host.7c9ea02bed9e instance system.adapter.nissan.0 in version "0.1.5" started with pid 2904
2024-11-16 15:34:54.509 - info: nissan.0 (2904) starting. Version 0.1.5 in /opt/iobroker/node_modules/iobroker.nissan, node: v20.18.0, js-controller: 6.0.11
2024-11-16 15:34:55.266 - info: nissan.0 (2904) Login successful
2024-11-16 15:34:55.885 - info: nissan.0 (2904) Found 1 vehicles
2024-11-16 15:34:55.900 - info: nissan.0 (2904) Force Refresh is active. Please check your 12V Battery
2024-11-16 15:35:21.845 - error: nissan.0 (2904) Failing to get battery-status for SJNFAA****** code: 501
2024-11-16 15:35:21.847 - error: nissan.0 (2904) AxiosError: Request failed with status code 501
2024-11-16 15:35:21.847 - error: nissan.0 (2904) {"errors":[{"status":"Not Implemented","code":"501","title":"Not supported Feature","detail":"This feature is not technically supported by this gateway"}]}
2024-11-16 15:35:21.990 - error: nissan.0 (2904) Failing to get location for SJNFAA****** code: 403
2024-11-16 15:35:21.991 - error: nissan.0 (2904) AxiosError: Request failed with status code 403
2024-11-16 15:35:21.991 - error: nissan.0 (2904) {"errors":[{"status":"403","code":"gateway.processing","title":"VNEXT","detail":"403 Forbidden: "{ "Status": "Unauthorized", "VehicleId": "SJNFAA******", "GroupId": null, "ActivityId": "d2f4c7ea-6423-4aea-a7b6-c5441d35c03f", "MessageId": "e23cc695-1e1b-41d5-a214-31b748aaae98", "MessageType": 2, "Payload": { "ErrorId": "de1e923f-bbea-46f9-bfc5-c8d93169d650", "ErrorMessage": "The vehicle is not authorized" }, "Priority": 1, "Time": "2024-11-16T14:35:22.660024+00:00", "WasErrorResponse": true}"403 FORBIDDEN"}]}

workaround:
in main.js change line 495
url: 'https://alliance-platform-caradapter-prod.apps.eu2.kamereon.io/car-adapter/v2/cars/$vin/battery-status',
to
url: 'https://alliance-platform-caradapter-prod.apps.eu2.kamereon.io/car-adapter/v1/cars/$vin/battery-status',

@Lummi this has already been implemented see: https://github.com/TA2k/ioBroker.nissan/blob/e831277fd674c1f8a31e8267f801945dafe51f2f/main.js#L529 and https://github.com/TA2k/ioBroker.nissan/blob/e831277fd674c1f8a31e8267f801945dafe51f2f/main.js#L563

passiert schon automatisch
https://github.com/TA2k/ioBroker.nissan/blob/e831277fd674c1f8a31e8267f801945dafe51f2f/main.js#L530
Bräuchte ein Zugang um zu testen

Das replace habe ich gesehen. Scheint aus unerfindlichen Gründen kein replace von v2 nach v1 zu machen.
iob Instanz auf debug gestellt.
Code geändert:
if (this.useLegacyBattery && element.path === 'battery-status') {
this.log.debug('before: ' + url);
url.replace('v2', 'v1');
this.log.debug('after ' + url);
}
Refresh aktiviert
Beide log die gleiche url https://alliance-platform-caradapter-prod.apps.eu2.kamereon.io/car-adapter/v2/cars/SJNFAAZE1...../battery-status)
Kein replace von v2 nach v1 erfolgt
Habe keine Erklärung dafür, deshalb habe ich die v1 fest eingetragen, damit wird jetzt auch der SOC ausgegeben und kein
warn: nissan.0  Battery status v2 not available switching to v1 im iob Protokoll mehr.

jap Fehler von mir.
habe es es jetzt so gebaut das beide abgerufen werden
bitte v0.1.8 testen

geht noch nicht, nimmt jetzt v3 statt v1, auch nach refresh und neustart.
iob Protokoll:
2024-11-22 08:47:44.931	error	{"timestamp":"2024-11-22T07:47:44.909+00:00","status":404,"error":"Not Found","path":"/car-adapter/v3/cars/SJNFAAZE1../battery-status"}
2024-11-22 08:47:44.931	error	AxiosError: Request failed with status code 404
2024-11-22 08:47:44.930	error	Failing to get battery-statusv3 for SJNFAAZE1U.. code: 404
2024-11-22 08:47:37.015	error	{"timestamp":"2024-11-22T07:47:36.993+00:00","status":404,"error":"Not Found","path":"/car-adapter/v3/cars/SJNFAAZE1../battery-status"}
2024-11-22 08:47:37.015	error	AxiosError: Request failed with status code 404
2024-11-22 08:47:37.015	error	Failing to get battery-statusv3 for SJNFAAZE1U.. code: 404
2024-11-22 08:38:54.172	error	{"timestamp":"2024-11-22T07:38:54.150+00:00","status":404,"error":"Not Found","path":"/car-adapter/v3/cars/SJNFAAZE1../battery-status"}
2024-11-22 08:38:54.172	error	AxiosError: Request failed with status code 404
2024-11-22 08:38:54.172	error	Failing to get battery-statusv3 for SJNFAAZE1.. code: 404
2024-11-22 08:38:52.797	info	Skip battery-statusv2 for SJNFAAZE1.. code: 501 until next restart
2024-11-22 08:38:52.797	error	Failing to get battery-statusv2 for SJNFAAZE1.. code: 501
2024-11-22 08:38:49.230	info	Force Refresh is not active. Updates only when you refresh in the App or via nissan.0.xx.remote.refresh
2024-11-22 08:38:49.219	info	Found 1 vehicles
2024-11-22 08:38:48.348	info	Login successful

Korrektur:
Batterie SOC wird übertragen aber iob Protokoll füllt sich mit:
2024-11-22 11:38:50.178 - error: nissan.0 (165916) Failing to get battery-statusv3 for SJNFAAZE1.. code: 404
2024-11-22 11:38:50.178 - error: nissan.0 (165916) AxiosError: Request failed with status code 404
2024-11-22 11:38:50.178 - error: nissan.0 (165916) {"timestamp":"2024-11-22T10:38:50.156+00:00","status":404,"error":"Not Found","path":"/car-adapter/v3/cars/SJNFAAZE1../battery-status"}

bitte die 0.1.12 testen

Hallo scheint auch bei mir zu laufen ( bis jetzt ;-) ).
Eine Frage noch die Zeit für die automatische Aktualisierung ist jetzt auf 120 min. begrenzt ich hatte
hier früher 300 eingetragen kann man das wieder erhöhen? Alle 2 Stunden ist mir eigentlich zu viel
(bzgl. Batterieentladung).

Toll, funktioniert wieder einwandfrei - Danke!
@BertMoa : Also ich hab immer 15min eingestellt und noch nie Probleme mit der 12V Batterie (Orignal - noch nie getauscht) gehabt

Eine Kleinigkeit hab ich noch entdeckt:
SJN.battery-status.batteryAutonomy
wird irgendwie nicht mehr richtig erfasst. Ist aber nicht kriegsentscheidend - nur zur Info

Hallo ich habe mir noch mal die Mühe gemacht und die Stromaufnahme bei einer Aktualisierung durch die App zu messen. Hierbei werden 3A über 1 min 10 sec und 1,2A über 1 min gezogen. Das entspricht 4,7 AMinuten. Sollte man jetzt zwei Wochen im Urlaub sein und die Batterie 50 Ah nur zur Hälfte (25Ah) entladen wollen (zum Starten braucht man ja auch noch Strom). Dann komme ich auf eine Aktualisierungszyklus von 1h. Ich hatte damals 5min eingestellt und da komme ich auf etwas mehr wie einen Tag das ist natürlich zu wendig. Meines Wissens nach lädt die Hochvoltbatterie auch die 12V Batterie ohne Zündung nicht nach. Zumindest war das bei mir so der Fall, sonst wär die Batterie nicht leer gewesen.   @hsnhara : Wenn du 15 min einstellt sind das meiner Rechnung nach etwas mehr als 3 Tage. Wenn du in dieser Zeit die Batterie immer mal wieder lädst (Zündung für längere Zeit an) ist das kein Thema.

@BertMoa: Danke für Deine Mühe - sehr interessant. Tatsächlich fahre ich recht regelmäßig. Wie sieht es eigentlich im angesteckten Zustand aus (angesteckt ladend bzw. nicht ladend)? Hast Du da auch Erkenntnisse?
Falls der Bleiklotz einmal Zicken macht sollte man ein größeres Exemplar transplantieren oder gleich mit LFP ersetzen.
Möglicherweise trifft mich das nicht mehr weil ich recht wahrscheinlich demnächst auf einen E-Megane umsteigen werde - ist aber noch nicht sicher.

authors: BertMoa Lummi TA2k bolliy hsnhara


text:
🛑 Bath City Pastors (website) is down

In 3477cae, Bath City Pastors (website) (https://bathcitypastors.org.uk/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Bath City Pastors (website) is back up in ebf18e2.

repo: TAKK-Consulting/status


text:
Web: User List and Edit Role

Overview
User list and Edit Role already in app. See Members List Tab
Task

[ ] A view with all members. By default display offficer first, then all members
[ ] In the same view allow user to edit title and role

will reopen in the future after more progress

repo: TAMUSHPE/MobileApp


text:
我的树莓派无法分配ip给我的ipad

我的ipad型号是ipad pro2021然后 我的数据线原版的和网上博主推荐的都试过了都无法给我的iPad分配ip

树莓派的型号是4b 4g 和2g版本

而且我也尝试过ipad设置静态ip也没有办法做到访问树莓派,树莓派端也ping不到这个ipad的静态地址

谢谢你的反馈，但是我折腾了几天也没能够复现这个Bug，你可以尝试在配置好后，在正常开机的状况下直接执行/root/usb.sh吗？另外，树莓派连接到的家/公司的Wi-Fi有没有占用10.55.0.X这个地址呢？

ifup: unknown interface usb0

请问解决了吗，我也遇到了同样的问题

authors: HayashiYasuto TANG617 xiaodeme-aha


text:
Define and Document the doc writing process (internal TBD devs x dev rel)

Stretch goal for Phase 2; could go in overall "CONTRIBUTING" section?

This will not go into the contributing doc, the contributing doc is for OS external devs to learn how to work on our projects and how to get involved.
What we're talking about and solving in this Issue is...the docs process for internal devs to add something to the docs or a new project needs to go live, that whole process of collab between dev rel and OSE or just any ENG team on TBD...here is the hackmd draft for this flow so far, we're still working on it final rough draft isn't ready just yet today...https://hackmd.io/@mfCHHFWDRcaHJX3OqGUxLQ/r1dKQLUln/edit

@kirahsapong I did not have as much time today to go over this doc again. Let's set up a time for thursday to go over it again. Async until then. I'm OOO tomorrow.

@bobbilee19 wrote:

What we're talking about and solving in this Issue is...the docs process for internal devs to add something to the docs or a new project needs to go live, that whole process of collab between dev rel and OSE or just any ENG team on TBD

SGTM, so long as it's all public-facing! Eventually we'll have external contributor project leads and they can follow the same process, yeah?

Yeah we can make this page for our devs to see and it can be in a repo after the discussion in HackMD. I'm not sure about it being in the docs-sitemap repo tho, let me think!

Hey we have two issues talking about the same thing, so I'm going to remove this one


text:
fix: rolling deployments race

If we delete the deployments/runners straight away it may still be in some controllers route tables. By adding a small delay we make sure that all the controllers will have updated their table.
This is a pretty nasty hack, but will likely be temporary.
fixes: #2789

I will open an issue, I realized that it is bigger than just this case, it also affects things like subscriptions where one controller can decide the deployment is ready and activate message delivery, and another controller can then start processing messages before it's route table is updated.

I think this will all get resolved by the provisioner. eg. the provisioner won't provision subscriptions until routing tables are provisioned

Currently I don't start subscriptions until route tables are provisioned, however it is local to a single controller, so we don't have a way of knowing that all route tables in all controllers are updated.

Right, but I think as part of this provisioning change we'll need to ensure that routing tables are actually propagated.

What I mean is, each thing created by the provisioner will need to guarantee that it's fully propagated before it's counted as provisioned.

authors: alecthomas stuartwdouglas


text:
Handle Unmarshaling of arbitrary JSON values

Presently, for many of our object types we only unmarshal fields that are well known, defined in our object model. This has a risk to drop fields that may be present and spec-compliant, but not in our object model. We shouldn't drop there properties.
As a solution, we can maintain a wrapper object for each type that contains both our known object model and the raw json in case there are extra properties. We can consider using a library to make this easier such as https://github.com/Jeffail/gabs or https://github.com/antonholmquist/jason

I did this with with an Additional map[string]json.RawMessage field and a custom UnmarshalJSON(bytes []byte) error method.
https://pkg.go.dev/github.com/pascaldekloe/did#VerificationMethod
Extension on document level would simply extend the struct as follows.
type MyDIDDoc struct {
        did.Document // core
        MyCustomProperty string `json:"myCustomP"`
}

@pascaldekloe this would be preferable - yes!

authors: decentralgabe pascaldekloe


text:
ValueError: ChatGLMForConditionalGeneration does not support gradient checkpointing.[BUG/Help]

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /media/ranch/sda1/code/ChatGLM-6B/ptuning/main.py:430 in                                 │
│                                                                                │
│   427                                                                                │
│   428                                                                                │
│   429 if name == "main":                                                                 │
│ ❱ 430 │   main()                                                                                │
│   431                                                                                │
│                                                                                │
│ /media/ranch/sda1/code/ChatGLM-6B/ptuning/main.py:367 in main                                    │
│                                                                                │
│   364 │   │   │   checkpoint = training_args.resume_from_checkpoint                              │
│   365 │   │   # elif last_checkpoint is not None:                                                │
│   366 │   │   #     checkpoint = last_checkpoint                                                 │
│ ❱ 367 │   │   model.gradient_checkpointing_enable()                                              │
│   368 │   │   model.enable_input_require_grads()                                                 │
│   369 │   │   train_result = trainer.train(resume_from_checkpoint=checkpoint)                    │
│   370 │   │   # trainer.save_model()  # Saves the tokenizer too for easy upload                  │
│                                                                                │
│ /media/ranch/sda1/anaconda3/lib/python3.9/site-packages/transformers/modeling_utils.py:1612 in   │
│ gradient_checkpointing_enable                                                                    │
│                                                                                │
│   1609 │   │   activations".                                                                     │
│   1610 │   │   """                                                                               │
│   1611 │   │   if not self.supports_gradient_checkpointing:                                      │
│ ❱ 1612 │   │   │   raise ValueError(f"{self.class.name} does not support gradient check  │
│   1613 │   │   self.apply(partial(self._set_gradient_checkpointing, value=True))                 │
│   1614 │                                                                                │
│   1615 │   def gradient_checkpointing_disable(self):                                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ValueError: ChatGLMForConditionalGeneration does not support gradient checkpointing.
Expected Behavior
No response
Steps To Reproduce
bash ds_train_finetune.sh
Environment
- OS:ubuntu
- Python:3.9
- Transformers:4.29.2
- PyTorch:2.0.1
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :

Anything else?
运行bash ds_train_finetune.sh报错。
deepspeed==0.9.3
torch==2.0.1
torchvision==0.15.2
transformers==4.29.2

Using the latest repo in hugging face will solve this problem.


text:
tiled encode on AutoencoderKLCogVideoX from Diffusers

Feature request  / 功能建议
From zRzRzRzRzRzRzR/diffusers commit
Only the decoded tiles are segmented. Consider improving GPU efficiency by directly loading the vae.encoder.sampler results during the training process. After completing the ImagePix encoding in the offline process, train again. It is found that using a longer frame 3D encoding cache memory consumes too much. So that it cannot fulfill expectations.
Motivation / 动机
Encode longer videos.
Your contribution / 您的贡献
None

If the VAE encoder is added, the memory usage for a single run should be around 71G, because the VAE does not perform the aforementioned operations. During the training phase (if using SAT), you can use fakecp to optimize in a manner similar to the decoder.

fakecp

_FakeCPConvolutionPassFromPreviousRank?

是的
def fake_cp_pass_from_previous_rank(input_, dim, kernel_size, cache_padding):
return FakeCPConvolutionPassFromPreviousRank.apply(input, dim, kernel_size, cache_padding)

authors: xesdiny zRzRzRzRzRzRzR

repo: THUDM/CogVideo


text:
AttributeError: 'Namespace' object has no attribute 'use_qlora'

For torch.distributed users or loading model parallel models, set environment variables RANK, WORLD_SIZE and LOCAL_RANK.
/root/miniconda3/lib/python3.8/site-packages/torch/nn/init.py:405: UserWarning: Initializing zero-element tensors is a no-op
warnings.warn("Initializing zero-element tensors is a no-op")
Traceback (most recent call last):
File "cli_demo.py", line 103, in
main()
File "cli_demo.py", line 30, in main
model, model_args = AutoModel.from_pretrained(
File "/root/miniconda3/lib/python3.8/site-packages/sat/model/base_model.py", line 282, in from_pretrained
model = get_model(args, model_cls, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/sat/model/base_model.py", line 305, in get_model
model = model_cls(args, params_dtype=params_dtype, **kwargs)
File "/mnt/niujie.nj/VisualGLM-6B/finetune_visualglm.py", line 20, in init
elif args.use_qlora:
AttributeError: 'Namespace' object has no attribute 'use_qlora'

Please use the latest github code.


text:
CSPlugin-aputiedostojen siirtäminen pysyvämpään paikkaan

https://svn.cc.jyu.fi:n sertifikaatti ei ilmeisesti menee enää läpi kunnolla:
ERROR: cannot verify svn.cc.jyu.fi's certificate, issued by ‘CN=GEANT OV RSA CA 4,O=GEANT Vereniging,C=NL’:
  Unable to locally verify the issuer's authority.

Laitoin pikakorjauksen tälle (f8cf0802a4ee966753136733f9eaa73700711cdb), mutta jatkossa olisi hyvää pohtia, mihin cspluginin eri aputiedostot laitetaan.

[x] Java ja tietokannat siirretty
[ ] kurssi 1
[ ] kurssi 2 ...

Kaikki svn.cc.jyu.fi viitteet TIM-koodissa nyt vaihdettu gitlab.jyu.fi:hin. Laitan kiinni, koska meidän kannalta JYU:n GitLab on ihan hyvä paikka toistaiseksi (ja jos tulee tarve siirtyä, se onnistuu melko nopeasti). Vielä jää #3195, mutta se on oma juttu erikseen.

repo: TIM-JYU/TIM


text:
Refactor qst plugin attributes for lecture questions

Refactors setting task/lecture question attributes for qst plugins.

removes redundant 'dquestion="true"' attribute for document questions ie. tasks
lecture questions will now be created only when qst's question attribute has the value 'true', ie.

{#lec plugin="qst" question="true"} will create a lecture question
{#task plugin="qst"}, {#task plugin="qst" question="false"} , {#task plugin="qst" question=""}, {#task plugin="qst" question="abcde..."} will all create a document task

QST plugin templates in the document editor will no longer have a dquestion or question attribute by default
The document/edit mouse menu function 'Add question above' will add either the question="true" attribute (if it was a lecture question) or question="false" (if it was a document task)
Allowed plugins/attributes for macro expansion are controlled with ALLOWED_MACRO_PLUGIN_TYPES and ALLOWED_MACRO_PLUGIN_ATTRS

Todos:

[x] Fix timeLimit being set for non-lecture tasks (see failing tests for details)
[x] Fix question-edit-dialog not updating question attribute value when editing a question
[x] Fix reversed values for question attr when adding questions/tasks with question-edit-dialog

this will also fix tests failing because of wrong screenshots

[x] Fix 'question="false"' creating lecture questions instead of document tasks

Only create lecture questions with 'questions="true"', otherwise it will be a document task (qst)

[x] Refactor editor templates for QST
[x] Expand macros in plugin attributes to enable easy mass conversion from lecture questions (ie. 'question="true") to tasks ('question="false"') via document setting macros

Known issues:

Tämä nyt testattavana https://timdevs01-4.it.jyu.fi/lecture/users/test-user-1/test-qst
Sellainen bugi näyttäisi olevan, että dokumentti menee rikki, jos yrittää käyttää makroa, jota ei ole settingsissä 'macros:' alla. Korjailen tuon vielä ja sitten pitäisi olla melkolailla valmis. Tähän toki voi vielä päivittää noita sallittuja plugineja/attribuutteja makrotusta varten, jos keksii samantien sellaisia mille on käyttöä.

Tämä nyt korjattu ja päivitetty timdevsiin.

testauksella 15, 20 tai 50 kpl satunnaistettua makrotettua QST-pluginia ei näyttänyt hidastavan (silmämääräisesti, en vielä mitannut tuota). Saattoi

Voisi kokeilla mitä vaikuttaa Ohj1 monisteen tim.jyu.fi/view/1 aikaan
tuotannossa vs testikoneessa.

Missäsä muodossa attribuutit ovat?  Jos ne ovat kokonaan tekstinä aluksi,

Eivät ole tekstina, vaan dictina. Eipä tuohon olisi kaukaa haettua, että jollain attribuutilla voisi sanoa, että attribuutit haetaan myös makrosta. Tosin se vaatiisi oman PR:n koska tämä PR keskittyy vain pluginien attribuutteihin eikä yleisesti mihin tahansa attribuuttiin.

Eivät ole tekstina, vaan dictina. Eipä tuohon olisi kaukaa haettua, että jollain attribuutilla voisi sanoa, että attribuutit haetaan myös makrosta.
Tosin se vaatiisi oman PR:n koska tämä PR keskittyy vain pluginien attribuutteihin eikä yleisesti mihin tahansa attribuuttiin.

Siis eikös nyt puhuttu niistä lohkon otsikon #- { } välissä olevista
attribuuteista.  ja siis samoin ```.
Tuohonhan tais kerran vielä olla se keskustelu jos
saisi että tuo #- on ainoa tapa tehdä lohkoja (myös plugineja).  Tosin
se ei tuohon attribuuttien avaamiseen vaikuttane kumallako tavalla lohko
(plugin) on merkitty.  Mutta ilman muuta voi olla eri PR.

authors: dezhidki saviit vesal


text:
Newborn Enrolment - set the birth date automatically at newborn registration form

#1308

repo: TIP-Global-Health/eheza-app


text:
🛑 CHECKS LATAM API is down

In cba22d8, CHECKS LATAM API ($CHECKS_API_LATAM) was down:

HTTP code: 0
Response time: 0 ms

Resolved: CHECKS LATAM API is back up in 5b30a39 after 15 minutes.

repo: TKS-IT/status-page


text:
Importance of importing 'pdfjs-dist/web/pdf_viewer.css'

Hello Sir,
it may be just me, but I guess it should be stated somewhere quite prominently that since commit a2c662e  from July 10, 2023,
import 'pdfjs-dist/web/pdf_viewer.css';

is necessary if any of text-layer or annotation-layer are used; otherwise, the canvas and the layers won't overlay at all.  Or would it be
import '@tato30/vue-pdf/style.css'

? But I can't find that one anywhere except in the updated examples in /docs.
Best regards

That is explained in the documentation website and the css import could be from '@tato30/vue-pdf/style.css' or 'pdfjs-dist/web/pdf_viewer.css' both should works; but you're right, that info should be stated in the README too.

that info should be stated in the README too.

README updated.


text:
harib14b

コンソールを作ろう

フォーカスされているウィンドウだけタイトルバーを青く表示するのを作ろう

repo: TaiseiIto/hariboslinux


text:
fix(TUP-26310): Odd behavior using JDBC Connection in Studio (#1621)

What is the current behavior? (You can also link to an open issue here)
https://jira.talendforge.org/browse/TDI-44825
What is the new behavior?
https://jira.talendforge.org/browse/TDI-44825
Please check if the PR fulfills these requirements

[x] The commit message follows Talend standard
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features) ?
[ ] The code coverage on new code >75%
[ ] The new code does not introduce new technical issues (sonar / eslint)

What kind of change does this PR introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build / CI related changes
[ ] Other... Please describe:

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Pull request test result: success :star:

authors: build-talend-common wwang-talend

repo: Talend/components


text:
switch back to Spring MVC over CXF

removed cxf to go back to spring MVC for the REST api service.
fixed json serialization to use json-io for all object but the swagger objects. Swagger objects will be using Jackson serialization.

Pull request test result: failure :x:

Pull request test result: success :star:

Pull request test result: success :star:

Pull request test result: success :star:

authors: build-talend sgandon


text:
onMount Error is not revalidated when the user changes the input

Describe the bug
If you have an onMount that returns an error on the first render, changing the value after that does not remove the error.
Your minimal, reproducible example
https://stackblitz.com/edit/vitejs-vite-yjklcs?file=src%2FApp.tsx
Steps to reproduce
Open the reproduction and see that the onMount returns error, but after changing the value the error still remains.
Expected behavior
The onMount error should be revalidated (removed) after user changes the value.
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
OS: Linux
Browser: Chrome
Version: 124.0.63
TanStack Form adapter
None
TanStack Form version
^0.19.4
TypeScript version
^5.4.5
Additional context
No response

Hey @crutchcorn, is there a public timeline/kanban board/etc. somewhere where we can gauge an estimate for how long it will be until this might be worked on? I ask because I can see it's not assigned to anyone to fix in the meantime.

This is the public timeline/board :)

repo: TanStack/form


text:
Status of useMutation not shared across usages/components with custom hook (like useQuery does)

Describe the bug
Imagine creating a custom hook (let's name it useTodos) which is used in multiple components and uses useQuery and useMutation inside.
When using useQuery, its status (and the helpers isLoading, isError, ...) are shared across multiple usages of useTodos.
For useMutation, this is not true. Every usage of useTodos will have its own mutation status.
To Reproduce
Here's a CodeSandbox that shows the behavior.
It shows two components that both use useTodos.
For GET requests (via useQuery), the status is shared across the components.
For POST requests (via useMutation), the status is different for both components. Only the component who executes the mutation will have the status "error".

Expected behavior
I understand that useQuery has one precise query key to identify "the same hook". Mutations are not like that.
In my case, I had a list that showed items (like "Todos") and a child component that was supposed to create a new item (like "Todo"). Naturally, I used useTodos in both components and wanted to show an error in the List component. The problem is isError was never true, only the child component's one was.
function TodoList() {
  // this "isError" here will never be true, only the <Todo> component's "isError" will
  const { todos, isError } = useTodos();

  return (

Todos:

      {isError &&
Error!
}

        {todos.map((todo) => (
          <Todo todo={todo} />
        ))}

  );
}

function Todo({ todo }: { todo: Todo | null }) {
  const { createTodo } = useTodos();

  return (

      {todo ? (

{todo.title}

      ) : (

          <button onClick={() => createTodo(...)}>Create</button>
          <input ... />
           ...

      )}

  );
}

I'm using React Query for a while now and being used to useQuery having a shared status, I wasted time checking my mutation implementation ("Why is the error not thrown?" etc.), but in reality useQuery and useMutation just behave differently and differently than expected.
I would really like to let useMutations share their status across all components.
There's already a mutationKey, which could maybe used for this exact use case.

Yes, I was also surprised by this, but mutationKey is not required, unlike the queryKey, so we can't really create a subscription like for useQuery. Mutations are also imperative so it just doesn't happen very often I guess. What we do have is the useIsMutating hook, similar to the useIsFetching hook, so that you know when a mutation is in-flight, and you can filter these by mutationKey. With that, you can e.g. disable all buttons that would trigger the same mutation. Not sure how that would fix the error situation though - but you can take a look how to create a subscription to the mutationCache by looking at the impl of useIsMutating:
https://github.com/tannerlinsley/react-query/blob/master/src/react/useIsMutating.ts

@TkDodo Thanks for the feedback and possible workaround.
I could also create my own React context and save isError or ' isLoading` there, so all components have the same status - I just thought it'd be nice to let React Query provide this out of the box.
Could you move this issue to the discussions, so we keep it there as a "feature request"?

I have similar "Idea" under the discussions section - https://github.com/tannerlinsley/react-query/discussions/2294

Feel free to move this issue to the discussions, so we keep it there as a "feature request".

let's keep here, I'd like to analyze how hard it would be to actually use the mutationKey to achieve that functionality, or if that would be a breaking change.

I always attach mutationKey and then got to the part where i needed to share if it ever succeeded or failed count and same thing. Thanks for bringing up this topic, it was first hit on search engine. I should have searched first rather then assume.

I was very surprised to find this out today when my mutation hook wasn't working as expected. I've also run into issues like the one described here as well as #2294. Losing transient mutation state like isLoading or error when your component changes contexts is unfortunate.
It made me start to wonder why there's such a strong conceptual distinction between queries and mutations, when at the end of the day they're both just abstractions around some promise that returns data, generally an HTTP request.
You could almost use useQuery in place of useMutation today if it exposed the imperative functions like mutate and mutateAsync and if it had a callback like onMutate. The key difference between the two hooks seems to come down to configuration, e.g. queries execute on lifecycle events by default, mutations do not retry by default, etc. I could imagine both of these hooks being thin wrappers around some other hook that provides all the common functionality, such as useRequest. This could even simplify some of the internals for RQ - one cache instead of separate query and mutation cache.
I could easily be overlooking some important details or underestimating the complexity, but I do agree that the state behavior of useMutation is not intuitive and inconsistent with useQuery.

@stefan-toubia it is something that is on my mind for quite some time. What it mutations were conceptually "just" disabled queries, where mutate or mutateAsync just calls refetch() 🤔 .
Not only would that get rid of a ton of internal code (MutationCache, Mutation, MutationObserver, ...), it would also, at the same time, add a lot of features for mutations, like sharing data, select and other options.
Of course, we could still turn off some of the options and / or set different default values for useMutation.
However, when I went down that road, there is one thing that works inherently different from queries:
useQuery instantly creates an observer, but useMutation only does it after .mutate is called. Further, if you call .mutate multiple times, the previous observer is unsubscribed automatically. That is necessary so that callbacks of .mutate are only called once. However, callbacks on useMutation itself are actually cache level callbacks, which will execute any time the mutation succeeds / fails, even if the observer has already unmounted. That is important, and something that doesn't exist on the query cache itself.
Feel free to take a look at the implementation (best on v4 directly, alpha branch), the road would need to be a merging of the two slightly different functionalities. Would love to have it but I don't have enough time to look into it right now :)

Just thought to provide code for another workaround for this issue, which doesn't require manually keeping state but still allows different components to share the same mutation object. As mentioned, just wrap a react context around the custom hook and the desired functionality will be achieved.
https://codesandbox.io/s/silent-frost-mjxlrf?file=/src/App.js
const CustomMutationProvider = ({ children }) => {
  const mutation = useMutation({
    mutationKey: "UpdateData",
    mutationFn: async () => {
      // Fake api call
      await new Promise((resolve, reject) => setTimeout(reject, 2000));
    }
  });
  return (
    <CustomMutationContext.Provider value={mutation}>
      {children}
    </CustomMutationContext.Provider>
  );
};
const CustomMutationContext = React.createContext();
const useCustomMutation = () => React.useContext(CustomMutationContext);

And use like so:

export default function App() {
  return (

      <QueryClientProvider client={queryClient}>
        <CustomMutationProvider>
          <ComponentA />
          <ComponentB />
        </CustomMutationProvider>
      </QueryClientProvider>

  );
}
const ComponentA = () => {
  const { mutate, status } = useCustomMutation();
  return (

Component A

      Status: {status}

      <button onClick={mutate}>Update</button>

  );
};
const ComponentB = () => {
  const { mutate, status } = useCustomMutation();
  return (

Component B

      Status: {status}

      <button onClick={mutate}>Update</button>

  );
};

If I understood the reason correctly, the following worked for me:
  // workaround for https://github.com/TanStack/query/issues/2304   // instead of useIsMutating   const [isMutating, setIsMutating] = useState(false);   useEffect(() => {     return queryClient.getMutationCache().subscribe(({ type, mutation }) => {       if (         type === 'updated' &&         mutation.options.mutationKey?.[0] === 'KEY' // your predicate here       ) {         setIsMutating(mutation.state.status === 'loading');       }     });   }, []);

I got into this today. My current workaround is
const address = useAppSelector(selectAddress);
const queryKey = ["getShippingZone", address.zipCode];
const result = useQuery(queryKey, getShippingZone, {
  meta: address as IndexSignature<typeof address>,
});

async function getShippingZone({ meta }: QueryFunctionContext<...>) {
  const address = meta as unknown as Address;
  ...
}

type IndexSignature<O extends object> = {
  [P in keyof O]: O[P] extends object ? IndexSignature<O[P]> : O[P];
};

where you need to pass variables through meta option. (which is very vulnerable in typing, and not really recommended as other developers wouldn't think that's what meta should be used for). But for this case where I anyway save address in a global state, I think it's worth to do.

Based on @TkDodo answers https://github.com/TanStack/query/issues/2304#issuecomment-1013139242, I've implemented my useCustomMutation that uses useQuery to share data between components.
My first use-case that requires that useMutation share data across components was a multi-step form in react-native (ps: in react-native, the stack navigation doesn't unmount the previous screen) where at the first page, we need to get an AuthToken, we do it onPress of a button by the user, so it makes sense to be a mutation at this point, but I faced that if I need to get the token on subsequent screens, it will not be there, so that's why of the implementation.
The useCustomMutation follows the exactly same API of useMutation
export const useCustomMutation = <TData = unknown, TError = unknown, TVariables = unknown, TContext = unknown>(
  mutationKey: MutationKey,
  mutationFn: MutationFunction<TData, TVariables>,
  options?: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, 'mutationKey' | 'mutationFn'>
): UseMutationResult<TData, TError, TVariables, TContext> => {
  const query = useQuery<TData, TError>(
    ['CustomMutation', mutationKey],
    async () => await Promise.resolve(false as unknown as TData),
    { retry: false, cacheTime: Infinity, staleTime: Infinity }
  )
  const queryError = useQuery<TError, TData>(
    ['CustomMutationError', mutationKey],
    async () => await Promise.resolve(false as unknown as TError),
    { retry: false, cacheTime: Infinity, staleTime: Infinity }
  )
  const mutation = useMutation<TData, TError, TVariables, TContext>(
    mutationKey,
    async (...params) => {
      queryClient.setQueryData(['CustomMutationError', mutationKey], false)
      return await mutationFn(...params)
    },
    {
      ...options,
      onSuccess: (data, variables, context) => {
        queryClient.setQueryData(['CustomMutation', mutationKey], data)
        if (options?.onSuccess) options.onSuccess(data, variables, context)
      },
      onError: (err, variables, context) => {
        queryClient.setQueryData(['CustomMutationError', mutationKey], err)
        if (options?.onError) options.onError(err, variables, context)
      },
    }
  )
  const isLoading = useIsMutating(mutationKey)

  // We need typecasting here due the ADT about the mutation result, and as we're using a data not related to the mutation result
  // The typescript can't infer the type correctly.
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
  return {
    ...mutation,
    data: query.data,
    isLoading: !!isLoading,
    error: queryError.data,
    isError: !!queryError.data,
  } as UseMutationResult<TData, TError, TVariables, TContext>
}

You can find it also on a gist: https://gist.github.com/antoniel/1f8d59f7e3f73487e5ba02a293fb39ec

TGhanks @antoniel for sharing, I think that onSuccess etc will only fire if the component remains mounted. I think you'll have to move the success/error into the queryFn.

Any updates? Using the context API is solves the problem but it is still a bad solution.

@antoniel 's solution worked for me as well. I used the useQueryClient hook to get the queryClient.

Are there any updates?

Any updates?

Updates ?

So I don't waste any more time on this, can someone tell me if this is possible, please?
I want to extract all the queries and mutations for a particular API endpoint into their own file so I can import them where needed
e.g. get (query), get_all (query), create (mutation), update (mutation) and delete (mutation) for say the user's endpoint are grouped together in their own file.
This works fine for queries and I can query endpoints anywhere in my code by importing a wrapped anonymous function that returns a useQuery function:
// ./api/UserData.tsx

...

export const getAllUsers = () => {
  const authHeader = useAuthHeader();

  return useQuery<UserModel[], Error>({
    queryKey: ['users'],
    queryFn: async () => {
      const response = await fetch("http://localhost:8000/users", {
        method: 'GET',
        headers: {
          "Content-Type": "application/json",
          "Authorization": authHeader()
        }
      });

      const data = await response.json();

      if (!response.ok) {
        throw new Error(`Network response was not ok - ${response.status}: ${data.detail}`);
      }

      return data;
    },
    onError: async (error:Error) => {
      console.log(error);
    }
  });
}

...

// ./api/index.ts

import { getAllUsers, ... } from "./UserData";

export {
    getAllUsers,
    ...
};

and then I just import the function in the file I need it in
// ./folder/file.tsx

import { getAllUsers } from "~/api"
...
const userData = getAllUsers();
...

but I'm struggling to do the same with mutations as it doesn't seem to import properly as the mutate function doesn't exist when I import the createUser function:
export const createUser = () => {
  const authHeader = useAuthHeader();
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: async (newUser:UserModel) => {
      const response = await fetch("http://localhost:8000/users", {
        method: 'POST',
        headers: {
          "Content-Type": "application/json",
          "Authorization": authHeader()
        },
        body: JSON.stringify(newUser)
      });

      const returnedData = await response.json();

      if (! response.ok) {
        throw new Error(`Network response was not ok - ${response.status}: ${returnedData.detail}`);
      }

      return returnedData;
    },
    onSuccess: (data:UserModel) => {
      console.log(data)
      queryClient.invalidateQueries(["users"]);
    },
    onError: async (error:Error) => {
      console.log(error)
    }
  });
}

I get:
Property 'mutate' does not exist on type '() => void'
when I do:
createUser.mutate(formData);

After reading through this issue I'm guessing this isn't currently possible, am I correct?
thanks in advance

Any updates?

Well, yes. There will likely be something in v5, but it will not mean that useMutation will share state, because every invocation of useMutation.mutate creates a new, completely separate mutation entry. It's fundamentally different from useQuery.
Instead, we will likely have a new hook useMutationState() where you can pass in filters and potentially a selector. It's like useIsMutating (which in fact is now implemented with useMutationState) but for arbitrary fields of the mutation, like data or error or something derived. It will always return an array, because unlike queries, there can be multiples even for the exact same mutationKey by just calling mutate twice on the same "instance".
changes are somewhere in this PR if you're interested:

https://github.com/TanStack/query/pull/4814

@Chunkford I don't think your problem has anything to do with this issue. Please just open a separate discussion (discussion, not issue 😉)

v5 PR was merged

authors: Chunkford JasoonX Noitidart SzabKel TkDodo andrecrimb antoniel bennettdams cdpark0530 leotuna nextrapi stefan-toubia welcomemax zVolodymyr

repo: TanStack/query


text:
Search parameters get overridden on page load

Which project does this relate to?
Start
Describe the bug
export const Route = createFileRoute('/')({
  component: Home,
  validateSearch: z.object({
    step: z.enum(['a', 'b', 'c']).optional(),
  }),
  loaderDeps: ({ search: { step } }) => ({ step }),
  loader: async ({ deps: { step } }) => {
    if (step === undefined) {
      throw redirect({
        to: '/',
        search: ({ step: _, ...search }) => ({ ...search, step: 'a' }),
      })
    }
  },
})

When I navigate to /, it is expected that I get redirected to /?step=a - this works as expected.
However, when I navigate to /?step=b, I get redirected to /, and then subsequently get redirected to /?step=a.
No errors get thrown when I navigate to to /?step=b, which leads me to assume that the search parameters were properly validated by the Zod schema under validateSearch.
It is expected that when I navigate to /?step=b, that I would stay on /?step=b without being redirected to / and subsequently /?step=a.
This bug occurs irrespective of this redirect logic being placed in:

beforeLoad,
loader, or
in component with a useEffect over Route.useSearch({ select: ({step}) => step })

Your Example Website or App
https://stackblitz.com/edit/tanstack-router-txrzyl?file=app%2Froutes%2Findex.tsx
Steps to Reproduce the Bug or Issue

Go to https://stackblitz.com/edit/tanstack-router-txrzyl?file=app%2Froutes%2Findex.tsx
Press Open Preview in new tab and press Connect to project - notice that you get automatically redirected from / to /?step=a.
Try navigate to /?step=b.

Expected behavior
That I stay on /?step=b as it conforms to the Zod schema provided under validateSearch.
Screenshots or Videos
No response
Platform

OS: [e.g. macOS, Windows, Linux] macOS
Browser: [e.g. Chrome, Safari, Firefox] Chrome
Version: [e.g. 91.1] Version 126.0.6478.183 (Official Build) (arm64)

Additional context
No response

Just to clarify, I tested to see if this bug can be reproduced on Tanstack Router and it cannot be reproduced. This issue only occurs with Tanstack Start.

working example for router:
https://stackblitz.com/edit/tanstack-router-f9yax9?file=src%2Froutes%2Findex.tsx&preset=node

authors: lithdew schiller-manuel

repo: TanStack/router


text:
Security issue: Rename .env file to prevent credentials leak

If the file is not manually properly secured, in production the file .env may be accessible by anyone by just visiting the site as example.com/.env. If that's the case, database and mail (SMTP, …) passwords may be exposed.
That's why you'd be better of by renaming it to .env.php (or similar) as the file is then parsed by every usual webserver and thus not displayed as plain-text when visiting the site.
BTW: Your website is down or not yet set up.

I think renaming .env to .env.php will be pain for developer with editor using autodetect language, linter or code fixer (e.g. php-cs-fixer).
But, +1 for not use .env in production. Already mentioned in The Dotenv Component, better use "real" environment variables.

Symfony Dotenv should only be used in development/testing/staging environments. For production environments, use "real" environment variables.

Or so… In any case keep them out from potentially accessible files.

@rugk I put the .env-example file just for listing all the environment variables. Actually, in production, it will be better to use the real environment variables. Well, I should give a new condition here https://github.com/Tanibox/tania/blob/master/app/AppKernel.php to not load the .env file while it in production mode.
Btw, yes the gettania.org is down. We are attempting to migrate it to Github project page.

authors: bepitulaz rugk ucay

repo: Tanibox/tania


text:
Chromecast discovery problems

Currently the library has some issues on discovering chromecasts on some computers.
I was thinking of switching from RSSDP to https://github.com/tmds/Tmds.MDns library which should better support discovery of chromecast devices.

SSDP was used in GoogleCast v1 SDK.
mDNS is the primary way of discovering a Chromecast that supports the v2+ API.
Personnaly, I used Zeroconf to discover the devices.

I was looking into Zeroconf but not really happy with the reactive dependency.
I want to decrease the number of dependencies on SharpCaster so that's why I was looking into Tmds.MDns.
On the other hand have you tested the zeroconf implementation on multiple devices successfully? Especially interested on computers with multiple virtual network cards and multiple private ips.

I will switch to Tmds.MDns library in a near future as it seem really reliable on desktop and mobile usage.

Fixed #119

authors: Tapanila kakone

repo: Tapanila/SharpCaster


text:
chore: increments chart version

Adds changelog messages
Increments chart version

prnet cleaned-up successfully

authors: rattrap taraxadeploy

repo: Taraxa-project/taraxa-node


text:
embedControl in designer showing as one black screen

Describe the bug
embedControl inside TcMenu designer is shown as one giant black window
To Reproduce
Run the latest stable version of TcMenu designer in Windows. Others systems have to be tested.
Expected behavior
I will see the content of the window.
Screenshots - optional

Desktop UI issue (please complete the following information):

OS: Windows
Version Win 11
Designer Version and any other relevant details: 4.2.2

I think maybe the colors scheme set up is somehow messed up, I will check again how they got migrated from the old format into SQLite, can you try:

Your suggestion didn't help. Also I found another bug: Once I change the color scheme and hit Save, after I leave this settings page and go back, the changes are not reflected. I always see just the global color settings without any custom colors.

OK, I think the logs may be needed to work out what's going on here.

I will provide them later.

I don't see anything unusual in logs but I include them anyway. It is the full output from the moment of starting the designer.
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking for table TC_CONNECTION
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking format of TC_CONNECTION
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Table - TC_CONNECTION, changed= false
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking for table TC_FORM
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking format of TC_FORM
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Table - TC_FORM, changed= false
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking for table GLOBAL_SETTINGS
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking format of GLOBAL_SETTINGS
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Table - GLOBAL_SETTINGS, changed= false
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking for table GLOBAL_SETTING_COLORS
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking format of GLOBAL_SETTING_COLORS
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Table - GLOBAL_SETTING_COLORS, changed= false
[2024-08-27 16:50:30] INFO DatabaseAppDataStore: Get global settings from store
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking for table TC_MENU_SETTINGS
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Checking format of TC_MENU_SETTINGS
[2024-08-27 16:50:30] INFO TccDatabaseUtilities: Table - TC_MENU_SETTINGS, changed= false
[2024-08-27 16:50:30] INFO JdbcTcMenuConfigurationStore: Loaded all configuration
[2024-08-27 16:50:30] INFO JdbcTcMenuConfigurationStore: Loaded initial designer settings asLoadedConfiguration{changed=false, projectMaxLevel=1, numberBackups=20, registeredKey='', lastLoadedProject='null', lastRunVersion='4.3.0', arduinoOverrideDirectory='null', libraryOverrideDirectory='null', locale='sk_SK', recursiveNaming=false, saveToSrc=true, eepromSized=true, usingArduinoIDE=false, releaseStream=STABLE, currentTheme='lightMode'}
[2024-08-27 16:50:30] INFO JdbcTcMenuConfigurationStore: Getting extra plugins
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Traversing C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins for plugins
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Plugin xml found in C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins\core-display
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loading plugins in directory C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins\core-display
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin dfRobotJoystick.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin dfRobotLcd.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin i2cLiquidCrystalDisplay.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin liquidCrystalDisplay.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin adaArduinoSimpleBuilder.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin adaGfxDisplay.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin u8g2SimpleBuilder.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin u8g2Display.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin tftSpiDisplay.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin ssd1306asciiDisplayQuickStart.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin ssd1306asciiDisplay.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin rotaryEncoderInput.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin upDownSwitchesInput.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin oneButtonSwitchesInput.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin twoButtonSwitchesInput.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin analogJoystickInput.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin analogResistiveTouchScreen.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin ArduinoTouchLibraryIntegration.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin esp32TouchSensor.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin matrixKeyboard.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin EmbeddedJFX.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin adaMbedOled.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin adafruitTrueCpp.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin stm32BspFrameBuffer.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin noInput.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin noDisplay.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin customDrawable.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin customDisplay.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Plugin xml found in C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins\core-remote
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loading plugins in directory C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins\core-remote
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin noRemote.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin remoteSerial.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin remoteEthernet.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin remoteSerialESP.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin remoteWifiESP.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin remoteMbedEthernet.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin remoteStdio.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin simhubConnector.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin JavaNetworkRemote.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin JavaWebServerRemote.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Plugin xml found in C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins\core-themes
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loading plugins in directory C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins\core-themes
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin CoolBlueModern.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin CoolBlueTraditional.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin DarkModeModern.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin DarkModeTraditional.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin MonoBorderedTitle.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin MonoInverseTitle.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin ManualTheme.xml
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Loaded plugin NoThemeSelected.xml
[2024-08-27 16:50:30] WARNING DefaultXmlPluginLoader: Non plugin directory was skipped (no tcmenu-plugin.xml) C:\Users\vladi\Klienti\TcMenu\tcMenu\xmlPlugins\examples
[2024-08-27 16:50:30] INFO DefaultXmlPluginLoader: Plugins are now fully loaded
[2024-08-27 16:50:31] INFO TccProjectWatcherImpl: Watch Thread starting
[2024-08-27 16:50:31] INFO CurrentProjectEditorUIImpl: creating new panel for menu item editing 0
[2024-08-27 16:50:31] INFO OnlineLibraryVersionDetector: Starting to acquire version, cache not present or timed out
[2024-08-27 16:50:31] INFO JdbcTcMenuConfigurationStore: Saving designer settingsLoadedConfiguration{changed=true, projectMaxLevel=1, numberBackups=20, registeredKey='', lastLoadedProject='null', lastRunVersion='4.3.0', arduinoOverrideDirectory='null', libraryOverrideDirectory='null', locale='sk_SK', recursiveNaming=false, saveToSrc=true, eepromSized=true, usingArduinoIDE=false, releaseStream=STABLE, currentTheme='lightMode'}
[2024-08-27 16:50:31] INFO CurrentProjectEditorUIImpl: Showing splash screen
[2024-08-27 16:50:32] INFO OnlineLibraryVersionDetector: Version information fully loaded.
[2024-08-27 16:50:41] INFO RemoteConnectionPanel: Trying to start the connection SimulatorConnectionCreator{name='test'}
[2024-08-27 16:50:41] INFO RemoteConnectionPanel: Started the connection SimulatorConnectionCreator{name='test'}
[2024-08-27 16:50:41] INFO RemoteMenuController: Connection state changed to connected = ESTABLISHED_CONNECTION
[2024-08-27 16:50:41] INFO RemoteMenuController: Connection state changed to connected = AUTHENTICATED
[2024-08-27 16:50:41] INFO RemoteMenuController: Connection state changed to connected = BOOTSTRAPPING
[2024-08-27 16:50:41] INFO RemoteMenuController: Connection state changed to connected = CONNECTION_READY
[2024-08-27 16:50:41] INFO IntHorizontalSliderComponent: Updating editor for Voltage id(1), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO IntHorizontalSliderComponent: Updating editor for Current id(2), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO IntegerUpDownEditorComponent: Updating editor for Limit id(3), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO IntegerUpDownEditorComponent: Updating editor for Limit id(3), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Settings id(4), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Pwr Delay id(5), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Save all id(10), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Advanced id(11), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for S-Circuit Protect id(12), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Temp Check id(13), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for RGB id(26), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Status id(7), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Volt A0 id(8), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Volt A1 id(9), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Connectivity id(14), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Ip Address id(15), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO MenuSelectButtonEditorComponent: Updating editor for IoT Monitor id(27), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO MenuSelectButtonEditorComponent: Updating editor for Authenticator id(28), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Rom Values id(20), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Choice id(25), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Choice id(25), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Location id(24), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Location id(24), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Rom Text id(21), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Save item id(23), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Take display id(17), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Simulator Options id(60001), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO IntHorizontalSliderComponent: Updating editor for Voltage id(1), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO IntHorizontalSliderComponent: Updating editor for Current id(2), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO IntegerUpDownEditorComponent: Updating editor for Limit id(3), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO IntegerUpDownEditorComponent: Updating editor for Limit id(3), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Settings id(4), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Pwr Delay id(5), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Save all id(10), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Advanced id(11), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for S-Circuit Protect id(12), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Temp Check id(13), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for RGB id(26), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Status id(7), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Volt A0 id(8), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Volt A1 id(9), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Connectivity id(14), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Ip Address id(15), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO MenuSelectButtonEditorComponent: Updating editor for IoT Monitor id(27), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO MenuSelectButtonEditorComponent: Updating editor for Authenticator id(28), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Rom Values id(20), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Choice id(25), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Choice id(25), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Location id(24), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO ScrollUpDownEditorComponent: Updating editor for Rom Location id(24), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Rom Text id(21), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Save item id(23), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO BoolButtonEditorComponent: Updating editor for Take display id(17), status is RECENT_UPDATE
[2024-08-27 16:50:41] INFO TextFieldEditorComponent: Updating editor for Simulator Options id(60001), status is RECENT_UPDATE
[2024-08-27 16:50:42] INFO IntHorizontalSliderComponent: Updating editor for Voltage id(1), status is NORMAL
[2024-08-27 16:50:42] INFO IntHorizontalSliderComponent: Updating editor for Current id(2), status is NORMAL
[2024-08-27 16:50:42] INFO IntegerUpDownEditorComponent: Updating editor for Limit id(3), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Settings id(4), status is NORMAL
[2024-08-27 16:50:42] INFO IntHorizontalSliderComponent: Updating editor for Voltage id(1), status is NORMAL
[2024-08-27 16:50:42] INFO IntHorizontalSliderComponent: Updating editor for Current id(2), status is NORMAL
[2024-08-27 16:50:42] INFO IntegerUpDownEditorComponent: Updating editor for Limit id(3), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Settings id(4), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Pwr Delay id(5), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Status id(7), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Volt A0 id(8), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Volt A1 id(9), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Save all id(10), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Advanced id(11), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for S-Circuit Protect id(12), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Temp Check id(13), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Connectivity id(14), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Ip Address id(15), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Take display id(17), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Rom Values id(20), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Rom Text id(21), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Save item id(23), status is NORMAL
[2024-08-27 16:50:42] INFO ScrollUpDownEditorComponent: Updating editor for Rom Location id(24), status is NORMAL
[2024-08-27 16:50:42] INFO ScrollUpDownEditorComponent: Updating editor for Rom Choice id(25), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for RGB id(26), status is NORMAL
[2024-08-27 16:50:42] INFO MenuSelectButtonEditorComponent: Updating editor for IoT Monitor id(27), status is NORMAL
[2024-08-27 16:50:42] INFO MenuSelectButtonEditorComponent: Updating editor for Authenticator id(28), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Simulator Options id(60001), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Pwr Delay id(5), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Status id(7), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Volt A0 id(8), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Volt A1 id(9), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Save all id(10), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Advanced id(11), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for S-Circuit Protect id(12), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Temp Check id(13), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Connectivity id(14), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Ip Address id(15), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Take display id(17), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Rom Values id(20), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Rom Text id(21), status is NORMAL
[2024-08-27 16:50:42] INFO BoolButtonEditorComponent: Updating editor for Save item id(23), status is NORMAL
[2024-08-27 16:50:42] INFO ScrollUpDownEditorComponent: Updating editor for Rom Location id(24), status is NORMAL
[2024-08-27 16:50:42] INFO ScrollUpDownEditorComponent: Updating editor for Rom Choice id(25), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for RGB id(26), status is NORMAL
[2024-08-27 16:50:42] INFO MenuSelectButtonEditorComponent: Updating editor for IoT Monitor id(27), status is NORMAL
[2024-08-27 16:50:42] INFO MenuSelectButtonEditorComponent: Updating editor for Authenticator id(28), status is NORMAL
[2024-08-27 16:50:42] INFO TextFieldEditorComponent: Updating editor for Simulator Options id(60001), status is NORMAL

Please can you use any database tool (Squirrel is a free SQL editor) that supports H2DB and open the database "~/.tcmenu/h2db/tcmenuConfig" then send me the contents of GLOBAL_SETTING_COLORS. Otherwise zip up the contents of that directory and email them to me, and I'll open the database to check it myself. I thjink I know what's going wrong, but I need to see what's saved to check.

I emailed the zip file. However, I don't know where to find the color settings in Designer.

The issue was reproduced and it occurrs only when users use the light mode. Fix should be easy.

authors: davetcc vzahradnik

repo: TcMenu/tcMenu


text:
Furnace style crafting option.

Allow users to set Artis tables to a custom version that requires crafting time whenever it crafts an item. The crafting time would be designated by the recipes for that table (and could be set to 0 for instant craft).

furnace style? I was thinking you could make the ability to add custom furnace types with this mod

I'm closing this because I agree, I do think just implementing custom furnaces would be the better idea here.

repo: TeamAOF/Artis


text:
🛑 hostux.net is down

In 4c2e995, hostux.net (https://piped-api.hostux.net/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: hostux.net is back up in 7c78c5d after 57 minutes.

repo: TeamPiped/piped-uptime


text:
🛑 rivo.lol is down

In ec38766, rivo.lol (https://pipedapi.rivo.lol/healthcheck) was down:

HTTP code: 404
Response time: 440 ms

Resolved: rivo.lol is back up in 63408de after 31 minutes.


text:
🛑 vyper.me is down

In 85c5a7d, vyper.me (https://yapi.vyper.me/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: vyper.me is back up in 6483d3e after 21 minutes.


text:
🛑 astartes.nl is down

In 04d7973, astartes.nl (https://pipedapi.astartes.nl/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: astartes.nl is back up in 75db834 after 1 hour.


text:
🛑 esmailelbob.xyz is down

In 0c5eee1, esmailelbob.xyz (https://pipedapi.esmailelbob.xyz/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: esmailelbob.xyz is back up in 3ab5b55.


text:
🛑 kavin.rocks (Official) is down

In 27e6ed2, kavin.rocks (Official) (https://pipedapi.kavin.rocks/healthcheck) was down:

HTTP code: 502
Response time: 321 ms

Resolved: kavin.rocks (Official) is back up in 762a402 after 27 minutes.


text:
🛑 ngn.tf is down

In 234f2cc, ngn.tf (https://pipedapi.ngn.tf/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ngn.tf is back up in 817c5e1 after 9 minutes.


text:
🛑 il.ax is down

In b565ade, il.ax (https://pa.il.ax/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: il.ax is back up in 5da08db after 12 minutes.


text:
🛑 tokhmi.xyz is down

In d6a868d, tokhmi.xyz (https://pipedapi.tokhmi.xyz/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: tokhmi.xyz is back up in 0356baf.


text:
🛑 astartes.nl is down

In c3d0d98, astartes.nl (https://pipedapi.astartes.nl/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: astartes.nl is back up in 9481590.


text:
🛑 astartes.nl is down

In af93894, astartes.nl (https://pipedapi.astartes.nl/healthcheck) was down:

HTTP code: 0
Response time: 0 ms

Resolved: astartes.nl is back up in 729df55.


text:
🛑 Tax Portal is down

In 7330ed7, Tax Portal (https://portail.tax.gov.ma) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Tax Portal is back up in 55c29ff.

repo: TebbaaX/DownTime-Score


text:
Thank you very much for the free open source program!

Hello, thank you very much for a good program under a free open source license! Added a program to a Russian-language site about free software, here is the link.
The project is interesting, so please don't abandon it!

Thanks for the appreciation and support. Your support is a valuable asset for us.

authors: mrkaban skinan

repo: TechLearnersInc/Free-Hash-Checker


text:
Upgrade to Crystal v0.30.0

and some other goodies like formatter and CI on nightlies.
Enable Travis' cron to enjoy them fully.

🎉

authors: TechMagister bcardiff


text:
🛑 Kirschenman Enterprises Inc is down

In cbff450, Kirschenman Enterprises Inc (https://www.kirschenman.com/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Kirschenman Enterprises Inc is back up in 0445fbd after 1 hour.

repo: TechSavagery/uptime-monitoring


text:
odoo signature Uncaught TypeError: node.className.match is not a function

I know this is an old closed issue but I still has the issue with odoo signature widget and cannot fix it.
I beleive this is not a bug on code because I have develop ambient with previous version of copier and on productive environment with newes copier template site i have the issue.
When I do click on signature widget I get this message:
Uncaught TypeError: node.className.match is not a function
https://myserver.com/web/content/618-e72739b/web_editor.assets_wysiwyg.js:444
Traceback:
TypeError: node.className.match is not a function
at Object.dom.isVoid (https://myserver.com/web/content/618-e72739b/web_editor.assets_wysiwyg.js:444:2184)
at dom.isNotBreakable (https://myserver.com/web/content/616-d856350/web_editor.summernote.js:504:1012)
at WrappedRange.range.WrappedRange.reRange (https://myserver.com/web/content/616-d856350/web_editor.summernote.js:507:507)
at reRangeSelect (https://myserver.com/web/content/618-e72739b/web_editor.assets_wysiwyg.js:460:99)
at HTMLDocument.summernote_mouseup (https://myserver.com/web/content/618-e72739b/web_editor.assets_wysiwyg.js:463:274)
at HTMLDocument.dispatch (https://myserver.com/web/content/613-c52537e/web.assets_common.js:1024:447)
at HTMLDocument.elemData.handle (https://myserver.com/web/content/613-c52537e/web.assets_common.js:1010:166)

Some insight?

I think this is because traefik labels missing options, im not good on traefik labels jet.
My Odoo log says:
odoo.http: <function Binary.get_fonts at 0x7ff4208b09d8>, /web/sign/get_fonts: Function declared as capable of handling request of type 'json' but called with a request of type 'http'

Its good to mention that with old labels the issue is not present but n new labels configuration is appearing.
My old traefik labels:
traefik.longpolling.frontend.rule: "Host:${DOMAIN_PROD};PathPrefix:/longpolling/"
traefik.www.frontend.rule: "Host:${DOMAIN_PROD}"
traefik.forbid-crawlers.frontend.rule: "Host:${DOMAIN_PROD};PathPrefix:/web,/web/{anything:.},/website/info,/website/info/{anything:.}"
traefik.alt-0.frontend.redirect.regex: "^(.)://${DOMAIN_PROD_ALT_0}/(.)$$"
traefik.alt-0.frontend.redirect.replacement: "$$1://${DOMAIN_PROD}/$$2"
traefik.alt-0.frontend.rule: "Host:${DOMAIN_PROD_ALT_0}"
traefik.alt-1.frontend.redirect.regex: "^(.)://${DOMAIN_PROD_ALT_1}/(.)$$"
traefik.alt-1.frontend.redirect.replacement: "$$1://${DOMAIN_PROD}/$$2"
traefik.alt-1.frontend.rule: "Host:${DOMAIN_PROD_ALT_1}"
# Main service
traefik.http.middlewares.recpa-prod-13-0-prod-buffering.buffering.retryExpression:
IsNetworkError() && Attempts() < 5
traefik.http.middlewares.recpa-prod-13-0-prod-compress.compress: "true"
traefik.http.routers.recpa-prod-13-0-prod-main.entrypoints: "web-main"
traefik.http.routers.recpa-prod-13-0-prod-main.middlewares:
recpa-prod-13-0-prod-buffering,
recpa-prod-13-0-prod-compress
traefik.http.routers.recpa-prod-13-0-prod-main.rule: "host(${DOMAIN_PROD})"
traefik.http.routers.recpa-prod-13-0-prod-main.service: "recpa-prod-13-0-prod-main"
traefik.http.routers.recpa-prod-13-0-prod-main.tls: "true"
traefik.http.routers.recpa-prod-13-0-prod-main.tls.certresolver: "letsencrypt"
traefik.http.services.recpa-prod-13-0-prod-main.loadbalancer.server.port: 8069
# Redirect alternative domains to main domain
traefik.http.middlewares.recpa-prod-13-0-prod-redirect2main.redirectregex.regex: "^https://([^/]+)/(.*)$$"
traefik.http.middlewares.recpa-prod-13-0-prod-redirect2main.redirectregex.replacement: "https://${DOMAIN_PROD}/$${2}"
traefik.http.routers.recpa-prod-13-0-prod-altdomains.entrypoints: "web-main"
traefik.http.routers.recpa-prod-13-0-prod-altdomains.middlewares:
recpa-prod-13-0-prod-compress,
recpa-prod-13-0-prod-redirect2main
traefik.http.routers.recpa-prod-13-0-prod-altdomains.rule:
Host(${DOMAIN_PROD_ALT_0}, ${DOMAIN_PROD_ALT_1})
traefik.http.routers.recpa-prod-13-0-prod-altdomains.service: "recpa-prod-13-0-prod-main"
traefik.http.routers.recpa-prod-13-0-prod-altdomains.tls: "true"
traefik.http.routers.recpa-prod-13-0-prod-altdomains.tls.certresolver: "letsencrypt"
# Longpolling service
traefik.http.routers.recpa-prod-13-0-prod-longpolling.entrypoints: "web-main"
traefik.http.routers.recpa-prod-13-0-prod-longpolling.rule:
"host(${DOMAIN_PROD}) && pathprefix(/longpolling/)"
traefik.http.routers.recpa-prod-13-0-prod-longpolling.service: "recpa-prod-13-0-prod-longpolling"
traefik.http.services.recpa-prod-13-0-prod-longpolling.loadbalancer.server.port: 8072
traefik.http.routers.recpa-prod-13-0-prod-longpolling.tls: "true"
traefik.http.routers.recpa-prod-13-0-prod-longpolling.tls.certresolver: "letsencrypt"
# Forbid crawlers
? traefik.http.middlewares.recpa-prod-13-0-prod-forbid-crawlers.headers.customResponseHeaders.X-Robots-Tag
: "noindex, nofollow"
traefik.http.routers.recpa-prod-13-0-prod-forbidden-crawlers.entrypoints: "web-main"
traefik.http.routers.recpa-prod-13-0-prod-forbidden-crawlers.middlewares:
recpa-prod-13-0-prod-buffering,
recpa-prod-13-0-prod-compress,
recpa-prod-13-0-prod-forbid-crawlers
traefik.http.routers.recpa-prod-13-0-prod-forbidden-crawlers.rule:
Host(${DOMAIN_PROD}) && Path(/web, /web/{anything:.*}, /website/info, /website/info/{anything:.*})
traefik.http.routers.recpa-prod-13-0-prod-forbidden-crawlers.service: "recpa-prod-13-0-prod-main"
traefik.http.routers.recpa-prod-13-0-prod-forbidden-crawlers.tls: "true"
traefik.http.routers.recpa-prod-13-0-prod-forbidden-crawlers.tls.certresolver: "letsencrypt"
New site labels:
 doodba.domain.main: "my.domain.com"
  traefik.enable: "true"
  traefik.forbiddenCrawlers-0.frontend.headers.customResponseHeaders:
    "X-Robots-Tag:noindex, nofollow"
  traefik.forbiddenCrawlers-0.frontend.rule: Host:my.domain.com;Path:/web{anything:/.*},/website/info{anything:/.*}
  traefik.main-0.frontend.rule: Host:my.domain.com
  traefik.longpolling-0.frontend.rule: Host:my.domain.com;Path:/longpolling/{anything:.*}
  traefik.longpolling-0.port: 8072
  traefik.http.middlewares.fieldservice2021-13-0-prod-buffering.buffering.retryExpression:
    IsNetworkError() && Attempts() < 5
  traefik.http.middlewares.fieldservice2021-13-0-prod-compress.compress: "true"
  ? traefik.http.middlewares.fieldservice2021-13-0-prod-forbid-crawlers.headers.customResponseHeaders.X-Robots-Tag
  : "noindex, nofollow"
  traefik.http.middlewares.fieldservice2021-13-0-prod-forceSecure.headers.forceSTSHeader: "true"
  traefik.http.middlewares.fieldservice2021-13-0-prod-forceSecure.headers.sslRedirect: "true"
  traefik.http.services.fieldservice2021-13-0-prod-main.loadbalancer.server.port: 8069
  traefik.http.services.fieldservice2021-13-0-prod-longpolling.loadbalancer.server.port: 8072
  traefik.http.routers.fieldservice2021-13-0-prod-main-0.rule:
    Host(`my.domain.com`)
  traefik.http.routers.fieldservice2021-13-0-prod-main-0.service:
    fieldservice2021-13-0-prod-main
  traefik.http.routers.fieldservice2021-13-0-prod-main-0.middlewares:
    fieldservice2021-13-0-prod-buffering, fieldservice2021-13-0-prod-compress, fieldservice2021-13-0-prod-forceSecure
  traefik.http.routers.fieldservice2021-13-0-prod-main-secure-0.rule:
    Host(`my.domain.com`)
  traefik.http.routers.fieldservice2021-13-0-prod-main-secure-0.service:
    fieldservice2021-13-0-prod-main
  traefik.http.routers.fieldservice2021-13-0-prod-main-secure-0.middlewares:
    fieldservice2021-13-0-prod-buffering, fieldservice2021-13-0-prod-compress, fieldservice2021-13-0-prod-forceSecure
  traefik.http.routers.fieldservice2021-13-0-prod-main-secure-0.tls: "true"
  traefik.http.routers.fieldservice2021-13-0-prod-main-secure-0.tls.certResolver:
    letsencrypt
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-0.rule:
    Host(`my.domain.com`) && PathPrefix(`/longpolling/`)
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-0.service:
    fieldservice2021-13-0-prod-longpolling
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-0.middlewares:
    fieldservice2021-13-0-prod-forceSecure
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-secure-0.rule:
    Host(`my.domain.com`) && PathPrefix(`/longpolling/`)
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-secure-0.service:
    fieldservice2021-13-0-prod-longpolling
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-secure-0.middlewares:
    fieldservice2021-13-0-prod-forceSecure
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-secure-0.tls: "true"
  traefik.http.routers.fieldservice2021-13-0-prod-longpolling-secure-0.tls.certResolver:
    letsencrypt
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-0.rule:
    Host(`my.domain.com`) && (PathPrefix(`/web/`, `/website/info/`) || Path(`/web`, `/website/info`))
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-0.service:
    fieldservice2021-13-0-prod-main
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-0.middlewares:
    fieldservice2021-13-0-prod-buffering, fieldservice2021-13-0-prod-compress, fieldservice2021-13-0-prod-forbid-crawlers, fieldservice2021-13-0-prod-forceSecure
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-secure-0.rule:
    Host(`my.domain.com`) && (PathPrefix(`/web/`, `/website/info/`) || Path(`/web`, `/website/info`))
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-secure-0.service:
    fieldservice2021-13-0-prod-main
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-secure-0.middlewares:
    fieldservice2021-13-0-prod-buffering, fieldservice2021-13-0-prod-compress, fieldservice2021-13-0-prod-forbid-crawlers, fieldservice2021-13-0-prod-forceSecure
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-secure-0.tls: "true"
  traefik.http.routers.fieldservice2021-13-0-prod-forbiddenCrawlers-secure-0.tls.certResolver:
    letsencrypt

This seems a duplicate of #166.

authors: Yajo carlosecv

repo: Tecnativa/doodba-copier-template


text:
Feature request: UT framework ocmp layer for fe

Product: (OC-SDR, OC-LTE, OC-LTE, OC-Power, others)
Unit test
Component: (PSU, GBC, BBU, FEM, LED, ME)
GBC
Category: (Hardware, Software/stack, Firmware/bootloader, Documentation)
Software/stack
Describe the solution you'd like
Add UT testcases for src/devices/ocmp_wrappers/ocmp_fe.c
Approach :
Most of the functions in this file is static .There is a fxntable with a list of function pointers pointing to these static functions . We will use these function pointers to call the functions from test file. For I2C register and GPIO access , the existing fake_i2c and fake_gpio infrastructure will be used . Validation will be done based on the return values and output variables.
Test Criteria :
The Unity framework should be successful for all the planned testcases .
The testcase list should be updated with the newly added testcases .

Code is merged into master.

authors: JoshuaJeyaraj swateeshrivastava

repo: Telecominfraproject/OpenCellular