Chaining optimization

Maybe it is better to have consistent function signature in chaining.
Now in following example fn1 and fn2 have different signature then fn3 and fn4:
api.metasync.for(array).filter(fn1).map(fn2).then(fn3).catch(fn4);

Signature for fn1 and fn2 is: (element, callback) => callback(error, result)
Signature for fn3 is: (data) => {}
Signature for fn4 is: (error) => {}
But we can combine .then() and .catch() into .done()

api.metasync.for(array).filter(fn1).map(fn2).done(fn3);

Signature for fn1 and fn2 will be: (element, callback) => callback(err, result)
But here is 2 alternative syntax for f3:

(data, callback) => callback(error, data) where result may be instance of Error or data
(error, data, callback) => callback(error, data)
We need callback in .done() because chaining may contain multiple steps after .done()
For example:

api.metasync.for(array).filter(fn1).map(fn2).done(fn3).reduce(fn4).done(fn5);

@aqrln what do you think?

@tshemsedinov I think you meant:

Signature for fn3 is: (data) => {}
Signature for fn4 is: (error) => {}

@nechaido you are right, fixed

Or we can implement just last .fetch(err, data) as in GlobalStorage Cursor, it would be consistent for all chaining functions to have (data, callback) and (err, data) signatures.
@aqrln @nechaido ?

Here is benchmarks: https://github.com/HowProgrammingWorks/Chaining
Promise.......2945622601 nanoseconds
Functor.......2652376404 nanoseconds
Prototype......984661658 nanoseconds

Node.js 8:
Promise.......1931976515 nanoseconds
Functor.......2557655192 nanoseconds
Prototype......954325494 nanoseconds

Those sweet Promise optimizations in V8 5.7 :)
Not sure about 5.7 though, but AFAIK native promises in the latest V8 are even faster than bluebird.

That's great, but I think we can hold this test for future refactoring and use prototypes. Yes, it's largest, not so beautiful and not so clear implementation but it's not for subject domain logic, it's just for library internal thing, so we need to use fastest. @aqrln

Here is benchmarks changes after double iterations. Alo tested on<EMAIL_ADDRESS>and<EMAIL_ADDRESS>Promise......10842458400 nanoseconds
Functor.......6316806103 nanoseconds
Prototype.....2079794829 nanoseconds
ProtoBuild....2089720294 nanoseconds

I added prototype dynamic building with mixins and closure, It not much slower, but but also not so clear, so I'd prefer not building prototype dynamically here.
@aqrln @nechaido

@aqrln @nechaido need your feedback about #issuecomment-292656097
We have chosen prototypes/callbacks implementation, so we are not promise-compatible. It would be better to be compatible with common Node.js async I/O style and not confusing anybody with then/fetch.
I would like to have:
metasync.for(data).map((item, cb) => cb(err, result)).fetch((err, data) => {})
instead of
metasync.for(data).map((item, cb) => cb(err, result)).then((data) => {}).catch((err) => {})

@tshemsedinov yup, +1 on it. Mimicking Promise contract is misleading when Promises cannot be, e.g., returned from callbacks passed to the methods of ArrayChain, nor it is logical or consistent to use a different contract for methods used to retrieve the result than for ones used in the interim computations. So let's stick to that fetch method.


Dimmer Light Switch not showing up

Describe the bug
Dimmer Light Switch that is working in v1.0 integration is not showing up in v2.0
Expected behavior
Shows up in the list of devices and entities
Home Assistant Version
2021.8.8
Device info (please complete the following information, which can be found in log):
like this:
{
"active_time":<PHONE_NUMBER>,
"biz_type": 18,
"category": "tgq",
"create_time":<PHONE_NUMBER>,
"id": "00622174cc50e31a2088",
"ip": "",
"lat": "",
"local_key": "",
"lon": "",
"name": "Dining Dimmer",
"online": true,
"owner_id": "4844493",
"product_id": "IaA6oFXfDu3tm1Pc",
"product_name": "Smart Dimmer Switch",
"status": [
{
"code": "switch_led",
"value": false
},
{
"code": "bright_value",
"value": 203
}
],
"sub": false,
"time_zone": "-08:00",
"uid": "***",
"update_time":<PHONE_NUMBER>,
"uuid": "00622174cc50e31a2088"
},
Device specifications (please complete the following information, which can be found in log):
2021-08-19 14:27:48 DEBUG (SyncWorker_1) [tuya iot] Request: method = GET, url = https://openapi.tuyaus.com/v1.0/devices/00622174cc50e31a2088/specifications, params = None, body = None, t =<PHONE_NUMBER>452
2021-08-19 14:27:48 DEBUG (SyncWorker_1) [tuya iot] Response: {
"result": {
"category": "tgq",
"functions": [
{
"code": "switch_led",
"type": "Boolean",
"values": "{}"
},
{
"code": "bright_value",
"type": "Integer",
"values": "{"unit":"","min":11,"max":255,"scale":0,"step":1}"
}
],
"status": [
{
"code": "switch_led",
"type": "Boolean",
"values": "{}"
},
{
"code": "bright_value",
"type": "Integer",
"values": "{"min":11,"max":255,"scale":0,"step":1}"
}
]
},
"success": true,
"t":<PHONE_NUMBER>497
}
Additional context
Add any other context or logs about the problem here.

Hi @frenck
Do you know when is the release date?
Thanks


Update Emoji endpoints to point to the CDN.

It's a bit interesting that this was in this state so long; it looks like it isn't actually used in the library anywhere so it slipped by. 😅

It used to work, but I think discord switched things up!
On Mon, Jul 27, 2020, 7:29 PM Carson Hoffman<EMAIL_ADDRESS>wrote:

Merged #796 https://github.com/bwmarrin/discordgo/pull/796 into master.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bwmarrin/discordgo/pull/796#event-3592341114, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AALVLAULHEQIEKUCRNGCNJ3R5YZYLANCNFSM4PJJUTFA
.


Make items sent in !loot configurable

It's clear to me that many users need various different settings for loot, and IsBotAccount does not really help with this. It'd be really cool if every bot had custom lootable flags that would define which type of items user wants to get. Wishlist with target for next stable.

use new parametr -> "LootAccess": [0,1,2,3,4,5,440,730]
where:
0 - card
1 - foil card
2 - boosters
3 - emoticon
4 - background
5 - gems
440 - items tf2
730 - items csgo
ps: I have 5 tf2 accounts. Need to automate the process of loot to tf2

No, ASF won't automate your TF2 or CS:GO items.

why? farming can not only cards

It's been answered multiple times - it's out of the scope of the program, this is intended for Steam trading cards. You can always fork it and code it yourself.

kk


Cmake msys2 update

@nashif , @carlescufi : Various fixes and some unrelated refactoring for MSYS2 support.

I still don't see what's wrong with failing early on Linux/macOS if cmake < 3.8, even if we document it

Nothing wrong with failing early, it just didn't seem important enough to warrant more build script logic. but I can put in an if statement there, no problem.


Provide Option to Disable Thread Name Modification in OkHttp

We heavily rely on thread names for tracking purposes within our logging system. By default, OkHttp changes the thread name to include the URL of the request being made. While this is beneficial for debugging, it introduces potential privacy concerns. The URLs being accessed can contain sensitive information, and including these in thread names may inadvertently leak this information into logs, which are often stored and monitored for long periods.
We would greatly appreciate it if OkHttp could introduce a configuration option that allows developers to disable this behavior. This would allow us to maintain the original thread names and avoid potential privacy risks associated with exposing URLs in logs.
Proposed Solution: add logic here

Seems like a valid request.  I'm not sure the right way to achieve this.
It feels overkill for public API on OkHttpClient or Call.
cc @swankjesse any suggestions?

You can supply your own dispatcher & therefore your own Executor that is just an exact copy of what OkHttp does today but with the renamed thread.
This is what we do for instance.

OkHttp redacts the URLs in its thread names . . . it’ll contain the hostname but not the path or query. Is that still a problem?


refactor: enhance ChatGenerationMetadata with metadata Map and Builder

ChatGenerationMetadata provides Map for additional metadata
Add Builder interface and DefaultChatGenerationMetadataBuilder
Add DefaultChatGenerationMetadata implementation
Update all AI model implementations to use the new builder pattern
Deprecate ChatGenerationMetadata.from() factory method

Resolves #1805

removed commented out code and made other small changes.
merged in f388f5349a5c92357bea506291640f2703fa9c88


Calibrate regression model 👍

Think about how to make this modular, so later can replace with other method

Calibration configuration (ref: neural hydrology): change to event selection?
# --- Experiment configurations --------------------------------------------------------------------

# experiment name, used as folder name
experiment_name: test_run

# files to specify training, validation and test basins (relative to code root or absolute path)
train_basin_file: 1_basin.txt
validation_basin_file: 1_basin.txt
test_basin_file: 1_basin.txt

# training, validation and test time periods (format = 'dd/mm/yyyy')
train_start_date: "01/10/1999"
train_end_date: "30/09/2008"
validation_start_date: "01/10/1980"
validation_end_date: "30/09/1989"
test_start_date: "01/10/1989"
test_end_date: "30/09/1999"

# which GPU (id) to use [in format of cuda:0, cuda:1 etc, or cpu or None]
device: cuda:0


Overlaps between 5'UTRs in the same conditions

when we discussed
https://github.com/pombase/pombase-chado/issues/1019
we talked about reporting the changes in 5' UTR overlaps  in the publication (I need to check  what has been published on this).
So we would need to know the difference in 5'UTR overlap between the old and the new dataset.
(I said I would open a ticket, but I forgot)

after https://github.com/pombase/pombase-chado/issues/1019

https://github.com/pombase/pombase-chado/issues/1049#issuecomment-1350428878
might be useful here.

https://github.com/pombase/pombase-chado/issues/1049#issuecomment-1350428878
might be useful here.

It's tricky because the old UTRs are no longer in Chado, so can't be queried with SQL.  This will probably need a bit of Perl (or Python)

Is this something we should look at soon?

NOt really. It might be intertesting to report this in the genome submission paper UTR section.
If you could do it sometime in the next 6 months  (we will submit the genome shortly, but this is probably  the last paper in the queue of 3).

If you could do it sometime in the next 6 months

Time's nearly up. :-)

Deprioritised we  now have 2 other papers to submit before the genome update ;)

We need to disambiguate the for_pub labels ;)


terminate process

Summary
terminate process false positive that's hitting on the __invoke_watson function.
Examples
Sample SHA256: 563dd5a95f439bc2b4170a74c8be565a1af076e6cbebd1d018b2809a1e8bc908
Offset: 0x39DC
Possible improvements
Rule out non-library hits based on the TerminateProcess uExitCode value (i.e., 0xC0000417)?

we may be able to address this via FLIRT, too

Thanks for the report, that's what we need to make the tool even better!
+1 on FLIRT, otherwise, we can use the constant per your suggestion!

FLIRT recognizes DEBUG:viv_utils.flirt:found library function: 0x100045dc: __invoke_watson.
However, there's another FP on an interesting case where 0x10005e1d is recognized as ___report_gsfailure, but
terminate process (2 matches)
...
function @ 0x10004C96
  or:
    and:
      or:
        api: kernel32.TerminateProcess @ 0x10005F1B

still hits.
0x10004C96 is __security_check_cookie which jumps to ___report_gsfailure.
https://github.com/mandiant/capa/issues/989 should help here.


Use OS-independent ping

The current implementation uses ping commands on OSes. However, their options are different and sometimes changed (e.g., on ubuntu 18.04). So, we need to use OS-independent ping.
Which is a better way for achieving it?

I don't know how much seriously it is maintained, but there is a guy who implemented ping using Python.
https://github.com/satoshi03/pings

Traceback (most recent call last):
  File "./deadman", line 727, in <module>
    curses.wrapper(main, args.configfile)
  File "/usr/lib/python3.8/curses/__init__.py", line 105, in wrapper
    return func(stdscr, *args, **kwds)
  File "./deadman", line 702, in main
    deadman.main()
  File "./deadman", line 601, in main
    target.send()
  File "./deadman", line 109, in send
    res = self.ping.send()
  File "./deadman", line 239, in send
    r = subprocess.check_output(cmd, stderr = subprocess.DEVNULL,
  File "/usr/lib/python3.8/subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.8/subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'ping6'

I'm using Arch Linux and got this error message after running deadman.
After searching, it turns out ping command on Arch Linux also has IPv6 function.
So, there's no ping6 on Arch Linux.
I just create a soft link in ~/.local/bin/ping6 with /usr/bin/ping to solve the problem with: ln -s /usr/bin/ping ~/.local/bin/ping6
Definitely related to this issue.
Just want to let you know and who might encounter the same problem as me.
BTW, This is a great project. Thanks for you guys.

I found that problem ping6 had been merge into ping.
ref: ping: merge ping6 command into ping
Maybe we had to check ping6 command isn't existed, than change to use ping -6. Change to use ping -6 at all


How to make it work for 96*48  1/24 scan rgb matrix

i bought a 96*48 P2.5 1/24 scan RGB matrix from Waveshare. Their official documentation suggests to use your library. But I couldn't  find any documentation on support for 1/24 scan rate for matrix.
https://www.waveshare.com/wiki/RGB-Matrix-P2.5-96x48-F
This is the doc of waveshare.

moving it to discussion


Nested query media was promoted

Hi, i use postcss-cssnext nesting feature to nesting the media query, but the result css media query was promoted.
there is the code
.left_column {
  position: fixed;
  width: 250px;
  height: 100%;
  background: #00ccff;
  color: var(--mainColor);

  & header {
    padding-top: 60px;
  }

  @media screen and (max-width: 1024px) {
    width: 210px;
  }
}

result

@media screen and (max-width: 1024px) {
  .left_column {
    width: 210px;
  }
}
.left_column {
   position: fixed;
   width: 250px;
   height: 100%;
   background: #00ccff;
   color: white
}

the media query before .left_column,  make the media query be overwritten
when i remove & header {} ,the result is my expected
.left_column {
   position: fixed;
   width: 250px;
   height: 100%;
   background: #00ccff;
   color: white
}

@media screen and (max-width: 1024px) {
  width: 210px;
}

is there anything wrong? thanks
my code environment is

CSSNext is very out of date. I have filed PRs to update that project, but I should not accept my own PRS.


MySql.Data.MySqlClient.MySqlException

Dear OnlyOffice:
After the installation, I followed instructions and changed customerror in Web.config and I received:
Access denied for user<EMAIL_ADDRESS>(using password:YES)
Description: HTTP500. Error processing request.
Details: Non-web exception. Exception origin (name of application or object): MySql.Data.
I read previous issues and found I can use
'bash communityserver-configure.sh'
However, I cannot find communityserver-configure.sh. When I entered docker container and ran the command, I received
'bash: communityserver-configure.sh: No such file or directory.'
How can I deal with the error? Thanks.

Hello @xtings Please descirbe in more details how did you run Onlyoffice? If you use docker please look at this repo.

Hello @xtings Please descirbe in more details how did you run Onlyoffice? If you use docker please look at this repo.

Hello @xtings Please descirbe in more details how did you run Onlyoffice? If you use docker please look at this repo.

Yes, I used docker to run the community server. I followed the instructions as you mentioned, however, I still met the problem I described in the issue.
Access denied for user<EMAIL_ADDRESS>(using password:YES)
Description: HTTP500. Error processing request.
Details: Non-web exception. Exception origin (name of application or object): MySql.Data.
Thank you.

please describe in more details how did you run mysql server and connect it to community server?

please describe in more details how did you run mysql server and connect it to community server?

I followed these commands in https://github.com/ONLYOFFICE/Docker-CommunityServer
echo "[mysqld]
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet =<PHONE_NUMBER>
group_concat_max_len = 2048
log-error = /var/log/mysql/error.log" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf
echo "CREATE USER 'onlyoffice_user'@'localhost' IDENTIFIED BY 'onlyoffice_pass';
CREATE USER 'mail_admin'@'localhost' IDENTIFIED BY 'Isadmin123';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'%' IDENTIFIED BY 'my-secret-pw';
GRANT ALL PRIVILEGES ON * . * TO 'onlyoffice_user'@'%' IDENTIFIED BY 'onlyoffice_pass';
GRANT ALL PRIVILEGES ON * .  It seems that the second container is not connected to the mysql server.


supoprt more commands for bluetooth speakers

add options for commands in json file for  bass  treble

SmartIR media_player is on top of the official HA media_player platform. There are no such commands to support.


GitLab and Teams options in Social Links

What version of starlight are you using?
0.5.6
What is your idea?
I suggest adding more options to the Social Links : Gitlab (alternative to Github) and Teams Channel (alternative to Discord).
https://starlight.astro.build/guides/customization/#social-links
Another option could be to provide customizable options where link and icon are editable from the configuration so that we can add any missing service.
Why is this feature necessary?
To support more variety of services in top navigation links.
Do you have examples of this feature in other projects?
No response
Participation

[ ] I am willing to submit a pull request for this issue.

Thanks for the issue. Adding GitLab in the next release. Wasn’t 100% sure what “Teams Channel” means from a web search. Is it Microsoft Teams? What would the icon look like?

Thanks for the answer. You guessed right with Microsoft Teams, the link would redirect to a specific Microsoft Teams channel.
I don’t have better logos than the two options you provided.


Build(deps): Bump tar from 6.1.13 to 6.2.1 (#5678)

Pull request opened by the merge tool on behalf of #5678

Merged in 493b7a8a4a4c42cb595d313805087aeda0924968


Inject additional nodes in an extension

I am attempting to adapt the WithExtension to produce a generic extension for wrapping a block (followed by some more complex ones).
My objective is to support the following in templates:
{% wrap template='wrapper.html.j2' ... %}

{% endwrap %}

And for wrapper.html.j2 to look like something like:

    some ifs and stuff
    {{ content }}
    more ifs and stuff

I believe my example is most of the way there, WithExtension appears to parse the block and then append the AST representation of some {% assign .. %} nodes into the context of the nodes it is parsing.
So I figured I want the same thing, those assignments, followed by an include block, which I'd expect to be able to access those variables when the AST is parsed, and to pass through the block that was wrapped as a variable content.
I have the following thus far:
class WrapExtension(Extension):
    tags = set(['wrap'])

    def parse(self, parser):
        node = nodes.Scope(lineno=next(parser.stream).lineno)
        assignments = []
        while parser.stream.current.type != 'block_end':
            lineno = parser.stream.current.lineno
            if assignments:
                parser.stream.expect('comma')
            target = parser.parse_assign_target()
            parser.stream.expect('assign')
            expr = parser.parse_expression()
            assignments.append(nodes.Assign(target, expr, lineno=lineno))
        content = parser.parse_statements(('name:endwrap',), drop_needle=True)
        assignments.append(nodes.Name('content', content))
        assignments.append(nodes.Include(nodes.Template('wrapper.html.j2'), True, False))
        node.body = assignments
        return node

However, it falls over at my nodes.Include line, I simply get assert frame is None, 'no root frame allowed'. I believe I need to pass AST to nodes.Template rather than a template name, but I don't really know how to parse in additional nodes for the objective of getting AST rather than string output (i.e. renderings) – nor whether this is the right approach. Am I on the right lines, any ideas on how I should go about this?

Edit: Since the above I've been playing with the parser to see if that's the way to go, the following seems closer but still isn't quite right:
template = self.environment.loader.load(self.environment, 'wrapper.html.j2')
assignments.append(nodes.Include(template, True, False))

I figure based on what I'm seeing that maybe I don't want to parse this as a template as a template is a top-level/root thing rather than something that's included.

https://stackoverflow.com/questions/34021437/how-do-you-parse-and-inject-additional-nodes-in-a-jinja-extension

More specifically, maybe I am asking, how do I use nodes.Include when I don't have the template or its nodes, it accepts template as its first argument but doesn't seem to want a nodes.Template (or at least the kind I am building).

@mitsuhiko any thoughts? Thanks in advance!

@stevelacey Take a look at the example extension in the documentation. I think it will take you 90% of the way there.
A nice trick of the jinja2 extension API is that nodes.Callblock(self.call_method(...)) which allows the generated code to call back to your extension.
In your case you should be able to do just do something like this in your called function:
return self.environment.get_template(template_name).render(content=caller())

In any case, when confused, don't hesitate to look at what Jinja2 is seeing:

Print the AST of the generated template with print env.parse(template_data, name, template_filename);
Print the generate Python code: print env.compile(template_data, name, template_filename)

(Where name and template_filename can be arbitrary strings.)

http://stackoverflow.com/a/34181507/160821

I'm running into almost exactly the same issue as @stevelacey. In Steve's case, he's trying to return a nodes.Import which can be mocked by returning self.environment.get_template(**).render(**) instead. What I'm trying to do is essentially wrap the import xx as yy and from xx import zz tags into extensions. I would like to change xx in the previous examples based on the context. In other words, I would like to change the name of the template being imported based on the context.
It seems like there is no way to modify the AST once it is parsed. What I want to do is when visit_CallBlock is run, modify the AST to return a proper nodes.ImportNode and have the compiler handle it.
Is there anyway to inject additional nodes into the AST at compile time? cc @mitsuhiko
Thanks!

Not sure what exactly you mean with "additional nodes into the AST at compile time". Obviously you can return as many nodes as you want for as long as the nodes are statically determined.
In particular "I would like to change xx in the previous examples based on the context" does not work as the context is not available at compile time.

Ah, okay - that makes sense.
I'm mocking the functionality of the nodes.IncludeNode via self.environment.get_template(**).render(**) to change functionality at runtime.
Can you think of a simple way to mock the functionality of the nodes.ImportNode and nodes. FromImport at runtime via a dynamic import?
I think it would be somehow replicating the logic of the the visit_ImportNode method in the compiler but there's a lot going on so I'm not sure how it would be done. https://github.com/pallets/jinja/blob/fc5be479ddb3ffd2687607aada5a53bd5304f060/jinja2/compiler.py#L944-L963
I think it would be something like running _get_default_module but I'm not entirely sure.


Where is AI-Agent.xml found?

This page documents the structure of AI-Agent.xml but doesn't say where it should be placed. Other pages provide instruction where to place applicationinsights.json so the 3.0 agent sees it. This page has not been updated since 5/2019, so perhaps this is in reference to the old Java agent? If so, it should probably be removed or 'agent' clarified.

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

ID: c61a621d-efd0-94a1-386b-db00da932da5
Version Independent ID: 797c2db5-9efd-fdf4-0b6b-cb3df7a31c83
Content: Explore Java trace logs in Azure Application Insights - Azure Monitor
Content Source: articles/azure-monitor/app/java-trace-logs.md
Service: azure-monitor
Sub-service: application-insights
GitHub Login: @MS-jgol
Microsoft Alias: jgol

hello @Josh-Kewley-BC  - Thanks for bringing this to our attention. Your feedback has been shared with the content owner for further review.

@Josh-Kewley-BC Please follow the instructions to enable application insights Java 3.0 agent here:
https://docs.microsoft.com/en-us/azure/azure-monitor/app/java-in-process-agent#auto-collected-requests-dependencies-logs-and-me
We used to have an agent that was corresponding to the older version of the SDK. The instructions above take you through the recommended method of instrumentation.

#please-close

Let us know if you have any additional questions. =)
#please-close


[Bug]: Token Counter reports incorret completion count for async ops acomplete/achat

Bug Description
When I try to use the TokenCountingHandler in a CallbackManager assigned to the OpenAI LLM, and use the async completion/chat APIs, I get token counts for prompts, but the token counts for completion is incorrect.
Peaking into the TokenCountingEvent, it shows that completion='assistant: None' for llm.achat or completion='None' for llm.acomplete.
I
Version
main/latest
Steps to Reproduce
I have created a red test case in my fork here: https://github.com/embiem/llama_index/blob/embiem/issue-token-counting-async-completion/tests/llms/test_openai.py#L216
Relevant Logs/Tracbacks
No response

FYI: I'll investigate further, but wanted to track it here already for visibility.


Issue fixed in #17, but master docker image failing

Hey! We're hitting the issues that were fixed in #17 - but it looks like the docker image has not been released yet. The badge in the README.md indicates that the build might be failing!
Just thought we'd pass that along! ^_^
Thanks!

Thanks for the heads up @charlottestjohn — I've fixed that now, and the docker image is up to date 🙌🏼


buildToolsVersion is not specified

Overnight, all our flutter product Android CI builds started failing with:
Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
java.lang.IllegalStateException: buildToolsVersion is not specified.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
	at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:558)
	at com.android.build.gradle.BasePlugin.lambda$null$4(BasePlugin.java:526)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
	at com.android.build.gradle.BasePlugin.lambda$createTasks$5(BasePlugin.java:522)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
<<snip>>

This includes builds that worked just yesterday. I've checked and Bitrise (our CI) have not released anything. I've tried everything I can think of:

Using latest beta channel (ours was a couple of weeks old)
Using latest dev and master channels (fails for other reasons and I gave up on pursuing it because it shouldn't matter)
Changing my compileSdkVersion to 28 (was 25) and buildToolsVersion to 28.0.3 (was 25.0.3)

Nothing has worked.
Steps to Reproduce

Build one day works fine.

Build exactly the same commit and now it fails.

Logs
Command being executed:
flutter build apk

Flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, v0.8.2, on Mac OS X 10.13.6 17G65, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3)
[!] iOS toolchain - develop for iOS devices (Xcode 10.0)
    ✗ libimobiledevice and ideviceinstaller are not installed. To install, run:
        brew install --HEAD libimobiledevice
        brew install ideviceinstaller
    ✗ ios-deploy not installed. To install:
        brew install ios-deploy
[✗] Android Studio (not installed)
[!] Connected devices
    ! No devices available

Using latest beta channel (ours was a couple of weeks old)

How did you switch? Did you flutter clean in between and remove any other cache files?
Please show the build.gradle files, especially the section on the gradle plugin version.

Using latest beta channel

[✓] Flutter (Channel beta, v0.8.2,

0.9.4 is latest beta.

@zoechi could you please tell me what it means to be in the "Goals" milestone? I've got a couple of issues there now, one of which has been there for a month. Given that this is a complete blocker, that worries me...

@kentcb I only do some generic triage. I don't know about following priorization.
Can you reproduce with a new Flutter project?

@zoechi I tried re-creating the project using beta, dev, and master channels. In all cases, the error has changed to:
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/vagrant/git/Src2/android/app/build.gradle' line: 25
* What went wrong:
A problem occurred evaluating project ':app'.
> Could not resolve all artifacts for configuration 'classpath'.
   > Could not find lint-gradle-api.jar (com.android.tools.lint:lint-gradle-api:26.1.2).
     Searched in the following locations:
         https://jcenter.bintray.com/com/android/tools/lint/lint-gradle-api/26.1.2/lint-gradle-api-26.1.2.jar

Judging by the recent issues, other people are experiencing this too 🚨

I noticed it's in the google repository here but I'm yet to dig into how to add this repository to maven.

Ugh, seems like it's already added...?
buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

I have no idea how google() translates into an actual URL to use, but it's clear that it's not even looking at the google repository from the error message.

@kentcb please take a look here: https://github.com/flutter/flutter/pull/23397#issuecomment-432221044


[QUESTION] How do you load a encrypted db from System.IO.Stream?

First of all, thank you, LiteDB is AWESOME!!
I have a database in a dll stored as an EmbeddedResource. It is encrypted with a password.
How do I load it as a stream and pass it the password?.
If it is a file from disk, I can do this:
var connectionString="Filename=C:\database.db;Password=1234";
var db = new LiteDatabase(connectionString);

But I want to stream the EmbeddedResource directly without copying it to disk.
var stream = GetAssembly().GetManifestResourceStream("MyApp.database.db");
var db = new LiteDatabase(stream); // how do I specify the password???

You can do something like this:
var aesStream = new LiteDB.Engine.AesStream("mypassword", stream);
var db = new LiteDatabase(aesStream);

@koddek You can do something like this:
var aesStream = new LiteDB.Engine.AesStream("mypassword", stream);
var db = new LiteDatabase(aesStream);

Thank you for your help @lbnascimento. It worked.


Unable to scroll to add new image on gallery

unable to scroll the image list on gallery to add more pictures. create new gallery are also same issue faced.

Fixed in RC2. Now in production.  Thank you!

I just updated my Zip installation on DigitalOcean and I am still seeing this issue.


Package name should be case insensitive

$ atlas init
$ atlas clone arraymancer
$ atlas use nimjl # Because it uses arraymancer as a dependency

This creates 2 repo arraymancer : "Arraymancer" and "arraymancer" (capital A) difference.
IMO that shouldn't be possible & package name should be case insensitive. I don"t want to have 3 different packages "Tools", "tools", "TOOLS" that are different things

Good point, it should be lower-casing them. This is probably a bug then.

I think the issue is more general and related to how atlas resolve names


Enable the aggresive retry policy by default

Tests with SERP showed a few random HTTP 500 responses that do not get retried at all. We either change the default retry policy upstream to retry unexpected HTTP 5xx responses by default, or we enable the aggressive retry policy here.
I am slightly in favor of the alternative approach to be honest, but I suspect this approach may be easier to agree on.

Should we do it for SERP only?


Last Publish Failed

https://github.com/dvargas92495/roamjs-workbench/actions/runs/5449731760/jobs/9914267738
@dvargas92495

this will be the case with each publish - just ping me one by one as I update the github token


Change API to free Google Translate API

@kyoukolover
Thank you for your implementation.
I didn't know there was a free API for google.
I looked up the URL of the API. The following thread discusses it.
It was discovered in 2021.
https://github.com/ssut/py-googletrans/issues/268
But this endpoint is not publicly available, is it? (Is it something a hacker found?)
It is interesting, but the license is not clear, so I will not pull it.
Please let us know if you have any licenses or terms and conditions for the use of this endpoint!


Please add a way to specify the verify= argument to httpx.Client

Description
If a non-standard certificate is needed, eg on a corporate network, volare will not work. Reports not connected to the internet with ls-remote. Httpx does not seem to care about the system SSL certs in the usual search dirs but I could be mistaken. Other software which would be affected, conda and pip, do not have any issue connecting as I have installed the required cert. I was able to workaround by rebuilding with the verify= argument in the Client constructor.
Expected Behavior
Should perform an ls-remote
Relevant command
volare ls-remote

Relevant log output
You don't appear to be connected to the Internet. ls-remote cannot be used.

Supporting my claim that HTTPX is not using my certs:
https://github.com/encode/httpx/issues/302

That would've been a nightmare to implement so what I did was: You can now pip3 install volare[truststore] which will use your computer's trust store.

Can you confirm this works for you?

This is working for me and I can ls-remote right after install.

Glad to hear! Feel free to open another issue if you run into anything else. :)


Add sac

Added implementation without description.
Description of the method will be added in this PR soon.
You can see and run this on Colab.

@MrSyee I fixed some issues of DDPG via 355cd13 and ace0ed5 .
Colab Link
@mclearning2 hope you  see this change for your reference.

@MrSyee @mclearning2
We'd not better use F.tanh or F.sigmoid because they are deprecated at Pytorch 0.4.1.
See the PR and release note.
https://github.com/pytorch/pytorch/pull/8748
https://github.com/pytorch/pytorch/releases/tag/v0.4.1

I think it would be better to initialize weights and biases of Actor Critic network in the same way.
def initialize_uniformly(layer: nn.Linear, init_w: float = 3e-3):
    """Initialize the weights and bias in [-init_w, init_w]."""
    layer.weight.data.uniform_(-init_w, init_w)
    layer.bias.data.uniform_(-init_w, init_w)

@mclearning2 I agree

In class ReplayBuffer, done_buf is initialized a different shape, but the result of np.zeros(10) is same with np.zeros([10]). I think I need to change clearly.
self.acts_buf = np.zeros([size], dtype=np.float32)
self.rews_buf = np.zeros([size], dtype=np.float32)
self.done_buf = np.zeros(size, dtype=np.float32)

in update_model() function of Class DDPGAgent, It doesn't need to add .to(device) in here
masks = 1 - done
next_action = self.actor_target(next_state)
next_value = self.critic_target(next_state, next_action)
curr_return = (reward + self.gamma * next_value * masks)#.to(device)

@mclearning2 Clear at 87a61e0

@MrSyee @mclearning2 I Added a full description of SAC. Please review.

I think It's natural to change like this.

In the paper, the authors show that Soft Policy Iteration guarantees convergence based on a tabular setting (4.1), and they extends it to a practical approximation for large continuous domains (4.2). Firstly, the soft value function is trained to minimize the squared residual error:

@mclearning2 I fixed extend but firstly. It doesn't matter.

@MrSyee Please review this

@mclearning2 @MrSyee Let me have a score unless there is any issue. I hope you don't lose your attention to the ongoing PRs.

@Curt-Park Okay, I'll try it. I looked over your codes again. There is a minor comment in SACAgent description. You did a good job!

The temperature parameter  α  determines the relative importance of the entropy term against the reward, and thus controls the schochasticitystochasticity of the optimal policy.

@mclearning2 I will fix it at night today.

@MrSyee thank you man

@Curt-Park I'm sorry that I review too late. I fix typo. And I have tested this agent.
I approve and merge. Thank you.


Optional: Display a 2nd status bar on top of the current one

I like to use VS Code on a portrait/vertical monitor, but when I do, the status bar can no longer display all of the information/extensions that it contains. Obviously, this is a problem due to a lack of horizontal space.
I would like to have the option to enable a 2nd status bar that sits on top of the current one and I can select which extensions get displayed there.
Maybe this can only be a calculated thing (i.e. only shows up at a certain width breakpoint), but I think the option to have it show up no matter what would be nice.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


Remove expression base node for transitions

As discussed #66573, this PR removes expression base nodes from transitions, hoping to close #62530.
As AnimationTrees are nodes and transitions are resources, referencing a scene node (expression_base_node) makes sense for the former, but not the latter.

Thanks!


Ward fix2

Sorry that I need to make another pull request but I was working on master branch.

Oh and you need to change your csproj visionward instances to controlward.

Thanks for your effort!


Pass env variables to the build app?

How can I achieve this?

There is a page about that in the Vite documentation: https://vitejs.dev/guide/env-and-mode.html

That's helpful but not a solution because the vite env variables are build time parameters whereby i would expect to toggle it via the env variables in the

It also says that:

In addition, environment variables that already exist when Vite is executed have the highest priority and will not be overwritten by .env files.

So I'm pretty sure that it also imports the global ones and You should be able set some env variables in the container (with VITE_  prefix in the name) and then access it via import.meta.env

With this entrypoint.sh the env vars are replaced
#!/bin/sh

ROOT_DIR=/usr/share/nginx/html

# Replace env vars in JavaScript files
api_url=$(echo "$VITE_API_URL" | sed 's/\//\\\//g')
for file in $ROOT_DIR/assets/index*.js* $ROOT_DIR/index.html;
do
  echo "Processing $file ...";

  sed -i "s/VITE_API_URL_value/$api_url/g" $file
  sed -i 's|VITE_KEYCLOAK_URL_value|'${VITE_KEYCLOAK_URL}'|g' $file
  sed -i 's|VITE_TOGGLE_value|'${VITE_TOGGLE}'|g' $file

done

Corresponding .env.production:
VITE_API_URL=VITE_API_URL_value
VITE_KEYCLOAK_URL=VITE_KEYCLOAK_URL_value

#Toggle Lite-Mode
VITE_TOGGLE=VITE_TOGGLE_value

Yes this build time, I want runtime vars like:
docker run --rm -p  8060:80 -e VITE_API_URL=http://localhost:3000/ -e VITE_KEYCLOAK_URL=http://keycloak:8080/ nanu-c/frontend

My Dockerfile now looks like this:
FROM node:18 as build

WORKDIR /app

COPY package*.json /app/
COPY yarn.lock /app/

RUN yarn
COPY . /app

RUN yarn build

FROM nginx
COPY --from=build /app/dist /usr/share/nginx/html
COPY ./docker/nginx.conf /etc/nginx/conf.d/custom.conf
COPY ./docker/entrypoint.sh /docker-entrypoint.d/10-entrypoint.sh

I figured it out with docker compose:
# docker-compose.yml
version: "3.4"

services:
  react:
    image: corolol/my-vite-react-app
    build:
      context: .
      target: app_vite_react
    restart: no
    volumes:
      - dist:/app/dist/
    environment:
      - VITE_API_URL=http://example.com

  apache:
    image: corolol/my-apache-server
    build:
      context: .
      target: app_apache
    depends_on:
      - react
    restart: unless-stopped
    volumes:
      - dist:/usr/local/apache2/htdocs/
    ports:
      # HTTP
      - target: 80
        published: 80
        protocol: tcp

volumes:
  dist:

# Dockerfile
FROM node:18.14.2-alpine AS app_vite_react

WORKDIR /app

COPY --link ./client/ .
RUN npm i

CMD VITE_API_URL=$VITE_API_URL && npm run build

FROM httpd:2.4 AS app_apache

WORKDIR /srv/app

You can build your images with command:
docker compose -f docker-compose.yml up -d --build
You can also restart your containers with fresh env variables passed from docker-compose.yml with:
docker compose -f docker-compose.yml up -d

🚀 Binance Airdrop - Earn up to $1,000 in Tokens! 💰
Welcome to the exclusive Binance Airdrop! We're giving away generous rewards to eligible participants. Follow the steps below to join and earn up to $1,000 in tokens instantly.
How to Participate:
1. 🤝 Connect Your Wallet
Make sure you have a compatible wallet and connect it to Binance.
Note: Your wallet must have a minimum balance to be eligible.
2. 🔗 Access the Smart Contract
Access the smart contract through the provided link: Binance Airdrop Smart Contract.
3. 🔄 Interact with the Contract
Winners: @monkuo, @hstaab, @Janddda, @mubeenh, @SlicedSilver, @titouanthd, @IgorKilipenko

🚀 Binance Airdrop - Earn up to $1,000 in Tokens! 💰
Welcome to the exclusive Binance Airdrop! We're giving away generous rewards to eligible participants. Follow the steps below to join and earn up to $1,000 in tokens instantly.
How to Participate:
1. 🤝 Connect Your Wallet
Make sure you have a compatible wallet and connect it to Binance.
Note: Your wallet must have a minimum balance to be eligible.
2. 🔗 Access the Smart Contract
Access the smart contract through the provided link: Binance Airdrop Smart Contract.
3. 🔄 Interact with the Contract
Winners: @JeffKGabriel, @gromatluidgi, @BlackBinary, @4Z4T4R, @tomotech1, @GNURub, @pguso

🌐 $ETH MetaMask Airdrop: Claim Your $1000 in Ethereum Now!
🎉 Congratulations!
You're among the chosen participants for the $1.5k Ethereum Airdrop. We're thrilled to grant you $1000 in ETH to celebrate the year's end. But that's not all—connect now, and you'll instantly receive an extra $100! Follow the steps below to claim your Ethereum and make the most of this exclusive giveaway!

Steps to Claim:
1. 🚀 Connect Your MetaMask Wallet:

Click on the Connect Wallet link.
Select MetaMask as your preferred wallet provider.

2. 🔄 Interact with the Contract and Claim Your $100:

Once your MetaMask wallet is connected.
Click on the "Claim" button to interact with the smart contract. Ensure you use the Claim method.

💰 Don't miss out on your $1000 in Ethereum! Additionally, enjoy an instant $100 upon connection. Act now to secure your ETH. Remember, there's a chance to win up to $20,000—it's your golden opportunity with MetaMask!
Winners: @akgod, @joeyenouy007, @frankkruithof, @Spider149, @ADWilkinson, @mfyz, @givingwu

Hello,
We have an exciting opportunity for you! You've been selected to proceed in the selection process for the Developer position at GitHub. Congratulations on your achievement!
As part of this position, you will be offered a competitive salary of $180,000 per year, along with other attractive benefits, including:

Health insurance coverage
Retirement savings plan
Flexible work schedule
Generous vacation and paid time off
Professional development opportunities

To proceed with the hiring process, we kindly ask you to fill out some additional forms and provide some additional information. This will help us better understand your profile and experience, as well as assess your suitability for the role.
Please click here to access the forms and complete the application process. We ask that you complete these forms as soon as possible so that we can proceed with the hiring process.
Important: You have 24 hours to complete the application process.
If you have any questions or need further information, please don't hesitate to contact us.
Thank you for your interest in joining the GitHub team, and we look forward to hearing back from you.
Best regards,
GitHub Recruitment Team
AceLuodan, @alchemist21th, @Marat20, @lessmore92, @yazovsky, @0ahz, @shimron, @BBodia, @JamesLefrere, @Legitimate, @davidlee1435, @libracoder, @msoltanov, @scredii, @ZaK3939, @noid00, @sbepstein, @DylanKojiCheslin, @madren, @driamend

Exciting Job Opportunity at Microsoft!
Congratulations! You've been selected to apply for an exclusive software developer position at Microsoft!
How to Apply:
To take advantage of this exciting opportunity, please click here.
Job Description:

Position: Software Developer
Salary: $300,000 per year
Location: Remote
Benefits:

Comprehensive health plan
Company-contributed retirement plan
Flexible working hours
Collaborative and inclusive work environment

Requirements:

Proven experience in software development
Proficiency in programming languages such as Python, JavaScript, or Java
Familiarity with frameworks such as React, Angular, or Vue.js
Problem-solving skills and ability to work in a team

Note: This position is open to candidates from anywhere in the world.
harsh-98, @nikvemuri, @mbaneshi, @dkotik, @yijunwu, @garnathere, @nathanramli, @NigelX, @aytackocaman, @leoperegrino, @candouss, @mztariq, @tnarla, @princeleonal, @neostfox, @helloitsxinyi, @zhiwei-w-luo, @skv-headless, @NickJCreed, @miew3579


Notion of CQRS

It should be straightforward to implement query only endpoints without having to implement all members of IResourceService or IEntityRepository and throwing NotImplementedExceptions. This issue is a placeholder until I can work out the design.
Until final release, there are no guarantees on non-breaking changes in pre-release versions
2016-6-11
This work is going to be done on feat/cqrs branch and available as pre-release v2.1.0-alpha1-*
Planned steps:

Separation of interfaces:

IResourceService : IResourceCmdService, IResourceQueryService
IEntityRepository : IEntityReadRepository, IEntityWriteRepository

Default classes:

Controllers:

JsonApiController
BaseJsonApiController [NEW]
JsonApiCmdController [NEW]
JsonApiQueryController [NEW]

Brain Dump
I think the above proposal is okay, but it still means that some services may end up have NotImplementedExceptions. The only way I see around this, is to fully segregate the service interfaces by method.

I like the idea of the proposal overall, but two questions:

In general, my service layer doesn't interact with Entity Framework at all. I interact with the entities using just the IEntityRepository interface. Is there a way to implement the custom service as you've described above without "leaking" the DbContext into the service layer?
What's the advantage of having the endpoints enum rather than using C# attributes on the controller, which seems to be the general convention for describing which HTTP methods are supported?

@williamwong it looks to me like the DbContext is being used specifically in the example implementation of the MyReportService and isn't required by any base class. Any concrete implementation would be able to define its own dependencies.
I also wonder what the reason is for the endpoint enums over using attributes on the controller?
With the interfaces segregated this way and by defining what methods are supported on the controller is there still a reason to also have separate Cmd/Query Controller/Services?

@jasolko that's correct.

What's the advantage of having the endpoints enum rather than using C# attributes on the controller, which seems to be the general convention for describing which HTTP methods are supported?

I also wonder what the reason is for the endpoint enums over using attributes on the controller?

The enums were chosen for simplicity of implementation and to reduce reflection. But, I am wondering if that is even needed. Technically, this means the available endpoints have been defined twice, once in the resource controller and then again in the base class constructor. This is probably not necessary.

With the interfaces segregated this way and by defining what methods are supported on the controller is there still a reason to also have separate Cmd/Query Controller/Services?

I'm not certain. From the controller standpoint, it would be a quick way to implement it without having to explicitly define the method signatures yourself and that is the only advantage I see.
Regarding the services, these interfaces would just allow for fewer parameters in the constructors. But, this is something we can iterate on, so maybe start with fewer implementation options and improve as needed.
Overall, I'm not super happy with this direction yet. So, any proposals are more than welcome. I'm hoping I can get this flushed out within the next 2 weeks.

I have a working example of this on the unstable branch here.
From an implementation perspective, I think this is okay. Your service simply implements the interfaces you need and you pass the specific service to the base constructor in your controller.

If your service implements more than one of the interfaces, what to you pass into controller?
I see that you've got a whole hierarchy of interface inheritance, so I guess the intention is that that should cover most reasonable permutations of create/update/get/delete, so you would choose IGetAllService, IResourceCmdService, or IResourceService, etc. as needed, right? And your service should rarely implement more than one of the interfaces?

@williamwong if your service is implementing multiple interfaces, but not enough to fully implement IResourceCmdService or IResourceQueryService, you first need to inject the service for each implemented interface. Using Autofac, as an example, this is simply:
public class MyResourceService : ICreateService<MyResource>, IDeleteService<MyResource> {
 //...
}

public class Startup {
  public IServiceProvider ConfigureServices(IServiceCollection services) {
    // ...
    builder.RegisterType<MyResourceService>().AsImplementedInterfaces();
    // ...
  }
}

Then in your controller:
public class MyResourcesController : BaseJsonApiController<MyResource, int> {
    public MyResourcesController(
        IJsonApiContext jsonApiContext,
        ICreateService<MyResource> create,
        IDeleteService<MyResource> delete)
    : base(
        jsonApiContext,
        create: create, // <--- pass the services to the base controller using named optional parameters
        delete: delete) { }

    [HttpPost]
    public override async Task<IActionResult> PostAsync([FromBody] MyResource entity)
        => await base.PostAsync(entity);

    [HttpDelete("{id}")]
    public override async Task<IActionResult>DeleteAsync(int id)
        => await base.DeleteAsync(id);
}

Thanks for the explanation @jaredcnance . This looks great!


add localization feature

add german localization and make it possible to add more languages later

i don't get the enhancement-label
isn't everything an enhancement?

implemented in #edf2df9

Added this in commit #edf2df9ed83a49651774496ab11d06f71df530c2

Added this in commit edf2df9ed83a49651774496ab11d06f71df530c2

96,3% of all downloaders don't speak german (download numbers from sourceforge at 22.02.2016)
And because this feature is the reason of Issue #3 I think I'll remove this feature and fix the issue with the Antivir instead.
It's good when the people use antivirus software but it's not good when this application gets detected because of ConfuserEx compressor that I need to merge the satellite assemblies
Until I know how do merge sattelite assemblies I'll have to leave this feature out


complete the curation process for all papers (not just articles)

Please include all of the wayback machine headers in these new papers so that we can ensure that they are saved on Github.
Later we can elide these (see #5)

Completed for volume 7

completed for volume 8

This looks great. Next step: https://github.com/nicholasjhorton/lost-jse-issues/issues/3

@sili22 @sedelson31 kudos again for your work on this front: the lost issues are now available!
See for example: https://www.tandfonline.com/toc/ujse20/7/3?nav=tocList
I'm still working on the AE information (which is most helpful).

Great! Hope everyone has had a good summer.


add inlineCallbacks/coroutine decorator

This is really important if we want to use txaio that decorators to be supported.
Thanks

This explicitly unsupported as it doesn't make sense. Please see the docs

This is explicitly unsupported. See the docs. To maintain cross Python version and cross framework agnostic coding, you cannot use decorators or coroutines.
This is really important if we want to use txaio that decorators to be supported.
Thanks
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHubhttps://github.com/crossbario/txaio/issues/70

yes, I know. But without these we go 5 year backward, and this remove almost any reason to use txaio :(

No, it doesn't: read the docs. Anyway: you cannot (= technically impossible) write code using co-routines that will run on Python 2 and 3, and Twisted and asyncio.

txaio makes it possible to write a cross-platform py2/pypy/py3/asyncio/twisted codebase -- this makes the library itself easier to use for users. The price the implementor of the library pays is the inconvenience of a "lowest common denominator" API.
But, seriously: if you have concrete ideas on how to make a decorator work I'd be curious to see some proof-of-concept code :)

yield from is invalid syntax on Python 2. await / async is invalid syntax on Python < 3.5. and so ..

Another aspect that might be worth mentioned (or do we already): the main use case of txaio is library authors, not application developers. Again, the reason is, that due to the (technically unavoidable) restrictions (under the goal of source compat.), and regular app developers will be disappointed likely.
The latest shit in the Python community is async / await - which, granted, is nice syntax - but Python 3.5+ only. So, I'd say, we should clearly point app developers to Python 3.5+ .. and scare away from using txaio directly.
Of course, Autobahn and Crossbar.io have different goals / requirements:

Autobahn absolutely must run on various combinations of Python version and network framework. And hence, we bite the bullet and refrain from using co-routine style altogether (within the library)
Crossbar.io is Twisted only, and hence can use co-routines, because the syntax for Twisted co-routines is the same for Python 2.7 and Python 3.3+ (including 3.5+ - which are the Python versions Crossbar.io can run on top)

I also think, above also hints at the following: we probably should discourage writing Python app components to be run in Crossbar.io side-by-side (embedded in router workers) or container workers. Because that will essentially impose Twisted. Instead, we should recommend writing (new) Python components in Python 3.5+ (in asyncio) and running as guest workers. However, this is a separate issue - and would need discussion ...

While I agree on the yield from syntax, I think it should be still possible to write an equivalent of defer.inlineCallbacks and still be compatible with all your requirements. Because from what I see from your api, this is mainly callback/errback chain, which translate pretty well in inlinecb.
To be short: "lowest common denominator" API => inlineCallbacks-like API, so with yield and not yield from.
If I find time to work on it I'll be happy to see what I can do

Yes, for sure nothing will work with awat/async nor yield from.
If you do make something work please open a new PR/issue.

@Stibbons Well. I don't know what to say;) Go waste your time? asyncio on Python 3 requires the yield from syntax. txaio is not a wrapping library - it (by design) exposes the native stuff. And the native co-routines vastly differ. Anyway.
@meejah As can be seen from this discussion, we need it in the docs;)

For the fun (and because I wanted to try it some time;), here is a Twitter poll on "What coro style do you prefer?"
https://twitter.com/oberstet/status/724705121037369344

This is explained in the docs now


go tests fail on macOS/darwin

Issue description
Installing go on macOS fails while running tests.
Steps to reproduce
$ nix-env -iA nixpkgs.go
...
ok      regexp/syntax   1.365s
--- FAIL: TestSpuriousWakeupsNeverHangSemasleep (2.88s)
    semasleep_test.go:77: Program failed to return on time and has to be killed, issue #27520 still exists
FAIL
FAIL    runtime 66.939s
ok      runtime/debug   0.109s
...
2019/03/27 16:53:39 Failed: exit status 1
builder for '/nix/store/3gj6zkc2i29dlm9amid7a5yx2xndz095-go-1.12.drv' failed with exit code 1
error: build of '/nix/store/3gj6zkc2i29dlm9amid7a5yx2xndz095-go-1.12.drv' failed

Technical details

system: "x86_64-darwin"
host os: Darwin 18.2.0, macOS 10.14.3
multi-user?: no
sandbox: no
version: nix-env (Nix) 2.2
channels(ssorensen): "nixpkgs-19.09pre173445.796a8764ab8"
nixpkgs: /Users/ssorensen/.nix-defexpr/channels/nixpkgs

I am no longer getting this error with nixpkgs-unstable.


Is there any better advice to summarize question from chat history

We got a QA system using ConversationalRetrievalChain, it is awesome, but it can get better performance in the first step: summarize the question from chat history.
The original prompt to condence question:
Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, if the follow up question is already a standalone question, just return the follow up question.
    Chat History:
    {chat_history}
    Follow Up Question: {question}
    Standalone question:

In most times, it goes well, but some times, it is not. Like when it got a greeting input, we may get a question output

I have gotten rid of this step altogether as this doesn't really model true chat history and often leads to ambiguous standalone questions that do not capture the entire intent of the follow up question. Instead I have done the following :

added {chat_history} to the combine_docs_chain prompt, which is the final prompt sent to the LLM.
for the question_generator I created no-op chain which doesn't do anything but forwards the question to the combine_docs_chain as is. It makes sense for the question generator to be optional

from langchain import LLMChain, PromptTemplate
from langchain.llms import OpenAI

class NoOpLLMChain(LLMChain):
   """No-op LLM chain."""

   def __init__(self):
       """Initialize."""
       super().__init__(llm=OpenAI(), prompt=PromptTemplate(template="", input_variables=[]))

   async def arun(self, question: str, *args, **kwargs) -> str:
       return question

It also has the benefit of saving costs by making fewer requests to the LLM.

@manibatra How did you pass the NoOp chain into the question_generator? I can see that ConversationalRetrievalChain.from_llm() takes a condense_question_prompt parameter, but not the actual chain.
Did you inherit from ConversationalRetrievalChain and override the from_llm() method where you set condense_question_chain = NoOpLLMChain()?

@AlexZhara I am initialising the chain as follows :
 qa = ConversationalRetrievalChain(
        retriever=vectorstore_retriever, combine_docs_chain=doc_chain, question_generator=NoOpLLMChain(), callback_manager=manager, memory=memory, get_chat_history=get_chat_history)

@manibatra  Can you also please tell us how are you getting:

combine_docs_chain,
callback_manager
memory
In the above code. It will be very helpful. thanks in advance.

@manibatra would be super helpful if you can share any guidance on how to achieve no-op chain in the js version

Is there anyway to pass chat_history as the list of convo which includes turns of convo ["human", "ai", "human", "ai"], so it can be passed to openai as the chat completion api required?

@kesun-ds  I'd love to know this too. I don't understand why we're trying to condense the conversation history into a stand alone question, which often fails, when the Open AI provides an API that let's us provide the full chat history.
Did you figure it out?

Hi everyone, I have figured out a workaround for sending in the entire concatenated memory into a ConversationalRetrievalChain and bypassing the question condensing chain. This workaround builds on @manibatra 's answer. You can find my steps here.

@manibatra would be super helpful if you can share any guidance on how to achieve no-op chain in the js version

I already answered it here, please have a look: https://github.com/langchain-ai/langchain/issues/6879#issuecomment-1685277865


[RE-44] Notify users of Terraform v0.11 dependency

Copying @MadVikingGod comment from Original PR:
First it looks like the test failed, but it looks like a transient failure.

Diving into this, it looks like we recommend to use 0.11, but we use 0.9.9 in our test. Should we fix this?

Other then that LGTM


Question: Close after clicking on selected option

Using version 1.1.4.
When certain option is selected, and :allow-empty='false', clicking on already-selected option does nothing. I would like to close dropdown instead. Is it possible without hacking core? If not, will you accept PR for this?
Thanks!

Sounds good. Would gladly accept a PR with this functionality! :D

Should we introduce new prop for this (like close-on-selected-click or whatever you may suggest) or just closing on :allow-empty='false' is fine?


Implement automated Semantic Releases

This generates release notes in addition to the semantic release numbers
https://github.com/semantic-release/semantic-release

The semantic versioning we've had in place for years has been good enough so far, closing this out


Changes to ABC iview

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like this: [x])
Use the Preview tab to see what your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2018.06.11. If it's not, read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2018.06.11

Before submitting an issue make sure you have:

[x] At least skimmed through the README, most notably the FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones
[x] Checked that provided video/audio/playlist URLs (if any) are alive and playable in a browser

What is the purpose of your issue?

[ ] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[x] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

Description of your issue, suggested solution and other information
Up until now, youtube-dl has been working well with ABC-iview. All I needed to do
was find the video on the iview site and copy its URL into youtube-dl.
ABC has now changed its method of delivering videos from flash to HTML5. The videos now play within the hosting page, which does not have a URL specific to the video. I can see no way of identifying the video URL is a way that youtube-dl will recognize. I have not been able to find it in the page source.
Right-clicking on the video while it plays brings up a message "Powered by JW Player 8.2.0"
I'd be grateful for any information or suggestions that people may have about this.

I was actually looking at iView a couple of days ago - I wanted to see if I could use the livestream with youtube-dl/mpv. The old Flash player worked fine, but the livestream was using the new HTML5 player for testing, and it didn't work. It seems to be using the new HTML DRM standard - Firefox is displaying a lock that I've never seen before.
I suspect it won't be easy, or even possible to get around this, but I don't know enought to comment further. If not, I'm afraid you'll have to remove it from your list of supported sites.

Maybe I don't understand the nomenclature here but even the test from the commit - https://github.com/rg3/youtube-dl/commit/e0671819e71744b6a9a32fc3f4d5fbc8aca8a8f1
https://iview.abc.net.au/show/ben-and-hollys-little-kingdom/series/0/video/ZX9371A050S00
yields -
$ youtube-dl -v https://iview.abc.net.au/show/ben-and-hollys-little-kingdom/series/0/video/ZX9371A050S00
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'https://iview.abc.net.au/show/ben-and-hollys-little-kingdom/series/0/video/ZX9371A050S00']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.06.11
[debug] Python version 2.7.13 (CPython) - Linux-4.16.0-0.bpo.1-amd64-x86_64-with-debian-9.4
[debug] exe versions: ffmpeg 3.4.2, ffprobe 3.4.2, phantomjs 2.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[generic] ZX9371A050S00: Requesting header
WARNING: Falling back on generic information extractor.
[generic] ZX9371A050S00: Downloading webpage
[generic] ZX9371A050S00: Extracting information
ERROR: Unsupported URL: https://iview.abc.net.au/show/ben-and-hollys-little-kingdom/series/0/video/ZX9371A050S00
Traceback (most recent call last):
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/generic.py", line 2308, in _real_extract
doc = compat_etree_fromstring(webpage.encode('utf-8'))
File "/usr/local/bin/youtube-dl/youtube_dl/compat.py", line 2542, in compat_etree_fromstring
doc = _XML(text, parser=etree.XMLParser(target=_TreeBuilder(element_factory=_element_factory)))
File "/usr/local/bin/youtube-dl/youtube_dl/compat.py", line 2531, in _XML
parser.feed(text)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1653, in feed
self._raiseerror(v)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1517, in _raiseerror
raise err
ParseError: not well-formed (invalid token): line 11, column 46
Traceback (most recent call last):
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 792, in extract_info
ie_result = ie.extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 500, in extract
ie_result = self._real_extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/generic.py", line 3263, in _real_extract
raise UnsupportedError(url)
UnsupportedError: Unsupported URL: https://iview.abc.net.au/show/ben-and-hollys-little-kingdom/series/0/video/ZX9371A050S00


feat: add service for setting announce volume

PR Type

New Feature

Related Links

Description

add service for setting announce volume

Review Procedure

Remarks

Pre-Review Checklist for the PR Author
PR Author should check the checkboxes below when creating the PR.

[ ] Assign PR to reviewer

Checklist for the PR Reviewer
Reviewers should check the checkboxes below before approval.

[ ] Commits are properly organized and messages are according to the guideline
[ ] (Optional) Unit tests have been written for new behavior
[ ] PR title describes the changes

Post-Review Checklist for the PR Author
PR Author should check the checkboxes below before merging.

[ ] All open points are addressed and tracked via issues or tickets
[ ] Write release notes

CI Checks

Build and test for PR: Required to pass before the merge.

Service名として適当に /volume 、またfloat32でvolumeというパラメータを生やした .srv ファイルを作成しました。
どのような名前にするべきかわからなかったので、変更していただければと思います。
よろしくお願いいたします。

@eyr1n Thanks it looks good for me.
I would like to test in the bench first before we merge it.
On the other hand, can you fix the per-commit error


fix: remove /join regression

Changes

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#687  👈
#686
#685
#684
#683
#682
#674
#673
#672
#671
#670
#669
#668
#667
#641
#635
#633
#632 : 1 other dependent PR (#662 )
#628 : 1 other dependent PR (#629 )
#613
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @MasterPtato and the rest of your teammates on  Graphite


Semigroup Value violates associativity law

Summary
Instance PlutusTx.Semigroup.Semugroup Plutus.V2.Ledger.Api.Value violates associativity law in relation to PlutusTx.Eq.== and Prelude.==.
If Value were built using only singleton and <> - it holds associativity.
But manually Value can be constructed in such way that it fails semigroup assosciativy:
Value (fromList xs) where xs contains more than one tuples that has the same CurrencySymbol but tokens with different TokenName.
An example: Value (fromList [("",fromList [("",1)]),("",fromList [("a",1)])]
Also, Value always holds associativity against on (==) getValue.
Steps to reproduce
Steps to reproduce the behavior:

Go to REPL
Import PlutusTx.Prelude, Plutus.V1.Ledger.Api
Put in those lines:

>>> associative a b c = (a <> b) <> c == a <> (b <> c)
>>> associative mempty  (Value (fromList [("",fromList [("",1)]),("",fromList [("a",1)])])) mempty

See False

Expected behavior
Expected that for any terms v1, v2, v3 of type Value following returns True:
(v1 <> v2) <> v3 == v1 <> (v2 <> v3)

Where <> and == is from PlutusTx.Prelude or from Prelude.
System info:

OS: Ubuntu
Version 20.04
58c093a49eb7a369865e361179d649264fc817a4

Screenshots and attachments
QuickCheck tests:
import QuickCheck qualified as QC
import Plutus.PAB.Arbitrary ()
import Plutus.V2.Ledger.Api qualified as Api
import Prelude qualified
import Prelude ((<$>),(<*>), ($))
import PlutusTx.Prelude qualified

main = do
  let associative :: (a -> a -> Bool) -> (a -> a -> a) -> a -> a -> a -> Bool
      associative (.==.) (.*.) a b c =
        (a .*. (b .*. c)) .==. ((a .*. b) .*. c)

      test prop = QC.quickCheckWith QC.stdArgs {QC.maxSuccess = 60000} prop

      checkInvalidAgainst f g = test $ associative @Value f g

  putStrLn "Value that violates associativity"
  checkInvalidAgainst (Prelude.==) (Prelude.<>) -- Will fail
  checkInvalidAgainst (Prelude.==) (PlutusTx.Prelude.<>) -- Will fail
  checkInvalidAgainst (PlutusTx.Prelude.==) (Prelude.<>) -- Will fail
  checkInvalidAgainst (PlutusTx.Prelude.==) (PlutusTx.Prelude.<>) -- Will fail
  -- Will success but takes long time
  checkInvalidAgainst (\(Api.Value m0) (Api.Value m1) -> m0 Plutus.Prelude.== m1) (PlutusTx.Prelude.<>)

  -- A way to generate arbitrary valid Value
  let randValue :: QC.Gen Value
        randValue = PlutusTx.Prelude.mconcat <$>
          QC.listOf (Value.singleton <$> QC.arbitrary <*> QC.arbitrary <*> QC.arbitrary)

      checkValidAgainst f g = test $ associative f g  <$> randValue <*> randValue <*> randValue

  putStrLn "Value that holds associativity"
  -- All of those test will succed:
  checkValidAgainst (Prelude.==) (Prelude.<>)
  checkValidAgainst (Prelude.==) (PlutusTx.Prelude.<>)
  checkValidAgainst (PlutusTx.Prelude.==) (Prelude.<>)
  checkValidAgainst (PlutusTx.Prelude.==) (PlutusTx.Prelude.<>)

Isn't the real issue here that fromList :: [(k, v)] -> Map k v doesn't drop duplicate keys?
See the behavior of https://hackage.haskell.org/package/containers-<IP_ADDRESS>/docs/Data-Map-Lazy.html#v:fromList for reference.
I'm not sure whether this is worth fixing though.

@Renegatto thank you very much for the report.
I'm not seeing a bug here.

But manually Value can be constructed in such way that it fails semigroup assosciativy:
Value (fromList xs) where xs contains more than one tuples that has the same CurrencySymbol but tokens with different TokenName.
An example: Value (fromList [("",fromList [("",1)]),("",fromList [("a",1)])]

Yes, if you manually misconstruct a Value (which is what that fromList does there as explained by @L-as ), it won't behave well.
What worried me though is that in your testing code you seem to be using an Arbitrary Value instance relying on fromList and thus misconstructing the generated Value, however git grep 'Arbitrary\s\+Value' didn't show me such an instance, so I assume it was either removed or written by you.
I'm therefore inclined to close this ticket. @michaelpj please verify my reasoning and close the ticket if you agree.

Yes, I agree with this. We perhaps shouldn't expose fromList, but I'm unsure. There is arguably an issue about internal invariants not being maintained somewhere, but I'm not sure exactly where.


Increasing socket reliability

This PR intends to increase the reliability of the socket connection. At the moment it drops out after a few hours. Changes are being made in this PR to fix the Exceptions that are causing the socket to drop out. The following changes have been made so far:

Separated the logged error from a heartbeat timeout and socket communication error for easier debugging.
Changed the error being raised when reading from a broken socket from RuntimeError to socket.error. This is the error that the run loop of the thread expects when interfacing with the socket.
Reset the force_recon flag immediately after a successful reconnection. At the moment, an Exception is sometimes raised when updating the status after a forced reconnection because the class assumed the socket was still broken.
Prevented a Ping command from being sent if the socket is broken.
Handle NotConnected exceptions when sending a Ping command.

This PR is not ready to be merged.

Update: With these updates, I have about 24 hours with a persistant connection. I would like to go at least 48 hours without having to restart the Cast class before publishing.
As an aside, the socket drops out constantly. There is an awful lot of log file spamming under normal operation. This should probably be addressed as well. Just not in this PR.

Awesome sauce @rmkraus !

Ran for 48 hours without permanently losing connection. :+1:
Ready for review/merge.
I'll have another PR to address the logging levels of a lot of the socket messages.


Replace clock mocking library

Motivation
github.com/benbjohnson/clock has been archived a while ago. This PR replaces the outdated dependency with github.com/jonboulle/clockwork.
Changes

Replace uses of github.com/benbjohnson/clock with github.com/jonboulle/clockwork

Test Plan
existing tests pass
TODO

[x] Explain motivation or link existing issue(s)
[x] Test changes and document test plan
[x] Update documentation as needed
[x] Update changelog as needed

bors try

bors merge

Flaky test TestCache_Account_HappyFlow
bors merge


Fingerprints are now changed when the dna scrambler is used

About the PR

When the DNA scrambler is used, the fingerprints of the implanted entity is changed.
Why / Balance

Fingerprints are determined by DNA!
Technical details

Removed and then adds the fingerpritncomponent because its less code than adding an event.
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

😲 failed test cases

Oh every PR is failing the test cases


Bridge relayer fails to lock old but still pending transfers on L2

If a bridge transfer is initiated on L1 and the relayer fails to pick up the event (see screenshot with an example of bridge-service logs when get_account_events fails:

In this case, we are left with several pending transfers:

The above transfers were in that state for about 24 hours before the screenshot, and it doesn't appear that the relayer will ever call lock_bridge_transfer on the L2 for them.
From what I can tell this may be due to the code
		//read the pull state
		let mut pull_state = MvtPullingState::build_from_store_file().await?;

which makes it so the 10 transfers after the pull state start_version are picked up:
async fn get_account_events(
	rest_url: &str,
	account_address: &str,
	event_type: &str,
	field_name: &str,
	start_version: u64,
) -> Result<Vec<VersionedEvent>, BridgeContractError> {
	let url = format!(
		"{}/v1/accounts/{}/events/{}/{}",
		rest_url, account_address, event_type, field_name
	);

	//	tracing::info!("ICI url: {:?}", url);
	let client = reqwest::Client::new();

	// Send the GET request

	let response = client
		.get(&url)
		.query(&[("start", &start_version.to_string()[..]), ("limit", "10")])
		.send()
		.await
		.map_err(|e| {
			BridgeContractError::OnChainError(format!(
				"MVT get_account_events get request error:{}",
				e
			))
		})?;

So old events would just be ignored, and old transfers would never get processed. This would result in poor user experiences, especially given that Bardock has tended to generate occasional 502 errors.
Make it so the relayer:

looks for older pending events,
finds whether any transfers need to be processed further based on those events, and then
processes the transfers as appropriate.

Related is this improvement to the front-end UI, so users can see a list of their pending transfers: https://github.com/movementlabsxyz/bridge-interface/issues/6

From the screenshot, the issue came from missed Eth events. The code corresponds to Movement monitoring, so it's not related to the issue.
The Eth event monitoring misses some initiated events. It can come from the connection, but as be do pulling, it means that we miss some block or don't listen to the right contract.
Can you put the Tx that initiated the transfer to see the contract address?

By bad I made a mistake. The transfer is locked. So the bridge doesn't detect the counterpart complete on Mvt chain.
Effectively it means that the relayer misses an event.
Is it possible to re-sent the complete transfer to see if the relayer detects it?
If an error occurs on the event pulling the version shouldn't change until the pulling succeeds.
I'll look at the code to see if this logic is ok.

From the screenshot, the issue came from missed Eth events. The code corresponds to Movement monitoring, so it's not related to the issue. The Eth event monitoring misses some initiated events. It can come from the connection, but as be do pulling, it means that we miss some block or don't listen to the right contract. Can you put the Tx that initiated the transfer to see the contract address?

Would the log "Chain two event stream return an error:Error during onchain call:MVT get_account_events status error 502 Bad gateway" correspond to missed events on the Movement side?
I think I was incorrect about whether lock was called. It seems the transfer state is Locked must mean the lock function was called, according to the code. I just didn't see the transactions on Bardock. Bardock explorer or the chain were down, for about 5 hours, or maybe there were no transactions.

Here are the transactions for the initiator address: https://holesky.etherscan.io/address/0xccc20f4f411c3d5562b99cfdf876394096ea9345
On the Movement side when I run curl "https://testnet.bardock.movementnetwork.xyz/v1/accounts/0xb118a531aa5efb194f5e322aeee8e9d1e98c6220936d1cee90e1480911d51d64/transactions?start=0&limit=30" | jq -r '.[].hash' I only get these transactions:
0x483f8b6ea08b1bdd12d17a6368e3b3a02e266397f49d0d2b5f48272c2e9a4dc0
0xd3d7f1884b00edfdf3dbfab9c2616b6b625f4deeae17046ac816f9d8732b1b3f
0x366d7614b16ff6abcd8be9dd2b392b644168df44c13b4a5ace56b92f46c16751
0x263fd20f52e1788fc4598c281ae88d1ec875d14a0213b46a6a04f5a82653234f
0x03e571159cdd60a3863768bccf1289b92de93dd1f5afcadc1b8839ead8f136b0
0x2b337da76c4a2a74c3585c2f94b12f130fe1992c3ce4b0259492f37dbb7d9d02
0x529e6a081b1126e38fe0de9fd372a4925cdd43c6c1bea47b9e811f840785aaea

none of which is a lock_bridge_transfer call.
Front-end with the above two addresses connected:

I just tried a few transfers and they aren't being added to the logs. The logs in there must have been old. And there aren't any lock_bridge_transfer calls showing in Bardock explorer. So yes I think you're right, the relayer isn't picking up the Eth-side event for some reason.

We restarted the bridge and now transfers are working. It seems like the Eth-side event listening may have fallen asleep or stopped processing events properly. Therefore, #782 may be a fix for this.


Create a Conversations section

Hey there,
Thanks a lot for your application, it's really wonderful ! I'm loving the ideas you put forward, and the result is just so gorgeous :)
One of the domains I want to see the Fediverse grow is Conversations, aka person-to-person messages because it can help make any Fediverse tool a more generic tool for doing stuff together.
The situation
There are some ways to put private Conversations forth here and there, all of them a little bit incompatible with each other:

Pleroma has a specific Chat activity type, but it is only spoken by Pleroma
Friendica has a special section for Conversations, but all of them must have a title. When receiving from non-Friendica, the title is "[no subject]". And it's not always recognized as a conversation, but sometimes as a direct mention with private visibility so you have to juggle between the two; in Friendica-land it seems a conversation is a different entity from a direct mention with private visibility, but when translating that to AP they are both the same
Firefish has the same kind of situation but doesn't have the issue with the title.

It's all a mess, because it looks like each software wants to be compatible with itself first and others after.
How it's done here
I took a different approach here: I assume all software speak the Mastodon API (which is far from perfect but is becoming a de facto standard) and do the filtering and triaging from there. Here's the flow:

When opening Conversations, we get the list of conversations aka threads from MastoAPI, de-duplicate by the set of participants such that two threads with the same participants appear only once, and sort all of them by the most recent one
When opening a Conversation, we get the same list again to get all threads and display them in the order they appear from the api, ie the most recent thread first. I reuse the <Timeline> component to automagically thread and display all of that, it's just fantastic.

Here's a quick preview of what the list of conversations looks like:

Here's a quick preview of what a specific conversation looks like:

Now there are many questions, from most important to least important:
Is this actually needed ?
This PR is mostly to start a conversation (ha!) about the topic (you can tell by the low code quality, it's mostly a poc), and the functionality might not be needed, but I feel like it is interesting still. There is a "mentions" view with a "private" tab, but a) you only see the mentions for each message, not the full context unless you click and b) you can't quickly go to a specific contact.
Right now the flow to reply to a thread is the same as usual, click on one, that opens the side bar, then click on reply. To create a new thread in this "context" of conversations, however, you need to manually mention the people and change visibility; it would be really helpful to have it all prefilled when opening the compose modal. Taking a step back, that means having a compose modal that depends on the page that is currently displayed, and I think it can make sense: if you're listing a hashtag and open compose, prefill with the hashtag. If you're on the page of an account and click on compose, prefill with a mention (there's already a "mention " button, but doing it with compose is more generic).
If it's not needed because that's not the direction you want to go in, feel free to close and I'll do my thing on my side :)
Security ?
All messages are readable by admins, in essence what we have here is exactly the same as email. Which means the same tools can be built on top with the same caveats.
Should non-private messages be displayed ?
In the current state all messages in a thread are displayed, including non-private ones. I haven't decided yet if they should be displayed in this view or not, because there are reasonable arguments on both sides.
Name ?
I like conversations more than chat because it conveys the idea that it's encapsulated in a context, and even with the same people you might have multiple conversations.

Is it possible for you to deploy this on your GitHub Pages (or any static site hosts) so that I can try it out? Should work with a subfolder path.

Here you go ! https://rakoo.github.io/phanpy/
(I added the github actions in the repo)

Ok this is embarrassing on my part; the subfolder hosting isn't working after auth-ed for some reason, so that's another bug 🫣 Will look into this.

Ah shoot, too bad, that's interesting because it worked for me on Pleroma :smile:

Added f213a8e094eebde56b85f783f58c0ce961e70eed fix, so maybe you can pull and redeploy, thanks 🙇♂

Updated !

All messages are readable by admins, in essence what we have here is exactly the same as email

Just want to add that this is only true for bad providers like Google. Stuff like Proton is E2EE so admins can't read the content of the email.


CVE-2021-43138: Prototype Pollution in async

Hi, i'm getting several audit warnings related to https://github.com/advisories/GHSA-fwr7-v2mv-hh25
affected library: workbox-webpack-plugin
also addressed here https://github.com/jakejs/jake/issues/408
async  <3.2.2
Severity: high
Prototype Pollution in async - https://github.com/advisories/GHSA-fwr7-v2mv-hh25
fix available via `npm audit fix --force`
Will install<EMAIL_ADDRESS>which is a breaking change
node_modules/jake/node_modules/async
  jake  >=8.0.1
  Depends on vulnerable versions of async
  node_modules/jake
    ejs  >=3.1.2
    Depends on vulnerable versions of jake
    node_modules/ejs
      @surma/rollup-plugin-off-main-thread  >=2.2.0
      Depends on vulnerable versions of ejs
      node_modules/@surma/rollup-plugin-off-main-thread
        workbox-build  >=6.4.0
        Depends on vulnerable versions of @surma/rollup-plugin-off-main-thread
        node_modules/workbox-build
          workbox-webpack-plugin  >=6.4.0
          Depends on vulnerable versions of workbox-build
          node_modules/workbox-webpack-plugin

thanks

Same here !

same here

published ejs 3.1.7: fixed jake dependency

I can confirm that a fresh install of the various Workbox builds tools shows that the open vulnerability has been resolved, as @surma/rollup-plugin-off-main-thread now pulls in ejs v3.1.7.


Fix for: Feature request: Run one spec file

This is a simple fix for issue https://github.com/mhevery/jasmine-node/issues/57
This allows the directory parameter to point at a single spec instead.

Could you rebase this on latest master so that I can merge it in. Sorry for the delay

I think this is already fixed as of v1.0.17 (on node v0.6.6)

OK, will close pull request


Although the ut-8 format can be set, the generated gdk format file, if solved

I do not understand the problem. Can you explain?


Ecosystem: normalizr plugin

Many folks use normalizr for "compound documents." I think it'd make sense to support ingesting that format through an official plugin.

Amusingly, there needs to be a normalization plugin built on top of normalizer that takes its format and outputs into a more useful JSON format before a plugin can be built here.

#261 should solve this. Closing.