userJoined event with String uid (for joinChannelWithUserAccount)

Is your feature request related to a problem? Please describe.
joinChannelWithUserAccount lets using a String as uid, but most events still give int as input.
Describe the solution you'd like
Maybe another event that is triggered when a user joined with a String uid, or merging with userJoined
Describe alternatives you've considered

A hack to map String uid to int uid just for Agora things.
Using another RTC system

string uid just a wrapper, you can use getUserInfo to get int uid.

@LichKing-2234 thanks, that should be enough


add missing 'items_per_page' for german

This PR just adds the key items_per_page.

nevermind

@tvdeyen I can't find the key either way? Localeapp always returns Sorry, no matching translations?

Also the key not_found is not anywhere.


chore: access key and secret key can be empty if role is used

Why you want to leave them empty? They are required for Shopware to work

Why you want to leave them empty? They are required for Shopware to work

No. See. It's also important when you want to use a role instead of the actual credentials when you deploy to AWS.

We use irsa service roles for aws so it's fine if this is empty. But we are missing then the serviceAccount in each deployment and also in the jobs.

And we need to remove the aws environment variables if they access and secret key is not set.

If the service account is not generated in the operator itself it should be passed through the crd. And if the crd has no service account we should not attach it at all.


Spelling error in Onboarding

private has 2 is in step one of the new Onboarding (See description of option 2):

@mrfelton I think we may want to change that anyways to Import your own seed to recover an existing wallet

closing with #1055 merged


Review and Requests for Current Design [1.19.22]

1. Connections detailed settings page

showcase how numerical settings like Daily Upload Limit have their value changed
Reword Listening enabled: Reduces data usage to Enable listening: Increases data usage
Remove "Also disabled listening" from description of the Blocks only option
add and think about options on Proxy Settings and Networks to communicate over

Proxy settings is functionally equivalent to the current proxy settings in the qt widgets gui,  Networks to communicate over should allow for choosing what networks you want to communicate over

2. Storage Options

There is currently only a mobile design of the Storage detailed settings view, please make a desktop version.
Add and think about how to incorporate setting of blocksdir and datadir within the Storage detailed settings view.

The blocksdir and datadir option will be input fields where a user can specify a directory

3. Design System: Colors and Light/Dark Mode

If possible, please also showcase designs in Light and Dark mode, to ensure that colors are being used appropriately.
What Icons should we use for the theme toggle button, I've temporarily (or permanently) chosen the icons from Bitcoin-Icons
Where should this icon be, what should be its dimensions?
For the purposes of code clarity and implementing a theme singleton, it's better to rename the two boxed colors to Neutral0 and Neutral9.

Thanks for posting this here. I started updating the Figma file and recorded a video response to the individual requests (easier to communicate visuals via video): https://youtu.be/m_FCFAnGWmg

@GBKS have converted checkboxes, I have pre-checked all the things that have been done as of 2/5/22. Forget about Proxy within the context of this issue, I will open another issue addressing this. I have left the issue on light/dark mode un-checked because it appears you need edit access to use the lights plugin on the design file. Is there a way to accomplish this without the need to have edit access?

#3 point 1 isn't really needed anymore, will close this.


SIMSBIOHUB-536: Refactored UI for downloading observation CSV template

Description of Changes

Adds the "Download CSV Observation Template" button as an iconbutton on the Manage Observations page.
When duplicate permit numbers are entered in the edit survey page, the permit number input renders the error on each form field.
When duplicate funding sources are selected in the edit survey page, the funding source select component renders the error on each form field.
When a survey participant's job has not been entered, only the participant job select component is styled with an error border.

Codecov Report
Attention: Patch coverage is 0% with 5 lines in your changes are missing coverage. Please review.

Project coverage is 52.76%.  Consider uploading reports for the commit 57d42e1 to get more accurate results

Files
Patch %
Lines

app/src/features/surveys/SurveyPermitForm.tsx
0.00%
5 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##              dev    #1264      +/-   ##
==========================================
- Coverage   52.77%   52.76%   -0.01%
==========================================
  Files         547      547
  Lines       16388    16385       -3
  Branches     2554     2554
==========================================
- Hits         8648     8646       -2
+ Misses       7135     7134       -1
  Partials      605      605

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Ran this locally and noticed 2 things:
* Unrelated to your changes but I cannot create/ edit a survey, the open api spec is complaining about an additional 'kingdom' property

* It would be nice to have a tooltip for the template button

Tested Locally, works great! Would agree with Alfred, the button looks like a download button for the observation list. Rather then a download button for a template.


Incorrect Indentation

VSCode Version: 1.25.0
OS Version: Windows 10

The following are a few of the instances i noticed incorrect indentation. I hope i don't have to debate why they're incorrect:

case xxxx:
The next line starts immediately under 'c' and not indented.

object.function(param1,
The next line starts with no indentation

this.function(param1,
param2 );
Pressing enter after the semicolon starts the next line right under 'p' which is incorrect. Indentation is not reset here.

if(some condition)
Next line is not indented if I don't use paranthesis. With paranthesis the indentation is correct.

for(...)
Same as for "if". If I don't use paranthesis the indentation is not happening otherwise it's ok

When does the incorrect indention occur? After format or just when typing?

To explain step 4:
With parenthesis automatic indentation works:
if (hello === 'world') {
    helloWorld();
}

Without parenthesis automatic indentation doesn't work:
if (hello === 'world')
helloWorld();

Fixing of this bug would possibly be the lowest hanging fruit to improve coding experience in VS Code.

Closing due to lack of further user interest expressed in this issue over the past two plus years
(also please open separate issues for problems like this in the future to make them more discoverable)


prisma2 lift save fails for datasource url from env where prisma2 generate succeeds

Using this .env file
SQL_URL='mysql://root@localhost:3306/test'
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASS=''
DB_SCHEMA=test
DB_URL=mysql://${DB_USER}@${DB_HOST}:${DB_PORT}/${DB_SCHEMA}
DB_KV={host: ${DB_HOST}, port: ${DB_PORT}, user: ${DB_USER}, password: ${DB_PASS}, schema: ${DB_SCHEMA}}

and this datasource in schema.prisma
datasource mysql {
  provider = "mysql"
  url      = env("DB_URL")
}

when DB_URL in  url      = env("DB_URL") above is swapped out with a new key
prisma2 generate runs successfully for the following env keys SQL_URL, DB_URL, DB_KV
prisma2 lift save is only successful with SQL_URL and fails for DB_URL and DB_KV with the following error
thread 'main' panicked at 'the provided URL was invalid: InvalidPort', src/libcore/result.rs:997:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::_print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::continue_panic_fmt
   6: rust_begin_unwind
   7: core::panicking::panic_fmt
   8: core::result::unwrap_failed
   9: sql_migration_connector::PrismaMysqlConfig::parse
  10: sql_migration_connector::SqlMigrationConnector::exists
  11: migration_core::connector_loader::load_connector
  12: migration_core::migration_engine::MigrationEngine::init
  13: <F as jsonrpc_core::calls::RpcMethodSimple>::call
  14: <F as jsonrpc_core::calls::RpcMethod<T>>::call
  15: <futures::future::lazy::Lazy<F,R> as futures::future::Future>::poll
  16: <futures::future::then::Then<A,B,F> as futures::future::Future>::poll
  17: <futures::future::map::Map<A,F> as futures::future::Future>::poll
  18: <futures::future::either::Either<A,B> as futures::future::Future>::poll
  19: futures::task_impl::std::set
  20: std::thread::local::LocalKey<T>::with
  21: futures::future::Future::wait
  22: jsonrpc_core::io::IoHandler<M>::handle_request_sync
  23: migration_core::rpc_api::RpcApi::handle
  24: migration_engine::main
  25: std::rt::lang_start::{{closure}}
  26: std::panicking::try::do_call
  27: __rust_maybe_catch_panic
  28: std::rt::lang_start_internal
  29: main

Having the same issue. What was the resolution?

This is not a problem with Prisma. Nested env variables are not valid.  No error is thrown with prisma2 generate but photon will error for generated clients using the nested env variables


Default SSL on/off message to debug level

Currently we print the SSL status for every new connection. This add noise to
the log output without much added value.

Is there a way to print this message only once and not on every new connection?

@matriv Only printing once on info level now.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@6b3069c). Click here to learn what that means.
The diff coverage is 100%.

@@           Coverage Diff            @@
##             master   #6367   +/-   ##
========================================
  Coverage          ?   83.2%
  Complexity        ?   12816
========================================
  Files             ?    1481
  Lines             ?   48520
  Branches          ?    5910
========================================
  Hits              ?   40372
  Misses            ?    5395
  Partials          ?    2753

Impacted Files
Coverage Δ
Complexity Δ

...ava/io/crate/protocols/postgres/SslReqHandler.java
87.5% <ø> (ø)
6 <0> (?)

...ava/io/crate/protocols/postgres/PostgresNetty.java
86.02% <100%> (ø)
20 <0> (?)

Continue to review full report at Codecov.

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


Add API to retrieve resource info from hash without download it

Summary
Add an API that will try to retrieve resource info from an hash, without need to download it.
Something similar to an "HEAD" request (that currently on /bzz returns 405 error) but with following information:

total byte size on disk of it and all its sub-resources if it is a manifest
resource type: (content or feed-manifest). This helps to understand if it is a dynamic or static content

Motivation
Node administration can need information about managed resources, without have to real access them.
Implementation
It could be a new dedicated API.
Drawbacks
Don't see any.

I think head request approach mentioned would be a correct way. My use case would be implementing proper server side caching which could check head for etag information for refreshing cache.


Setting dragToPan to false has no effect

Setting dragToPan to false for either mouse or touch gestures has no effect. I was able to track the issue down to the onCanvasDragEnd function. If we add the condition gestureSettings.dragToPan here, it fixes the issue. However, I am not quite sure if this would break something else. For example what is dragToZoom and how can I test it? It is not listed in the gestureSettings documentation.

When I set gestureSettingsMouse.dragToPan = false in the demo (i.e. at https://openseadragon.github.io) it correctly disables panning. You can do this by opening the debugging console and typing Array.from(OpenSeadragon._viewers)[0][1].gestureSettingsMouse.dragToPan = false;
I haven't tested it with touch gestures.
What version of OpenSeadragon are you using?

Right, I forgot to mention, I was testing on the master branch.

Strange. Testing against master on my machine works as expected, the same as in the online demo page.

Actually, I was mistaken, it does work for mouse gestures in 4.1 and on the current master, however, it doesn't work for touch gestures on 4.1 and the current master. I tested this using dev tools and emmulating a device, which correctly returns touch for pointerType.

I see, I can reproduce that way. Looks like it does actually stop panning if you don't end the gesture with a flick, but the logic related the the flick isn't accounting for the setting. This makes sense with where you pointed out in the code.
draggingToZoom is a private internal state (hence not present in the docs) that relates to https://github.com/openseadragon/openseadragon/issues/2077 and was introduced by https://github.com/openseadragon/openseadragon/pull/2225. If you're making use of this, you're already not dragging to pan, so adding the check you propose shouldn't break anything. You could test the one-touch zoom in your emulator - just double-tap and move the cursor/finger up and down after the second tap.

Thanks for pointing that out, it's a nice feature.
It seems that the combination dragToPan: false and flickEnabled: true is causing the issue for both mouse and touch gestures.
I will create a PR!


chore: Empty commit

Test PR to trigger CI to test codecov report uploads still work after settings changes.

Codecov report upload worked. No idea why it doesn't work in the context of dependabot PRs 🤷


feature/KA-39 Enable federation on provider-side

by a proper AgentSource. Refactoring out the skill store capability. Take Asset Names out of Graph nodes on the consumer-side and manipulate the Graph nodes into Service nodes on the provider side.

Hmm the code scanner says something about a failing resource on integration? That looks like a github issue rather than a code smell ;-)


DBZ-1801 TinyInt1 to boolean converter

https://issues.redhat.com/browse/DBZ-1801

@gunnarmorling TBH I'd like to expose it as is.

We are handling a really special case here
It can serve as an implementation for converter to which we can point people to look as an example when they want to write their own

Ok, fine for me. Thanks!


[BUG] exclusions don't work (as described in the documentation)

Describe the bug
I cannot get any kind of excluding filter to work, at least not the way the documentation explains it. I am not aware of any other way of configuring filters, so I don't know if filters just generally don't work or if I'm doing something wrong. Basically, no matter what kind of exclusions I define in the kover configuration, they all get ignored and everything lands in the final HTML report.
Expected behavior
I'm specifically trying to exclude declarations annotated with javax.annotation.processing.Generated, and I'd expect that those declarations would not show up in the HTML report.
Reproducer
I tried this in a new, minimal gradle/kotlin project for reproduction. Here's the build.gradle.kts:
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.8.21"
    id("org.jetbrains.kotlinx.kover") version "0.6.1"
}

group = "com.rtarita"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    testImplementation("io.kotest:kotest-runner-junit5:5.6.1")
    testImplementation("io.kotest:kotest-assertions-core:5.6.1")
}

tasks.test {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
    compilerOptions {
        jvmTarget.set(JvmTarget.JVM_11)
    }
}

kover {
    filters {
        annotations {
            excludes += "javax.annotation.processing.Generated" // also tried with listOf()
        }
    }
}

In this project, I have two classes residing in the package root com.example:
TestClass1.kt:
package com.example

class TestClass1 {
    fun function1() = "Hello, World!"
}

TestClass2.kt:
package com.example

import javax.annotation.processing.Generated

@Generated
class TestClass2 {
    fun function2() = "Bye, World!"
}

Then, in my test sources (also under com.example), I have this Kotest test class.
TestClass1Tests.kt:
package com.example

import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe

class TestClass1Tests : FunSpec({
    test("function1() should return hello world") {
        val testInstance = TestClass1()
        testInstance.function1() shouldBe "Hello, World!"
    }
})

this only tests and covers TestClass1, so without further configuration it would be expected that TestClass2 shows up uncovered in the HTML report. However, since the kover config in the buildscript should exclude all declarations annotated with javax.annotation.processing.Generated, I would expect TestClass2 to not show up in the report, and therefore to have a coverage of 100%.
Reports
Instead, I get a report that looks like this:

In particular, the package shows TestClass1 fully covered and TestClass2 not covered:

I don't know if my configuration is simply wrong or if I'm missing something, but simply going off from the documentation I had expected this to work. Any help appreciated!
Environment

Kover Gradle Plugin version: 0.6.1
Gradle version: 8.1.1
Kotlin project type: Kotlin/JVM 1.8.21
Coverage Engine version: default
JVM: Target Version 11, OpenJDK 11.0.2
OS: Windows 11

Update: I just tested that excluding TestClass2 explicitly by its fully-qualified name (NOT by simple name) works:
kover {
    filters {
        classes {
            excludes += "com.example.TestClass2"
        }
    }
}

This actually removes TestClass2 from the report and displays the expected 100% coverage.
So far, this is the only exclusion mechanism that has worked for me. I still don't know why the exclusion by annotation does not work.

I now tried the 0.7.0 version and used this config in the buildscript:
koverReport {
    filters {
        excludes {
            annotatedBy("*Generated")
        }
    }
}

I also tried "javax.annotation.processing.Generated" and<EMAIL_ADDRESS>as inputs for annotatedBy().
I'm still getting the same results. Declarations annotated with @Generated are not excluded.

@RaphaelTarita, this is a lack of documentation.
Since on-the-fly instrumentation works with bytecode, then AnnotationRetention for it should be BINARY or RUNTIME.
SOURCE is used for the javax.annotation.processing.Generated annotation, so it will be ignored by Kover


TBD instead of params

The params and simple descriptions are in the source but not on the site.

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

ID: 40b7727e-8c3f-500c-08f1-07146aac9cf7
Version Independent ID: bf2623e7-ea0e-56c5-4ad4-df385c898e4e
Content: StorPortEnablePassiveInitialization function
Content Source: wdk-ddi-src/content/storport/nf-storport-storportenablepassiveinitialization.md
Product: windows-hardware
GitHub Login: @windows-driver-content
Microsoft Alias: windowsdriverdev

Thanks, @csm10495
Made PR and should be live shortly after  review.


Synchronization fails after track change

This is due to the second event that spotify sends, there's wrong position_as_of_timestamp or something like that.

closed in #3


ARROW-1860: [C++] Introduce ipc::PreparedMessage data structure to avoid making multiple passes over record batches

The purpose of this is to decompose a record batch into its serialized Flatbuffer metadata and sequence of buffers that form its body so that the total output size can be computed, e.g. for writing to a shared memory segment. Prior to this, one would have to call GetRecordBatchSize, allocate memory, then WriteRecordBatch which duplicates work.
This also introduces a change to how padding is handled in unaligned streams to make the message contents deterministic. This makes record batches consistent with the way that tensors were already being written, with alignment bytes being written first to move the stream position to a multiple of 8, then beginning to write the metadata and message body.

Picking this up again

So it seems that not all Python file objects support the tell operation, for example the _io.BufferedReader that you get calling makefile on a socket. That's the last issue here -- I think probably the best way to deal with this is to implement a PyInputStream in https://github.com/apache/arrow/blob/master/cpp/src/arrow/python/io.h and handle the stream position bookkeeping internally, if that sounds good to folks

So it seems that not all Python file objects support the tell operation, for example the _io.BufferedReader that you get calling makefile on a socket.

Yes, non-seekable files generally don't support tell() either.
I'm a bit surprised that you need this: if writing to a generic output stream, why do you want to pad data? Padding only sounds useful when writing to a true random access file that may be e.g. memory-mapped.

why do you want to pad data?

I'll need to revisit this patch from a few months ago and remember why I thought this. The basic idea is for messages to be relocatable and deterministic (e.g. if you were to hash the metadata, you would always get the same hash). By always aligning the stream before writing a message, you guarantee that the message metadata and body have the exact same contents.
Given the time that has passed, it'll probably make sense to start this patch over. There's a unit test here that can be taken over, but the rest of the refactoring should probably be started from from the codebase as it is now.

Abandoning this PR for now. I would like to start again on this later in the year


map list: parent not cleaned up

When assigning a new parent to a map, after sync the map is both contained at the old location and in the new parent folder.
Steps to reproduce:

Create Map A and Map B without any parent
Sync with app
Assign Map A as parent of Map B
Sync with app

Expected:

Map B is now inside the Map A folder and removed from the top-level folder

Actual:

Map B is now inside the Map A folder and inside the top-level folder

This is actually (at least partially) due to an issue in the api (https://github.com/mangelio/web/issues/262) I found while investigating the cause; will see if that alone is enough or the app needs adjustments too.

All right, the second issue was that, in the migration to the database, I accidentally made construction sites report all recursive children (additionally) as direct children; this was an easy fix.


DOC: Added deprecation to convert_objects docstring#12052

Added deprecation warning to convert_objects docstring
Closes #12052

thanks!


Tab Indicator does not move when using onSwipe event

hi guys,
I have discovered a weird bug when using the slideTo Method at an onSwipe event, where the Tab indicator does not move away from the current Tab. Please have a look at my code:
<super-tabs (swipe)="onSwipe($event)">
  onSwipe(event) {
    let currentTabIndex = this.superTabs.selectedTabIndex;
    let lastIndex = 3;
    if(currentTabIndex == 0 && event.direction == 4) {
      this.superTabsCtrl.slideTo(lastIndex);
    }
    else if(currentTabIndex == lastIndex && event.direction == 2)
      this.superTabsCtrl.slideTo(0);
  }

so at this point, everything works accordingly, but it only slides the content and not the blue border indicator on the super-tabs. I am sure that this is some kind of behind the curtains issue. Here you can see the result: http://i.imgur.com/MerbYjsr.png . Although the current Page is "Arbeit 4.0", the red border is still at "Home".
If I use this.superTabsCtrl.slideTo(3) somewhere else, it works properly (I tried a function call after clicking on a link), so this issue is only related to the onSwipe event of SuperTabs.
kind regards and thanks in advance for the help
Adrian

I hope I understood your problem correctly.
Did You tried to use (tabSelect)="onTabSelect($event)" like it's documented in the README.md?
In the function You should be able to get the required data for Your case.
onTabSelect(ev: any) {
    console.log('Tab selected', 'Index: ' + ev.index, 'Unique ID: ' + ev.id);
  }

Cheers
Unkn0wn0x


Command line option -g FILE:LINE not working

VSCode Version: Code 1.5.2 (66f37fd2a99eb9d628dd374d81d78835b410c39b, 2016-09-12T13:30:03.456Z)
OS Version: Windows_NT ia32 6.1.7601

Steps to Reproduce:
1.open command prompt.
2. ensure in local directory, say c:\somedirectory. Ensure c:\somedirectory contains somefile.ext
2. code -g somefile.ext:2      :- This works
3. code -g c:\somedirediretory\somefile.ext:2     :- does not work, gives error "Arguments in '--goto' mode should be in the format of 'FILE(:LINE(:COLMUMN))'.
4 code -g "c:\somedirediretory\somefile.ext:2"  :- does not work. gives same error as above.

This has been fixed in our insiders (1.6. release).
You can give our preview releases a try from: http://code.visualstudio.com/Download#insiders


joining VS live share by myself crashes it

Issue Type: Bug
joining VS live share by myself crashes it
Extension version: 1.0.1245
VS Code version: Code 1.40.1 (8795a9889db74563ddd43eb0a897a2384129a619, 2019-11-13T16:49:35.976Z)
OS version: Windows_NT x64 10.0.18362

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz (8 x 1992)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: enabledrasterization: enabledskia_renderer: disabled_offsurface_control: disabled_offsurface_synchronization: enabled_onvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
15.85GB (6.46GB free)

Process Argv
--open-url -- vscode:extension/MS-vsliveshare.vsliveshare

Screen Reader
no

VM
0%

@UsmanNadeem , Thanks for reaching out. Can you give us more details about your scenario? Also, your logs may provide us with helpful information. You can access them via the Live Share: Export Logs command from the command palette (ctrl + shift + p) and attach them to this issue.

Attached the logs. VS Code kept throwing errors when I tried joining VS live share on the same computer. I think the error went away after restarting VS code.
20191117_183419_15740156591300_VSCode.log
20191117_183335_15740156152320_VSCode.log
20191117_183222_Agent.log

Thank you for reporting this issue. This error seems to have fixed itself upon restarting VS. Apologies for the inconvenience.


Ziglua 1.0.0

This lists the changes I want to make before releasing a 1.0.0. At a high level, I want Ziglua to be in a state that is more easily maintained, and generally be feature complete enough to reflect what future versions would include. This means supporting Lua 5.1-5.4, LuaJIT, and Luau well, good documentation, and well organized code.
The list of tasks here are roughly in the order in which I will make changes
Tasks

[x] https://github.com/natecraddock/ziglua/issues/30
[x] https://github.com/natecraddock/ziglua/issues/34
[x] https://github.com/natecraddock/ziglua/issues/33
[ ] https://github.com/natecraddock/ziglua/issues/19
[ ] https://github.com/natecraddock/ziglua/issues/25
[ ] https://github.com/natecraddock/ziglua/issues/27
[x] https://github.com/natecraddock/ziglua/issues/7
[ ] https://github.com/natecraddock/ziglua/issues/35

Still under consideration

[ ] https://github.com/natecraddock/ziglua/issues/31
[ ] https://github.com/natecraddock/ziglua/issues/16

@natecraddock Regarding issue #31 I think the best course of action would be to wait for #52 to be completed to avoid duplicate work
Then I can rework the implementation from my current fork to use the new lib.zig file (and implement any requested changes) then send over a pr? Assuming you still had positive feelings about providing that functionality

@VisenDev I agree. I should have the lib changes finished within the next week or so if everything goes well.
And the more I think about it, the more I like the ideas in #31. I'm not sure how the final implementation will look, but Ziglua should absolutely support some level of convenience/meta functions that take advantage of comptime

Hello, just a lurker that started using zig and ziglua recently and wanted to thank the both of you for this library and the promising convenience it will offer.

@zoriya it is always nice to hear a thank you, I appreciate you taking the time to say that!
If you need help or have ideas for improvement as you use ziglua please don't hesitate to share them!


As a [publishing] ecologist, I want to create a model in ecoflow, so that peer AI projects can benefit from scoring their own [matching data]

What is needed when publishing a model? For a deep neural net, model weights and scoring script, otherwise scoring script only?


Upgrade sharp to minimal of version 0.22.1

Upgrade sharp to minimal of version 0.22.1 because there is error when executing yarn install with an older version of sharp.
Refer to https://github.com/yarnpkg/yarn/issues/7265.

Closing this pull request as I will create a new one that also remove package-lock.json


[common] some utils improvements

Move find_largest_contiguous_device_memory_section() from cudamapper to utils
Remove utils dependency from logging library
CachingDeviceAllocator: Change the default-construction behavior

Ok, I broke it for CUDA <=9.2.... Will fix it.

I will file a new updated PR.


Select multiple width outgroups don't update properly

I'm using your awesome Materializecss in one project... but when I put a Select multiple, width outgroups, and change the options state dynamically, the select only change the state of the first options check.
Here is the code:

HTML+BLADE(Laravel 5.3) ($optgroups is array)
{{ Form::select('subhashtags_select', $optgroups, null, ['multiple' => true] ) }} SubHashtags

The result HTML:
<select multiple="1" name="subhashtags_select"><optgroup label="Group 1"><option value="50">Item 1</option><option value="51">Item 2</option><option value="52">Item 3</option><option value="53">Item 4</option><option value="54">Item 5</option><option value="55">Item 6</option><option value="56">Item 7</option><option value="57">Item 8</option><option value="58">Item 9</option></optgroup><optgroup label="Group 2"><option value="30">Item 10</option><option value="31">Item 11</option><option value="32">Item 12</option></optgroup></select> SubHashtags

JAVASCRIPT:
$.each([50,52,30,31], function(key, value){
$('select[name=subhashtags_select]').find('option[value='+value+']').prop('selected', true);
});
$('select[name=subhashtags_select]').material_select("update");

On refresh the select, only the two first items in the array change to selected... Do you know if it is any bug? or I'm missing something?
Thanks!!!

I had the same problem and fixed it with changing the materialize.js. See here: https://github.com/Dogfalo/materialize/issues/2913#issuecomment-299214730
I will create a pull request soon.

Duplicate of https://github.com/Dogfalo/materialize/issues/2913

Fixed with PR: https://github.com/Dogfalo/materialize/pull/4656

Thanks!!! It's works!!! X)
Only when you select the options, on the select show only two options in
the text. Wherever,  all options are checked in the checboxes X)
I try to fixed with onchange event.
Thanks a lot!!!
El 7 may. 2017 12:56 a. m., "aschoenebeck"<EMAIL_ADDRESS>escribió:

Fixed with PR: #4656 https://github.com/Dogfalo/materialize/pull/4656
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Dogfalo/materialize/issues/4652#issuecomment-299670888,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABiYiK-Jqzi-i0vG_2azIMay4I2gZ84eks5r3PqBgaJpZM4NR9h7
.


[Question] Playing two videos syncrhonized

Hello,
I was wondering if it is possible to play two videos synchronized (on a frame level) under the following assumptions:
Situation A: both videos are already fully loaded (videos will not stall waiting for data)
Situation B: videos are not fully loaded if one video stalls the other should wait as well
Situation B would be ideal, but I could live with Situation A. What I want to make sure is that I don't have a random delay between the two videos on each run.  I guess this means both players should have a start jitter < 1/ fps(usually 30) so <33ms

Depends on what type of video vendor you are using I guess. Twitch, YT, Soundcloud etc. you will have a time delay (a short one). I am not certain about raw video files. In theory you could force them to have nearly perfect timing but I am not sure about that. Would need further testing about that one.
What would work (don't know if react-player can) is creating a blob function, which is the source of both videos and returning the same data.

@Yasamato  thanks for your input!
I did some tests(with the html5 video player, not with the react-player):

Starting/Stopping them in javascript from the same callback showed decent results, but one in ~ 5-10 pauses would show a small desyncronization between the two.
Using timingsrc showed extremely good results. ( Without diving into the internals of the solution, I think they are resynchronizing the two sources every ~ 200ms(so every 6 frames @ 30 fps).

I've done some research and work on this, Safari is the difficult one not handling playbackRate very well.
I came up with this little library https://github.com/muxinc/media-group with decent results if you want to try.


[Event Request] table 270 "Bank Account" - OnValidateCurrencyCodeBeforeTestBalanceFields

Describe the request
Hello, can you please add a new Event OnValidateCurrencyCodeBeforeTestBalanceFields in table 270 "Bank Account"?
        field(22; "Currency Code"; Code[10])
        {
            Caption = 'Currency Code';
            TableRelation = Currency;

            trigger OnValidate()
            var
                GeneralLedgerSetup: Record "General Ledger Setup";
                BankAccount: Record "Bank Account";
            begin
                if "Currency Code" = xRec."Currency Code" then
                    exit;
                GeneralLedgerSetup.Get();
                if (("Currency Code" in ['', GeneralLedgerSetup."LCY Code"]) and (xRec."Currency Code" in ['', GeneralLedgerSetup."LCY Code"])) then
                    exit;

                BankAccount := Rec;
                BankAccount.CalcFields(Balance, "Balance (LCY)");
                OnValidateCurrencyCodeBeforeTestBalanceFields(BankAccount);
                BankAccount.TestField(Balance, 0);
                BankAccount.TestField("Balance (LCY)", 0);

                if not BankAccLedgEntry.SetCurrentKey("Bank Account No.", Open) then
                    BankAccLedgEntry.SetCurrentKey("Bank Account No.");
                BankAccLedgEntry.SetRange("Bank Account No.", "No.");
                BankAccLedgEntry.SetRange(Open, true);
                if BankAccLedgEntry.FindLast() then
                    Error(
                      Text000,
                      FieldCaption("Currency Code"));
            end;
        }

    [IntegrationEvent(false, false)]
    local procedure OnValidateCurrencyCodeBeforeTestBalanceFields(var BankAccount: Record "Bank Account")
    begin
    end;

Additional context
We would like to use our own calculation for the FlowFields "Balance" and "Balance (LCY)" .
Internal work item: AB#546841

Availability update: We will publish a fix for this issue in the next update for release 25.
Build ID to track: 26360.


fix Fix select partition

Proposed changes
This PR is to fix the select specific partition issue, certain codes related to this feature were accidentally deleted.
Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall

run buildall


[1.9] Backtick languge support

Markdown language support
Describe alternatives you've considered
Just pasting code
Additional context
Less spammy if there is syntax highlighting

The obvious choice here would be highlight.js :)

yep!
On Wed, Dec 20, 2023, 7:08 AM Aditya J @.***> wrote:

The obvious choice here would be highlight.js https://highlightjs.org/
:)
—
Reply to this email directly, view it on GitHub
https://github.com/meower-media-co/Meower-Svelte/issues/201#issuecomment-1864446406,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQHW4P5ZAQOBMDITEVUHOF3YKLPOJAVCNFSM6AAAAABAVUPTZCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRUGQ2DMNBQGY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Feel free to add it, I tried adding highlight.js before 1.8 released but I never got the styling correct so held off on it for the time being.

because it needs to be in a

I'm aware. I got it working and it looked fine but the problem was it didn't fit in with the look of Meower and would need a decent amount of effort to get it to fit in.

anti spam

because it needs to be in a

I'm aware. I got it working and it looked fine but the problem was it didn't fit in with the look of Meower and would need a decent amount of effort to get it to fit in.

even if it doesn't look as good for meower specifically, it reduces spam in home.(especially if we put it in a collapsible block)

The obvious choice here would be highlight.js :)

L, use shiki

The obvious choice here would be highlight.js :)

L, use shiki

highlight.js has 22.5k stars
shiki has 6.4k
highlight.js is the winner

I'm aware. I got it working and it looked fine but the problem was it didn't fit in with the look of Meower and would need a decent amount of effort to get it to fit in.

Perhaps configure the default styling options to have a more orange tint?

The obvious choice here would be highlight.js :)

L, use shiki

highlight.js has 22.5k stars shiki has 6.4k
highlight.js is the winner

calm down, its not a popularity contest


fixed #133 UI issue with jsoneditor

This commit fixes #133 by updating to last JsonEditor version

Please before accepting this pull-request : Be aware that the look&feel of the json editor change :
It goes from a #1ab394 (greenish) color to a #3883fa (blueish) color

Thank you so much, as soon as possible I'll accept this :)


Support MessagePack for Keys & Values (just a comparison function)

Actually only a comparison function for arbitrary msgpack messages is required.

Why doesn't memcmp() work? What exactly do you need?

Why doesn't memcmp() work?
What exactly do you need?

MsgPack is (mostly) self-described data format.
Therefore, the comparison function for arbitrary msgpack messages allows you to compare many data types with due account it's semantics, including tuples.


feat: handle server side clustering

Handle server side clustering, see: https://github.com/Problematy/goodmap/pull/199

Pull Request Test Coverage Report for Build<PHONE_NUMBER>5
Details

16 of 35 (45.71%)  changed or added relevant lines in 4 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-2.0%) to 56.659%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/components/FiltersForm/FiltersForm.jsx
5
6
83.33%

src/components/MarkerPopup/ClusterMarker.jsx
0
6
0.0%

src/components/Map/Map.jsx
0
12
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/components/Map/Map.jsx
2
0.0%

Totals

Change from base Build<PHONE_NUMBER>1:
-2.0%

Covered Lines:
187

Relevant Lines:
320

💛  - Coveralls


chore: remove control python launch

Description
remove python launch after this migration has done
Related links

Tests performed

Notes for reviewers

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.
[ ] The PR has been properly tested.
[ ] The PR has been reviewed by the code owners.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.
[ ] The PR is ready for merge.

After all checkboxes are checked, anyone who has write access can merge the PR.

feat(tier4_control_launch)! might be better? (I'm not sure.)


Fixed SQS remove-statements

Remove-statements action was failing when removing the last permission from an SQS. Updated to use boto's "remove_permission" instead of "set_queue_attribute". Tested successfully in sandbox. Addresses issue #1816.

hey @hav3wb any luck with SNS remove-statements ? #1779

@kumarsiyer I tried recreating the error you received for SNS and didn't receive that error -- everything appeared to be working. Therefore, I didn't include it in this PR as didn't know if it was a widespread issue. I did however check if this SQS fix would work for SNS (even though I wasn't seeing the error) and it appeared to work there as well. If this SQS fix ends up being approved, then I can open up a PR for SNS since I already have the fix for that as well (even though for me, functionality did not change). Do you happen to have an instance of why SNS was failing? (i.e. Removing the last permission or trying to remove multiple permissions at once?) So I can recreate the issue to test against.

@hav3wb thank you, let me give you more details as requested.

@jhnlsn Removed both

this could use a unit test that tests the error reported.

@kapilt I didn't change any of the error reporting. The line I changed is still tested (and technically increased coverage as is 2 lines not 1) and the errors are already marked as covered according to coverage/coveralls.

@hav3wb we do have tests where we remove 1 of 2 matched attributes, however, a test does not exist where we remove the permission when only 1 exists.  Would you be willing to write that up?

@jhnlsn I added a test

@hav3wb fwiw, its much nicer generally to use feature branches on pull requests, your commit history on this pull request, has lots of extraneous commits unrelated to the pull request.

@kapilt Thanks! I actually realized that midway through this process and already set to fixing my branches for future updates


technic-launcher: init at 1.6.56

Description of changes
Technic Launcher is an alternative Minecraft launcher.
Upstream URL: https://www.technicpack.net/download
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Marking as draft, as the program attempts to write into the store for logging and data storage.


copy for 'get updates' section

Get new and sensitive analysis in your inbox
Get the latest analyses, and ones too sensitive to post, sent to you and your team's inbox by joining SPARC.
Join SPARC | Follow on Twitter

Done in 0bd3870fc5af30997564064656f0d844eb4bcc46 -- can you look at it? We can make it prettier later.

prefect, I think this is great to get in ahead of feedback.


Need Help for How to Add the new parameters in the Meter values like SOC, Voltage, Current and Temeprature

Hello All, I am able to work with my CMS and geting the Energy (Wh) and the Power while charging. I need to Add More parameters in the meter reading like SOC, Voltage, Current and temperature, etc.
Need the know how I can add these to the code. If any document or example is available or any guidance on how I can add that will be great.

@piyush9999 I have not tried yet. I was working with one connector only. Can you help me if you are able to add the parameters I am looking for.

Hi, you can use the more generic function addMeterValueInput. It works similar to the EneryInput and PowerInput, but you can define more details. See the example here:
https://github.com/OpenEVSE/ESP32_WiFi_V4.x/blob/751d8374ab072df83a920295b6723dc8e904d21e/src/ocpp.cpp#L165-L169

@piyush9999 Sorry, I forgot to mention multiple connectors here. See the following code snippet:
int connectorId = 1; //select connectorId 0, 1 or 2

addMeterValueInput([this] () {
    return (int32_t) evse->getAmps();
},
"Current.Import",
"A",
nullptr, //location (optional)
nullptr, //phase (optional)
connectorId);

Hey, @matth-x if I want to use Two connectors, then the statusNotification should send connector id 1 and 2 but in current condition, it is sending 0 and 1. Is there anything in the main source code that I have to add to get multiple connectors functionality. So I can start and stop transaction and meter them separately

Hi @piyush9999, in platformio.ini, add -D AO_NUMCONNECTORS=3 to the build_flags section.
The first connector has connectorId 1, the second has Id 2. You can ignore Id 0 for the moment.

@matth-x thank you for your reply. I will try the solution you suggest and get back to you if any issues I will face.

hey @matth-x I have successfully added two connectors 1 and 2 as you told.
So when I'm starting transaction for Connector ID 2 I'm getting an error from the library as MeterStart Undefined
Log:
[AO] Recv: [2,"a992d12c-cfbd-429d-94df-25382d5a52ff","RemoteStartTransaction",{"connectorId":2,"idTag":"Abcd12345"}]
17:34:56.138 -> [AO] Send: [3,"a992d12c-cfbd-429d-94df-25382d5a52ff",{"status":"Accepted"}]
17:34:56.138 -> [AO] info (lib_extras/ArduinoOcpp-master/src/ArduinoOcpp/Tasks/ChargePointStatus/ConnectorStatus.cpp:237): Session mngt: trigger StartTransaction
17:34:56.138 -> [AO] ERROR (lib_extras/ArduinoOcpp-master/src/ArduinoOcpp/Tasks/ChargePointStatus/ConnectorStatus.cpp:245): MeterStart undefined
And same error when I'm stopping the transaction
Log:
[AO] ERROR (lib_extras/ArduinoOcpp-master/src/ArduinoOcpp/Tasks/ChargePointStatus/ConnectorStatus.cpp:301): MeterStop undefined

@piyush9999 When adding more connectors, it is necessary to add the setup functions for each connector again. For example, when setting the energy meter:
https://github.com/matth-x/ArduinoOcpp/blob/27ce8b15cd5158e1b8d637b67fe55416093bfe57/src/ArduinoOcpp.h#L191
you need to execute that function once for connectorId = 1 and for connectorId = 2. The same is required for each function which has the parameter unsigned int connectorId.

@matth-x I have added the meter values as suggested by you but these values are not getting added to the meter values while charging. Can you please suggest what could be wrong? I have added the meter values in main.cpp file in Setup function in SECC example in the library.

@matth-x I could able to send the meter values to my CMS with new inputs. I missed adding these new inputs to default configurations. After adding these this is working. Thank you for your Support.

@matth-x Thanks brother added☺

@matth-x I have added the code as given below in the setup to add the new measurement values. But after adding this code I started facing an issue. At every power up I need to configure the WebSocket again. Please suggest where could be the issue, or I am missing something.
std::shared_ptr<ArduinoOcpp::Configuration<const char *>> mvSampledData = ArduinoOcpp::declareConfiguration<const char *>(
"MeterValuesSampledData", "", CONFIGURATION_FN);
const char *example = *mvSampledData; //example: read value of configuration
*mvSampledData = "Power.Active.Import,Energy.Active.Import.Register,Voltage,Current.Import,SoC,Temperature"; //example: update configuration value
//ArduinoOcpp::configuration_save(); //write configs file back to flash immediately (not really necessary though)
std::shared_ptrArduinoOcpp::FilesystemAdapter filesystem = ArduinoOcpp::makeDefaultFilesystemAdapter(ArduinoOcpp::FilesystemOpt::Use_Mount_FormatOnFail);
ArduinoOcpp::configuration_init(filesystem);
#if 1
ArduinoOcpp::declareConfiguration<const char *>(
"MeterValuesSampledData", "DEFAULT VALUE", CONFIGURATION_FN); //declare configuration and use the default value parameter (replace with required value)
//ArduinoOcpp::configuration_save(); //again, not really necessary
#endif

@matth-x below is the code in main.cpp for your reference.
`// matth-x/ArduinoOcpp
// Copyright Matthias Akstaller 2019 - 2022
// MIT License
//
//
// IMPORTANT: Please add https://github.com/tzapu/WiFiManager.git to the lib_deps of your project!
//
// This sketch demonstrates a complete OCPP Wi-Fi module of an EVSE. You can flash
// an ESP8266/ESP32 with this program, build it into your EVSE and start charging with
// OCPP-connectivity.
//
// The pin mapping and additional comments can be found in this file. You probably need
// to adapt a few things before deployment.
//
#include <Arduino.h>
#include <WiFiManager.h> //please add to lib_deps: https://github.com/tzapu/WiFiManager.git
#include <ArduinoOcpp.h>
#include <ArduinoOcpp/Core/Configuration.h> //load and save settings of WiFi captive portal
/*

Pin mapping part I
Interface to the SECC (Supply Equipment Communication Controller, e.g. the SAE J1772 module)
*/
#define AMPERAGE_PIN 4 //modulated as PWM

#define EV_PLUG_PIN 14 // Input pin | Read if an EV is connected to the EVSE
#if defined(ESP32)
#define EV_PLUGGED HIGH
#define EV_UNPLUGGED LOW
#elif defined(ESP8266)
#define EV_PLUGGED LOW
#define EV_UNPLUGGED HIGH
#endif
#define OCPP_CHARGE_PERMISSION_PIN 5 // Output pin | Signal if OCPP allows / forbids energy flow
#define OCPP_CHARGE_PERMITTED HIGH
#define OCPP_CHARGE_FORBIDDEN LOW
#define EV_CHARGE_PIN 12 // Input pin | Read if EV requests energy (corresponds to SAE J1772 State C)
#if defined(ESP32)
#define EV_CHARGING LOW
#define EV_SUSPENDED HIGH
#elif defined(ESP8266)
#define EV_CHARGING HIGH
#define EV_SUSPENDED LOW
#endif
#define OCPP_AVAILABILITY_PIN 0 // Output pin | Signal if this EVSE is out of order (set by Central System)
#define OCPP_AVAILABLE HIGH
#define OCPP_UNAVAILABLE LOW
#define EVSE_GROUND_FAULT_PIN 13 // Input pin | Read ground fault detector
#define EVSE_GROUND_FAULTED HIGH
#define EVSE_GROUND_CLEAR LOW
/*

Pin mapping part II
Internal LED of ESP8266/ESP32 + additional ESP8266 development board LED
*/

#define SERVER_CONNECT_LED 16 // Output pin | Signal if connection to OCPP server has succeeded
#define SERVER_CONNECT_ON LOW
#define SERVER_CONNECT_OFF HIGH
#define CHARGE_PERMISSION_LED 2 // Output pin | Signal if OCPP allows / forbids energy flow
#if defined(ESP32)
#define CHARGE_PERMISSION_ON HIGH
#define CHARGE_PERMISSION_OFF LOW
#elif defined(ESP8266)
#define CHARGE_PERMISSION_ON LOW
#define CHARGE_PERMISSION_OFF HIGH
#endif
#if !defined(SECC_NO_DEBUG)
#define PRINT(...) Serial.print(VA_ARGS)
#define PRINTF(...) Serial.printf(VA_ARGS)
#define PRINTLN(...) Serial.println(VA_ARGS)
#else
#define PRINT(...)
#define PRINTF(...)
#define PRINTLN(...)
#endif
WebSocketsClient wSock;
ArduinoOcpp::EspWiFi::OcppClientSocket oSock{&wSock};
int evPlugged = EV_UNPLUGGED;
bool booted = false;
ulong scheduleReboot = 0; //0 = no reboot scheduled; otherwise reboot scheduled in X ms
ulong reboot_timestamp = 0; //timestamp of the triggering event; if scheduleReboot=0, the timestamp has no meaning
// ============ CAPTIVE PORTAL
#define CAPTIVE_PORTAL_TIMEOUT  60 //in seconds
#define WIFI_CONNECTION_TIMEOUT 30 //in seconds
struct Ocpp_URL {
bool isTLS = true;
String host = String('\0');
uint16_t port = 443;
String url = String('\0');
bool parse(String& url);
};
Ocpp_URL ocppUrlParsed = Ocpp_URL();
bool runWiFiManager();
// ============ END CAPTIVE PORTAL
//============= Kill Transaction =====================
//Added By Mukesh
#define KILL_TRANSACTION_PIN 33 // Output pin | Signal if connection to OCPP server has succeeded
#define KILL_TRANSACTION_ON LOW
#define KILL_TRANSACTION_OFF  HIGH
//====================================================
void setup() {
/*
 * Initialize peripherals
 */
Serial.begin(115200);

#if !defined(SECC_NO_DEBUG)
Serial.setDebugOutput(true);
#endif
pinMode(EV_PLUG_PIN, INPUT);
//pinMode(EV_PLUG_PIN, INPUT_PULLUP);
pinMode(EV_CHARGE_PIN, INPUT);
pinMode(EVSE_GROUND_FAULT_PIN, INPUT);
pinMode(OCPP_CHARGE_PERMISSION_PIN, OUTPUT);
digitalWrite(OCPP_CHARGE_PERMISSION_PIN, OCPP_CHARGE_FORBIDDEN);
pinMode(OCPP_AVAILABILITY_PIN, OUTPUT);
digitalWrite(OCPP_AVAILABILITY_PIN, OCPP_UNAVAILABLE);
pinMode(CHARGE_PERMISSION_LED, OUTPUT);
digitalWrite(CHARGE_PERMISSION_LED, CHARGE_PERMISSION_OFF);
pinMode(AMPERAGE_PIN, OUTPUT);

#if defined(ESP32)
pinMode(AMPERAGE_PIN, OUTPUT);
ledcSetup(0, 1000, 8); //channel=0, freq=1000Hz, range=(2^8)-1
ledcAttachPin(AMPERAGE_PIN, 0);
ledcWrite(AMPERAGE_PIN, 256); //256 is constant +3.3V DC
#elif defined(ESP8266)
analogWriteRange(255); //range=(2^8)-1
analogWriteFreq(1000); //freq=1000Hz
analogWrite(AMPERAGE_PIN, 256); //256 is constant +3.3V DC
#else
#error Can only run on ESP8266 and ESP32 on the Arduino platform!
#endif
//==========Kill Transaction======================================
pinMode(KILL_TRANSACTION_PIN, INPUT_PULLUP);
//================================================================
pinMode(SERVER_CONNECT_LED, OUTPUT);
digitalWrite(SERVER_CONNECT_LED, SERVER_CONNECT_ON); //signal device reboot
delay(100);
digitalWrite(SERVER_CONNECT_LED, SERVER_CONNECT_OFF);

#if 1
std::shared_ptr<ArduinoOcpp::Configuration<const char *>> mvSampledData = ArduinoOcpp::declareConfiguration<const char *>(
"MeterValuesSampledData", "", CONFIGURATION_FN);
const char *example = *mvSampledData; //example: read value of configuration
*mvSampledData = "Power.Active.Import,Energy.Active.Import.Register,Voltage,Current.Import,SoC,Temperature"; //example: update configuration value
ArduinoOcpp::configuration_save(); //write configs file back to flash immediately (not really necessary though)
#endif
/*
 * You can use ArduinoOcpp's internal configurations store for credentials other than those which are
 * specified by OCPP. To use it before ArduinoOcpp is initialized, you need to call configuration_init()
 *
 * This snippet also shows how to integrate a custom filesystem. Just subclass FilesystemAdapter and pass
 * it to the library
 */
    std::shared_ptr<ArduinoOcpp::FilesystemAdapter> filesystem = ArduinoOcpp::makeDefaultFilesystemAdapter(ArduinoOcpp::FilesystemOpt::Use_Mount_FormatOnFail);
    ArduinoOcpp::configuration_init(filesystem);
#if 1
    ArduinoOcpp::declareConfiguration<const char *>(
        "MeterValuesSampledData", "DEFAULT VALUE", CONFIGURATION_FN); //declare configuration and use the default value parameter (replace with required value)
    //ArduinoOcpp::configuration_save(); //again, not really necessary
#endif
/*
 * WiFiManager opens a captive portal, lets the user enter the WiFi credentials and provides a settings
 * page for the OCPP connection
 */
if (!runWiFiManager()) {
    //couldn't connect
    PRINTLN(F("[main] Couldn't connect to WiFi after multiple attempts"));
    delay(30000);
    ESP.restart();
}

std::shared_ptr<ArduinoOcpp::Configuration<const char *>> ocppUrl = ArduinoOcpp::declareConfiguration<const char *>(
    "ocppUrl", "", CONFIGURATION_FN, false, false, true, true);
std::shared_ptr<ArduinoOcpp::Configuration<const char *>> CA_cert = ArduinoOcpp::declareConfiguration<const char *>(
    "CA_cert", "", CONFIGURATION_FN, false, false, true, true);
std::shared_ptr<ArduinoOcpp::Configuration<const char *>> httpAuthentication = ArduinoOcpp::declareConfiguration<const char *>(
    "httpAuthentication", "", CONFIGURATION_FN, false, false, true, true);

String ocppUrlString = String(*ocppUrl);
if (!ocppUrlParsed.parse(ocppUrlString)) {
    PRINTLN(F("[main] Invalid OCPP URL. Restart."));
    delay(10000);
    ESP.restart();
}

PRINTF("[main] host, port, URL: %s, %hu, %s\n",
            ocppUrlParsed.host.isEmpty() ? "undefined" : ocppUrlParsed.host.c_str(),
            ocppUrlParsed.port,
            ocppUrlParsed.url.isEmpty()  ? "undefined" : ocppUrlParsed.url.c_str());

/*
 * Initialize ArduinoOcpp framework.
 */
wSock.setReconnectInterval(5000);
wSock.enableHeartbeat(15000, 3000, 2);

if (httpAuthentication->getBuffsize() > 1) {
    wSock.setAuthorization(*httpAuthentication);
}

if (ocppUrlParsed.isTLS) {
    if (CA_cert->getBuffsize() > 0) {
        //TODOS: ESP8266: limit BearSSL buffsize
        configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov"); //alternatively: settimeofday(&de, &tz);
        PRINT(F("[main] Wait for NTP time (used for certificate validation) "));
        time_t now = time(nullptr);
        while (now < 8 * 3600 * 2) {
            delay(500);
            PRINT('.');
            now = time(nullptr);
        }
        PRINTF(" finished. Unix timestamp is %lu\n", now);

        wSock.beginSslWithCA(ocppUrlParsed.host.c_str(), ocppUrlParsed.port, ocppUrlParsed.url.c_str(), *CA_cert, "ocpp1.6");
    } else {
        wSock.beginSSL(ocppUrlParsed.host.c_str(), ocppUrlParsed.port, ocppUrlParsed.url.c_str(), nullptr, "ocpp1.6");
    }
} else {
    wSock.begin(ocppUrlParsed.host, ocppUrlParsed.port, ocppUrlParsed.url, "ocpp1.6");
}

OCPP_initialize(oSock,
        230.f, //European grid voltage
        ArduinoOcpp::FilesystemOpt::Use_Mount_FormatOnFail);

/*
 * Integrate OCPP functionality. You can leave out the following part if your EVSE doesn't need it.
 */
setEnergyMeterInput([]() {
    //read the energy input register of the EVSE here and return the value in Wh
    /*
     * Approximated value. Replace with real reading
     */
    static ulong lastSampled = millis();
    static float energyMeter = 0.f;
    if (getTransactionId() > 0)
        energyMeter += ((float) (millis() - lastSampled)) * 0.003f; //increase by 0.003Wh per ms (~ 10.8kWh per h)
    lastSampled = millis();
    return energyMeter;
});

//!!!!!!!!!!!!!!!!!!!!!! Added new Energy Meter inputs By Mukesh !!!!!!!!!!!!!!!!!!!!!!!!!!!
addMeterValueInput({
return 230;
}, "Voltage", "V", nullptr, "L1", 1);
addMeterValueInput([] () {
        return (int32_t) 16;
    },
    "Current.import",
    "A");

addMeterValueInput([] () {
        return (int32_t) 25;
    },
    "Temperature",
    "Celsius");

addMeterValueInput([] () {
        return (int32_t) 25;
    },
    "SoC",
    "Percent");

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/*
* Integrate OCPP functionality. You can leave out the following part if your EVSE doesn't need it.
/
setPowerMeterInput( {
//read the energy input register of the EVSE here and return the value in W
/
* Approximated value. Replace with real reading
*/
static ulong lastSampled = millis();
static float energyMeter = 0.f;
if (getTransactionId() > 0)
energyMeter = 11000;
lastSampled = millis();
return energyMeter;
});
setSmartChargingOutput([](float limit) {
    //set the SAE J1772 Control Pilot value here
    const float voltage = 230.f; // European grid
    const uint nPhases = 1; //one, two or three phase charging
    float amps = limit / (voltage * (float) nPhases);
    if (amps > 51.f)
        amps = 51.f;

    PRINTF("[main] Smart Charging allows maximum charge rate: %iW; convert to Control Pilot amerage: %.2fA\n", (int) limit, amps);

    int pwmVal;
    if (amps < 6.f) {
        pwmVal = 256; // = constant +3.3V DC
    } else {
        pwmVal = (int) (4.26667f * amps);
    }

#if defined(ESP32)
ledcWrite(AMPERAGE_PIN, pwmVal);
#elif defined(ESP8266)
analogWrite(AMPERAGE_PIN, pwmVal);
#endif
});
setEvReadyInput([]() {
    //return true if the EV is in state "Ready for charging" (see https://en.wikipedia.org/wiki/SAE_J1772#Control_Pilot)
    return digitalRead(EV_CHARGE_PIN) == EV_CHARGING;
});

addErrorCodeInput([] () {
    //Uncomment if Ground fault pin is used
    //if (digitalRead(EVSE_GROUND_FAULT_PIN) != EVSE_GROUND_CLEAR) {
    //    return "GroundFault";
    //}
    return (const char *) nullptr;
});

setOnResetSendConf([] (JsonObject confirmation) {
    if (getTransactionId() >= 0)
        stopTransaction();

    PRINTLN(F("[main] Execute reset command"));
    reboot_timestamp = millis();
    scheduleReboot = 5000; //reboot will be executed in loop()
    booted = false;
});

//... see ArduinoOcpp.h for more settings

/*
 * Notify the Central System that this station is ready
 */
auto evseDetailsDoc = std::unique_ptr<DynamicJsonDocument>(new DynamicJsonDocument(
    JSON_OBJECT_SIZE(5)
    + 5
    + 5
    + 5));
JsonObject evseDetails = evseDetailsDoc->to<JsonObject>();
evseDetails["chargePointModel"] = "MKB-AC001";
evseDetails["chargePointSerialNumber"] = "12345"; //see https://github.com/OpenEVSE/ESP32_WiFi_V4.x/issues/218
evseDetails["chargePointVendor"] = "TestEV";
evseDetails["firmwareVersion"] = "0.0.1";
evseDetails["meterSerialNumber"] = "0.0.1";

//bootNotification("MKB-AC001", "TestEV Private Limited", [] (JsonObject response) {
bootNotification(std::move(evseDetailsDoc), [](JsonObject response) { //ArduinoOcpp will delete evseDetailsDoc
    if (response["status"].as<String>().equals("Accepted")) {
        booted = true;
        digitalWrite(SERVER_CONNECT_LED, SERVER_CONNECT_ON);
    } else {
        //Wait for the connection retry
        reboot_timestamp = millis();
        scheduleReboot = 60000; //wait for 60s until reboot; reboot will be executed in loop()
    }
});

}
void loop() {
/*
 * Do all OCPP stuff (process WebSocket input, send recorded meter values to Central System, etc.)
 */
OCPP_loop();

//NFC reader integration example
if (/* RFID chip detected? */ false) {
    const char *idTag = "0123456789A";//"my-id-tag"; //e.g. idTag = RFID.readIdTag(); //Mukesh
    authorize(idTag);
}

if (ocppPermitsCharge()) {
    //EVSE is in a charging session and charging is permitted by the OCPP server
    digitalWrite(OCPP_CHARGE_PERMISSION_PIN, OCPP_CHARGE_PERMITTED);
    digitalWrite(CHARGE_PERMISSION_LED, CHARGE_PERMISSION_ON);
} else {
    //Charging is not allowed due to OCPP rules
    digitalWrite(OCPP_CHARGE_PERMISSION_PIN, OCPP_CHARGE_FORBIDDEN);
    digitalWrite(CHARGE_PERMISSION_LED, CHARGE_PERMISSION_OFF);
}

if (scheduleReboot > 0 && millis() - reboot_timestamp >= scheduleReboot) {
    ESP.restart();
}

if (!booted) {
    return;
}

auto readEvPlugged = digitalRead(EV_PLUG_PIN);
if (evPlugged == EV_UNPLUGGED && readEvPlugged == EV_PLUGGED //transition from unplugged to plugged
            && getTransactionId() < 0  //no transaction yet
            && isOperative()) {        //EVSE is in operative mode
            PRINTF("In Start Transaction\n\r");
    startTransaction("0123456789A");//("my-id-tag");    //Mukesh
} else if (evPlugged == EV_PLUGGED && readEvPlugged == EV_UNPLUGGED //transition from plugged to unplugged
            && getTransactionId() >= 0) { //need to stop transaction
            PRINTF("In Stop Transaction\n\r");
    stopTransaction();
}
else if( digitalRead(KILL_TRANSACTION_PIN) == KILL_TRANSACTION_ON)
{
    PRINTF("In Kill Transaction\n\r");
    stopTransaction();
}
evPlugged = readEvPlugged;

//... see ArduinoOcpp.h for more possibilities

}
// ### End of the OCPP integration. The following code integrates the
// ### WiFi-Manager into this example sketch.
bool runWiFiManager() {
/*
 * Initialize WiFi and start captive portal to set connection credentials
 */
WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP

std::shared_ptr<ArduinoOcpp::Configuration<const char *>> ocppUrl = ArduinoOcpp::declareConfiguration<const char *>(
    "ocppUrl", "", CONFIGURATION_FN, false, false, true, true);
std::shared_ptr<ArduinoOcpp::Configuration<const char *>> CA_cert = ArduinoOcpp::declareConfiguration<const char *>(
    "CA_cert", "", CONFIGURATION_FN, false, false, true, true);
std::shared_ptr<ArduinoOcpp::Configuration<const char *>> httpAuthentication = ArduinoOcpp::declareConfiguration<const char *>(
    "httpAuthentication", "", CONFIGURATION_FN, false, false, true, true);

WiFiManager wifiManager;
wifiManager.setTitle("EVSE configuration portal");
wifiManager.setParamsPage(true);
WiFiManagerParameter ocppUrlParam ("ocppUrl", "OCPP 1.6 Server URL + Charge Box ID", *ocppUrl, 150,"placeholder=\"wss://<domain>:<port>/<path>/<chargeBoxId>\"");
wifiManager.addParameter(&ocppUrlParam);

WiFiManagerParameter divider("<div><br/></div>");
wifiManager.addParameter(&divider);

WiFiManagerParameter caCertParam ("caCert", "CA Certificate", "", 1500,"placeholder=\"Paste here or leave blank\"");
wifiManager.addParameter(&caCertParam);
WiFiManagerParameter caCertSavePararm ("<div><label for='caCertSave' style='width: auto;'>Save new CA Certificate</label><input type='checkbox' name='caCertSave' value='1'  style='width: auto; margin-left: 10px; vertical-align: middle;'></div>");
wifiManager.addParameter(&caCertSavePararm);

WiFiManagerParameter httpAuthenticationParam ("httpAuthentication", "HTTP-authentication token", "", 150,"placeholder=\"e.g.: aKu0Q4NjMRC9yO3wRo08\"");
wifiManager.addParameter(&httpAuthenticationParam);
WiFiManagerParameter httpAuthenticationSavePararm ("<div><label for='httpAuthenticationSave' style='width: auto;'>Save new HTTP token</label><input type='checkbox' name='httpAuthenticationSave' value='1'  style='width: auto; margin-left: 10px; vertical-align: middle;'></div>");
wifiManager.addParameter(&httpAuthenticationSavePararm);

wifiManager.setSaveParamsCallback([&ocppUrlParam, ocppUrl, &wifiManager, CA_cert, &caCertParam, httpAuthentication, &httpAuthenticationParam] () {
    String newOcppUrl = String(ocppUrlParam.getValue());
    newOcppUrl.trim();
    Ocpp_URL newOcppUrlParsed = Ocpp_URL();
    if (newOcppUrlParsed.parse(newOcppUrl)) {
        //success
        *ocppUrl = newOcppUrl.c_str();
    }

    bool caCertSave = false;
    String caCertChangedParam = String ("caCertSave");
    if(wifiManager.server->hasArg(caCertChangedParam)) {
        String caCertChanged = String(wifiManager.server->arg(caCertChangedParam));
        if (caCertChanged.length() > 0) {
            caCertSave = caCertChanged.charAt(0) == '1' || caCertChanged.charAt(0) == 't' || caCertChanged.charAt(0) == 'o';
        }
    }
    if (caCertSave) {
        *CA_cert = caCertParam.getValue();
    }

    bool httpAuthenticationSave = false;
    String authChangedParam = String ("httpAuthenticationSave");
    if(wifiManager.server->hasArg(authChangedParam)) {
        String authChanged = String(wifiManager.server->arg(authChangedParam));
        if (authChanged.length() > 0) {
            httpAuthenticationSave = authChanged.charAt(0) == '1' || authChanged.charAt(0) == 't' || authChanged.charAt(0) == 'o';
        }
    }
    if (httpAuthenticationSave) {
        *httpAuthentication = httpAuthenticationParam.getValue();
    }
    ArduinoOcpp::configuration_save();
});

wifiManager.setDarkMode(true);

//wifiManager.setConfigPortalTimeout(CAPATITIVE_PORTAL_TIMEOUT / 1000); //if nobody logs in to the portal, continue after timeout
wifiManager.setTimeout(CAPTIVE_PORTAL_TIMEOUT); //if nobody logs in to the portal, continue after timeout
wifiManager.setConnectTimeout(WIFI_CONNECTION_TIMEOUT);
//wifiManager.setSaveConnect(true);
wifiManager.setAPClientCheck(true); // avoid timeout if client connected to softap
PRINTLN(F("[main] Start capatitive portal"));

if (wifiManager.startConfigPortal("EVSE-Config", "evse1234")) {
    return true;
} else {
    return wifiManager.autoConnect("EVSE-Config", "evse1234");
}

}
bool Ocpp_URL::parse(String &ocppUrl) {
String inputUrl = String(ocppUrl); // wss://host.com:433/path
inputUrl.trim();
if (ocppUrl.isEmpty()) {
    return false;
}
url = inputUrl;

inputUrl.toLowerCase();

if (inputUrl.startsWith("wss://")) {
    isTLS = true;
    port = 443;
} else if (inputUrl.startsWith("ws://")) {
    isTLS = false;
    port = 80;
} else {
    return false;
}
inputUrl = inputUrl.substring(inputUrl.indexOf("://") + strlen("://")); // host.com:433/path
if (inputUrl.isEmpty()) {
    return false;
}

host = String('\0');
for (uint i = 0; i < inputUrl.length(); i++) {
    if (inputUrl.charAt(i) == ':') { //case host.com:433/path
        host = inputUrl.substring(0, i);
        uint16_t inputPort = 0;
        for (unsigned int j = i + 1; j < inputUrl.length(); j++) {
            if (isDigit(inputUrl.charAt(j))) {
                inputPort *= (uint16_t) 10;
                inputPort += inputUrl.charAt(j) - '0';
            } else {
                break;
            }
        }
        if (inputPort > 0) {
            port = inputPort;
        }
        break;
    } else if (inputUrl.charAt(i) == '/') { //case host.com/path
        host = inputUrl.substring(0, i);
        break;
    }
}
if (host.isEmpty()) {
    host = inputUrl;
}

return true;

}
`

@matth-x @piyush9999 I followed the above discussion to implement multiple connectors. Is there a way to call startTransaction and stopTransaction functions for a specific connector?
I'm aware the connectorId can be chosen from RemoteStartTransaction and RemoteStopTransaction but is there a way to do it with startTransaction and stopTransaction?

Hello @Fareed99 you can try by giving a separate IDTAG, this should work

Hey @piyush9999 thanks for your reply.
startTransaction and stopTransaction do not have the connectorId paramter. So whenever I call startTransaction, it starts a transaction on connector 1 but I also need to be able to start and stop transactions on connectors 2 and onwards.
@piyush9999 @matth-x Please shed some light on this, I would be grateful. Thanks!

@matth-x Hi hope you are good.
I am working on this lib and everything is ok till now. However, I want to send the RFID to Steve pls can you or anyone  tell me how can I do this??

`if (/* RFID chip detected? */ false) {
String idTag = "0123456789ABCD"; //e.g. idTag = RFID.readIdTag();
    if (!getTransaction()) {
        //no transaction running or preparing. Begin a new transaction
        Serial.printf("[main] Begin Transaction with idTag %s\n", idTag.c_str());

        /*
         * Begin Transaction. The OCPP lib will prepare transaction by checking the Authorization
         * and listen to the ConnectorPlugged Input. When the Authorization succeeds and an EV
         * is plugged, the OCPP lib will send the StartTransaction
         */
        auto ret = beginTransaction(idTag.c_str());

        if (ret) {
            Serial.println(F("[main] Transaction initiated. OCPP lib will send a StartTransaction when" \
                             "ConnectorPlugged Input becomes true and if the Authorization succeeds"));
        } else {
            Serial.println(F("[main] No transaction initiated"));
        }

`
After reading the tag i.e idTag it will compare the tag you added on the server,

Thanks for the help @piyush9999 ..
Right now I am reading the tag and then copying this to the 32-bit variable.
but the thing is I could not send the read id tag to Steve.
Will it send the   "idTag = "0123456789ABCD";  to the steve server ??
Or how Can I send the RFID tag to steve??
Thanks for reply.

Don't send<PHONE_NUMBER>ABCD, add the rfid to the server first, for more comfort make it as parent idtag, make String idtag = RFID.readIdTag();

Hi @piyush9999.
Thanks again for guiding.
Actually Can you tell me how I can send the value because in my case it is required to send the read rfid tag to steve.
Also one thing more I want to add in this.
Like if load not connected then it send reject msg to steve and relays gets off.


what's the yoga ball's  size

my shool has the same robot dog.i will very appreciate if you tell me the best yoga ball size.

and what's unitree go1 type.


css-loader exportLocalsConvention (formerly localsConvention) not working in CRACO config. Wanting to convert kebab to camelCase

I'm trying to implement the set-css-loader-locals-convention recipe and I'm getting an error hoping someone can guide me to fix.
Implementing the recipe as shown here:
module.exports = {
  style: {
    css: {
      loaderOptions: {
        localsConvention: "camelCase",
      }
    },
  }
}

produces the following compiler error:
Failed to compile.

./src/Player/App/containers/WorkbenchWrapper/WorkbenchWrapper.module.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-7-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-7-3!./node_modules/sass-loader/dist/cjs.js??ref--5-oneOf-7-4!./src/Player/App/containers/WorkbenchWrapper/WorkbenchWrapper.module.scss)
ValidationError: Invalid options object. CSS Loader has been initialized using an options object that does not match the API schema.
 - options has an unknown property 'localsConvention'. These properties are valid:
   object { url?, import?, modules?, icss?, sourceMap?, importLoaders?, esModule? }

I believe this is broken starting in CRA4. Create React App v4 uses css-loader version 4.3.0 and a quick look at the documentation for<EMAIL_ADDRESS>informed me that the property name has changed to exportLocalsConvention.
First thing I tried was to simply update the property name using the same recipe:
module.exports = {
  style: {
    css: {
      loaderOptions: {
        exportLocalsConvention: "camelCase",
      }
    },
  }
}

This resulted in the exact same error as above. This does make sense considering the error informs us which properties are valid.
The webpack docs show this property being applied to under modules, so I also tried this config:
module.exports = {
  style: {
    css: {
      modules: {
        options: {
          exportLocalsConvention: "camelCase"
        }
      }
    },
  }
}

I don't get any errors with this config, but it also doesn't convert my css/scss classes from kebab to camelCase. My classes are still coming back as undefined.
Just for clarity, I'm trying to set up a new CRA project for sass modules where the typescript-plugin-css-modules plugin handles converting css class names from kebab to camel case for intelliJ and where the css-loader converts the final css class names from kebab to camel case.
Could anyone with more experience with CRACO and css-loader help me figure out the proper configuration?

I have a different project configuration now than when I created this issue, but I think this is how the CRACO config file would need to look to support the localsConvention parameter in a CRA v4 project:
module.exports = {
  style: {
    css: {
      loaderOptions: {
        modules: {
            localsConvention: "camelCase"
        }
      }
    }
  }
}

CamelCase will working if you write as I has wrote below:
module.exports = {     style: {         modules: {             localIdentName: "[local]_[hash:base64:5]",         },         css: {             loaderOptions: {                 modules: {                     exportLocalsConvention: "camelCaseOnly",                 }             }         }     } };
But I have other problem - modules work perfectly, but other css and scss styles were broken.
So I had before adding "exportLocalsConvention":

and I have now:

I changed only .cracorc file.

This is a late response, but I will leave it in case anyone else is looking for the answer like I was. To make the css-loader work correctly, you need to add auto: true to the modules object.
  style: {
    css: {
      loaderOptions: {
        modules: {
          auto: true,
          exportLocalsConvention: 'camelCaseOnly',
        },
      },
    },
  },


variable for actual filename - to get child references

To get child references to a note there is a need to put explict note name:
![[project.task.*]]
It would be nice to have a variable which substitute the current filefname withoiut using snippets.
![[{NAME_OF_NOTE}.*]]

Thanks for the issue. Will add it to backlog. @hikchoi let me know if this is something you're interested in taking on. There's a couple ways of doing this and happy to go over the different approaches.

Thanks for the issue. Will add it to backlog. @hikchoi let me know if this is something you're interested in taking on. There's a couple ways of doing this and happy to go over the different approaches.

This is something I find would be useful so definitely yes. A bit busy running around this weekend but if you leave a few pointers I can take a look and start working on it next week :+1:

@grizz-pl you know have a way of getting the filename using nunjucks templates. take a look at the docs and let me know if this works for your use case


theme mods. reomoved border, changed stylebox for top part, tabs left aligned

I changed some style box numbers so that there is no border at the left and right anymore. I think it looks really cool especially combined with a new theme. to get an idea how this looks checkout this issue:
https://github.com/godotengine/godot/issues/7294
I also would love to implement bold font since that would make a nice addition to the overall editor look.
But I'm not sure how I can achieve that with minimal changes.
since the make_default_theme function only takes one param for the font. so I would need to change that. also I'm not quite sure how the font pipeline works.
I think I just add the otg file and SCons than adds that file to the font header. than it is a available as a global var stating with _
would be cool if someone can give me some help and explanation how to add bold font to the default editor theme.
I'm not sure if this is the same with other textures for the theme, but there are currently still a couple of minor issues with positioning of ui elements, they are sometimes to close to the ground. So we might need to do some position changes to the editor node.
Would be happy for any possible help.

Or just run clang-format on the affected files, rather than doing it manually.

did the clang formatting

@djrm Can you check that this goes in the same direction as your own theme changes, so that we don't merge conflicting stuff?

@djrm we need to discuss anyways if you even want to use that pr or if you prefer making one big pr where you add all the changes.
I would be willing to update that pr and change the requested changes but first we need to decide if it is even with using it.

@toger5 yeah i got kind of tired about the theme thing so i guess i will make a PR with the last tweaks and then people can improve the theme, i stated before my opinions about the theme and tried to improve acording to people comments but i think that people should try new variations and see what is better usabillity wise, im going to keep improving the proposed theme, but i need some help with the details (a task that is proving the be a bit tedious) also amost everytime that i rebase my local branch there is something that breaks my theme (or at least some part of it, currently the window margins), so thats it i will create a PR then you can try new thing or fix existing issues, also i see that the vector theme thread is going theorical so i dont thing it will be possible for godot 3.0 to improve usabillity at the proposed levels.

@djrm that sounds really well. Thank you for the work you did till now!
I don't know how much time I will have in the upcoming days but having your theme as a pr is great!
I understand that keeping the pr mergable is a tidies task. Lets see how things go.

@toger5 What should we do with this PR? I guess it was partly obsoleted by recent theme changes; are there still changes there you'd like to rebase on top of master?

@akien-mga Sorry I forgot about it...
All the changes are obsolete with the new theme! So I close. Thank you for asking and reminding me though!


feature request: forwardTo support

Hi, It would be great to have support for forwarding filter syntax.

Good idea! I've just committed this to master and it will be released as v0.9 soon.


Add dynamic positions [request]

I like this tour a lot and made a style which fits our app. The only thing i see going wrong is that users of different screen sizes will have issues with the position or is this calculated for?

Edit
I guess it does do some calculation. I made the chrome window less wide and visible target would not update, but the next new target does update.

I see the function adjusted already does this, very nice :)


docker-compose.yml possible with 3rd item?

I'm trying to get docker-compose.yml working with my own web server. All of the examples that I can find that have a third service seem to be using docker-gen:
https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion/wiki/Docker-Compose
I can get https working when I launch all three separately with docker run in the examples, but I'd love to get them all working in docker-compose.yml. Is this possible? Below is my docker-compse.yml:
version: "3.7"
services:
    nginx-proxy:
        image: jwilder/nginx-proxy
        container_name: nginx-proxy
        volumes:
            - /var/run/docker.sock:/tmp/docker.sock:ro
            - ./htpasswd:/etc/nginx/htpasswd
            - vhost:/etc/nginx/vhost.d
            - html:/usr/share/nginx/html
            - dhparam:/etc/nginx/dhparam
            - certs:/etc/nginx/certs:ro
        ports:
            - "80:80"
            - "443:443"
        restart: always
        network_mode: bridge
    letsencrypt-nginx-proxy-companion:
        image: jrcs/letsencrypt-nginx-proxy-companion
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock:ro
            - vhost:/etc/nginx/vhost.d
            - html:/usr/share/nginx/html
            - dhparam:/etc/nginx/dhparam
            - certs:/etc/nginx/certs:rw
        restart: always
        network_mode: bridge
        environment:
            -<EMAIL_ADDRESS>            - NGINX_PROXY_CONTAINER=nginx-proxy
        depends_on:
            - nginx-proxy
    my-app:
        build: .
        volumes:
            - .:/app
        expose:
            - "3000"
        restart: always
        network_mode: bridge
        environment:
            - VIRTUAL_HOST=example.domain.com
            - VIRTUAL_PORT=3000
            - LETSENCRYPT_HOST=example.domain.com
        depends_on:
            - nginx-proxy
volumes:
    conf:
    vhost:
    html:
    dhparam:
    certs:

I have the same issue.  Only port 80 will proxy to the virtualport, not 443.

@srchulo the Docker Compose doc was written a while ago and not meant as a reference, maybe network_mode: bridge works differently now, try using using a Docker network instead.
You can find compose examples with a Docker network here : https://github.com/buchdag/letsencrypt-nginx-proxy-companion-compose


Make unavailable units/lessons accessible

a11y accessible, not accessible, you can't access them, they are unavailable.
Currently, to a screen reader user, they are not there unless you nav through the page line by line, which most users will not.

I don't think this is an issue, it isn't a link.


Add framework for gating tests / sanity checks

As a maintainer, I would like to have a system to run gating tests and sanity checks for a wheel that have been built by Fromager. The tests should be executed after a wheel and all its dependencies have been built and before the source directory of the package has been removed. Fromager should automate the process of creating a test virtual env, installing the package, and running tests.
Proposals

tests are defined in overrides/gating/{override_package_name}/test*.[py|sh] (e.g overrides/gating/flash_attn/test_something.py or overrides/gating/torch/test.sh).
Fromager creates a new virtual env for testing and installs the package + its dependencies in the virtual env
Fromager passes the env variables from the override configuration + os.environ to each test file
Additionally Fromager sets env vars like FROMAGER_VARIANT, FROMAGER_SDIST_ROOT, and whatever else we find useful. This lets test scripts locate the unpacked sources or change different aspects for each variant.
test scripts are executed with the overrides/gating/{override_package_name} as their CWD.
shell scripts must be executable
Python test scripts are run with python -m test_$name

Possible enhancements for later

install pytest and use pytest to run Python test files?
provide additional pytest fixtures, e.g. for variant and sdist root?
add config option to install additional packages in the test env?
add option to automatically run tox / nox when the project uses tox / nox?

I agree this needs to be part of a build pipeline. Does it need to be a core part of fromager?
If we look at fromager as producing a "set of wheels" as output, then we might want to test them together as well as separately. Are you thinking fromager would test individual wheels as they are built, and fail the build if a test did not pass? Then at the end of the job something would test the collection together?


Unmodified lines showing as modified

Every line in all of my files are showing as modified. The tree view does not mark them as modified and git status comes back clean. The status bar also does not show any changes. I believe I have my git line endings are set up properly. I've followed the solutions on a bunch of related issues — but no luck.
I'm using Parallels on my Mac (OSX Yosemite) to access the Windows partition. Running git status from OSX and Windows both comes back clean.
Anything else I should look into?

I can see this issue runing Atom under Windows 7 as well. If i have core.autocrlf to true, it will show all files as modified all the time. If I set it to false or input, some files will work properly, some won't, some won't even show as modified, even if the have modification markers inside the file.

My assumption is that because you are running Windows that you're having a line-ending issue. I suspect this is a duplicate of atom/atom#3768 and can be resolved in the same way.
The advice here might help too: https://discuss.atom.io/t/atom-on-windows-incorrectly-showing-files-as-modified-git/12805
Please let us know if this is not the case.

First of all, I must say that I am using the Cygwin version git on Windows, using it directly from a Cygwin terminal.
And I think I just figured out the cause of the issue, and I'm not sure if there is anything to be done about it.
I have the following settings in .git/config:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
ignorecase = true

and core.autocrlf is true via  global git setting. And this seems to be the cause for the trouble, if I add it additionally as a local setting for the repository, it seems to work.
Of course Atom on Windows won't be aware of my Cygwin's /home/martin/.gitconfig, so it won't see the global settings.

Ok, so it would appear that your configuration was incorrect rather than there being a bug in Atom. I'm glad it got fixed :grinning:

@lee-dohm Hmm, "incorrect" is debatable from my point of view. I think there should be a way to tell  git-diff about the global settings file. I would consider global settings to be part of the repositories configuration. It just seems to be hard to decide what the global configuration is on Windows when using Cygwin.

I'm having this issue on mac.

@mr-bat If you're running into something that you consider to be a bug, please open a new issue and fill out the template.


how to set API Key with header X-Auth-Token when sending a request?

I could make it work with Bearer inside the Authorization header, but how to change the header?

If I see the code here, it seems it's not configurable isn't it?

You can find it in README: The auth part:
    'components' => [
        'rest' => [
            'class' => 'simialbi\yii2\rest\Connection',
            'baseUrl' => 'https://api.site.com/',
            // 'auth' => function (simialbi\yii2\rest\Connection $db) {
            //      return 'Bearer: <mytoken>';
            // },
            // 'auth' => 'Bearer: <mytoken>',
            // 'usePluralisation' => false,
            // 'useFilterKeyword' => false,
            // 'enableExceptions' => true,
            // 'itemsProperty' => 'items'
        ],
    ],

after I spent more time into it, at last I could set my header to the request.
for anybody that having an issue like me, you can set the requestConfig like this:
    'components' => [
        'rest' => [
            'class' => 'simialbi\yii2\rest\Connection',
            'baseUrl' => 'https://api.site.com/',
            'requestConfig' => [
                'headers' => [
                    'X-Auth-Token' => '<<your-token-here>>',
                    'User-Agent' => 'yii2-rest-client'
                ]
            ]
            // 'auth' => function (simialbi\yii2\rest\Connection $db) {
            //      return 'Bearer: <mytoken>';
            // },
            // 'auth' => 'Bearer: <mytoken>',
            // 'usePluralisation' => false,
            // 'useFilterKeyword' => false,
            // 'enableExceptions' => true,
            // 'itemsProperty' => 'items'
        ],
    ],

works too: simpler would be:
    'components' => [
        'rest' => [
            'class' => 'simialbi\yii2\rest\Connection',
            'baseUrl' => 'https://api.site.com/',
            'auth' => '<<your-token-here>>'
        ]
    ]

I'm sorry, but it doesn't work for me. because that token will sent with header Authorization, and not X-Auth-Token.  I've tried and I get "HTTP/1.1 401 Unauthorized"

Ok, special header, sry. Yeah it uses the default Authorization header


Video tutorial on replacing explorer

Hey,
id like to use Files as default is there a tutorial? Thanks

https://files-community.github.io/docs/#/articles/replace-file-explorer


Limit elfeed-search-browse-url to one URL

Is it possible to limit elfeed-search-browse-url to a single URL?
I often mark multiple entries in elfeed-search with the intention of hitting 'r' for elfeed-search-untag-all-unread - but very rarely, I mistakenly hit 'b' for elfeed-search-browse-url - and poor old firefox gets dozens (or hundreds) of URLs to open.
This is definitely a bug in the region between operator head and keyboard, but it would be really nice to be able to limit elfeed-search-browse-url to open just a single URL.

With a bit of help from chatGPT, I concocted the following advice to stop the mayhem when I try to open too many URLs:
(defadvice elfeed-search-browse-url (around bh/check-elfeed-search-browse-url activate)
  "Check if number of entries to open is excessive before browsing."
  (let* ((entries (elfeed-search-selected))
         (count (length entries)))
  (when (> count 3)  ; Adjust threshold as needed
    (when (y-or-n-p (format "Open %d entries in browser?" count))
      ad-do-it))))


docs: home updates

This change includes updates basedo n the requests in the attached pdf.
Design changes
Signed-off-by: Matt Hippely<EMAIL_ADDRESS>PR Checklist
Please check if your PR fulfills the following requirements:

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)
[ ] If applicable, have a visual design approval

PR Type
What kind of change does this PR introduce?

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

What is the current behavior?

Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

The github action seems to have gotten disconnected.
Builds are happening on the branch but not being picked up here.
I'm going to close this and try to re-open so we can get the latest changes build for preview.


@Input() modules

Hi,
Appreciate your work.
Is there any way you could add Input() modules, so then it would be possible to bind the toolbar config?
[modules]="quillModuleConfig"
public quillModuleConfig = {
    toolbar: [
        ['bold', 'italic', 'underline'],
        [{ 'header': 1 }, { 'header': 2 }],
        [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
        [{ 'color': [] }, { 'background': [] }],
        [{ 'align': [] }],
        ['clean']
    ]
};

Thank you.

Hi @ndl7 , I added common toolbar elements as custom HTML. If the component needs to bind toolbar options, then I will need to use Quill's default toolbar. It's a trade-off. I wish there's an easy way.
If you have some ideas, please go ahead submit a pull request. Thank you.


Once you have a large number of notifications, it is impossible to delete them

I collected a couple of thousand notifications and tried to delete them. The application tries to stuff all ids into a get URL which does not work. I can't even delete five of them because the logic takes all known ids instead of the 5 I selected:

Expected behaviour: Be able to delete selected notifications. Maybe even have a "Delete all" option that works without IDs.

@mvexel This is a possible candidate for inbox / messaging overhaul.


Extend configuration for SMTP providers

Preflight Checklist

[X] I could not find a solution in the existing issues, docs, nor discussions
[X] I have joined the ZITADEL chat

Describe your problem
There are a lot of issues related to STMP provider configuration so that more providers can be used.
Describe your ideal solution
As a developer, I want to have the option to use my preferred SMTP provider, so that I have no problems reusing an existing SMTP provider.
Version
latest
Environment
ZITADEL Cloud
Additional Context
Current configuration example https://zitadel.com/docs/apis/resources/admin/admin-service-update-smtp-config#update-smtp-configuration:
{
  "senderAddress"<EMAIL_ADDRESS>  "senderName": "ZITADEL",
  "tls": true,
  "host": "smtp.postmarkapp.com:587",
  "user": "197f0117-529e-443d-bf6c-0292dd9a02b7",
  "replyToAddress"<EMAIL_ADDRESS>  "password": "this-is-my-password",
  "description": "provider description"
}

Suggested changes:

[ ] add boolean to configuration to add hello request
[ ] add oneof for authtype, as Plain and Login are available already (user and password attributes)
[ ] include CRAMMD5Auth as authtype (https://www.samlogic.net/articles/smtp-commands-reference-auth.htm)
[ ] include EntraID as authtype (https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth#sasl-xoauth2, https://github.com/AzureAD/microsoft-authentication-library-for-go), is combined with CRAMMD5 (https://learn.microsoft.com/en-us/azure/azure-app-configuration/rest-api-authentication-azure-ad)
[ ] endpoint to re-add default SMTP configuration
[ ] reevaluate error handling if no SMTP provider is active and missing translations

Closes #4477
Closes #5424
Closes #7052
Closes #7085
Closes #7739

@eliobischof @stebenz please estimate

Hi @eliobischof , @stebenz would you find suitable to use https://github.com/wneessen/go-mail for some of these requirements?


Put message in service bus queue

message will be in json and will contain info about pending connections
tests