Provide a way to detect if currently in a transaction or not

I would like to have some compile-time or runtime checks about whether or not the current thread is in the transaction
the easiest way - to expose the thread-local transaction and do runtime checks on it
the safest way I think would be to add insert/update/delete methods to the Transaction type
or just serving the BriteDatabase from the Transaction
otherwise it's kind of awkward to carry around both BriteDatabase type for modification methods and a Transaction type for a proof of transaction
what do you think?

What goal are you trying to solve with this? What are you going to do with this information?

Here's my example
fun BriteDatabase.insertUser(cvs: ContentValues, user: User): Long =
    insert(Tables.USERS, fillUser(cvs, user), SQLiteDatabase.CONFLICT_REPLACE)

fun BriteDatabase.insertUsers(cvs: ContentValues, users: List<User>): Unit =
    users.forEachByIndex { u -> insertUser(cvs, u) }

fun BriteDatabase.insertMessages(cv: ContentValues, users: List<User>, messages: DialogMessages) {
  insertUsers(cv, users)
  messages.items.forEachByIndex { msg ->
    val dialogId = insertDialog(cv, msg)
    insertMessage(cv, dialogId, msg)
  }
}

fun insertHistory(hist: LongPollHistory): Unit =
    inTransaction {
      val cv = ContentValues()
      val messages = hist.messages
      val users = hist.profiles
      insertMessages(cv, users, messages)
      applyUpdates(hist.history, cv)
    }

for a single user insert I don't require a transaction
for a batch user insert I need a transaction
then that batch user insert is used in an insertion of both users and messages (which is used in a couple more places)
then that batch users + messages insert is used in a server history sync method, which is responsible for spawning the transaction
So here first function should work both with and without a transaction, 2 intermediate functions should only work in a transaction, and the function that spawns a transaction should not be in a transaction itself
Passing around a Transaction type would perfectly solve my problem, but I can't insert/update/delete with it, I also need a  BriteDatabase
I could carry around a both of them in a single type, but I see that as an unnecessary allocation

You know, while thinking about this problem I came up with this data type:
class BatchModification(val database: BriteDatabase,
                        val transaction: BriteDatabase.Transaction,
                        val values: ContentValues)

which gives me the access to all the modification methods, a proof of a transaction and a ContentValues that I can reuse :smiley:

I think adding the i/u/d methods to Transaction is probably the easiest way forward here.

Thanks, I'll be thinking about that since you don't mind adding those to Transaction


FS-532 stacksafe as tagless argument

This PR resolves #532.
We make stacksafe into an optional argument of the @tagless macro annotation, following the examples here.

Good news, this restores IntelliJ macro expansion support. Please see my comments on implementation. Thanks!

LGTM, thanks!


Doc improvements

some typos

some hyperlink fixes

reduction of 'So', 'But' etc at start of sentences, while hopefully keeping the same light tone.

"diagramme" - though I generally prefer international English spelling, in tech content I have come to see that the US spelling causes the least friction. For example, "colour" and "authorisation", which is how I would spell things personally, only add confusion vs "color" and "authorization". For that reason I changed "diagramme" to "diagram" for consistency.

some readability tweaks because I was there :)

EDIT: if you'd prefer I reduce this change to only typos and hyperlink fixes, that's no problem :)

Hey! Thanks for helping out. Yeah if you could remove the bigger edits that'd help. I'm the only American on the team so tread carefully haha on spelling cc @thruflo

No problem!
Hah yeah I actually surprise myself changing things into US spelling 😜
Cool, I'll come back to you soon...
On Mon, 26 Aug 2024, 20:49 Kyle Mathews, @.***> wrote:

Hey! Thanks for helping out. Yeah if you could remove the bigger edits
that'd help. I'm the only American on the team so tread carefully haha on
spelling cc @thruflo https://github.com/thruflo
—
Reply to this email directly, view it on GitHub
https://github.com/electric-sql/electric/pull/1558#issuecomment-2310133287,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHMJITOMY3CPSSUFE2TH2DZTMP4FAVCNFSM6AAAAABM7LQ5F2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJQGEZTGMRYG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

Feel free to open a new PR @aellerton when you have a chance but I'm going to close this one now as it's fairly out of date.

Thanks Kyle. Sorry, other commitments got in the way of coming back to
this.
On Wed, 9 Oct 2024, 00:40 Kyle Mathews, @.***> wrote:

Closed #1558 https://github.com/electric-sql/electric/pull/1558.
—
Reply to this email directly, view it on GitHub
https://github.com/electric-sql/electric/pull/1558#event-14559968120,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHMJIUFQYRPLEISVD7P7QLZ2QDJFAVCNFSM6AAAAABM7LQ5F2VHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJUGU2TSOJWHAYTEMA
.
You are receiving this because you were mentioned.Message ID:
@.***>


Wire up the download buttons to the Preprint PDFs

@ryandixpeek suggests the latest changes will be ready by Weds (12th Oct). We'll then review those with the other stakeholders as a cursory check before uploading them somewhere useful.

The updated PDFs examples are available here; https://pagedjs.pages.gitlab.coko.foundation/elife-pagedjs/


Opensource activation

Below jobs are working in progress at rfc branch
Restore commit history

Issue: History of upstream are squash-ed even though they are third-party
Solution: Restore history
[x] linux
[x] guest-linux
[x] islet-build
[x] islet

Manage third-party projects

Issue

Redundant forked repos (islet-build, islet-linux)
Almost sub-modules needs to be modified (tf-a, tf-a-tests, build)

Solution: Use worktree which manages multiple working trees

Before
~/islet (main) $ tree -L 1
.
├── assets # submodule
├── build # submodule, forked, modified
├── guest-linux # submodule
├── linux # submodule, forked, modified
├── trusted-firmware-a # submodule, modified
└── upstream-trusted-firmware-a # submodule

After
~/islet (rfc) $ tree -L 2
.
├── assets # submodule
├── third-party
│   ├── nw-linux # worktree
│   ├── optee-build # worktree
│   ├── realm-linux # worktree
│   ├── tf-a # worktree
│   └── tf-a-tests # worktree

Third-Party Projects

usage
project
modified
branch (worktree)
upstream base

hypervisor
normal world linux
O (kvm)
nw-linux-5.17
upstream-linux-v5.17

realm
realm linux
X
realm-linux
upstream-linux-v5.19

monitor
tf-a
O
tf-a
upstream-tf-a-v2.7

el-2, realm
tf-a-tests
O
tf-a-tests
upstream-tf-a-tests-v2.7)

building linux
optee-build
O
optee-build
6a868e3

https://github.com/Samsung/islet/tree/rfc


Add support for the Symphony Elements "select" tag

Duplicated by https://github.com/symphonyoss/messageml-utils/issues/97


Update research ultra-coarse-grained simulation

Hi @mzf0069! Can you add this line at the end of your index.md file: [See our publications!](../../publications/?search=surrogate+modeling)? You can look at mine or Levi's index.md file for reference. You can change the search keyword (surrogate+modeling part) if you think some other keyword is applicable.

Thanks for this PR! I pushed a commit to reorganize it into the framework I implemented on Mayukh's PR.
Before merging, I would like to discuss some changes to the figure. Specifically, I would like to try to make it a little bit simpler. I'd also like to use Arial font to be consistent with Levi's figure. Let's discuss some ideas for that later!

Also, please make sure to git pull before making any further changes yourself, since I pushed to your branch.


沙盒中help genshin指令未找到

使用两种方法的安装情况似乎都正常（？），koishi的日志也没有报错
npm

C:\Users\Administrator>npm install koishi-plugin-genshin
added 133 packages, and changed 7 packages in 19s
19 packages are looking for funding
run npm fund for details

yarn

C:\Users\Administrator>yarn add koishi-plugin-genshin
yarn add v1.22.19
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>[4/4] Building fresh packages...
success Saved 1 new dependency.
info Direct dependencies
└─<EMAIL_ADDRESS>info All dependencies
└─<EMAIL_ADDRESS>Done in 3.21s.

此插件不支持 Koishi v4 且暂无适配的计划


error:0308010C:digital envelope routines::unsupported when running webpack via node 17.1.0

webpack  ^5.64.3
upgraded to Node 17.1.0
This thread at the very end says to just use the latest version of webpack.  I did that, still same error.
Also tried adding export NODE_OPTIONS=--openssl-legacy-provider to the top of my ~/.zshrc, then sourced it, but no luck.
now when I run webpack, I get this:
yarn run v1.22.17
$ yarn lint && yarn copyData && yarn compile-server && yarn start-static-server & node_modules/.bin/webpack-dev-server -d --watch
$ eslint --fix --quiet --ext src/**/*.ts[x]
$ yarn make-data-directory && cp ../server/data/companies.json ../../dist/server/data && cp ../server/data/countries.json ../../dist/server/data
[HPM] Proxy created: /api  ->  http://localhost:8000
[HPM] Subscribed to http-proxy events:  [ 'error', 'close' ]
[HPM] Proxy created: /graphql  ->  http://localhost:7000
[HPM] Subscribed to http-proxy events:  [ 'error', 'close' ]
ℹ ｢wds｣: Project is running at http://localhost:8080/
ℹ ｢wds｣: webpack output is served from /
ℹ ｢wds｣: Content not from webpack is served from /Users/daveschinkel/code/projects/we-do-tdd/src/client
ℹ ｢wds｣: 404s will fallback to /
$ mkdir -p ../../dist/server/data
node:internal/crypto/hash:67
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at module.exports (/Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/webpack/lib/NormalModule.js:471:10)
    at /Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/webpack/lib/NormalModule.js:503:5
    at /Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at Array.<anonymous> (/Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
    at /Users/daveschinkel/code/projects/we-do-tdd/src/client/node_modules/graceful-fs/graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v17.1.0
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
$ node_modules/.bin/tsc -b ../server/
$ node --optimize_for_size --trace-warnings --experimental-json-modules --no-warnings ../../dist/server/server.js
node:internal/errors:464
    ErrorCaptureStackTrace(err);
    ^

TypeError [ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "file:///Users/daveschinkel/code/projects/we-do-tdd/dist/server/data/countries.json" needs an import assertion of type "json"
    at new NodeError (node:internal/errors:371:5)
    at validateAssertions (node:internal/modules/esm/assert:74:15)
    at defaultLoad (node:internal/modules/esm/load:25:3)
    at ESMLoader.load (node:internal/modules/esm/loader:353:26)
    at ESMLoader.moduleProvider (node:internal/modules/esm/loader:274:58)
    at new ModuleJob (node:internal/modules/esm/module_job:66:26)
    at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:291:17)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:255:34)
    at async ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:81:21)
    at async Promise.all (index 1) {
  code: 'ERR_IMPORT_ASSERTION_TYPE_MISSING'
}

Node.js v17.1.0
error Command failed with exit code 1.

unrelated to wepack

@dschinkel can you clarify why do you think is this unrelated to webpack and how can this be solved? Having the same problem on my end...

You need write import foo from "./file.json" assert { type: "json" }; to using JSON in ESM

would somebody tell me why I'm getting this error?
i ｢wds｣: Project is running at http://localhost:9000/
i ｢wds｣: webpack output is served from /
i ｢wds｣: Content not from webpack is served from ./
i ｢wds｣: 404s will fallback to /index.html
node:internal/crypto/hash:71
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:140:10)
at module.exports (C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\webpack\lib\NormalModule.js:417:16)
at handleParseError (C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\webpack\lib\NormalModule.js:471:10)
at C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\webpack\lib\NormalModule.js:503:5
at C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\webpack\lib\NormalModule.js:358:12
at C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at Array. (C:\Users\ADMIN\OneDrive\Pictures\VoiceLink\agora-app-builder\voicelink\node_modules\loader-runner\lib\LoaderRunner.js:205:4) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'

That means the node version you use is not supported in that project. Try to run the application by degrading it to the node version like 12.13.0 or any older than you are using. Hope this will help you.


Allow @filter directives that apply to the enclosing scope.

An example of such a filtering operator is the upcoming edge degree operator.
The changes are as follows:

Instead of passing local_directives everywhere, we now only pass the directives that must be unique (i.e. appear 0 or 1 times at any given AST node).
@filter directives are processed in exactly one place, so we only load them there. We go through a new helper that cleanly encapsulates the "which scope does this directive apply to" logic.

Coverage decreased (-0.02%) to 94.071% when pulling 8eab990290d9a2f82b613f5bef5c64e1936369e2 on processing_order_changes into 3429b9a747d4d169ee558f09064336844de5b95a on edge_degree_filtering.

Coverage decreased (-1.0%) to 93.094% when pulling 949db26e0aa41cfa3395c88be9af1d5f81e6b246 on processing_order_changes into 3429b9a747d4d169ee558f09064336844de5b95a on edge_degree_filtering.


Interactive marker 'EE:goal_right_ee_link' contains unnormalized quaternions

Hi everyone,
My environment

OS Version: Ubuntu 16.04

ROS Distro: Kinetic

RViz 1.12.16, Qt 5.5.1, and OGRE 1.9.0.

[ INFO] [1553560290.248358439]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1553560290.636277570]: Constructing new MoveGroup connection for group 'arms' in namespace ''
[ INFO] [1553560291.714221605]: Ready to take commands for planning group arms.
[ INFO] [1553560291.714362132]: Looking around: no
[ INFO] [1553560291.714440855]: Replanning: no
[ WARN] [1553560291.749553136]: Interactive marker 'EE:goal_right_ee_link' contains unnormalized quaternions. This warning will only be output once but may be true for others; enable DEBUG messages for ros.rviz.quaternions to see more details.
```
I went through the previous issues, it seems that a few people run into the same issue but I did not find any solution.
If anyone knows how to deal with this, please let me know.
Thanks for your kind help.
Chunting

This marker name originates from MoveIt. Please file an issue there.


Problem downloading from youtube

$ youtube-dl -U
youtube-dl is up-to-date (2021.12.17)
$ ytdl -v -F https://youtu.be/i0JAL7Yniy8?t=150 2>&1
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', '-F', 'https://youtu.be/i0JAL7Yniy8?t=150']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Python version 3.10.8 (CPython) - Linux-6.0.8-100.fc35.x86_64-x86_64-with-glibc2.34
[debug] exe versions: ffmpeg 4.4.3, ffprobe N-51556-ge278500
[debug] Proxy map: {}
[youtube] i0JAL7Yniy8: Downloading webpage
[youtube] i0JAL7Yniy8: Refetching age-gated info webpage
WARNING: unable to download video info webpage: HTTP Error 410: Gone
ERROR: Sign in to confirm your age
This video may be inappropriate for some users.
Traceback (most recent call last):
File "/sdb3/home/jd/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 815, in wrapper
return func(self, *args, **kwargs)
File "/sdb3/home/jd/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 836, in __extract_info
ie_result = ie.extract(url)
File "/sdb3/home/jd/bin/youtube-dl/youtube_dl/extractor/common.py", line 534, in extract
ie_result = self._real_extract(url)
File "/sdb3/home/jd/bin/youtube-dl/youtube_dl/extractor/youtube.py", line 1731, in _real_extract
raise ExtractorError(reason, expected=True)
youtube_dl.utils.ExtractorError: Sign in to confirm your age
This video may be inappropriate for some users.
I am indeed logged in to my gmail account
So, what is the problem here???

you need to use a cookies.txt file in your command.

You may find that the git master version, which has just been updated, bypasses the age gate without passing cookies. However it tells me this:
This video contains content from Studiocanal, who has blocked it in your country on copyright grounds

Also, do quote the "URL" in case you forget to do so when the URL has ...?t=150&query_param_that_will_be_ignored_and_run_as_a_separate_command.

please provide an example, as I have never had to do so before.
Thanx!!
On Mon, Feb 13, 2023 at 6:29 PM october262 @.***> wrote:

you need to use a cookies.txt file in your command.
—
Reply to this email directly, view it on GitHub
https://github.com/ytdl-org/youtube-dl/issues/31529#issuecomment-1428969224,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABACC6QTYC57X2WAXDKZHALWXLNWLANCNFSM6AAAAAAU25UT6A
.
You are receiving this because you authored the thread.Message ID:
@.***>

Eg, as you are in a POSIX shell, to list formats verbosely:
youtube-dl -v -F 'https://youtu.be/i0JAL7Yniy8?t=150'

You had mentioned that I need to specify
a file by the name cookies.txt
and I asked for an example of the youtube-dl command
having that file as an arg.
Can you show me such an example?
P.S: I am on Linux.
On Tue, Feb 14, 2023 at 9:22 AM dirkf @.***> wrote:

Eg, as you are in a POSIX shell, to list formats verbosely:
youtube-dl -v -F 'https://youtu.be/i0JAL7Yniy8?t=150'
—
Reply to this email directly, view it on GitHub
https://github.com/ytdl-org/youtube-dl/issues/31529#issuecomment-1430019804,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABACC6SNXB2MD3A333P2RDTWXOWLTANCNFSM6AAAAAAU25UT6A
.
You are receiving this because you authored the thread.Message ID:
@.***>

See the update above.


Feature: Accept and auto parse application/x-www-form-urlencoded content-type for request body

Are we interested in accepting different content types?
Given that Serverless accepts application/x-www-form-urlencoded content-type out of the box as mentioned in the Gitter, it might make sense to allow this content type and offer it parsed like for application/json.
API
application/x-www-form-urlencoded could be enabled/disabled via a method on api() like (maybe a prettier api could be thought up 🤷♀):
export default vandium.api()
        .acceptFormURLEncoded(true)
        .POST( {
                body: {
                    foo: vandium.types.string(),
                }
            },
            (event) => 'hello');

Alternately it could just be parsed automatically without config like for json bodies.
In case other content types are going to be auto-parsed in the future, instead of the acceptFormURLEncoded() a general 'bodyRequestContentType()' may be more useful (or perhaps a @content key in the body validation object?)
Implementation
It could be done within: https://github.com/vandium-io/vandium-node/blob/a973e3ef98342128a9eca3c1299cbca9c048d3ce/lib/event_types/api/api_handler.js#L108
via another try block using the query-string module or some other parser.
A more longevity oriented solution may be to pass along a contentType arg and have that function do some case handling.

( Not sure if this is a feature or an enhancement )
I can open up a PR if needed upon settling on a non-breaking API.

Can you open up a PR and we can get it into the next release.
Thanks

I'm not sure which API suggestion we are interested in - but I'll start with two branches:

For automatically parsing
For configured parsing via .formURLEncoded()

Created 4 branches for permutations of the decisions of

which querystring parsing lib to use and
whether the parsing is automatic - like for JSON bodies - or only enabled via a handler method.

Please advise as to which I should open a PR for.

I think the parsing should be automatic but have the ability to enable/disable


Cherry-pick fix for CVE-2021-32783 via go.mod replace directive

Replacement for #563.
This is a fix for CVE-2021-32783.
Process: I read https://github.com/projectcontour/contour/compare/v1.17.0...v1.17.1 and attempted to apply the patch to the vendored copy of Contour. Unlike the real fix, I didn't provide a configmap value to override to allow ExternalName services, so an upgrade to 1.17.1 or 1.18 will be needed to re-enable the functionality.
https://github.com/evankanderson/contour/tree/CVE-32783 contains the fix; Contour is only maintaining the latest release branch.

/assign @nak3 @julz @kvmware
This seems "cleaner" in a way, though having a random branch with a commit that's insipired by a later Contour release is... not great.
For 0.25, we should move to 0.17.1 or 0.18.0 (depending on schedule).

If you like this one, you'll probably like #565 (release 0.23), #566 (release 0.22), and #567 (release 0.21), too. Per https://github.com/knative/community/blob/main/mechanics/RELEASE-VERSIONING-PRINCIPLES.md#knative-community-support-window-principle:

We (the community) support the most recent 4 versions of Knative. The term support as used here means that we will maintain release branches for these releases. We will consider backporting applicable fixes to these release branches depending on severity and feasibility.

Unlike the real fix, I didn't provide a configmap value to override to allow ExternalName services, so an upgrade to 1.17.1 or 1.18 will be needed to re-enable the functionality.

I think this will be a big pain... We need to ask users to enable enableExternalNameService to true, which is not recommended by upstream, whenever they want to use Contour with Knative.

/hold

Hmm, I'm wondering if we need to change the implementation of DomainMapping to use https://projectcontour.io/docs/v1.17.1/config/inclusion-delegation/


fix for sveltekit

I am kinda new to this but this should do it.
I replaced "debug" with "@milahu/debug-esm" which is an esm fork of debug. Keep in mind debug v5 will support esm and you should switch back.
I also fixed the lib exports as vite would nag about default exporting.
P.S. You should include the src of the demo so we can test it faster. Remember to load the recaptcha key from env and exclude that in .gitignore

This fixed my issue for the debug package but I am getting error:
Uncaught Error: reCAPTCHA placeholder element must be an element or id

Do you have an example of how you included the <Recaptcha> in the html section of the Svelte app?

Tbh this patch only worked for a couple of days for me and another vite update broke it as well. I am now using a version completely stripped out of debug.
Anyways, the html portion looks like:
<form name={name} on:submit|preventDefault={submitHandler}>
...
    <div class="form-control mb-3">
        <Recaptcha
        sitekey={variables.recaptchaKey}
        badge={"inline"}
        size={"invisible"}
        on:error={onCaptchaError}
        on:ready={onCaptchaReady} />
    </div>
...
</form>

apparently I'm using tailwind and have a few functions in my <script> tag to handle the form, enable the submit button onCaptchaReady and handle errors.

Thank you will take a look at the other branch, have you seen this error at all?
Uncaught Error: No reCAPTCHA clients exist.

Thank you will take a look at the other branch, have you seen this error at all?
Uncaught Error: No reCAPTCHA clients exist.

no sorry


Banneditems.cfg not working

I set up a test server to update our private modpack, and its been annoying me that I can't
get banned items to be hidden. So with a fresh install, on updated forge and only NEI added
even the default listing {name:"minecraft:command_block"}=[NONE] doesn't work, as
the command block is still visible in the menus.
I'm using forge <IP_ADDRESS>9-1710ls with NEI <IP_ADDRESS> and CCC <IP_ADDRESS>
Thank you for your work, and your mods.
I'd request that the comment in the file have the statement "the format isn't that hard to figure out"
removed, as while I have been plugging away trying to get this to work it has been discouraging
to see when I open the file on every new install. (there have been many)
regardless, Thanks again for all you do.

Banned items only prevent people from spawning them using cheat mode, they don't hide the items from user's lists. Perhaps I should add another config for hidden items

Perhaps I'll hide banned items if they have no recipe, sound good?

I'd like to hide saplings, for example- they have no recipe, but they have usage.-
Can you please make it possible to choose exactly what to hide please?
because seeing the usage on some things can sometimes be helpful.
I used to hide things this way for my modpack on 1.6.4. I find it odd that it will not do so now.
Any control over visibility is appreciated.
I also would like to ask if there is any way to hide sublists? for example- mobspawners?
I'd simply like to reduce the amount of things people must sort through.
Thanks you for your time and effort

I'd also like to thank you for not saying "just right click things in the sublist menus", lol

I understand that as a server owner, you'd like to trim down the NEI experience to make it more user-friendly. I shall add some features for you.

I'm very grateful.

It occurred to me that closing the issue might not serve well as a reminder for when you
have time to work on this. I reopened it and renamed the thread to something more
appropriate, as the title was the reason I closed it originally (wasn't thinking, lol)

No worries, good idea

Just checking in. Would love an update with this in for a 1.7.10 modpack, if you ever had the time and interest.


Publish your extension to Microsoft Edge Addons website

Microsoft Edge is the second most used browser on the web, making the browsing experience more flexible, offering many more services for users and optimized for Windows devices.
Microsoft Edge supports Chromium extensions, and you can publish your extensions to Microsoft Edge Add-ons website with minimal code changes. Find out more here.
If you have any more queries about porting Chrome extension to Microsoft Edge or anything else, you can contact the relevant teams whose links are given here.
Let me know if this was helpful. I am happy to help you with more details.

This would be a great addition to the Microsoft Edge addon ecosystem.

This would be a great addition to the Microsoft Edge extension ecosystem.


not able to read long string within a tag

Reading a tag value but am not getting the whole string but just a part of it.
For example in the below example,

what I should get  = "Kathua with Baileys and Triple Sec"
what am getting    = "Kathua with Baileys and T…"

Am using below code:
SMXMLElement *summaryElement = [item childNamed:@"summary"];
NSString *isummary = [summaryElement value];
NSLog(@"summary: %@", isummary);
to read following xml:
<item identifier="it224" name="B-52">
<summary>Kathua with Baileys and Triple Sec</summary>
</item>
Is there any length limit while reading a tag value???

Are you sure you're running the code you printed above?
When I execute this code:
SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error];
SMXMLElement *item = document.root;
SMXMLElement *summaryElement = [item childNamed:@"summary"];
NSString *isummary = [summaryElement value];

NSLog(@"summary: %@", isummary);

...against your sample XML document, it prints the whole value "Kathua with Baileys and Triple Sec".
Are you trying to "re-parse" an XML document that was already parsed with SMXMLDocument? Because if you try to get the XML string back by calling -description(), then the values will be truncated like you illustrated.

Yes.
I was re-parsing it.
Should that cause any such behaviour??
On Mon, Mar 5, 2012 at 12:48 AM, Nick Farina
<EMAIL_ADDRESS>wrote:

Are you sure you're running the code you printed above?
When I execute this code:
SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error];
   SMXMLElement *item = document.root;
   SMXMLElement *summaryElement = [item childNamed:@"summary"];
   NSString *isummary = [summaryElement value];
NSLog(@"summary: %@", isummary);
...against your sample XML document, it prints the whole value "Kathua with Baileys and Triple Sec".
Are you trying to "re-parse" an XML document that was already parsed with SMXMLDocument? Because if you try to get the XML string back by calling -description(), then the values will be truncated like you illustrated.

Reply to this email directly or view it on GitHub:
https://github.com/nfarina/webrequest/issues/3#issuecomment-4312325


RunAsService on IHost interface

Currently RunAsService depends on IWebHost.  It should be depend on IHost interface, because it would be great if anyone could write windows service without the HTTP infrastructure.
There is an SO post, which about this feature request:
https://stackoverflow.com/questions/50848141/netcore-2-1-generic-host-as-a-service

This works a bit differently in GenericHost. See https://github.com/aspnet/Hosting/blob/2a98db6a73512b8e36f55a1e6678461c34f4cc4d/samples/GenericHostSample/ServiceBaseLifetime.cs#L13 Though there's still room for improvement.

Thanks, it works like a charm.
Yes, it would be great if this solution could work part of the framework.

@Tratcher Is there a plan to include the ServiceBaseLifetime.cs and ServiceBaseLifetimeHostExtensions.cs within Microsoft.AspNetCore.Hosting.WindowsServices in the future (perhaps 2.2)? I've just tested a windows service based on the sample and it seems to work. Would be great if it was "built-in".

It's likely. We'll be doing a lot more work in this space in 3.0.

Thanks @Tratcher. Are there any tracking issues for the 3.0 plans available that I can follow?

We haven't finalized our 3.0 plans yet, but keep track of this one and we'll updated it as we work things out.

Ok thanks.


Switch two camera

I need to switch between 2 rtsp links on the same RtspSurfaceView. When I do this (refer to the code below). But the video is wrong and seems to show a combination of images between the 2 rtsp links. Can you suggest any ideas, thanks!
Ex:
fun switchCamera(url: String){
if (binding.svVideo.isStarted()) {
binding.svVideo.stop()
}
        val uri = Uri.parse(url)
        binding.svVideo.apply {
            init(uri, liveViewModel.rtspUsername.value, liveViewModel.rtspPassword.value, "rtsp-client-android")
            debug = true
            start(true, true)
        }
    }

So, your start RtspSurfaceView with url1, then stop it, assign url2 and start it again. Am I right?

I tried delaying a bit before switching between the 2 urls, and it worked, maybe the problem is with my device, it's quite weak. Thank you for your feedback.


Asin vs ISBN-10 product identification

Some products on Amazon (https://www.amazon.com/Best-California-Maria-Cianci/dp/000255478X) don't have asin number. Instead, they have ISBN-10 :  000255478X.
How could I find the product title using this ISBN-10 :  000255478X?

Hi, I've checked several products under the category "Books". I guess Amazon directly uses the ISBN-10 number of one book as its ASIN number. As a result, it should be fine to directly access the products using the parent_asin attribute.
If you can not find one specific item using their parent_asin, that could be possible due to:

Not enough reviews associated with this item. We collect the dataset in a user-centric manner, which means that we first collect a pool of users, and then collect all the reviews of each user, then collect the metadata of the associated products. If there is no review associated with one product, then it could be possible that the product
Time lag: Collecting the dataset takes time, so some recent reviews may be missing (even before the cut-off time).
Technical issues: The collection may encounter network issues, parsing errors, or others.

For instance, I am trying to find the '0781438772' product. Then, searching for it on the Amazon e-commerce website, we find the book: "Basic Bible Interpretation" which has 514 ratings.

0781438772

Recently, I discovered that this book is associated with "0896938190" (in the Books category) instead of what appears on the Amazon website<PHONE_NUMBER>).

0781438772

Recently, I discovered that this book is associated with "0896938190" (in the Books category) instead of what appears on the Amazon website<PHONE_NUMBER>).

It is the same fo the book  Miss Hobbema Pageant, which appears with asin equal to<PHONE_NUMBER> while in Amazon, it appears associated with 000647960X.

For the Bible example, it appears that the two ISBN-10s refer to different editions of a book with the same title, content, and author. So, the behavior seems expected, as the platform treats them as two distinct books. Please let me know if I’ve misunderstood anything.
0781438772
Amazon:

Search ISBN-10 on Abebooks:

0896938190
Amazon:

Search ISBN-10 on Abebooks:


Partial Results listener does not fire on Android 13

Describe the bug
On Android 13 (API 33), the partial results listener never fires. Could it be because of the changes mentioned here
https://developer.android.com/about/versions/13/behavior-changes-all#speech-service
See also - https://stackoverflow.com/questions/73516849/how-to-get-devices-default-speechservice-provider-android-api-13 for a possible implementation using the default speech provider.
Expected behavior
The partialResults listener should fire as it does on iOS
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: OPPO F74
OS: ColorOS 13.0 (Android 13)
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
The plugin is pretty much unusable without the listener firing

i tried with the permissions above and the partialResults event still dont fire...

It didn't worked on APIs 33 and 32... I had to rollback do Cordova plugin that still working besides being updated 7 years ago...

Can you provide a sample app?
Seems to work fine for me.
The plugin adds the <uses-permission android:name="android.permission.RECORD_AUDIO" /> permission, you don't have to add it yourself. But you have to request it with SpeechRecognition.requestPermission();.
That was added on version 4 of the plugin, so make sure you are in 4.0.0 or newer.

closing since there was no response.
I updated the plugin to use Capacitor 5 and the listener was working fine.


Unable to get dynamic list items working correctly

I'm using react-virtualized to render a list of dynamic content but I'm having problems getting it working properly. I'm using the CellMeasurer hoc with the List component to wrap my own components, it's possible for the component to contain either an image or just some text. The problem I'm having is that all of my cells end up being the same height, meaning that a cell with no content is as large as the largest one.
Here's my component:
import React from "react";
import "react-virtualized/styles.css";
import {
  CellMeasurerCache,
  CellMeasurer,
  List,
  WindowScroller,
} from "react-virtualized";
import Icon from "./icon.png";

const Timeline = () => {
  const cache = new CellMeasurerCache({
    fixedWidth: true,
    keyMapper: () => 1,
  });

  const dummyData = Array.from({
    length: 100,
  }).map((item, index) =>
    index % 2 === 0
      ? {
          text: "Greatest cat",
          key: index,
        }
      : index % 5 === 0
      ? {
          text: "Your plan begins on August 1 2019. View Details.",
          image: Icon,
          key: index,
        }
      : {
          key: index,
        }
  );

  function rowRenderer({
    columnIndex,
    rowIndex,
    parent,
    key,
    index,
    isScrolling,
    isVisible,
    style,
  }) {
    const content = dummyData[index];
    return (
      <CellMeasurer
        cache={cache}
        columnIndex={columnIndex}
        key={`${key}-${dummyData[index].key}`}
        parent={parent}
        rowIndex={rowIndex}
      >
        {({ measure, registerChild }) => (

            {content.image ? (

{content.text}

            ) : (
              content.text
            )}

        )}
      </CellMeasurer>
    );
  }

  return (
    <WindowScroller>
      {({ height, isScrolling, onChildScroll, scrollTop }) => (
        <List
          height={height}
          isScrolling={isScrolling}
          onScroll={onChildScroll}
          scrollTop={scrollTop}
          width={1000}
          deferredMeasurementCache={cache}
          rowRenderer={rowRenderer}
          rowCount={dummyData.length}
          rowHeight={cache.rowHeight}
        />
      )}
    </WindowScroller>
  );
};

export default Timeline;

When I look at the DOM all of the height properties are the same despite the content with images being larger than the ones without. I feel like I'm missing something important in order to make this work properly. I've tried removing the WindowScroller wrapper too but that doesn't seem to have any effect either.

This is what this results in:

Any help would be greatly appreciated.
Sandbox: https://codesandbox.io/s/condescending-flower-ehzh4?file=/src/App.js

Hey @JamesIves, I am facing the same issue. Did you get any workaround to solve this?

Not yet :(

This might help you: https://stackoverflow.com/a/45394513/4202031


[WIP] feature/ISSUE-8

The  credential object returned by Google upon successful authentication looks like this
{
  "iss": "https://accounts.google.com", // The JWT's issuer
  "nbf":<PHONE_NUMBER>74,
  "aud": "314159265-pi.apps.googleusercontent.com", // Your server's client ID
  "sub": "3141592658289793238", // The unique ID of the user's Google Account
  "hd": "gmail.com", // If present, the host domain of the user's GSuite email address
  "email"<EMAIL_ADDRESS>// The user's email address
  "email_verified": true, // true, if Google has verified the email address
  "azp": "314159265-pi.apps.googleusercontent.com",
  "name": "Elisa Beckett",
                            // If present, a URL to user's profile picture
  "picture": "https://lh3.googleusercontent.com/a-/e27182817528459045235360uler",
  "given_name": "Elisa",
  "family_name": "Beckett",
  "iat":<PHONE_NUMBER>, // Unix timestamp of the assertion's creation time
  "exp":<PHONE_NUMBER>, // Unix timestamp of the assertion's expiration time
  "jti": "abc161803398874def"
}

When a user signs up with Google, we set an "unusable" password. This means that trying to sign in with email will fail. We need to pass appropriate message to user in this scenario.

When a user signs up with Google, we set an "unusable" password. This means that trying to sign in with email will fail. We need to pass appropriate message to user in this scenario.

The symmetric scenario would be having a user sign up with email and then try to sign in with Google with the same email, but we have that covered already.


Number of tests run for Kitura on Linux differs from number run on OSX

In the test case TestResponse the test testErrorHandler wasn't being run on Linux.
In addition changes had to be made to the test assertion on Linux, due to the way NSError.localizedDescription works when there is no localized description in the NSError's user info.

Validated.


Warning when closing Modal "Can't perform a React state update on an unmounted component."

Bug Report
My first attempt at using a Modal was to have a state variable indicating if the modal was open, and only render the Modal when open was true.  This worked fine for closing the modal with the closeIcon, but gave me a warning when I clicked outside the modal to close it.
After some testing I changed my code to always render the Modal and set the open property to my open state variable.
I suggest explaining this in the documentation (or fixing the cause of the warning).
Steps
Render modal depending on state.
Click outside the open modal, or use escape to close it.
Expected Result
Modal should close without errors in console.
Actual Result
Modal is closed with this error in the console:
"Warning: Can't perform a React state update on an unmounted component."
Two errors when using escape to close.
Version
2.0.3
Testcase
https://codesandbox.io/s/semantic-ui-example-forked-yt0xt

@d4kris thanks it's definitely not expected to have a warning from React, #4259 will fix it 🙋♂

Was fixed in<EMAIL_ADDRESS>


More tweaks

Hardcode the name in !welcome command since it's undefined, and hardcoding is easier. Also includes a potential fix for the !docs vs !docscontrib clash

Crap! Wrong repo!


Meta: Update Ansible-version

Partla osism/issues#450
Signed-off-by: Ramona Beermann<EMAIL_ADDRESS>

ansible-lint... :(


Add GPU+QOS support & use IPV4

This PR does two things:
Fix SSH Issue
The current version would not work on my system unless I added the -4 flag to the ssh command invoked by the script, which forces the agent to use IPV4. This PR adds that flag, which should improve support.
Add GPU + QOS Support
Adds support to set the --gres=gpu:n and --qos=x flags when invoking a new job via SLURM.

Interesting that no one has noticed the --memory until now.
Thank you for your PR.


Web socket

It's just a great codebase that I'm looking into, and I'm also trying to contribute to it."
Few questions:

It seems that the WebSocket part of OCPP is not included in this project, so it may focus solely on CPMS (Charge Point Management System) functionality.

If someone needs to implement the core OCPP WebSocket functionality in Rust, could you suggest some resources?

Hello, yes I think the best option would be to look at other languages, Golang for example has a more feature complete library.

@siddharth1729 checkout this repo also: https://github.com/shepmaster/rust-charge


Go library that has OpenTelemetry natively integrated (KrakenD)

Hello,
I found the following text in this URL: https://opentelemetry.io/docs/languages/go/libraries/

Help wanted!
As of today, we don't know about any Go library that has OpenTelemetry natively integrated. If you know about such a library, let us know.

I am guessing this is just outdated information because there are a lot of integrations on your web page (including ours, thanks to whoever added it).
In any case,  at KrakenD, we have been offering the Go library in production for about two months with very good results (source code).
In case you are unfamiliar, KrakenD is an open-source high-performance API Gateway used by small and large (Forbes 500) companies and governments. It runs on 2M servers/pods every month. OpenTelemetry is gradually replacing OpenCensus (which we happily used for 6 years) among our user base, and it provides full visibility across all stages of a request/response flow.
I am happy to provide any additional details you want and am open to collaboration. Otherwise, feel free to close this issue.
Thanks and keep up the good work!

hey @alombarte, thanks for raising this issue! There are many integrations indeed, but all of them are applications integrating OpenTelemetry, which is great, but not what we want to have listed on that page. This page is about libraries consumed by applications, and those libraries having opentelemetry integrated directly, so also no "instrumentation libraries", e.g. for JavaScript NextJS is fullfilling that requirement: https://nextjs.org/docs/app/building-your-application/optimizing/open-telemetry

Hi @svrnm,
Just one more comment to clarify in case this is useful. You are right that KrakenD is an application, but krakend-otel is a pure Go library, that is consumed by KrakenD but also others.
Although this is not as generic as a Vercel/NodeJS application it is still a library to be loaded in a framework (more specifically in the (Lura Project - The Linux foundation). And this is not an app, is a framework to build gateways.
It is named krakend-otel because, well, our company has this name :)
We developed the library generically, and the main user is KrakenD itself, but it can be loaded into any other application that uses the Lura framework.
This is probably not what you are looking for, but still, I wanted to raise my hand if that helps

Thanks, @alombarte! I have to admit that our terminology is not really clear/might be confusing, but it's really complicate to differentiate. There are three (or four?) different kinds of integrations so to speak:

Integration of opentelemetry in an application, similar to what you have for krakend, what exists for kube api server, and many others (most) listed on the integrations page
Instrumentation libraries which are enhancing existing libraries with OpenTelemetry "from the outside". I include NGINX plugins here (although they might be "the fourth case"), and I would say krakend-otel fits the same description
Direct integrations (or "native" integrations, see this discussion for details), where a library takes direct dependency on the OpenTelemetry API, i.e. what NextJS is doing (and a few other ones, but there are not many yet)

The first and the third one is what we (=OpenTelemetry community) see as part of our mission (telemetry should be built in), and on that particular page, in that section we want to highlight that third possibility and then list libraries which are doing that: taking direct dependency on the opentelemetry api.
Note, that I am not saying that integrations in applications and first class "plugins" (or instrumentation libraries) are not what we love seeing, we just don't have a similar place to highlight them right now (and probably we should!), outside of the list of integrations and the registry (which you should add krakend-otel to, btw).

Thanks, @svrnm, for the detailed explanation, I appreciate the effort.
I have one final question to make sure I completely understand. Is it a direct use of your Go library inside another library considered a native integration, or would that be a usage "from the outside"?
I'll have a look at the registry, thanks for pointing it out.
BTW: I just saw in the linked thread a comment from Fabri (sending you a hug @theletterf), what a small world, we worked in the same company for several years :)

@alombarte It's a small world indeed! Glad to see KrakenD joining the family! :) Big hugs!

I have one final question to make sure I completely understand. Is it a direct use of your Go library inside another library considered a native integration, or would that be a usage "from the outside"?

Ouh... not knowing all the inner workings of krakend-otel, but this could mean that the library integrating your library is doing a "native integration" while your library could be seen as a distribution. I have to admit, this is really complicated :lol:
There is one more thing I am thinking about related to this and another discussion we just had, I just need to find time to connect the dots and write it down, give me a little bit of time ;-)
Also, great to see the connection between @theletterf and you!


Invalid client_session entity with multiple trackers

Describe the bug
When using two trackers(A and B) on the same page and tracker A have configured:
anonymousTracking: {
    withSessionTracking: true,
}

tracker B attaches an invalid client_session entity (iglu:com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2) to all events. The entity is invalid due to the userId is empty string.
Tracker A sets a valid client_session entity with userId : "00000000-0000-0000-0000-000000000000"
To Reproduce

Initialize two trackers from v4 package on a simple webpage:

import { newTracker, trackPageView } from '@snowplow/browser-tracker';

const tracker_a = newTracker('tracker_a', 'https://a.example.com', {
  appId: 'my-app',
  contexts: {
    session: true,
  },
  anonymousTracking: {
    withSessionTracking: true,
  },
});

const tracker_b = newTracker('tracker_b', 'https://b.example.com', {
    appId: 'my-app',
    contexts: {
      session: true,
    },
  });

  trackPageView();

Load the webpage in a browser

Expected behavior
Two page views send with the client_session entity attached. Both of them should be valid.
Actual behaviour
Two page views send with the client_session entity attached. tracker_b's client_session entity is invalid because userId is empty string.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: Windows 11
Browser: Edge
Version 130.0.2849.68

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
If setting the cookieName to different values on the two trackers this bug seems to go away.

Hi @dkbrkjni, thank you for reporting the issue! I can confirm that this is the case and is a bug in the tracker.
The reason for this is that both initialized trackers share the same cookie value for user and session information. Since one tracker has anonymous tracking enabled, it omits writing the user id in the cookie. The other tracker is not aware of the anonymous tracking setting, so thinks the empty user id is valid.
If you are running into this problem and are looking for a workaround, setting the cookieName property in the newTracker call will enable you to make each tracker use a different cookie and thus not conflict on the anonymous tracking config. But this will also mean that the trackers will track different user and session identifiers.


protection control parameters per LTP or per FC

There are network element implementations which allow protection control parameters to be configured on LTP level (not only on FC level).
Currently the CoreModel:ControlParameters are on FC level.
Q: Is there a need to modify the CoreModel:ControlParameter for Sync?

to be discussed with Dirk.

There is currently no use case for the feature.
If configuration would be needed at LTPs (interfaces), the Synch_Pac would need to be complemented by the protection control parameters.
Issue has been put on hold until there is a clear interest at vendors or operators.


Added test for uk_nhs

@jpow2 reminder you still need to update your negative test case

Added the negative test cases but the syncing is not working properly.


KSTREAMS-1621: Initial integration of monitoring interceptors

Example for making implementing MonitoringInterceptors easier when working with CE and C3

👍   This enables kafka-streams-examples to run on both COS/CE, I guess it requires code changes to all examples to use it.

@ybyzek yeah, it will require changes to all examples (there's really not another way around this)  but once confirmed this approach works on both COS/CE I can update the other configs in the examples. Just a one-liner change, so it shouldn't be too bad.

@bbejeck , great!  The other thought for your consideration is that some examples uses KafkaConsumer or KafkaProducer, so you may consider adding a similar option for those.

Updated this per comments.
@ybyzek do you want to check out this branch and run the WikipediaFeedAvroExample?

@bbejeck : I ran the code and encountered:
Producer interceptor not found, skipping

This is because monitoring interceptors were not added to the pom file, as such:
         <dependency>
            <groupId>io.confluent</groupId>
            <artifactId>monitoring-interceptors</artifactId>
            <version>5.0.0</version>
        </dependency>

Is there a reason we shouldn't go ahead and add this to the pom?

Is there a reason we shouldn't go ahead and add this to the pom?

It was a faulty assumption on my part that the examples jar file was going to be deployed some how with control center, sorry about that.
The behavior you experienced is the default when the interceptors aren't found on the classpath.  I've run theWikipediaFeedAvroExampleTest with the updated dependency and can see the monitoring interceptor output.
I'll add the dependency to the pom file, but I'll need to double check that we can do so before we merge.

merged with pint


Fix list index out of range error when tokenizing large text

Fix #48

Coverage remained the same at 87.38% when pulling 27874f028da7527d503b1f4084003cdf466e8a69 on fix_48 into b1c84b062152769ec80fbbe02fb856d2858f28a3 on master.

Coverage remained the same at 87.38% when pulling 27874f028da7527d503b1f4084003cdf466e8a69 on fix_48 into b1c84b062152769ec80fbbe02fb856d2858f28a3 on master.


fix timeout log message

Adjust the printed timeout duration in output to seconds.

But the tests are failing. Please sync with the current master branch. This should fix the errors.

Is already fixed in latest master - output is now in milliseconds. I will close this MR and delete the branch.


[$500] Workspace - New Workspace button doesn't create WS and shows no default name

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

Version Number: 1.4.53-2
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: Exploratory around https://expensify.testrail.io/index.php?/tests/view/4428235
Issue reported by: Applause - Internal Team
Action Performed:

Go to NewDot and login
Click WS dropdown in the top of LHN
Click +
Change WS name and click Save
Click New Workspace button in the top right corner

Expected Result:
New WS created, default name should be displayed
Actual Result:
Default name is not displayed, and WS is not created
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/f43e8a9a-90bf-47d0-9409-0ddee4c0e068
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0171b0f044271b7cff
Upwork Job ID:<PHONE_NUMBER>439668224
Last Price Increase: 2024-03-18

@kadiealexander  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

We think that this bug might be related to #wave-collect - Release 1

Hi there!
I've carefully reviewed the issue you've reported regarding the default workspace creation problem in the Expensify app. I understand the importance of maintaining a reliable and seamless user experience, especially when it comes to financial transactions.
To address this issue, I propose the following technical solution:
Investigation and Analysis:
I'll start by examining the codebase related to workspace creation in the Expensify app.
I'll identify any potential logic errors or misconfigurations that could be causing the default workspace name not to display.
Code Refactoring:
If necessary, I'll refactor the relevant code to ensure that the default workspace name is properly displayed.
This may involve debugging the existing code and making modifications to improve its functionality.
Testing and Validation:
Once the changes are implemented, I'll thoroughly test the workspace creation functionality across different environments, including staging and production.
I'll also perform regression testing to ensure that no new issues are introduced as a result of the changes.
Documentation and Reporting:
Throughout the process, I'll maintain detailed documentation of the steps taken and the changes made.
I'll provide clear reports on the findings, actions taken, and outcomes of the testing phase.
Collaboration and Communication:
I'll maintain open communication with the Expensify team, providing regular updates on the progress of the resolution process.
I'll actively seek feedback and collaborate with team members to ensure that the solution aligns with the project requirements.
I'm confident that my technical expertise and problem-solving skills make me well-suited to address this issue effectively. I'm committed to delivering a high-quality solution that meets the standards of reliability and user experience expected from the Expensify app.
I look forward to the opportunity to contribute to the success of the Expensify project. If you have any questions or need further clarification, please don't hesitate to reach out.
Best regards,
Mudassir Ali
P.S. I'm excited about the opportunity to work with the Expensify team and contribute to the ongoing improvement of the app! 😊

Contributor details
Email Address<EMAIL_ADDRESS>Upwork Profile: https://www.upwork.com/freelancers/~0191fe0bea01c9f099

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~0191fe0bea01c9f099

Hi there!
I've carefully reviewed the issue you've reported regarding the default workspace creation problem in the Expensify app. I understand the importance of maintaining a reliable and seamless user experience, especially when it comes to financial transactions.
To address this issue, I propose the following technical solution:
Investigation and Analysis:
I'll start by examining the codebase related to workspace creation in the Expensify app.
I'll identify any potential logic errors or misconfigurations that could be causing the default workspace name not to display.
Code Refactoring:
If necessary, I'll refactor the relevant code to ensure that the default workspace name is properly displayed.
This may involve debugging the existing code and making modifications to improve its functionality.
Testing and Validation:
Once the changes are implemented, I'll thoroughly test the workspace creation functionality across different environments, including staging and production.
I'll also perform regression testing to ensure that no new issues are introduced as a result of the changes.
Documentation and Reporting:
Throughout the process, I'll maintain detailed documentation of the steps taken and the changes made.
I'll provide clear reports on the findings, actions taken, and outcomes of the testing phase.
Collaboration and Communication:
I'll maintain open communication with the Expensify team, providing regular updates on the progress of the resolution process.
I'll actively seek feedback and collaborate with team members to ensure that the solution aligns with the project requirements.
I'm confident that my technical expertise and problem-solving skills make me well-suited to address this issue effectively. I'm committed to delivering a high-quality solution that meets the standards of reliability and user experience expected from the Expensify app.
I look forward to the opportunity to contribute to the success of the Expensify project. If you have any questions or need further clarification, please don't hesitate to reach out.
Best regards,
Mudassir Ali
P.S. I'm excited about the opportunity to work with the Expensify team and contribute to the ongoing improvement of the app! 😊

Proposal
Please re-state the problem that we are trying to solve in this issue.

The default workspace name is not defined when creating a workspace from WorkspaceSwitcherPage.tsx.
The workspace is not created or saved.

What is the root cause of that problem?
Workspace is being created from a policy draft rather than a policy. The current logic does not handle policy drafts and the name is undefined in WorkspaceProfilePage.
WorkspaceProfilePage does not accept policyDraft, so policy is undefined and the policyDraft is ignored.
https://github.com/Expensify/App/blob/e737a63615e600e5a76a4268d288389318d747ce/src/pages/workspace/WorkspaceProfilePage.tsx#L44
The policy draft is also never saved, so App.savePolicyDraftByNewWorkspace(policyDraft.id, policyDraft.name, '', policyDraft.makeMeAdmin); needs to be called from somewhere.
What changes do you think we should make in order to solve the problem?
Policy needs to be inherited by WorkspaceProfilePage and handled in the logic when creating a policy.
function WorkspaceProfilePage({policyDraft, policy, currencyList = {}, route}: WorkSpaceProfilePageProps) {

      policy = policyDraft?.id ? policyDraft : policy;

}

App.savePolicyDraftByNewWorkspace also needs to be called from within useEffect in WorkspaceProfilePage.tsx as it is also done in WorkspaceInitialPage.tsx.
https://github.com/Expensify/App/blob/e737a63615e600e5a76a4268d288389318d747ce/src/pages/workspace/WorkspaceInitialPage.tsx#L76-L86
Proposed solution in WorkspaceProfilePage.tsx
useEffect(() => {

        ...

        if ( policyDraft ) {
            App.savePolicyDraftByNewWorkspace(policyDraft.id, policyDraft.name, '', policyDraft.makeMeAdmin);
        }

        ...

    }, []);

What alternative solutions did you explore? (Optional)
Changing the props directly in the HOC withPolicy.tsx before they reach the React Component.

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01506cc9754f8fc72b

Please re-state the problem that we are trying to solve in this issue.
The issue at hand involves the failure to display the default workspace name when creating a new workspace in the Expensify app. This results in user confusion and impacts the overall user experience, especially for first-time users.
What is the root cause of that problem?
Upon analysis, it appears that there is a logic error or misconfiguration in the code related to workspace creation. This prevents the default workspace name from being properly retrieved and displayed to the user during the creation process.
What changes do you think we should make in order to solve the problem?
To address this issue, we need to identify and rectify the underlying cause within the codebase. This may involve debugging the existing code and implementing modifications to ensure that the default workspace name is correctly retrieved and displayed to the user.
What alternative solutions did you explore? (Optional)
While exploring alternative solutions, we considered the possibility of implementing a workaround to manually input the default workspace name. However, this approach would not address the root cause of the issue and could lead to further user confusion.
In summary, the proposed solution involves identifying and rectifying the logic error or misconfiguration within the codebase to ensure that the default workspace name is correctly displayed during the creation process. This will contribute to a more seamless and user-friendly experience for Expensify app users.
Best regards,
Mudassir Ali

Please re-state the problem that we are trying to solve in this issue.
New Workspace button doesn't create WS and shows no default name
What is the root cause of that problem?
When attempting to create a new workspace after already creating one, the policy object returns undefined, causing issues with the application logic.
What changes do you think we should make in order to solve the problem?
The policy object received as props is undefined in certain scenarios, particularly during workspace creation. To mitigate this issue, we obtain the policy ID from the route parameters and utilize it to fetch the corresponding policy object. This ensures that the policy is correctly retrieved and resolves the undefined policy error.
add here

  React.useEffect(() => {
        const policyDraftId = route.params?.policyID;

        if (!policyDraftId) {
            return;
        }

        App.savePolicyDraftByNewWorkspace(policyDraftId);

    }, []);

video:-https://drive.google.com/file/d/1VkKQacoakwwl9X2And_f74MjNEu0Ltib/view?usp=sharing

There are two ways to fix this, we have to decide which option is better for us. This issue is strongly related to the flow of opening the workspace settings, and we need to determine which flow is correct:

When we are redirected to WorkspaceInitialScreen from the deeplink (for example https://dev.new.expensify.com:8082/settings/workspaces/:id) and then click the back button, we'll be navigated to the workspace list. In this flow when user creates a new workspace from the switcher (chat tab), and then goes back to the previous screen, the workspace list will be displayed (profile tab).

https://github.com/Expensify/App/assets/47774969/a0ac81ad-d80a-4243-9d09-97c7bbc80721

When we are redirected to WorkspaceInitialScreen from the deeplink and then click the back button, we'll be navigated to the home screen. In this flow when user creates a new workspace from the switcher, and then goes back to the previous screen, the home page will be displayed.

https://github.com/Expensify/App/assets/47774969/7233acfc-8479-4b0b-97ac-f9e3ddd41dea
I need to know how the app should behave in this case and then I'll be able to fix it :)
cc: @mountiny @hayata-suenaga @adamgrzybowski

@WojtekBoman I believe the first option is better cc @trjExpensify

Can't we keep the bottom tab position they were on when they opened the switcher? Is that out of the question for some reason?

Chatted to Vit and it seems like (1) is most consistent with our UP navigation, so let's start there. 👍

@WojtekBoman Do you have any feedback for my proposal?

$500 to @alitoshmatov

@alitoshmatov please don't forget about the checklist!

Bumped @alitoshmatov here.

The PR that introduced the bug has been identified. Link to the PR: https://github.com/Expensify/App/pull/33280
The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment: https://github.com/Expensify/App/pull/33280/files#r1561250597
A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion: No need
Determine if we should create a regression test for this bug. No need

Payouts due:

[x] Contributor+: $500 @alitoshmatov

Upwork job is here.


train_detector Assertion Error

I got this error when trying to use the train_detector. Is anyone also got this following error?
thank you in advance.
AssertionError                            Traceback (most recent call last)
 in ()
18 # Create work_dir
19 mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))
---> 20 train_detector(model, datasets, cfg, distributed=False, validate=True)
/content/mmdetection/mmdet/apis/train.py in train_detector(model, dataset, cfg, distributed, validate, timestamp, meta)
99     else:
100         if 'total_epochs' in cfg:
--> 101             assert cfg.total_epochs == cfg.runner.max_epochs
102
103     runner = build_runner(
AssertionError:

total_epochs is deprecated.
Please set runner = dict(type='EpochBasedRunner', max_epochs=12) instead of total_epochs = 12

Feel free to reopen the issue if there is any question

Sorry for the late replay. I've been out for several days. The solution is working. Thank you very much for your response.


Added node_modules folder to .gitignore

No, You dont need the entire node_modules folder to be uploaded.

Thanks for the suggestion but the reason why I included it was because I am hosting the bot through Heroku, and Heroku just uses the code from GitHub. I am sure there might be a work around, but I have not gotten there yet.


Thermal control

This issue outline the details of the new thermal control (TC) mechanics to introduce in the near future. Comments and suggestions are welcomed.
The objective is to model approximately heat, and to force the user into taking engineering decisions and compromises similar to those done in reality on the matter of thermal control on spacecrafts.
Technically, it will be implemented on top of current infrastructure to minimize work and potential bugs, and will be exposed to the user by extension of the current Rule Framework capabilities.
While thermal control, in reality, is not an exclusive of manned habitats (every device and instrument has its own operative temperature range to be maintained), for simplicity only the crew and its survival temperature range is taken into account. This avoid a total redesign of the rule framework, that is way beyond the time and attention budget allocated for this new mechanic.
You know those radiators that are barely used only if you go to the inner solar system, or if you deal with the stock ISRU? I'm talking about these things:

We are going to make these useful.
How it works
The habitat system is extended so that every habitat part would have capacity to store Heat, a special non-visible mass-less resource, in function of the volume of its internal space. This is similar to what happen right now with the Atmosphere and WasteAtmosphere resources.
The Heat resource would then be generated by:

crew members
any process that consume EC
any chemical process that is exothermic
a dedicate Heater ECLSS module
incoming solar/albedo flux, in proportion of half the vessel external surface

and consumed by:

vessel radiative flux, in proportion of the vessel external surface
any chemical process that is endothermic
radiators

The internal habitat temperature will then be determined from the Heat level (that being the Heat amount versus capacity) over the set of enabled habitat parts.
Modifiers changes
The old temperature modifier is removed, and new ones added:

incoming_flux: the sum of solar flux, albedo flux from nearest body, and radiative cooling flux from  nearest body, expressed in W/m^2
half_surface: like the current surface modifier (that represent the sum of external surface of all enabled habitat parts), but multiplied by 0.5, expressed in m^2
cooling_need: a value in [0,1] range, that is 1 when internal habitat temperature is above survival range, and that rapidly approach 0 as the internal habitat temperature approach the survival range
heating_need: a value in [0,1] range, that is 1 when internal habitat temperature is below survival range, and that rapidly approach 0 as the internal habitat temperature approach the survival range
crew_count: the number of current crew members on the vessel

Rules changes
The climatization rule is replaced by two new rules: freezing and burning. Both of them are resource-less rules, that will use the respective cooling_need and heating_need modifiers so that, when internal habitat temperature is above/below the survival range, they will degenerate (up until death) and when the internal habitat temperature is inside the survival range, they will recover (as degeneration will be zero in that case).
Processes changes
Some new processes are added:

Process
Consume
Produce
Modifiers

IncomingFlux

Heat
incoming_flux, half_surface

OutgoingFlux
Heat

surface

Metabolism

Heat
crew_count

Heater
EC
Heat
heating_need, _Heater

Radiator
Heat

cooling_need, _Radiator

In every other 'non-chemical' process where EC is consumed, Heat will be generated. This is not made automatic (albeit it could) to allow greater flexibility.
All chemical reaction processes, instead, will either produce or consume Heat in relation of them being endothermic or exothermic in nature.
A new 'heater' ProcessController module, and relative Configure setup, will be added to manned pods.
Stock radiator modules will be removed without mercy, and replaced with 'radiator' ProcessControllers instead.
Planner changes
A new panel is added, to convey informations about Heat generation and consumption, according to the body/situation/sunlight environment as specified in the planner ui, and the simulation of rules and processes for the vessel in the editor.
Monitor changes
The telemetry panel in monitor will show the internal atmosphere temperature, as determined by the level of Heat stored.

I would be happy to help checking real life data or doing calculations for enthalpy changes/ thermodynamics if you'd like.
Will all ships be modeled as black bodies or will emmisivity and albedos be considered? Don't know if it'll be hard to implement thermaldynamics based on the surface properties of the vessel?

Vessels are already assumed to be black bodies, for the purpose of temperature measurement (the 'environment temperature at vessel position' you already see in the telemetry panel of Monitor).
In the new mechanics, albedo of vessels should be taken into account in the IncomingFlux process. It will be hard-coded to some reasonably generic value, because adding an 'albedo' metadata to all stock parts is time-consuming, and adding it to all existing and future third-party parts is impossible.
I through of using the bottom layer of the mipmap  pyramid of all parts texture (that can be understood as the 'average color') to extrapolate some kind of per-part albedo automagically. From the average RGB color, a luminance value could be obtained using this function (here in GLSL code):
// calculate luminance of a pixel from rgb values (from ITU-R BT.709)
// - clr: original color in RGB color-space
float luma(const vec3 clr)
{
  return dot(clr, vec3(0.1762044, 0.8129847, 0.0108109));
}

and from there some sort of satisfatory pseudo-albedo for the part could be obtained.
Then, it will only be a matter of determining the surface-weighed average among all parts.
However, I believe that going with a generic, hard-coded albedo value for all vessels will be enough, at least for the moment. The automagical albedo could be implemented in a second moment, eventually.

I know this was the first thing you said, but unlike the other elements of life support that the mod simulates.   Heating the electronics on space probes and mars rovers is a big concern for NASA.   The rule framework outlines what happens to a Kerbal when the rule is broken, could you modify the rule definitions to have a type = manned / unmanned.   If the rule type is manned it applies to Kerbals, and if it us unmanned it applies to Probe Cores.  In this context we are really just talking about a point of control for the vessel, so while different parts of the vessel should be subject to different thermal limits, batteries are different than cps for example, I would think that just effecting the probe core would be well enough.
I imagine on a vessel that has no crew that the window would instead display a list of all the probe cores, and instead of displaying a full array of status icons, it would only show the icons that correspond to the unmanned rules, just heat and radiation I would assume.  Anyhow I know Its probably not going to happen, but it would be really great to see some of the Kerbalism systems apply to unmanned vessels.

I'm all for a good system that encourage managing heat in a coherent fashion, so I highly support the initiative.
First, what will happen to the stock heat management ? It still is needed for atmospheric situations but will be redundant in near-kerbol heating situations. Also, the stock radiators modules will still be needed for mods relying on the stock heat system (like NFE or KSPI).

I believe that going with a generic, hard-coded albedo value for all vessels will be enough, at least for the moment. The automagical albedo could be implemented in a second moment, eventually.

Please stay with a hardcoded value, otherwise it will be the same kind issues that we had with the automagically calculated habitat volume : nice realism-wise, very wrong balance-wise. I don't see the added value.
If I understand things correctly, since the only consequence seems to be kerbal death, the whole system is pointless if there is no kerbal aboard. Management of the heat from producers and converters could be bypassed by simply doing it in an unmanned vessel, which is very weird. Also, what happens when there is no habitat at all in the vessel (seems mandatory for heat capacity & "*_need" modifiers) and endothermic processes have a<EMAIL_ADDRESS>?
I understand that you are trying to implement this with minimal new infrastructure and within the existing rule system, but to do a summary of what it would be nice to have :
(1) Evaluating the solar flux
(2) Evaluating the "machinery-related" flux
(3) Managing the consequence of temperature on habitats (kerbal death)
(4) Managing the consequence of temperature on "machinery" (converter/producers shutdown)
In what you propose, (1) & (3) are allright, (2) is going to be troublesome, incomplete and inconsistent between manned/unmanned, (4) is absent.
To expand on my statement on (2), the "EC consumption produce heat" automatic rule seems problematic, even with an opt-out possibility : no balancing possible, no special cases : what about things like RTG or mod-added parts/modules that use the stock "core heat" system or consume large amounts of EC ? This seems to be better done in a HeatGenerator partmodule with the following properties :

targetModule = partmodule // partmodule in the part to monitor for resource usage
resource = "resourcename" // the name of the resource monitored
heatRate = float // heat generated per unit of resource consumed/produced, or per second if no resource is specified and the targetModule is active

This would open the possibility to support (in a basic linear way) all modules that I can think of.
As for (4), maybe consider expanding the already existing Reliability module with the following properties :

needHeating = bool // Trigger a malfunction if the heating_need modifier reach 1.0
needCooling = bool // Trigger a malfunction if the cooling_need modifier reach 1.0
And add some heat resource capacity to the part trough a MM patch

Thanks guys, the suggestions and interesting and the critique make sense.
Scope of this
It will be better to clarify that this is meant to simulate heat inside manned habitats. That is possible with minimal extensions of current architecture. If heat and its consequences are simulated on all vessel, probe cores and in general on every module, it will require a total refactor. I like these suggestions a lot, and I'm not excluding that another total refactor may happen at some point in future. But for now I will be inclined to go the simple route, and then whatever comes out of it may provide useful insight for a future refactor.
Some practical example of why a total refactor would be necessary:

the 'part metadata' and 'pseudo-resources used to represent properties' of Habitat would need to be reimagined for the whole vessel
the 'reliability system' would need to be extended (or a complementary one developed) so that third-party modules may have operative ranges of temperature and radiation, and get disabled when these are violated
if component operative ranges are different than 'the kerbal survival ones', then we got a problem
if different components have different operative ranges (as one would expect, think infrared telescope vs probe core), then we got a very big problem
all parts would get shielding capacity, for instance, not just habitats
probe rules, or even component-specific rules
...

While simulating heat only inside the habitat would only require more or less what's outlined in the OP.
Input heat in processes
You are totally right, this is problematic. It is better then to maintain the current EC input (representing energy required, you can image it as an embedded heater) in endothermic processes. So, no process will have Heat as input (except the radiator and the vessel radiative cooling ones). The proposed solution is then to keep endothermic chemical processes as EC consumers.
Output heat in processes, when there is no habitat at all
Indeed the heat output would be ignored in this case. While not strictly a problem, I can see how the inchoerency is going to be confusing. The proposed solution is then to only add heat production to processes and modules that are conceptually linked to the manned habitat. This will reduce the scope of heat contribution by electric devices, but I don't really see another way out (without the already mentioned total refactor).
EC consumption equal Heat production
I agree, and the plan is to not do it automatically. Instead, heat production will be specified per-process, when appropriate. This avoid issues, and is more flexible to balance.
Replacing 'core heat mechanic'
This wasn't my intention. So perhaps the stock radiator module should be maintained alongside the new Radiator process, or somehow the latter should also implement the former. But this is slightly problematic, because then you have these radiator parts doing two different things (cooling 'core heat', and being Heat consumers). Luckily, thanks to how the 'needs_cooling' modifier will work, you can have more radiators than necessary. The same is true for the stock radiator module. So the user would simply need enough radiators to satisfy both mechanics.
Automagically guessing information
Sometimes, you need information that is not available. The information is strictly required, so in a way or another you need to obtain it. Enter heuristic functions, the formalization of educated guessing. These produce information out of thin air, basically, for the greater good of humanity. And while heuristic function generate 'imperfect' data, that is still better than having no data at all. The way we are doing the habitat volume/surface I think is the best we can possibly expect, and should be extended to other metadata as necessary: namely, that the data can be specified per-part, and if it isn't it fall back to the heuristic function.

To further clarify: in essence this is meant to be an improvement over the current 'climatization', so that more planning and radiators are required. Then if Heat is added to habitats, it open the possibilities of having various things produce and consume it. That lead naturally to the idea of having chemical processes and electronic devices produce and consume Heat. At the time of writing it made sense, but the issues pointed out are all valid ones. So I think the best course of action is to implement the basic system, and having some token process (eg: the ECLSS ones) and module (eg: the greenhouse) interact with that.

"Stock radiator modules will be removed without mercy, and replaced with 'radiator' ProcessControllers instead."
Will this cause issues for those of use with other mods installed, such as KSP Interstellar Extended, that has nuclear reactors and other parts that need the radiators?

@DaveTSG Yes. I'm going to keep the stock radiator module around, or in any case emulate its behaviour to not break these mods.

I was thinking about how to solve this, and maybe came up with a not so bad idea. Instead of basing this on a hard to implement "heat" resource that is insufficient to manage habitat and "machinery" at the same time, reverse the problem by using a massless "coolant" resource :

Radiators have "coolant" resource capacity
Radiators are process that output coolant consuming EC
Endothermic process have "coolant" output and have some "coolant" resource capacity
Exothermic process have "coolant" input

Then have two synthetic cooling and heating needs modifiers taking account of all heat flux and habitat parameters (crew count, survival range, habitat surface, solar flux), and use them in two rules :

Rule
Input
Modifier

Burning
coolant
cooling_need

Freezing
EC
heating_need

Unless there is something I missed, I can't see why this won't work. It would be a bit more abstract like the current climatization rule is, but would be simple to plan for and consistent in all situations. The various process would be easy to balance for higher / lower cooling requirements.
Support for various parts / modules would be easier since having a resource input is usually built-in (engines, converters...) so we could MM patch them for an additional "coolant" input.
For the planner / monitor, the output of each modifier should be enough to understand what is going on.

Did some prospective work on this, combining my "Coolant" idea and your initial idea. Pseudo-code ahead :
// calculating radiative flux is tricky because a small surface temperature difference can lead to huge coolant / ec requirements
// using this (not very accurate) system guarantee that the radiative flux stays near the sum of incoming flux
// spreadsheet-simulated in a few situations, this seems to work
sunlight_temperature = solar_flux + albedo_flux + body_flux + background_flux;
shadow_temperature = body_flux + background_flux;
hab_radiative_flux :
	- if vessel in sunlight = 5,67e-8 * surface *((0,5 * sunlight_temperature^4)+(0,5 * shadow_temperature^4))
	- if vessel in shadow = 5,67e-8 * surface * shadow_temperature^4

// incoming_flux already exists in the current codebase
incoming_flux = solar_flux + albedo_flux + body_flux + background_flux;
hab_incoming_flux = incoming_flux * surface * 0,5;
hab_kerbal_flux = crew_count * 30; // human body is 100W

// MM patching crewable parts :
// constant 1210 is air volumetric heat capacity (j/m^3/K)
// constant 897037 is aluminium mass heat capacity (j/t/K) (* 0,25 for balance, may need)
// note : 1 J/s = 1W
resource
name = Watt
amount = (part_volume * 1210) + (part_mass * 0.25 * 897037) // watts needed for a 1 Kelvin temperature change
maxamount = amount * 2

// modifiers definitions :
hab_incoming_watts = hab_kerbal_flux + hab_incoming_flux;
hab_outgoing_watts = hab_radiative_flux ;

// processes to turn flux into Watt resource
process
name = hab_heat_gains
modifier = hab_incoming_watts
output =<EMAIL_ADDRESS>
process
name = hab_heat_losses
modifier = hab_outgoing_watts
input =<EMAIL_ADDRESS>
// modifiers definitions :
// amount / maxamount mean the total quantity in the vessel
hab_heating_need = ((Watt.MaxAmount*0.5) / Watt.Amount) > 1.0 ? 1.0 : 0.0;
hab_cooling_need = ((Watt.MaxAmount*0.5) / Watt.Amount) < 1.0 ? 1.0 : 0.0;

// ECLSS climatizer process
process
name = climatizer
modifier = hab_heating_need,_Climatizer
input =<EMAIL_ADDRESS>// 1 Coolant/s = 1 kW
input =<EMAIL_ADDRESS>
// ECLSS heater process
process
name = heater
modifier = hab_cooling_need,_Heater
input =<EMAIL_ADDRESS>// 1 ec/s = 1 kW (seems to be more or less inline with stock values)
output =<EMAIL_ADDRESS>
// Modifier definition :
hab_temp_change = Math.Abs((Watt.MaxAmount*0.5) - Watt.amount) / (Watt.MaxAmount*0.5); // Kelvin/s temp change (max 1K/s)

// Rules :
rule
name = burning
degeneration = 1.0
modifier = hab_heating_need,hab_temp_change
fatal_threshold = 5 // survival range in K

rule
name = freezing
degeneration = 1.0
modifier = hab_cooling_need,hab_temp_change
fatal_threshold = 5 // survival range in K

I did a quick & dirty implementation of my idea and ran into a few issues, so I updated the pseudo-code section with a possibly better implementation. I didn't fully test it but I getting near something.
I would have liked to go further with the code but I probably won't have enough free time in the next weeks/months to do anything KSP related. Before that, if I can get a more-or-less working version in the next days, I will submit it in a PR, if you want.

@gotmachine Those process rates are going to be very useful, and I also want to take a look at your Radiator module if possible.

@ShotgunNinja Since everything I code will need rebasing on your current/future changes and are more a design proposal than a real PR, I'm going to commit everything I made in the #105 PR so we can centralize the discussion in the PR, and you would have the possibility to review the code.
If you want to playtest the changes, you can use the GameData from the patch branch I'm using in the PR


Fix the detection of the JSONC library which does not validate UTF-8

Affected systems don't always have ubuntu in their version name

Thanks @stof!


IDE doesn't recognize extension function RoundToPx

IDE doesn't recognize extension function RoundToPx
    kotlin("jvm") version "1.5.21"
    id("org.jetbrains.compose") version "1.0.0-alpha3"

Not all such functions are available from any point. It needs to have Density available as a receiver.

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


[gui error report] Error: Initializing daemon...

👉 Please describe what you were doing when this error happened.
Specifications

OS: win32 10.0.19045
IPFS Desktop Version: 0.30.2
Electron Version: 19.1.9
Chrome Version: 102.0.5005.167

Error
Error: Initializing daemon...
Kubo version: 0.22.0
Repo version: 14
System version: amd64/windows
Golang version: go1.19.12
Error: lock C:\Users\naiba\.ipfs\repo.lock: someone else has the lock

    at errorTemplate (C:\Users\naiba\AppData\Local\Programs\IPFS Desktop\resources\app.asar\src\daemon\migration-prompt.js:78:49)
    at loadWindow (C:\Users\naiba\AppData\Local\Programs\IPFS Desktop\resources\app.asar\src\daemon\migration-prompt.js:129:26)
    at showMigrationPrompt (C:\Users\naiba\AppData\Local\Programs\IPFS Desktop\resources\app.asar\src\daemon\migration-prompt.js:134:3)
    at startIpfsWithLogs (C:\Users\naiba\AppData\Local\Programs\IPFS Desktop\resources\app.asar\src\daemon\daemon.js:193:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async startDaemon (C:\Users\naiba\AppData\Local\Programs\IPFS Desktop\resources\app.asar\src\daemon\daemon.js:230:21)
    at async startIpfs (C:\Users\naiba\AppData\Local\Programs\IPFS Desktop\resources\app.asar\src\daemon\index.js:49:17)
    at async C:\Users\naiba\AppData\Local\Programs\IPFS Desktop\resources\app.asar\src\daemon\index.j

@naiba4 Please follow the instructions at https://github.com/ipfs/ipfs-desktop#i-got-a-repolock-error-how-do-i-resolve-this to resolve this error.
I'm closing this issue as this is a very well understood error that is easy to resolve, but please re-open and provide more details if you run into any issues!


Allow using regex capture values in variable value

Describe Request:
Currently you can set constant as the value of a variable when a mapping is matched.
It would be good if this could be extended to allow the inclusion of capture groups.
Examples:
This is super useful for mono-repos with lots of similarly built projects, say I have:
.
├── project-type-a
│   ├── one
│   │   └── build.sh
│   └── two
│       └── build.sh
└── project-type-b
    ├── one
    │   └── build.py
    └── two
        └── build.py

Here I have two folders, each contains a number of folders that are build similarly.
Except that project-type-a projects are build differently to project-type-b projects.
What I would like to do ideally is this:
version: 2.1
setup: true
orbs:
  path-filtering<EMAIL_ADDRESS>workflows:
  always-run:
    jobs:
      - path-filtering/filter:
          name: check-updated-files
          base-revision: master
          config-path: .circleci/continue_config.yml
          mapping: |
            project-type-a/(?P<name>.*)/.* project-type-a-changed "\g<name>"
            project-type-b/(?P<name>.*)/.* project-type-b-changed "\g<name>"

When a file changes in project-type-a/two for example then project-type-a-changed would be set to two.
This is really useful compared to the alternative which would be to have lots of repeated sections of project-type-a/two/.* project-type-a-changed "two".
This should be doable with the re.sub function although the syntax isn't great:
import re

path = "project-type-a/(?P<name>.*)/.*"
param = project-type-a-changed
value = "\g<name>"

changed = "project-type-a/two/some-file.py"
regex = re.compile("^" + path + "$")
output = re.sub(regex, value, changed)
assert(output == "two")

One edge case I've thought of is matching multiple paths.
For my above use case, I would want to trigger a build for all unique matches.
Adding this feature would have to consider how to handle this.

I will add this to our backlog so we can investigate this issue further.


Mac dynlib build instructions

This provides mac build instructions. Tested on OSX 12.3, on M1 hardware, with homebrew 3.4.2

@konsumer Thanks for the improvement.


ConsumerGroup: Specify which partitions to consume from

I am looking at the docs for ConsumerGroup and I see that you can specify topic partitions with Custom Partition Assignment Protocol but the docs are confusing. There isn't any code examples on how to accomplish this. I also see in the standard configuration, there is this comment roundrobin' or 'range' string for built ins . Will this be a simpler way to consume from multiple partitions?

or will ConsumerGroup read from all partitions no matter what? The older Consumer made you specify the partition

Right. Both ConsumerGroup and HighLevelConsumer will automatically read from all partitions of the topic and load balance them among themselves. range and roundrobin assignment algorithms (they are confusingly called assignment protocols by kafka) are supported with the ConsumerGroup.
With the plain Consumer you will need to define specific partitions.


Add page element ID to my account page

Describe the Issue:
For test automation required unique ID for page elements. Therefor it required add data-testid for every page element on my account page.

Duplicate of https://github.com/wso2/product-is/issues/9638


Implement browser-side compilation

Would be great if I could write
<todo></todo>
<script type="text/riot" src="todo.tag">
<script src="riot.browser.js">

And have it magically work. This is useful for simple static sites without a build process.

Yea, that would be pretty cool.
Related: #178, #151.

This is on our list

That would also allow live examples (i.e. jsfiddle). Seems worth doing even if for this reason alone.

+1

high on our list

This was implemented on v2.0.7 (Jan 29, 2015). Look for details here:
https://muut.com/riotjs/release-notes.html


Removed "State" from line 131

The word "State" is not part of the actual flow in CenterofExcellenceCoreComponents_3.53_managed.zip

Learn Build status updates of commit 2262026:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

power-platform/guidance/coe/setup-core-components.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


ZooKeeperStorage should not use blocking I/O

Since the ZooKeeper state is expected to be updated infrequently, an asynchronous I/O model would be more efficient.

We fixed this already.