VSCode TypeScript error suggestions are slow

Issue Type: Performance Issue
Hello all! Sorry about the vague title.
Our project has had ongoing performance issues with TSC / VSCode, where VSCode is generally very sluggish to update its TypeScript error/warning state.
A few libraries we use may be culprits, but it's difficult to track down what's going on, or if this kind of performance is expected. Two libraries that may be causing us issues are<EMAIL_ADDRESS>and<EMAIL_ADDRESS>I've been able recently to isolate a specific example: when changing a token to something invalid, it takes ~2-3 seconds for a response from TS. This in itself feels slow, but possibly acceptable. However, performance in day-to-day work for our devs can sometimes become really bad, taking up to 10 seconds or just becoming unstable.
I've attached some logs from when I hit the s key on the token onChange, making it become invalid: Isolated Logs.txt
As the stats below show, we do have a large-ish file graph, but it's not too crazy.
I'm happy to provide as much information as needed. Really appreciate any help with this!
VS Code version: Code 1.43.2 (0ba0ca52957102ca3527cf479571617f0de6ed50, 2020-03-24T07:34:57.037Z)
OS version: Darwin x64 19.3.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz (16 x 2400)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_off_okwebgl: enabledwebgl2: enabled

Load (avg)
2, 2, 2

Memory (System)
32.00GB (10.69GB free)

Process Argv
--disable-extensions

Screen Reader
no

VM
0%

Process Info
CPU %	Mem MB	   PID	Process
   10	   131	 79867	code main
    5	    98	 79896	   gpu-process
    0	    33	 79909	   utility
    6	   393	 79911	   window (Isolated Logs.txt — client)
    0	    98	 79950	     extensionHost
    0	    66	 80458	       /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer) /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/json-language-features/server/dist/jsonServerMain --node-ipc --clientProcessId=79950
    0	    98	 91429	       electron_node tsserver.js
    0	   819	 91430	       electron_node tsserver.js
    0	    66	 91431	         electron_node typingsInstaller.js typesMap.js
    0	    33	 91222	     watcherService
    0	    66	 91937	     searchService
   52	    98	 80062	   shared-process
    0	     0	 99638	     /bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,command=
   49	    66	 99630	   window (Issue Reporter)

Workspace Info
|  Window (Isolated Logs.txt — client)
|    Folder (client): 9241 files
|      File types: js(3185) map(2350) tsx(912) ts(875) svg(253) scss(193)
|                  png(71) css(40) jpg(36) json(18)
|      Conf files: package.json(4) tsconfig.json(1) tslint.json(1)
|                  settings.json(1);

Extensions disabled

From the logs, the longest request is encodedSemanticClassifications-full.
Can you test if setting "editor.semanticHighlighting.enabled": false fixes the issue?
Also please try upgrading your workspace to use typescript@next by installing this extension. After installing that and restarting VS Code, are things better?

Thanks again for taking the time to give these suggestions @mjbvz! Really appreciate it.
I think it helped a little bit, but it can still take about two seconds. Logs below, same single-keypress.
Am I being too picky with perf on this instance? The reason why I'm zeroing in on this occurrence is that this is the only case where I've been able to isolate something. Our project has had ongoing issues where performance degrades, and it has been really tough figuring out what the problem is.
Thanks again for your insight!
    {"seq":104,"type":"request","command":"updateOpen","arguments":{"changedFiles":[{"fileName":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx","textChanges":[{"newText":"s","start":{"line":144,"offset":7},"end":{"line":144,"offset":7}}]}],"closedFiles":[],"openFiles":[]}}
Perf 2880 [10:39:32.761] 104::updateOpen: elapsed time (in milliseconds) 0.2747
Info 2881 [10:39:32.761] response:
    {"seq":0,"type":"response","command":"updateOpen","request_seq":104,"success":true,"body":true}
Info 2882 [10:39:32.809] request:
    {"seq":105,"type":"request","command":"getApplicableRefactors","arguments":{"file":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx","startLine":144,"startOffset":8,"endLine":144,"endOffset":8}}
Info 2883 [10:39:32.809] Starting updateGraphWorker: Project: /Users/dan/projects/portal/client/tsconfig.json
Info 2884 [10:39:32.969] Finishing updateGraphWorker: Project: /Users/dan/projects/portal/client/tsconfig.json Version: 16 structureChanged: false Elapsed: 160ms
Info 2885 [10:39:32.969] Different program with same set of files:: oldProgram.structureIsReused:: 2
Perf 2886 [10:39:32.970] 105::getApplicableRefactors: elapsed time (in milliseconds) 160.9877
Info 2887 [10:39:32.970] response:
    {"seq":0,"type":"response","command":"getApplicableRefactors","request_seq":105,"success":true,"performanceData":{"updateGraphDurationMs":160},"body":[]}
Info 2888 [10:39:32.970] request:
    {"seq":106,"type":"request","command":"geterr","arguments":{"delay":0,"files":["/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx"]}}
Perf 2889 [10:39:32.970] 106::geterr: async elapsed time (in milliseconds) 0.1200
Info 2890 [10:39:32.971] event:
    {"seq":0,"type":"event","event":"syntaxDiag","body":{"file":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx","diagnostics":[]}}
Info 2891 [10:39:33.690] event:
    {"seq":0,"type":"event","event":"semanticDiag","body":{"file":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx","diagnostics":[{"start":{"line":144,"offset":7},"end":{"line":144,"offset":16},"text":"Cannot find name 'sonChange'. Did you mean 'onChange'?","code":2552,"category":"error","relatedInformation":[{"span":{"start":{"line":137,"offset":13},"end":{"line":137,"offset":21},"file":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx"},"message":"'onChange' is declared here.","category":"message","code":2728}]}]}}
Info 2892 [10:39:33.691] event:
    {"seq":0,"type":"event","event":"suggestionDiag","body":{"file":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx","diagnostics":[{"start":{"line":103,"offset":7},"end":{"line":103,"offset":21},"text":"'cidrInputsLens' is declared but its value is never read.","code":6133,"category":"suggestion","reportsUnnecessary":true},{"start":{"line":137,"offset":11},"end":{"line":137,"offset":23},"text":"'onChange' is declared but its value is never read.","code":6133,"category":"suggestion","reportsUnnecessary":true},{"start":{"line":153,"offset":11},"end":{"line":153,"offset":21},"text":"'inputs' is declared but its value is never read.","code":6133,"category":"suggestion","reportsUnnecessary":true}]}}
Info 2893 [10:39:33.691] event:
    {"seq":0,"type":"event","event":"requestCompleted","body":{"request_seq":106}}
Info 2894 [10:39:34.3] request:
    {"seq":107,"type":"request","command":"getApplicableRefactors","arguments":{"file":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx","startLine":144,"startOffset":8,"endLine":144,"endOffset":8}}
Perf 2895 [10:39:34.4] 107::getApplicableRefactors: elapsed time (in milliseconds) 0.6625
Info 2896 [10:39:34.4] response:
    {"seq":0,"type":"response","command":"getApplicableRefactors","request_seq":107,"success":true,"body":[]}
Info 2897 [10:39:34.4] request:
    {"seq":108,"type":"request","command":"getCodeFixes","arguments":{"file":"/Users/dan/projects/portal/client/src/common/monoblocks/form/FormIpCidrInput.tsx","startLine":144,"startOffset":7,"endLine":144,"endOffset":16,"errorCodes":[2552]}}```

Those logs are from 3.8.3, not nightly, since I booted in --disable-extensions mode to gather them with semanticHighlighting disabled.

I also have issues with semantic highlighting in medium to large files.
Perf 430  [18:29:11.606] 104::encodedSemanticClassifications-full: elapsed time (in milliseconds) 1029.8463
Disabling semantic highlighting resolves my delays. Commenting a line takes ~1 second. Disabling it, it appears immediate.

I'm trying to move on from 3.8.3 for a long time, because it's the only version which does not kill my productivity. I have an extremely slow code completion.
Sometimes resting the cursor over a property/method completely stucks TS server for seconds:
Perf 566  [01:39:04.841] 14::encodedSemanticClassifications-full: elapsed time (in milliseconds) 6612.9189

This is code completion when writing a dot after an object, after ~8 seconds I could finally see the property list:
Info 798  [02:05:51.334] Starting updateGraphWorker: Project: /home/work/Projects/hidden/core/tsconfig.json
Info 799  [02:05:51.380] Finishing updateGraphWorker: Project: /home/work/Projects/hidden/core/tsconfig.json Version: 3 structureChanged: false structureIsReused:: Completely Elapsed: 45.291651997715235ms
Info 800  [02:05:51.380] Different program with same set of files
Info 801  [02:05:51.382] getCompletionData: Get current token: 0.027127999812364578
Info 802  [02:05:51.382] getCompletionData: Is inside comment: 0.06167500093579292
Info 803  [02:05:51.382] getCompletionData: Get previous token: 0.03589100018143654
Info 804  [02:05:51.382] getCompletionsAtPosition: isCompletionListBlocker: 0.17612700164318085
Info 805  [02:05:55.188] getCompletionData: Semantic work: 3805.772270999849
Info 806  [02:05:55.189] getCompletionsAtPosition: getCompletionEntriesFromSymbols: 0.7570599988102913
Info 807  [02:05:55.639] IntelliCode plugin: successfully loaded model from /home/work/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.14/cache/1A3F919CD5B7725108B03C349630A1C82B03_4A84987F2428442A9EC84563BB2BC063
Info 808  [02:05:55.640] IntelliCode plugin: program found
Info 809  [02:05:55.640] IntelliCode plugin: source file found
Info 810  [02:05:55.641] IntelliCode plugin: determined type: "reducer".IAuthenticationForgotPasswordState
Info 811  [02:05:55.642] IntelliCode plugin: pushing prior access: email
Info 812  [02:05:55.653] IntelliCode plugin: prior accesses: email
Info 813  [02:05:55.653] IntelliCode plugin: sequences: N~email,N
Info 814  [02:05:55.653] IntelliCode plugin: sequences: N~email,N
Info 815  [02:05:55.653] IntelliCode plugin: added metadata {"Id":1630364755653,"ModelVersion":"typescript_1.5","Count":0,"FailureReason":"NotInModel","Class":"","InIf":false,"ElapsedTime":463.245825,"Methods":[],"PrevInvoc":"","ItemMetadata":{}} to completion result
Perf 816  [02:05:55.654] 95::completionInfo: elapsed time (in milliseconds) 4319.9144

My question mainly is, how can I find out exactly what are the expressions in this project (70k+ LoC), that are creating these problems? Any help is much appreciated. Thank you!

This is now being tracked at https://github.com/microsoft/TypeScript/issues/44851.


Bumped minimist for common-npm-packages

Task name: common-npm-packages
Description: Bumped minimist
Documentation changes required: (Y/N)
Added unit tests: (Y/N)
Attached related issue: (Y/N)
Checklist:

[x] Checked that applied changes work as expected

/azp run


Implement oriscus

The logic for the oriscus in the Gabc parser isn't finished yet, need to complete it, including other neumes that might include an oriscus glyph.

More or less fixed with commit 1b75f995801663f0133d4cc33fc85d38ce282e5a, though there's still some work to be done on finalizing oriscus behavior and neumes.


Configure image service and AGOL account

We downloaded and deployed the web app following instructions.
Looking at the config file we noticed that the  image service URL is empty (while Landsat explore is preconfigured to ponit at Esri landsat image services)
So we  add the following URL  "https://sentinel.arcgis.com/arcgis/rest/services/Sentinel2/ImageServer "and it works.
but when we try to  use the time selector widget  a  " NaN undefined NaN " error apepar in the form (see attached image).
We have seen that this feature depends on AGOL account so we sign in with our subscriprion credential but the error continue to appear.
Looking at network traffic (by firebug) we noticed   a worning regarding AGOL credential and token ..
Please could you give us help and a correct sample of config file settings ?
thank you
Enrico

Hi,
Sorry for late reply. We have just updated both the apps. Can you please try again with these updated apps and see whether the issue still persists.


Launching the demo with custom exolist.json does not work on recent Android TV

Media3 Version
Media3 1.0.2
Devices that reproduce the issue

Chromecast HD ( sabrina ) on STTE.230319.008.R1 build ( just factory reset, to doublecheck it's not a app/config issue )

Devices that do not reproduce the issue
I didn't check others, but seems like other AndroidTVs with OS version > 10 might be generally affected
Reproducible in the demo app?
Yes
Reproduction steps

Build and install the demo app with gradle  ./gradlew :demo:installWithDecoderExtensionsRelease
Following official instructions here make a custom .exolist.json file and put it on a public URL
Launch the demo app with android.intent.action.VIEW as instructed

adb shell am start -a android.intent.action.VIEW -d https://gist.githubusercontent.com/kaidokert/888032c77e4c68cbb0d0c44928d5ba3d/raw/16849f69e04cc59b11dd1f92741f7facb252bcc1/yts.exolist.json

Expected result
The app should open with the picker UI in SampleChooserActivity
Actual result
Actual result: "You don't have an app that can do this" toast message from Android system.
I believe the relevant loglines from logcat output are:
 I ActivityTaskManager: START u0 {act=android.intent.action.VIEW dat=https://gist.githubusercontent.com/... flg=0x10000000 cmp=com.android.tv.frameworkpackagestubs/.Stubs$BrowserStub} from uid 2000
W ActivityTaskManager: Can't find TaskDisplayArea to determine support for multi window. Task id=17 attached=false
W ActivityTaskManager: Tried to set launchTime (0) < mLastActivityLaunchTime (3155300)
and
W NotificationService: Toast already killed. pkg=com.android.tv.frameworkpackagestubs token=android.os.BinderProxy@7791677

If i modify the sample app to also allow android.intent.action.PICK in the intent-filter it works as expected, and relevant adb logcat lines read ( commit here https://github.com/kaidokert/media/commit/498d483669c247e3a19865d04253ee9612d33739 )
I ActivityTaskManager: START u0 {act=android.intent.action.PICK dat=https://gist.githubusercontent.com/... flg=0x10000000 cmp=androidx.media3.demo.main/.SampleChooserActivity} from uid 2000
W ActivityTaskManager: Tried to set launchTime (0) < mLastActivityLaunchTime (3118823)
I ActivityTaskManager: Displayed androidx.media3.demo.main/.SampleChooserActivity: +100ms

This isn't an androidx.media issue per se, but it's still an issue with the default demo code / instructions. Happy to pull request the ".PICK" workaround if that's helpful
Media
https://gist.githubusercontent.com/kaidokert/888032c77e4c68cbb0d0c44928d5ba3d/raw/16849f69e04cc59b11dd1f92741f7facb252bcc1/yts.exolist.json
Bug Report

[X] You will email the zip file produced by adb bugreport to<EMAIL_ADDRESS>after filing this issue.

Thanks for your report!
Can you repro this with Sabrina when the json file is served with content type application/json? I see yours comes with text/plain.
When I do this for instance with this file that is served as json, then this works as intended I think. When I do the same with a file from the device that has a file:///-URI, then it always works without problems. It can be that the content type makes a difference when served over https.
When I test this with a a device with for instance API 30 or an ATV emulator, then Android presents me a selection of the apps that can handle the given file which is Chrome and the demo app. I can select the ExoPlayer demo app and it starts as expected.
It's a bit different with a device that runs Android 13. There, the json file is always opened by Chrome. When I disable Chrome, the ExoPlayer demo app is started directly without asking. The behavior corresponds to these two apps being able to open on API 30, but on Android 14, I don't know how to convince Android to ask me which app to use instead of defaulting to Chrome.
However, as you point out. The demo app should just be properly documented and work as documented. I'm going to fix this by adding an action androidx.media3.demo.main.action.BROWSE and update the documentation once this is released. A specific action resolves all possible collision with other apps supoporting a *.json file I think.

Sorry, I haven't seen your PR. Mind changing to androidx.media3.demo.main.action.BROWSE?

Just tested with your link and same result. Action VIEW produces a toast, with my PICK hack included opens just fine.
I also tested with this that certainly has application/json as MIME type and same results.
I actually have a suspicion it might be related to a specific system-installed, un-removeable com.droidlogic app that is present on these devices, because i see adjacent log lines hinting at it. It seems like there's some system level intent filtering going on, but that's a wild guess and probably off topic here.


Ensure cockpit image is set correctly

Due to how we use oreg_url in CI, we need to set
cockpit-ui image specifically.
Needed-by: https://github.com/openshift/openshift-ansible/pull/9827

Jobs grab this dir by cloning master of aos-cd-job so without a merge you haven't pushed anything anywhere FYI

@stevekuznetsov I just realized that.  I pushed up a temporary change reflected here.

/lgtm


Effect of batch size on training dynamics

I'm running the autoconstraint task, and I realized that the default batch size is 2048 for the released training code. I'm reading the paper and it states that a batch size of 8192 is used.
I'm currently playing with the code using a batch size of 128, so that things fit on my local desktop GPU, and everything runs smoothly so far. But I was wondering whether the original choice of batch size was mainly to speed up training given a fixed number of epochs, or that it affected performance somehow (in the sense that it may affect test log-likelihood/precision/recall).

The batch size was mainly chosen for performance reasons, 2048 is about as large as we could fit on a single Titan GPU and we trained on 4 GPUs for a total of 8192 batch size. As the learning rate is scaled with the batch size the performance should be very similar although it would probably take you a very long time to train. Hope that helps!

Makes sense. Thanks!


Add a way to find and filter tabular data

Find: there's no titles for tables so maybe the selector could be by column titles, or by some selector on the data.
Select: It would be really cool if you could select particular rows, columns and cells of tables.

Two questions for you:

How did you want to select particular rows, columns, cells? By index, by searching within them? If searching, do you then want to return only the cell that matched, or something like "return all rows that have foo anywhere in any cell"?
Does any particular syntax come to mind for you? That's something I really struggle with for this.

One thing that just occurred to me is that since bash strings are easy to make multiline, I could potentially have the table selector syntax be multiline somehow. Maybe something like:
mdq '|-|
     | /regex for rows, by header/ |
     | /regex for columns; output the row if any column matches /

for example, if I had this table:

hello
fizz
world

one
three
two

four
six
five

then this:
|-|
| /o/  |
| five |

would result in:

hello
world

four
five

the rows with headers hello and world matched, since those two header texts matched /o/
the header row always matches (since markdown tables have to have headers, at least in github syntax)
that | four | five | row matched since its second column matched the five matcher (unquoted string)
the |s don't need to be aligned

In this proposed syntax, |-| is a table selector, but that alone would just match all tables, and return all their data; if you want the additional selector, you have to specify both the row and column selector. That makes it a lot more obvious which is which. Of course, you can always use the empty or * matcher for "any":
mdq '|-|
     | /o/ |
     | *   |

One additional wrinkle is that right now, I intentionally have the syntax such that every character is unambiguous as you read it -- the only real exception being escapes within quotes. This would break that, since |-| could either be "one token: table selector" or "three tokens: [pipe, list with empty matcher, pipe]". My concern isn't the parsing complexity, but rather the obviousness to a human reader. One option is to use curlies, which I've already considered for advanced #56. that would look something like:
mdq '{|-|}'  # just select tables

mdq '{|-|
      | /o/ |
      | *   |
     }'

How does that strike you?

Oh, I could do :-: maybe? That mirrors the separator between the header row and data rows:
| Name | Value |
|:----:|:-----:|  <-- this row
| Foo  | 123   |

The colons on both sides mean "column is centered", so it's a bit of a misnomer to use them for "tables" in general -- but that's probably okay.
Since I always have two matchers, maybe I can do away with all the other table markdown.
mdq ':-: /o/ *'

Hm, maybe I should repeat that between the row and column matchers?
mdq ':-: /o/ :-: five'
mdq ':-: /o/ :-: *'

I think that may be the winner so far.


Always crash on exiting Play

If you set Play as Listen Server or Play as Client it will crash on closing Play window.
If you play with Standalone mode Unreal doesnt crashes.
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000038

UnrealEditor_ALSExtras!AAlsCharacterExample::NotifyControllerChanged() [E:\Games\Epic Games\ALSRefactored\ALSRefactored\Plugins\ALSRefactored\Source\ALSExtras\Private\AlsCharacterExample.cpp:23]
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll

Update the plugin to the latest commit and try to reproduce the issue again.

Update the plugin to the latest commit and try to reproduce the issue again.

hello, if i get you right, im using currently the latest version of ALS Refactored, so its 4.10

Update the plugin to the latest commit and try to reproduce the issue again.

uh nvm i think i've found what are u talking about, didnt used Github desktop to clone your project, but we will see now

Update the plugin to the latest commit and try to reproduce the issue again.

still crashing but now with this:
`Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000038
UnrealEditor_ALSExtras
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll`

For some reason i had in my .sln in AlsCharacterExample.cpp
                NewPlayer->InputYawScale_DEPRECATED = 1.0f;
		NewPlayer->InputPitchScale_DEPRECATED = 1.0f;
		NewPlayer->InputRollScale_DEPRECATED = 1.0f;

but your AlsCharacterExample.cpp had only
		NewPlayer->InputPitchScale_DEPRECATED = 1.0f;
		NewPlayer->InputRollScale_DEPRECATED = 1.0f;

so i removed that "NewPlayer->InputYawScale_DEPRECATED = 1.0f;" > builded it again and it doesnt crashes now.


Seems broken, gets stuck

⇒  toggl-to-clockify transfer
Fetching workspaces from Toggl...
Fetching time entries and projects in workspace: Default...
Getting time entries for page 1 for Default for the year of 2018...
Getting time entries for page 2 for Default for the year of 2018...
Getting time entries for page 1 for Default for the year of 2019...
Getting time entries for page 2 for Default for the year of 2019...
Getting time entries for page 3 for Default for the year of 2019...
Writing Toggl data to JSON file...
Toggl processing complete
Fetching workspaces from Clockify...
Getting clients for Default...
Getting projects for Default...
Getting tags for Default...
Transferring clients to Clockify in Default...
Transferring projects to Clockify in Default...
Transferring tags to Clockify in Default...
Transferring time entries to Clockify in Default...
Creating time entries for records 0 - 25...
Creating time entries for records 25 - 50...
Creating time entries for records 50 - 75...
Creating time entries for records 75 - 100...
Creating time entries for records 100 - 125...
Creating time entries for records 125 - 150...
Creating time entries for records 150 - 175...
Creating time entries for records 175 - 200...```

There's nowhere near this many entries, I started trying toggle last week.

{
  "email": "REDACTED@REDACTED",
  "togglApiToken": "REDACTED",
  "clockifyApiToken": "REDACTED",
  "workspaces": [
    {
      "name": "Default",
      "years": [2018, 2019]
    }
  ]
}

same here

Creating time entries for records 232575 - 232600...
Creating time entries for records 232600 - 232625...
Creating time entries for records 232625 - 232650...
Creating time entries for records 232650 - 232675...
Creating time entries for records 232675 - 232700...
Creating time entries for records 232700 - 232725...
Creating time entries for records 232725 - 232750...
Creating time entries for records 232750 - 232775...
Creating time entries for records 232775 - 232800...
Creating time entries for records 232800 - 232825...
Creating time entries for records 232825 - 232850...
Creating time entries for records 232850 - 232875...
Creating time entries for records 232875 - 232900...
Creating time entries for records 232900 - 232925...
Creating time entries for records 232925 - 232950...
Creating time entries for records 232950 - 232975...
Creating time entries for records 232975 - 233000...
Creating time entries for records 233000 - 233025...
Creating time entries for records 233025 - 233050...
Creating time entries for records 233050 - 233075...
Creating time entries for records 233075 - 233100...
Creating time entries for records 233100 - 233125...
Creating time entries for records 233125 - 233150...
Creating time entries for records 233150 - 233175...
Creating time entries for records 233175 - 233200...
Creating time entries for records 233200 - 233225...
Creating time entries for records 233225 - 233250...
Creating time entries for records 233250 - 233275...
Creating time entries for records 233275 - 233300...
Creating time entries for records 233300 - 233325...
Creating time entries for records 233325 - 233350...
Creating time entries for records 233350 - 233375...

Seems to count up to infinity - even tho I do have alot of time entries its definitely not 200k
Assuming this count up to infinity

I have this problem too

I have this problem too

I have transfered all my entries following these steps: :smiley:

git clone https://github.com/mikerourke/toggl-to-clockify-web.git
cd toggl-to-clockify-web
yarn
yarn start
Open in your browser localhost:3000
Follow steps and enjoy the web interface!! :cupid:

@Leopere @mhicauber I apologize for the delayed response. See @xxxtonixxx comment if you need to transfer your entries right away, but with the following disclaimer:
I'm still finishing up the web-based tool and I'll be hosting it on Netlify or Surge, so I'm currently making changes with reckless abandon until it's ready, which means you might run into some bugs or mess up your Clockify data.
If you're OK with that, by all means proceed. Otherwise I can send you a link to the hosted tool when it's ready.

I ended up just not transferring the 6 days of data I had.


[suggestion] Hide unneeded things like system titles and dlc

I think system both system titles and dlc should be automatically hidden and maybe made possible to show as an option. Can't believe these would ever be needed for this.
DSi games are probably never needed to be available for this either.
PS: As far as I can tell, only regular 3DS games start with 00040000.
Updates start with 0004000E
DLC start with 0004008C
And the first system titles start with 00040010
DS/DSi related stuff start with 0004800
I'm sure I didn't need to list those, but I did.

I like this idea. I will need to change the "config file" format (since it currently is just a line with the directory to look).

I will be implementing a subset of this request in a simpler matter, just hiding the "NAND" titles by default and allowing pressing the "Y" button to toggle them on and off. This will hide the system and DS[i] titles.

This feature is implemented in the latest release.


Do not enable label if PR body line is equal to "yes/no"

Sometimes PR body isn't filled, it happened to me by mistake already (hit enter) and, when it isn't, all lines  equal to yes/no are interpreted as yes by carson , the result being that all possible labels are added to the PR and then one has to ask for relabelling.
See remaining examples.

Having labels become like a Christmas tree may be a nice thing in fact: it clearly encourages the submitter to do better next time.


Wrap error in the error object in response

Introduce Tigris error codes and marshal/unmarshal them to/from the wire
Ability to attach retryable information to the error

BREAKING CHANGE: error response format is changed

Codecov Report

Merging #260 (7f655b8) into main (4a15114) will decrease coverage by 0.81%.
The diff coverage is 9.21%.

@@            Coverage Diff             @@
##             main     #260      +/-   ##
==========================================
- Coverage   31.46%   30.65%   -0.82%
==========================================
  Files          45       45
  Lines        4653     4776     +123
==========================================
  Hits         1464     1464
- Misses       2993     3116     +123
  Partials      196      196

Impacted Files
Coverage Δ

api/server/v1/error.go
0.00% <0.00%> (ø)

api/server/v1/marshaler.go
0.00% <0.00%> (ø)

api/server/v1/validator.go
0.00% <0.00%> (ø)

query/expression/expression.go
66.66% <0.00%> (ø)

query/read/fields.go
26.88% <0.00%> (ø)

query/update/operator.go
59.61% <0.00%> (ø)

server/metadata/key_encoder.go
51.11% <0.00%> (ø)

server/midddleware/timeout.go
27.02% <0.00%> (ø)

server/services/v1/api.go
0.00% <0.00%> (ø)

server/services/v1/key_generator.go
0.00% <0.00%> (ø)

... and 16 more

Continue to review full report at Codecov.

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


Newsletter from Algo-Phantoms subscription column

A feature to let user subscribe to get monthly newsletter from Algo-Phantoms.

How are you planning to implement it?

We can have at section of newsletter in "more"  column which will land to other page. There we will tell people about perks of hearing from us monthly regarding latest technology and ask them to submit email id. Then in backend part we store those id. For the time being with the help of latest softwares, newsletter could be sent then.

As of now it is not needed.


RequestException tried to access an undefined array index.

Response from tumblr api seems changed
Looks like it returns: $error->response->errors->one return a one instead of an array index
Should be checked with if (isset($error->response->errors) && isset($error->response->errors[0])) { above
This solutions allows to at least have errors visibility

you are wasting your time here, tumblr doesnt care about updating there api and there customers

Thank you for submitting this pull request, however I do not see a valid CLA on file for you. Before we can merge this request please visit https://yahoocla.herokuapp.com/ and agree to the terms. Thanks! :smile:


Edit TrophyShot

TrophyShotApp	TrophyShot   FMudanyali   None   None   https://github.com/FMudanyali/TrophyShot/releases/download/1.1/TrophyShot.suprx   None   https://raw.githubusercontent.com/FMudanyali/TrophyShot/master/README.md   None   https://github.com/FMudanyali/TrophyShot.git   None<PHONE_NUMBER>   TAI   *ALL   PLUGIN   TrophyShotMain   True

i um.. it is only a *main plugin now.


Remove/Reduce Size Check/Squeeze Control

Foundry VTT v10.291, Drag Ruler 1.13.1, RoutingLib 1.0.6
According to the documentation (copied below - third column, last item), token size is taken into account when attempting to find a path on a gridless scenes - i.e. tokens cannot "squeeze" through small spaces. Presumably, there is some place in the logic where whether or not there is sufficient space between two walls is evaluated,
I would like the ability to disable (or reduce) the squeezing mechanic size check. The concept and implementation of "squeezing" is very specific to a certain style of game. For games with less rigid movement mechanics, it is not as appropriate and certainly not as a hard limit.

I can see a few options here:

Add a hotkey to remove squeeze/size restrictions while dragging. (ALT suppresses pathfinding completely.)
Add a setting to disable squeeze/size restrictions completely.
Add a setting to influence the degree of size control. Admittedly, I'd like to be able to have paths that are too small for some characters to move through (while others  can), but I don't want to be bound to a specific games' interpretation of what "enough space" is.

I guess the documentation is a bit misleading here and should be adjusted. In reality, there is no explicit squeezing prevention. Routinglib encourages tokens to keep a certain distance from walls. If it wasn't doing this, routinglib would often calculate paths that walk along the very edge of the wall, which probably isn't what most players want:

As a side effect of forcing tokens to keep a certain distance from walls, if there's a wall to the left that the token needs to keep distance from and a wall to the right the token needs to keep a distance from, there might be space left to move through. This can prevent a token from "squeezing" through a narrow hallway. However, this distance restriction is only enforced around the end points of walls so depending on how the map has been walled the token might be able to squeeze through after all.
I think 1 and 2 aren't the way to go, since you would end up with a path as showin in the image above. 3 seems feasible. IIRC the pathfinder had a hidden setting accomplishing that exact thing when it still was a part of Drag Ruler, but somehow it got lost during the process of converting the pathfinder into a separate module. Also, with 3 in place, you could do 2 by just setting the setting to the right value.

I'd find 2 rather useful honestly.  My maps are usually hex grid and mostly outside.  On the occasion that I'm inside the hexes don't align real well with walls and I don't necessarily put my openings for doors and hallways exactly where they need to be.  My players have basically just gotten used to asking me to move them through a doorway half the time instead of trying to get it to route correctly.

It's important to note that the feature I was discussing before is only present on gridless maps. For gridded maps (whether they are hex or square), the pathfinder works entirely differently and has no feature to keep distance from walls at all. On gridded maps, tokens strictly move from one grid space to the next adjacent space. A collision check is made from the old central location of the token to the new central location and if there is no wall detected for that single check, the move is legal. This means on girdded maps, tokens can already squeeze through infinitely small gaps if the gaps align with the movement of the token. In that sense suggestion 2 is already in place for girdded maps.

3 seems feasible. IIRC the pathfinder had a hidden setting accomplishing that exact thing when it still was a part of Drag Ruler, but somehow it got lost during the process of converting the pathfinder into a separate module.

Oh, good... I would have sworn there was already a setting for it, but couldn't find it so I figured I was wrong. It means I'm not (that particular kind of) crazy.
As a specific case example, I have an elevators prefab that I reuse across a variety of maps, all designed in the same style. The door is sized appropriately for the rest of the scene (visually, line-of-sight, etc), but ends up being too narrow for tokens to get out of with pathfinding. The doorway is somewhat smaller than token set to 1×1, so it very much appears to be functioning as the documentation describes.

This feature will be available as a hidden setting starting with routinglib v1.1.0. It can be adjusted by entering game.settings.set("routinglib", "gridlessTokenSizeRatio", NEW_RATIO) into the console. Token sizes will be multiplied by this ratio prior to pathfinding. The setting defaults to 0.9, which matches the previous behavior of routinglib.


Use modern Apple sample streams

Pull request
Description
This PR adds all modern Apple test streams to the demo application.
Changes made

Add demo streams to the demo app.
Fix slider / controls interaction issue.

Checklist

[ ] Your branch has been rebased onto the main branch.
[ ] APIs have been properly documented (if relevant).
[ ] The documentation has been updated (if relevant).
[ ] New unit tests have been written (if relevant).
[ ] The demo has been updated (if relevant).

🌙 Available in TestFlight nightlies
The most recent state can be tested in the following builds:

Platform
Version

iOS
1.0.0 (107)

tvOS
-


CorrelationId

The idea is to be able to track every request going through the microservices landscape. Therefor every request must get marked by an unqiue id, the correlationId. Furthermore to find out in which order the request choose its way through the microservices we need to increase an counter on every hystrix call. Every call will write to log (eg. logstash, es) and we can query finding requests with the same correlationd id and order it asc via the counter to see which microservices it passed on its way.
It would be great if hyxtrix command can be extended to add correleationId (if not already present) to
every request and increase the counter.
The collected data could be be taken to create  live depency and tracking view of request. An edge from microservice to microservice will get as more bold as many request flow through this pipe in relation to the ammount of requests all over.

@cforce - We do something similar at Netflix, but we don't use Hystrix as the implementation mechanism.  We have a system similar to Google Dapper/Twitter Zipkin that does distributed tracing, much like you've described.  We've found it more practical to do it at the networking layer (for Netflix that is Ribbon: https://github.com/Netflix/ribbon).  This is because Hystrix may be arbitrary work, whereas instrumenting at the network layer gives us exactly what we want.
The HystrixRequestVariable class already exists, and may be used to pass state between threads on a single JVM.  I think a networking library is a more appropriate home for passing state to an off-box system.

We are also want to use Ribbon (via Feign) to do the Balanced Rest Call after Lookup. I wasn't aware that there is already an CorrelationId Feature available. Can you point me to the documentation/code/examples how this works/ has to be used? How do you persist and collect the data afterwards for single request tracking and mass (stats) - eg.g like the tracking graph i described?

It looks like the correlation ID is a feature that has not made it to OSS yet.  I'd suggest submitting an issue to Ribbon/Karyon, as I believe that's a more appropriate home for this feature.

done. https://github.com/Netflix/ribbon/issues/238


Expose updatedAt in /v2/wallets/show

Expose updatedAt field to check whether user is affected by a change password bug (stellar/stellar-client#1113).

:+1:

Coverage remained the same at 94.02% when pulling ab3a855d43cf21b034da3a1554cdf42e5de0ff11 on expose-updated-at into 72b9a645577fe37367b057d8cbce8e9638b06696 on master.


dart2js: Non-short-circuit boolean operators crash

Consider the following program:
main() {
  bool b = true & true;
  b |= true;
  b = b^b;
  print(b);
}

The non-short-circuit boolean operators &, |, and ^ were added to bool recently (specified in 0808d29b4e33c303bf40524407a6e331c7a439f8, implemented in cc08d0e1da55d7f76d5542bfbd628c29f9ff0beb), but something goes wrong when dart2js compiles the above, because execution produces the following output:
..../preambles/d8.js:263: Invalid argument: true
          throw e;
          ^
Invalid argument: true
    at Object.wrapException (out.js:581:17)
    at Object.iae (out.js:558:15)
    at main (out.js:1257:18)
    at action (/usr/local/google/home/eernst/bin/dart-sdk/lib/_internal/js_runtime/lib/preambles/d8.js:275:31)
    at eventLoop (/usr/local/google/home/eernst/bin/dart-sdk/lib/_internal/js_runtime/lib/preambles/d8.js:258:9)
    at self.dartMainRunner (/usr/local/google/home/eernst/bin/dart-sdk/lib/_internal/js_runtime/lib/preambles/d8.js:276:5)
    at out.js:1471:7
    at out.js:1457:7
    at out.js:1468:5
    at out.js:1476:3

it seems we have logic in our optimizer that assumes that all bit operators were available only on ints or non-primitive types. This assumption is no longer true now that bool also implement some of these operators.
I sent a CL (https://dart-review.googlesource.com/c/sdk/+/86801) to remove the assumption, but we probably want to make the specialization more detailed to improve what we do on boolean operators.
/cc @rakudrama

Closing because I believe this may be working on TOT.


enhancement: optimize list tickets api RT

What type of PR is this?

type-enhancement
What this PR does / why we need it:
list_flow_instance_view may have bad performance if there exists a huge amount of records in flow_instance and flow_instance_node_task. The root reason is that it used group by in the view which cause the filter cannot be applied to the basic tables.
This PR moved the group by to the outer query and added a hint to indicate the SQL optimizer using merge join instead of nested loop join.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

Additional documentation e.g., usage docs, etc.:

how fast does this way can be?

your cla check is not passed, this may be a bug of github

how fast can this way be?

your cla check is not passed, this may be a bug of github

I closed and reopened this PR and it works.

how fast can this way be?

Generally like from 15000ms to 100ms. You can get more details in my testing report on Yuque Docs.

how fast can this way be?

Generally like from 15000ms to 100ms. You can get more details in my testing report on Yuque Docs.

Great job 👍🏻

okay, don't forget to merge this into main and dev/4.2.x


Update DrawingData to Foundry VTT V9.220

Documentation changed

I diffed v8 and v9.238 and there are no changes.


Update count-near.md

Updated image references

The image links are working, you can check the published version: https://docs.near.org/tutorials/examples/count-near


Fix mlir TargetLLVMIR deps.

Fix mlir TargetLLVMIR deps.

Thanks for flagging this, surprised it didn't trigger any other failures before ... I need to make a different change internally to fix the export but will do so shortly.

OK


The react-native run app suddenly failed to build this week

Description
When running react-native project this morning, the build could not be built, the dependencies all reported errors
Version
0.59.10
Output of npx react-native info

Steps to reproduce
Android sdudio failed to run react-native build android
Snack, code example, screenshot, or link to a repository

已解决

Duplicates #35210


Allow appium-flutter-driver start an app process via 3rd paty tool

https://github.com/appium-userland/appium-flutter-driver/issues/115#issuecomment-1467549554

Theoretically, it could. Appium XCUITest driver launches the app under test via XCTest API to follow how iOS launches the app as a black-box testing tool.
Maybe there are two options. Adding the possibility in https://github.com/appium/appium-ios-device, or use https://github.com/ios-control/ios-deploy or other tools like https://github.com/danielpaulus/go-ios to launch the app with a debugger for this driver specific. The appium-ios-device already has an ability to launch an app process via instrument, so potentially it could achieve with a few changes, or it needs more implementation.
By using an existing method, you also could manage the starting app part on your test code and gives the observatory URL with appium:observatoryWsUri capability. Then, this driver attempts to attach the websocekt against the given URL. In this case, you also could launch the app under test with flutter command as same.

Hey!
So the idea is to run the flutter app via its bundled tools from another process, grab the necessary urls for connection and pass to the driver?
Like the "utility to spawn process -> process runs flutter command -> process also starts flutter-driver", right?

Yes, when you do outside appium-flutter-driver as By using an existing method way.
This driver package itself can start the application under test process around  https://github.com/appium-userland/appium-flutter-driver/blob/main/driver/lib/sessions/ios.ts#L29 instead of xcuitest driver in Appium. Then, it also needs to consider activateApp method's case as well.

hey @KazuCocoa! Is there any documentation about how to contribute into this driver? I would like to try to implement this feature, but first of all I'd like to figure out how to make this driver work for debug purposes

https://appium.github.io/appium/docs/en/2.0/ecosystem/build-drivers/ might help to catch up with dev environment in Appium 2.
The easiest way is build https://github.com/appium-userland/appium-flutter-driver/blob/main/driver/package.json (npm install for example) and copy the build directory into ~/.appium/node_modules/appium-flutter-driver/.

it seems like Flutter will use xcdebug to start a debug session.
Perhaps... then flutter:connectObservatoryWsUrl way may help...? (since at least short term, 3rd party tooks won't work ios 17 x Xcode 15)

Could you please tell what will be an issue with iOS 17?

https://github.com/appium/appium/issues/18749
Launching an app via 3rd party tool may fail as com.apple.testmanagerd.lockdown.secure

driver.execute_script 'flutter:connectObservatoryWsUrl' should help for this. So:

start a session witout app nor bundleId/appPackage
Start driver.execute_script 'flutter:connectObservatoryWsUrl'
Start the app via 3rd party tools

Then, if the 2) detect the observatory url, it will establish a session


Made Stepper Dynamic

Converted array entries for ListView to ListView.builder to build ListView and will add GlobalKey everytime the Steps are changed.

I signed it!

Where could I get logs for flutter-build (Failing Check) ? The link for details is sending me to https://flutter-dashboard.appspot.com/build.html
I am finding hard to infer something from that data.

Is there any changes I need to make.


Adding attributes to enable printing the MOTD.

We like having a MOTD, so I added these attributes to enable support for that.

Coverage remained the same at 93.23% when pulling d996705634288993c218d94a502f60b681e921d3 on IFTTT:adding_attributes_to_enable_motd into e071016c7c232083eb8428f3a61f2bb9c4ae5fe3 on TelekomLabs:master.

Not sure why it failed the specs. Let me know if I can do anything to improve it!

@dmerrick great work. Thanks for adding these options. One small improvement would be to add some test to ChefSpec: https://github.com/TelekomLabs/chef-ssh-hardening/blob/master/spec/recipes/server_spec.rb
I will have a look into the travis issues.

@dmerrick could you rebase please? we fixed the tests in travis. Therefore everything should work now.

Coverage remained the same at 100.0% when pulling a49e0dad1a7e50d729acfd10b9b992bbc4b37b51 on IFTTT:adding_attributes_to_enable_motd into 31b8fb7e4da6b4b08e1b4d599857d4418b52c9d8 on TelekomLabs:master.

@dmerrick Thank you very much!


fix empty context when LoaderOptionsPlugin is used as it wipes the context option

fixes #340

Current coverage is 98.34% (diff: 100%)

Merging #356 into master will not change coverage

@@             master       #356   diff @@
==========================================
  Files             9          9
  Lines           303        303
  Methods          41         41
  Messages          0          0
  Branches         66         66
==========================================
  Hits            298        298
  Misses            5          5
  Partials          0          0

Powered by Codecov. Last update 22f6621...e6530d4

It's only a workaround


Viewport is too small on high-density displays

On some displays, the viewport is too small.  We need to use the framebuffer size, not the window size when setting the viewport.

Resolved with 20499d96677080db00aece7b639cfade2049c429


Edit page minor

Fix 'ui.benchmark' error and update shrinkwrap.
Depends on #113
Issue #15

Thanks for tracking this down!


Proc was removed?

Since this method isn't used anymore, procs are not working:
https://github.com/peter-murach/loaf/blob/master/lib/loaf/controller_extensions.rb#L28
The I18n Scope is also not configurable in the current version.

Hi Philip, thanks for reporting this. On the issue of procs, in my recent work I didn't have requirement to use procs and thus deemed it unnecessary for the release. However, if you could provide a use case or failing test I would be happy to look into it. It terms of translations, would you have time to investigate? There is already a test app to help you out testing this feature.

@philipgiuliani Please see readme for details, both scope and procs should work. Please get 0.5.0 version if you still need this functionality.

Oh sorry i forgot to answer you. I need it for Model.model_name.human  for example. So i dont have to duplicate the model names in the translations.
Thanks i will start with the implementation on sunday.


"checklist [x]" or ""  on readme.md don't work?

I want to write readme.md with checklist [x] and ~~strike~~.
But not work.
Please help me.

GitBucket supports checklist at only contents of issue and pull request. It's not available at other places.
Strike syntax is not supported by pegdown which is markdown parser GitBucket used. However the recent version of pegdown supports strike syntax, so we'll try to upgrade pegdown.

Strike syntax will be available in the next version of GitBucket.

Thanks for your reply.


Add config to allow coredump and restart on corruption

Signed-off-by: Yi Wu<EMAIL_ADDRESS>What problem does this PR solve?
Problem Summary:

Add a config allow-core-dump to allow TiKV generate a core dump. This is useful when core dump is desire to investigate issues.
Add a config allow-restart-on-data-corruption to allow TiKV restart when panic_mark_file exists. In that case the panic mark file will be deleted. This is useful to force TiKV to restart when user meet with intermittent IO error that cause TiKV think the data is corrupted.
Adding message in panic_mark_file content to describe what the file means and what users should do when seeing the file
Adding a warning when tikv-ctl encounter rocksdb LOCK file conflict, which warns user not to delete the LOCK file.

What is changed and how it works?
What's Changed: Add the above two configs.
Related changes

PR to update pingcap/docs/pingcap/docs-cn: will send PR later.
Need to cherry-pick to the release branch: release-5.0

Check List
Tests
Manually test the flows
Release note

Add allow-core-dump config
Add allow-restart-on-data-corruption config to allow forcing TiKV to restart when data corruption is met, in case TiKV met with intermittent IO error and think data was corrupted.

/test

Piggybacking two changes:

add content in panic_mark_file to warn user not to force restart TiKV
add warning if tikv-ctl encounter rocksdb LOCK file conflict which warn user not to delete LOCK file.

ping @BusyJay @Connor1996

/merge


Add blog post for week 18

Or should we skip this week?

Or should we skip this week?

I'd skip it and do the next blogpost for week 18 and 19.


updated devpost's dev-documentation

Description
Fixes a method name and adds a missing method in a devpost's dev-documentation.
Resolves: #788

Great work @iMarble !!
Do not forget to

Share your contribution on socials(twitter mainly), tag us and Clueless 🫂
Give this repository a star ✨
Follow Clueless Community on GitHub ✅


[In progress] Basic API

Todos of the moment:

[ ] What's our structure? JSON-API?
[ ] Needs oAuth
[ ] Why is the auth beforeFilter not working on the currently-hacky auth test?

What's our structure? JSON-API?

Yeah JSON API for sure, way less decisions we have to make and that thing has been bike shedded to perfection at this point.

Needs oAuth

I can make that happen, but direct OAuth access for a client-side extension will require some UX thinking. Not necessarily our concern, but it's hard to handle the whole redirect flow. You also can't keep the client_secret secret in that situation, but since it's read-only it's probably not too bad.

Why is the auth beforeFilter not working on the currently-hacky auth test?

Will investigate :)

May i recommend the oauth2-server library from the league for oauth support?

@rdohms Thanks! We usually use this Laravel bridge to that package just for convenience: https://github.com/lucadegasperi/oauth2-server-laravel

OK, i'm gonna get started on adding the oauth 2 server.

@rdohms Not much remains other than oAuth2 integration and documentation. Can you give a heads up on what other tasks will remain in order to get this hooked up? Here's output from a few sample responses:
api/user/{userId}/bios
{
  "data": [
    {
      "id": "e27489de-2376-4f28-88c8-c3cb2d6c34db",
      "nickname": "Long Bio",
      "body": "I am short and I love being short and this is very long.",
      "user_id": "1",
      "created_at": "2015-05-31 01:26:20",
      "updated_at": "2015-05-31 01:26:20",
      "type": "bios"
    },
    {
      "id": "95037b97-9790-4d2e-a06f-f9b9c2660993",
      "nickname": "Short Bio",
      "body": "I am short.",
      "user_id": "1",
      "created_at": "2015-05-31 01:26:20",
      "updated_at": "2015-05-31 01:26:20",
      "type": "bios"
    }
  ]
}

api/bios/{bioId}
{
  "data": {
    "id": "62aabcde-5e06-4bdc-8a93-ac790c18f939",
    "nickname": "Short Bio",
    "body": "I am short.",
    "user_id": "1",
    "created_at": "2015-05-31 01:26:52",
    "updated_at": "2015-05-31 01:26:52",
    "type": "bios"
  }
}

api/user/{userId}/talks
{
  "data": [
    {
      "title": "My Great Talk",
      "description": "Description of the talk",
      "author_id": "1",
      "created_at": "2015-05-31 01:28:21",
      "updated_at": "2015-05-31 01:28:21",
      "id": "5307d2da-9a30-4912-a5ca-64ec6b5c4ed2",
      "type": "talks"
    },
    {
      "title": "My Terrible Talk",
      "description": "Description of the talk",
      "author_id": "1",
      "created_at": "2015-05-31 01:28:21",
      "updated_at": "2015-05-31 01:28:21",
      "id": "cd43ef60-3db9-4a12-9795-ce21fd463c5b",
      "type": "talks"
    }
  ]
}

api/talks/{talkId}
{
  "data": {
    "title": "My Great Talk",
    "description": "Description of the talk",
    "author_id": "1",
    "created_at": "2015-05-31 01:28:46",
    "updated_at": "2015-05-31 01:28:46",
    "id": "f44b6037-877c-46ab-a7ec-7566560ca773",
    "type": "talks"
  }
}

Also, @adamwathan, any input on the JSON-API-appropriateness of the above?

@mattstauffer that looks good, thinking that i need a way to get userId or have a me url that fills that in. Other then that i only really need the oauth flow in place: app registration, and handshake.
With these and the oauth i should be able to roll out 0.1 already.
One improvement that would help is some level of HATEOAS so i can simply navigate from the first url without having to concat strings and figure out urls..
I'll get going on setting up this branch locally so i can test it.

@mattstauffer i do notice that some talk info is missing, like length, level and organizer notes

@mattstauffer That would've been close a few months ago but it's changed quite a bit since then. Finally stabled at 1.0 since a few days ago.
You'd want something like this as a minimal example:
{
  "data": [
    {
      "type": "talks",
      "id": "5307d2da-9a30-4912-a5ca-64ec6b5c4ed2",
      "attributes": {
        "title": "My Great Talk",
        "description": "Description of the talk",
        "created_at": "2015-05-31 01:28:21",
        "updated_at": "2015-05-31 01:28:21",
      }
    },
    {
      "type": "talks"
      "id": "cd43ef60-3db9-4a12-9795-ce21fd463c5b",
      "attributes": {
        "title": "My Terrible Talk",
        "description": "Description of the talk",
        "created_at": "2015-05-31 01:28:21",
        "updated_at": "2015-05-31 01:28:21",
      }
    }
  ]
}

Most important differences from your example:

All attributes are moved to an attributes key to avoid collisions with reserved top level keys.
You can't include foreign key columns as attributes, they need to be included as relationships. In our case it was author_id but we have no author resource yet so I've just removed it rather than returned a relationship.

JSON API also requires a lot of link/HATEOAS stuff like what @rdohms is mentioning to be fully compliant, but I'm ok with implementing a subset to at least get something out the door and adding in the rest over time, just as long as we don't deviate from the spec for any of the parts we do implement, and don't include anything disallowed by the spec :+1:

Thanks guys! I'll get started on both pieces--incorporating the details from the talk version, which will require closing a separate PR, and tweaking the JSON API format to be what Adam listed above.
Sent from Outlook
On Sun, May 31, 2015 at 3:52 AM -0700, "Adam Wathan"<EMAIL_ADDRESS>wrote:
@mattstauffer That would've been close a few months ago but it's changed quite a bit since then. Finally stabled at 1.0 since a few days ago.
You'd want something like this as a minimal example:
{
"data": [
{
"type": "talks",
"id": "5307d2da-9a30-4912-a5ca-64ec6b5c4ed2",
"attributes": {
"title": "My Great Talk",
"description": "Description of the talk",
"created_at": "2015-05-31 01:28:21",
"updated_at": "2015-05-31 01:28:21",
}
},
{
"type": "talks"
"id": "cd43ef60-3db9-4a12-9795-ce21fd463c5b",
"attributes": {
"title": "My Terrible Talk",
"description": "Description of the talk",
"created_at": "2015-05-31 01:28:21",
"updated_at": "2015-05-31 01:28:21",
}
}
]
}
Most important differences from your example:
All attributes are moved to an attributes key to avoid collisions with reserved top level keys.
You can't include foreign key columns as attributes, they need to be included as relationships. In our case it was author_id but we have no author resource yet so I've just removed it rather than returned a relationship.
JSON API also requires a lot of link/HATEOAS stuff like what @rdohms is mentioning to be fully compliant, but I'm ok with implementing a subset to at least get something out the door and adding in the rest over time, just as long as we don't deviate from the spec for any of the parts we do implement, and don't include anything disallowed by the spec
—
Reply to this email directly or view it on GitHub.

My apologies for not mentioning my intention to flesh out the fields and all links. It was a very very late night. :)

Did some hacks that we'll need to clean up to get the data structure right. Gotta run, will pretty print these later and do some refactoring.
Haven't added links yet, will do later.
Bio:
{"data":{"type":"bios","id":"0603a7d7-63e8-4ae1-9f38-760564d2049e","attributes":{"nickname":"Long Bio","body":"I am short and I love being short and this is very long.","created_at":"2015-05-31 10:48:38","updated_at":"2015-05-31 10:48:38"}}}

Bios:
{"data":[{"type":"bios","id":"0603a7d7-63e8-4ae1-9f38-760564d2049e","attributes":{"nickname":"Long Bio","body":"I am short and I love being short and this is very long.","created_at":"2015-05-31 10:48:38","updated_at":"2015-05-31 10:48:38"}},{"type":"bios","id":"2cb86717-cf08-499d-b6aa-f2463200f9c2","attributes":{"nickname":"Short Bio","body":"I am short.","created_at":"2015-05-31 10:48:38","updated_at":"2015-05-31 10:48:38"}}]}

Talk:
{"data":{"type":"talks","id":"d426e5f8-cf65-42bc-bb00-9da9b5606a2d","attributes":{"title":"My great talk","description":"Description of the talk","created_at":"2013-11-29 15:54:41","updated_at":"2015-05-31 10:48:38","type":"seminar","length":45,"level":"intermediate","outline":"Talk outline","organizer_notes":"Organizer notes"}}}

Talks:
{"data":[{"type":"talks","id":"d426e5f8-cf65-42bc-bb00-9da9b5606a2d","attributes":{"title":"My great talk","description":"Description of the talk","created_at":"2013-11-29 15:54:41","updated_at":"2015-05-31 10:48:38","type":"seminar","length":45,"level":"intermediate","outline":"Talk outline","organizer_notes":"Organizer notes"}},{"type":"talks","id":"d8db8693-7948-4476-b098-d22e003d8c54","attributes":{"title":"My terrible talk","description":"Description of the talk","created_at":"2013-11-29 15:54:41","updated_at":"2015-05-31 10:48:38","type":"seminar","length":45,"level":"intermediate","outline":"Talk outline","organizer_notes":"Organizer notes"}}]}

Me endpoint available at /api/me:
{
  "data": {
    "type": "users",
    "id": 1,
    "attributes": {
      "email"<EMAIL_ADDRESS>      "first_name": "Matt",
      "last_name": "Stauffer",
      "created_at": "2015-05-31 10:48:38",
      "updated_at": "2015-05-31 10:48:38"
    }
  }
}

(Particular URL subject to change)

As a note, the actual API stuff goes over JS, not PHP, so i need either JSONP, or proper CORS.
That means 'Access-Control-Allow-Origin' should allow 'chrome-extension://beehebdbpfaboikhcfhfmnglpoekihpi'  which should not change as far as i have learnt.
More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS and https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control

Actually scratch that, what i needed is proper permissions on the extension, so i think we are good.

OK, what remains:

[ ] Figuring out which oAuth grant we're going to use
[ ] Configuring that oAuth grant
[ ] Protecting the API routes with the oAuth system
[ ] Documentation

@adamwathan Can you remind me which grant you were suggesting we use? I remember it being one that the League server doesn't provide out of the box, so if you have any experience with it, I'd appreciate the help on that section.

Implicit grant I believe. I think we can register our own grant handlers with that package so will have to look into that. Also considering just building something way way way simpler, but just so hard to find the time :/
—
Adam
On Sat, Jun 6, 2015 at 9:51 AM, Matt Stauffer<EMAIL_ADDRESS>wrote:

OK, what remains:

[ ] Figuring out which oAuth grant we're going to use
[ ] Configuring that oAuth grant
[ ] Protecting the API routes with the oAuth system
[ ] Documentation
@adamwathan Can you remind me which grant you were suggesting we use? I remember it being one that the League server doesn't provide out of the box, so if you have any experience with it, I'd appreciate the help on that section.

Reply to this email directly or view it on GitHub:
https://github.com/tightenco/symposium/pull/84#issuecomment-109580958

I would avoid the implicit and just go with the usual where you ask the
user to login and authorize on your own website. The Google identity api
supports this flow nicely. And implementing the pages is rather simple.
Authorization grant I believe it was.
On Sat, Jun 6, 2015, 17:34 Adam Wathan<EMAIL_ADDRESS>wrote:

Implicit grant I believe. I think we can register our own grant handlers
with that package so will have to look into that. Also considering just
building something way way way simpler, but just so hard to find the time :/
—
Adam
On Sat, Jun 6, 2015 at 9:51 AM, Matt Stauffer<EMAIL_ADDRESS>wrote:

OK, what remains:

[ ] Figuring out which oAuth grant we're going to use
[ ] Configuring that oAuth grant
[ ] Protecting the API routes with the oAuth system
[ ] Documentation
@adamwathan Can you remind me which grant you were suggesting we use? I
remember it being one that the League server doesn't provide out of the
box, so if you have any experience with it, I'd appreciate the help on that
section.

Reply to this email directly or view it on GitHub:
https://github.com/tightenco/symposium/pull/84#issuecomment-109580958

—
Reply to this email directly or view it on GitHub
https://github.com/tightenco/symposium/pull/84#issuecomment-109603916.

Ah cool, that's easier to implement for us since the League OAuth 2 server supports it out of the box, so sounds good!
Still worth noting that it's no more "secure" than the implicit grant flow since the token is stored client side regardless in this case, but at least implementing it will be straightforward.
Adam
On June 6, 2015 at 11:53:29 AM, Rafael Dohms<EMAIL_ADDRESS>wrote:
I would avoid the implicit and just go with the usual where you ask the
user to login and authorize on your own website. The Google identity api
supports this flow nicely. And implementing the pages is rather simple.
Authorization grant I believe it was.
On Sat, Jun 6, 2015, 17:34 Adam Wathan<EMAIL_ADDRESS>wrote:

Implicit grant I believe. I think we can register our own grant handlers
with that package so will have to look into that. Also considering just
building something way way way simpler, but just so hard to find the time :/
—
Adam
On Sat, Jun 6, 2015 at 9:51 AM, Matt Stauffer<EMAIL_ADDRESS>wrote:

OK, what remains:

[ ] Figuring out which oAuth grant we're going to use
[ ] Configuring that oAuth grant
[ ] Protecting the API routes with the oAuth system
[ ] Documentation
@adamwathan Can you remind me which grant you were suggesting we use? I
remember it being one that the League server doesn't provide out of the
box, so if you have any experience with it, I'd appreciate the help on that
section.

Reply to this email directly or view it on GitHub:
https://github.com/tightenco/symposium/pull/84#issuecomment-109580958

—
Reply to this email directly or view it on GitHub
https://github.com/tightenco/symposium/pull/84#issuecomment-109603916.

—
Reply to this email directly or view it on GitHub.

You can debate the security, Alex biblie did a few posts on it. But the
authorization grant also gives us identity of the user which we also need.
I forgot if the implicit does that or only validates the call cones from a
trusted app.
On Sat, Jun 6, 2015, 17:56 Adam Wathan<EMAIL_ADDRESS>wrote:

Ah cool, that's easier to implement for us since the League OAuth 2 server
supports it out of the box, so sounds good!
Still worth noting that it's no more "secure" than the implicit grant flow
since the token is stored client side regardless in this case, but at least
implementing it will be straightforward.
Adam
On June 6, 2015 at 11:53:29 AM, Rafael Dohms<EMAIL_ADDRESS>wrote:
I would avoid the implicit and just go with the usual where you ask the
user to login and authorize on your own website. The Google identity api
supports this flow nicely. And implementing the pages is rather simple.
Authorization grant I believe it was.
On Sat, Jun 6, 2015, 17:34 Adam Wathan<EMAIL_ADDRESS>wrote:

Implicit grant I believe. I think we can register our own grant
handlers
with that package so will have to look into that. Also considering just
building something way way way simpler, but just so hard to find the
time :/
—
Adam
On Sat, Jun 6, 2015 at 9:51 AM, Matt Stauffer<EMAIL_ADDRESS>wrote:

OK, what remains:

[ ] Figuring out which oAuth grant we're going to use
[ ] Configuring that oAuth grant
[ ] Protecting the API routes with the oAuth system
[ ] Documentation
@adamwathan Can you remind me which grant you were suggesting we use? I
remember it being one that the League server doesn't provide out of the
box, so if you have any experience with it, I'd appreciate the help on
that
section.

Reply to this email directly or view it on GitHub:
https://github.com/tightenco/symposium/pull/84#issuecomment-109580958

—
Reply to this email directly or view it on GitHub
https://github.com/tightenco/symposium/pull/84#issuecomment-109603916.

—
Reply to this email directly or view it on GitHub.
—
Reply to this email directly or view it on GitHub
https://github.com/tightenco/symposium/pull/84#issuecomment-109607481.

Should be able to get user info regardless of what grant you use, a token is a token at the end of the day :+1:  Just need to ping the /users/me endpoint using whatever token gets kicked back. The actual initial token response from the server won't include user details for either grant, have to make that request separately.

Yep that is already done on my end. It makes a call to the ne endpoint
first.
Funny enough if I'm authenticated in the same browser already it shares the
session since the extension runs in chrome. So technically we don't even
need oauth just regular sessions, but that's just wonky.
On Sat, Jun 6, 2015, 18:03 Adam Wathan<EMAIL_ADDRESS>wrote:

Should be able to get user info regardless of what grant you use, a token
is a token at the end of the day [image: :+1:] Just need to ping the
/users/me endpoint using whatever token gets kicked back. The actual
initial token response from the server won't include user details for
either grant, have to make that request separately.
—
Reply to this email directly or view it on GitHub
https://github.com/tightenco/symposium/pull/84#issuecomment-109608123.

Haha yeah I noticed that when developing an extension myself, it's kind of a neat way to avoid OAuth altogether if your own extension is your only API client. I've seen other official extensions do the same thing. Pretty wild, but proper API auth seems like a better long term approach for sure.

@mattstauffer while you are at it we should plan on adding api for conferences :P would be cool to add a list of CfPs to pronto! also.. click and submit at its best :P

OK, added a rudimentary Conferences API endpoint. but, we need to figure out how it's handling displays and sorts. We have a few views we could choose for the default, so we need to figure out how to prioritize views based on reasonable expectations for an API vs. the use cases we can imagine right now:

All conferences
All conferences that haven't started yet
All conferences that haven't ended yet
All conferences that haven't closed their CFP yet

We can sort (by default) by:

title alphabetical
start date
end date
cfp open date
cfp close date

If we're proposing that the primary reason someone uses Symposium for considering conferences is for the purpose of submitting talks to them, My first thought would be "by default show all conferences with not-yet-closed CFPs, sorted by CFP close date." But I don't know if that's too weirdly specific for a default sort/filter.
THoughts?

if i'm going to list them inside pronto! then it would make sense to be "these are the conferences you can submit to now" that would be the context of the app anyway.

Hm, so in the pronto! context, does that mean the default filter would be "open CFPs", not "not-yet-closed CFPs"? The difference is that "not-yet-closed CFPs" also include those which haven't opened yet.
I sort of prefer not-yet-closed because those are still useful, even if they haven't opened yet. But, thoughts?

I think both would work just fine. But if they are clicking in stuff around pronto is usually because they are in the process of submitting, so "here is something you can submit to in x days" may not be as useful.
But it can make it so that pronto becomes a kinda companion app, "let me check what CfPs are coming" click on the link, check and plan.
So either will work just fine.

Did some rudimentary work on sorting and filtering for conference API. Currently:
Optionally takes a sort and filter parameter.
Sort takes alpha (do we need this?), date, and closing_next (default).
Sort allows prefacing with - per JSON-API (e.g. ?sort=-date)
Filter takes future, unclosed_cfp (default), all, and cfp_is_open

Clearly the keys on the sort and filter should be normalized (e.g. "Cfp_is_open" vs "unclosed_cfp" aren't using the same grammar)

@rdohms What sort of response type are you expecting? JSON? (to get the access token)

Yep json is good.
On Sat, Jun 20, 2015, 19:54 Matt Stauffer<EMAIL_ADDRESS>wrote:

@rdohms https://github.com/rdohms What sort of response type are you
expecting? JSON? (to get the access token)
—
Reply to this email directly or view it on GitHub
https://github.com/tightenco/symposium/pull/84#issuecomment-113794488.

@rdohms OK, I have to run, but I just set up a rudimentary oAuth2 Authorization Code flow. Here's what I did to test it:

Run the migrations
Add an entry to the oauth_clients table: id of 1 (although this will likely not be a numeric auto-increment), secret of hoihfoipqwe, name of test, dates set appropriately
Add an entry to the oauth_client_endpoints table: id of 1, client_id of 1, redirect_uri of http://mattstauffer.co/, dates set appropriately
Visit http://symposiumapp.app:8000/oauth/authorize?client_id=1&redirect_uri=http://mattstauffer.co/&response_type=code in the browser with a logged-in user
Click "approve"
Get forwarded to http://mattstauffer.co/?code=abcdefg
curl -u client_id:client_secret http://symposiumapp.app:8000/oauth/access-token -d 'grant_type=authorization_code&code=abcdefg&redirect_uri=http://mattstauffer.co/' (client_idbeing1, client_secretbeinghoihfoipqwe`)
Get the token from there, and then make requests--I was using PAW, and my token was X4peFl4iSWUpYxLtXwTPwwzt6uMxhGFfcIrEsRAK, so it looked like this:

Let me know if it works for you! I'll be cleaning up and refactoring, and making some final decisions about the Conferences API options, and then merging this into the live site ASAP this week. Thanks for your patience!

Remaining steps:

[ ] Clean up oAuth implementation code
[ ] @adamwathan code review
[ ] Fix tests for API to work with oAuth
[ ] Write tests to test oAuth
[ ] Finalize filter/sort keys for conferences API endpoints
[ ] Celebrate

@mattstauffer awesome, i got the flowchart for the code i need to write here, so hopefully tomorrow i can give this a run and get back to you. Thanks man!

I think it looks good enough :+1: should figure out why the tests are failing though.

Great, thanks! Tests are failing because I added oauth and haven't tweaked them for it yet :)
Sent from Outlook
On Sat, Jun 20, 2015 at 2:11 PM -0700, "Adam Wathan"<EMAIL_ADDRESS>wrote:
I think it looks good enough  should figure out why the tests are failing though.
—
Reply to this email directly or view it on GitHub.

@mattstauffer for this curl -u client_id:client_secret http://symposiumapp.app:8000/oauth/access-token -d 'grant_type=authorization_code&code=abcdefg&redirect_uri=http://mattstauffer.co/'
can clientid/secret be sent as parameters?
Like in this example: https://github.com/GoogleChrome/chrome-app-samples/blob/master/samples/github-auth/index.js#L77

@rdohms Yep, that works too:

indeed, something was off on my end.
Curious thing is this is a "GET" in the sample app, not a GET, let me adjust.

Ok I have it almost working, but api/me is telling me "The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the \"access token\" parameter." i'll debug it more tomorrow to see if i have a bad token or what.
Did you implement refresh tokens btw? may be interesting given the flow i'm seeing on my end.
I need to open extensions options, do handshake, then click on extension, then fill in talks. Can't do the handshake straight from the popup which is a pity. So i can store the access token, but since it expires in an hour i'll be repeating this flow many times. Refresh tokens could allow me to renew without user interaction. But let me get this first flow working first.

I had to add this
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

To my .htaccess to use the authorization header.

@rdohms Ah, yah, we're using Nginx. I guess our config must just do that for us by default? (no idea)

OK, here's what remains:
MUST HAPPEN BEFORE LAUNCH OF THIS FEATURE:

[x] @adamwathan code review
[ ] Convert Conference API returns to be JSON-API like the other types
[x] make our api objects jsonable and then array map their returns
[ ] Fix tests for API to work with oAuth
[ ] Finalize filter/sort keys for conferences API endpoints
[ ] Make the approve/deny oAuth page prettier and more informative

CAN DELAY TIL AFTER LAUNCH IF NEEDED:

[ ] Clean up oAuth implementation code
[ ] findOrFail on in-API resources just for clarity
[ ] Update non-authenticated access rejection to be 404 (and update tests accordingly)
[ ] Write tests to test oAuth
[ ] Document API
[ ] Celebrate

@rdohms I think I've finished this one up. Any requests/tweaks/clarifications?

:+1:

Cannot figure out why Codeship is failing. :( Everything looks good to me, and when we figure out the Codeship issue, I'm gonna merge. @rdohms Last chance for input!

I think we are good. For future consideration having a way to grab a token and read more info about it (league/oauth has this option) would be cool for me to be able to validate if the token is still valid and discard it. But this along with refresh tokens can be delayed since we did the 1 year tokens.

@rdohms Noted in #93. Thanks!
OK, cross your fingers; this is gonna go live!


Error - No current observation data found in response

Describe the bug
The adapter worked perfect for a long time but now i get the error "No current observation data found in response" every hour. I checked  the API Key, renewed it but always the same.
To Reproduce
No idea how to reproduce it on another system ;-).
Expected behavior
The error should not appear  in the protocol of iobroker.
Screenshots & Logfiles

Versions:

Adapter version: 3.4.2
JS-Controller version: 4.0.24
Node version: 16.19.0
Operating system: debian linux

This error happens when the selected station is offline and donot send new values to weatherunderground. Please check this (and the WU weboage) or choose a different station


Set CLOUD_NETCONFIG_MANAGE to yes

Problem

[Problem is described in this issue](https://github.com/Azure/sap-automation/issues/352#issue-1465887124)
Solution
Hi @hdamecharla @phaniteluguti ,
I was able to identify the issue to 3 possible files:

deploy\ansible\roles-os\1.17-generic-pacemaker\tasks\1.17.2-provision.yml
deploy\ansible\roles-os\1.17-generic-pacemaker\tasks\<IP_ADDRESS>-cluster-Suse.yml

The above 2 files :point_up_2: are setting CLOUD_NETCONFIG_MANAGE to no.
Not fully sure if this can be removed [I think not].
But perhaps here it can be added in this file :point_down:

deploy\ansible\roles-os\1.10-networking\tasks.yml

64      ONBOOT=yes
65     IPADDR="{{ secondary_ip }}"
66      NETMASK=<IP_ADDRESS>
67+      CLOUD_NETCONFIG_MANAGE='yes'
68    mode:                              755
69  register:                            definition_made
70  when:

Tests
[TODO]
Notes

Hi @RustyNails8 , thank you for the contribution.
Could you fork the experimental branch and create the PR to that branch, please?

Approved #381 , closing #379 as duplicate.


##[error]Docker run failed with exit code 1

I just started setting up this workflow here however running the action gives me the above error without much else to work with see.

Please use a later/current version of the action. Please let me know if you still run into issues with a current version.


Travis CI build failed

See https://travis-ci.org/fuelphp/upload/jobs/70970411

We've seen it, but sofar no clue why it would fail at this step. We're looking into it.

At the time of writing upload does not have any tests anyway so the build status is irrelevant

The reason is

[Codeception\Exception\ConfigurationException]
UnitTester class doesn't exists in suite folder.
Run the 'build' command to generate it

Probably Codeception changed. Now it needs tests/_support/UnitTester.php.
According to error message, running below command solves the problem.
$ vendor/bin/codecept build


[GHSA-8xhr-x3v8-rghj] XWiki Platform's Groovy jobs check the wrong author, allowing remote code execution

Updates

Affected products

Comments
จุดอ่อน  ตัวแจงนับจุดอ่อนทั่วไป (CWE)
การควบคุมการเข้าถึงที่ไม่เหมาะสม (CWE-284)

Hi there @michitux and @surli! A community member has suggested an improvement to your security advisory. If approved, this change will affect the global advisory listed at github.com/advisories. It will not affect the version listed in your project repository.
This change will be reviewed by our highly-trained Security Curation Team. If you have thoughts or feedback, please share them in a comment here! If this PR has already been closed, you can start a new community contribution for this advisory

👋 This pull request has been marked as stale because it has been open with no activity.  If you do nothing this pull request will be closed eventually by the stale bot. Please see CONTRIBUTING.md for more policy details.


why is ModelRunneCpp await_responses blocked?

System Info
I wanna cancel the request in some case and the cancel_request need to pass the request id, then I call await_responses to obtain it. following is is my code.
what I am using is TensorRT-LLM version: 0.12.0.
    outputs = runner.generate(..., streaming=true..)
    for curr_outputs in outputs:
        print(f'step 1')
        responses = runner.session.await_responses()
        print(f'step 2')
        for response in responses:
            runner.session.cancel_request(response.request_id)
            print(f'step 3')
            runner.session.await_responses()
            print(f'step 4')

I try to test it in several times, sometime it blocked after print 'step 1'? I am confused why this happen. Please anyone could help me?
Who can help?
No response
Information

[ ] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction
run above code
Expected behavior
no
actual behavior
no
additional notes
no

We recommend using ModelRunnerCpp in the same way of run.py.

I try to test it in several times, sometime it blocked after print 'step 1'? I am confused why this happen.

This seems that there is no active request after canceling the request, then no response.

Then how to know if there is activate request? It will block the entire process, I can't stop it even by kill.

Then how to know if there is activate request?

stats = runner.session.get_latest_iteration_stats()
for stat in stats:
    print(stat.to_json_str())

If you want to cancel a request, please don't call runner.session.await_responses() out of the runner.generate. You can get the request_ids in runner.generate(link).
for curr_outputs in throttle_generator(outputs,
                                       args.streaming_interval):
    stats = runner.session.get_latest_iteration_stats()
    for stat in stats:
        print(stat.to_json_str())
    runner.session.cancel_request(request_ids[0])

Then how to know if there is activate request?

stats = runner.session.get_latest_iteration_stats()
for stat in stats:
print(stat.to_json_str())
If you want to cancel a request, please don't call runner.session.await_responses() out of the runner.generate. You can get the request_ids in runner.generate(link).
for curr_outputs in throttle_generator(outputs,
args.streaming_interval):
stats = runner.session.get_latest_iteration_stats()
for stat in stats:
print(stat.to_json_str())
runner.session.cancel_request(request_ids[0])

the way to obtain the request id showing in the generate, it's also running inner  runner.generate. still confused how to fetch the request id out of the  runner.generate.
    request_ids = self.session.enqueue_requests(requests)

You can hack the generate in model_runner_cpp.py to add request_ids to the output.
But actually we don't recommend users using cancel_request when using model_runner_cpp.py.

why? what's the purpose for cancel_request.

model_runner_cpp.py is used to run some simple examples.  Of course, we welcome users to make some changes to use it, including cancel_request.

then how about ModelRunner, which is py session. is it recommended to production?

which is py session.

py session is https://github.com/NVIDIA/TensorRT-LLM/blob/main/tensorrt_llm/runtime/generation.py.

is it recommended to production?

It depends on your needs. Now we recommend to deploy with Triton Inference Server for production, please refer to https://nvidia.github.io/TensorRT-LLM/quick-start-guide.html#deploy-with-triton-inference-server.
And we also provide a Python API, please refer to https://nvidia.github.io/TensorRT-LLM/quick-start-guide.html#llm-api and https://github.com/NVIDIA/TensorRT-LLM/tree/main/examples/apps


Swap pairs

Firstly, thanks for sharing this code with us. I am looking for the part to input pairs to swap. Do we have to input them manually or will the code look for the best pair on the dex and go through with the flashswap?

Out of the box the pairs are BNB and BUSD I believe we need to add them to pairs.js as well as their contract address where that's relevant too. The arbs that the script is finding for me (BUSD/BNB) are either too big or otherwise not actionable. I've changed the size in pairs.js in amountTokenPay but nothing seems to change in the size of arb ops being found, see example below:
[17071056] [4/19/2022, 3:52:52 AM]: [localhost] [BUSD/BNB pancake>panther] Arbitrage checked! Expected profit: 207.480 $86498.32 - 41495.95% [17071056] [4/19/2022, 3:52:52 AM]: [localhost] [BUSD/BNB pancake>panther] Arbitrage opportunity found! Expected profit: 207.480 $86498.32 - 41495.95% [17071056] [4/19/2022, 3:52:52 AM]: [localhost] [BUSD/BNB panther>pancake] Arbitrage checked! Expected profit: 207.243 $86399.65 - 41448.62% [17071056] [4/19/2022, 3:52:52 AM]: [localhost] [BUSD/BNB panther>pancake] Arbitrage opportunity found! Expected profit: 207.243 $86399.65 - 41448.62%
My next plan is to find out why these arbs are so big, how to solve this if needed, and then to experiment with other LPs / pairs to see if it's better. Good liquidity but low tx's would be the aim in identifying any pair.

cool! thanks for the reply. will try these out

you got to write a script that picks up the pairs for you, I did it in the past already. The script should look through all the available tokens and generate .json files for you to feed the bot.


small grammar fix in testscript README

Summary
How was it tested?

Current dependencies on/for this PR:

main

PR #533   👈

This comment was auto-generated by Graphite.


feat: add /cockpit/envs routes

What type of PR is this?
/kind feature
Add /cockpit/envs routes
Update engine
What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Needs to wait the merge of https://github.com/flow-build/engine/pull/291 from engine to be merged.
Does this PR introduce a user-facing change?:

Additional documentation e.g., usage docs, etc.:

:tada: This PR is included in version 2.30.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


FARMING - Update button

The button under Mazraa in several locations

should link to:
https://www.farmer.threefold.io/small-threefold-nodes.html

Both purchase links on Farming page updated.

thx


Bad else indention

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Description
When I write an else: , atom place the else in the funtion indent level
Steps to Reproduce

Select python language
Write a funtion with else:

**Expected behavior: keep the else in the same place I wrote it
**Actual behavior: Atom moves the else to the left
**Reproduces how often: Every time i write an else in an Funtion
Versions
Atom    : 1.20.1
Electron: 1.6.9
Chrome  : 56.0.2924.87
Node    : 7.4.0

I get the same unexpected behaviour when I try to write something like this:
def f(x):
    else:

which becomes:
def f(x):
else:

However, I get the expected behaviour when I type this:
def f(x):
    if True:
        pass
    else:

Versions:
Atom    : 1.19.6
Electron: 1.6.9
Chrome  : 56.0.2924.87
Node    : 7.4.0

Thanks for taking the time to contribute!
We noticed that this is a duplicate of https://github.com/atom/language-python/issues/209. You may want to subscribe there for updates.
Because we treat our issues list as the Atom team's backlog, we close duplicates to focus our work and not have to touch the same chunk of code for the same reason multiple times. This is also why we may mark something as duplicate that isn't an exact duplicate but is closely related.
For information on how to use GitHub's search feature to find out if something is a duplicate before filing, see the How Can I Contribute? section of the Atom CONTRIBUTING guide.


Wrong type, expected 'integer' for requestBody parameter (OpenAPI 3.0)

Description
I use formData parameters to describe request bodies (see Describing Request Body → Form Data).
It is convenient since this generates a ready to use form:

In this simple example, I just added two formData parameters on your helloworld example.
Expected behaviour
The email field cannot stay empty during form validation (it should shake and get a red background).
The fav_number field can stay empty during form validation (since it is not required).
Actual behaviour
Even if the email field is required, it is not checked during form validation. I investigated and this comes from a bug in Swagger (see issue #5181) and this is not related with Connexion.
But now if the fav_number is empty, here is the error returned by Connexion:
{
  "detail": [
    "Wrong type, expected 'integer' for requestBody parameter 'fav_number'"
  ],
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}

And it happens only for integer parameters. Change fav_number to string and it will work as expected.
EDIT: actually it happens for all non string parameters (ipv4 format, boolean type, etc.).
Steps to reproduce

Download the helloworld example.
Add two formData parameters (the requestBody section):

openapi: "3.0.0"

info:
  title: Hello World
  version: "1.0"
servers:
  - url: http://localhost:9090/v1.0

paths:
  /greeting/{name}:
    post:
      summary: Generate greeting
      description: Generates a greeting message.
      operationId: hello.post_greeting
      responses:
        200:
          description: greeting response
          content:
            text/plain:
              schema:
                type: string
                example: "hello dave!"
      parameters:
        - name: name
          in: path
          description: Name of the person to greet.
          required: true
          schema:
            type: string
            example: "dave"

      # ----- BEGIN: Add two formData parameters ----
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                email:
                  type: string
                fav_number:
                  type: integer
              required:
                - email
        # ----- END: Add two formData parameters ----

Go to http://localhost:9090/v1.0/ui/ and send the form as it is.
You'll get the error mentioned above.

Additional info:
Output of the commands:

python --version : 3.6.8
pip show connexion | grep "^Version\:" : 2.3.0

Can you reproduce this without the swagger-ui component?
If you can provide a curl command that is able to trigger this, I'd be able to look into it.
At the moment it sounds like swagger-ui might be passing a string even when you believe the field is empty (maybe a space or something).


[executor] ExecutorNode, remove unused ros node

This PR removes an unused member (of type rclcpp::Node) unnecessarily owned by the ExecutorNode.

Thanks @MostafaGomaa
Good catch!!
Merging... :rocket:


fixed test case errors.sil  for s390x

Added "CHECK-LABEL-s390x" for s390x
Tested validation on both x86_64 and s390x

@aschwaighofer Should this be fixed in the LLVM backend, so that the swifterror attribute just becomes a no-op on s390x or other platforms that don't have support for it?

@jckarter swifterror is a no-op on platforms that don't support it. SystemZ claims to support it: https://github.com/apple/swift-llvm/blob/stable/lib/Target/SystemZ/SystemZISelLowering.h#L475 but apparently not really
I have fixed clang to tell us not to use it: https://github.com/apple/swift-clang/commit/4cc58d4b61b71d1713029402e075a829b2a5637a

Up to the latest master version of swift, swifterror attribute looks not properly supported in llvm backend on s390x. When i try to reverse the https://github.com/apple/swift-clang/commit/4cc58d4b61b71d1713029402e075a829b2a5637a, it causes a lot of validation test failures, despite the previous attempt of swifterror llvm support at https://reviews.llvm.org/D19414#change-Q4u6HpIc5tew. HI, @jckarter and @aschwaighofer, do you mind having a look of the previous attempt and making suggestions on how to implement the support properly? Thanks.

@levivic I think you'll have more success taking this to the swift forums.  In the mean time, the clang change to the target info is in mainline llvm.  Gonna close this out.


Long names

Some of the ports listed are truncated, like "Microsoft.Office...." (I have two of these).  This page should mention how we can get the complete names.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 47d18a39-74ab-2d95-6300-e480f89c00ea
Version Independent ID: 101e081b-1cba-fec5-bffe-777ffc9229e0
Content: Get-PrinterPort (printmanagement)
Content Source: docset/windows/printmanagement/Get-PrinterPort.md
Product: w10
Technology: powershell-windows
GitHub Login: @andreabarr
Microsoft Alias: v-anbarr

OK, this might just be my nonexistent knowledge of PS.  I can see the complete names (limited by screen size) with Get-PrinterPort | Select-Object -Property Name