Suggestion

Could I suggest you close the issues section for a while so that you can focus on yourself  and when you have time fixes the Bugs and issues you want too..
Alot of people seem to forget you have a life and are doing your best etc..
Just a suggestion to allow you to focus on what you feel is important  and yourself.
Thank you for what you have done and are doing..

Yes I might well do for a while. I'm OK the moment, have done virtually nothing today with it, spending time with family.

Wait... I'm supposed to have a life??

Dropping by to say thank you for your work in taking the K5 to a new level. I had no experience of developing for an embedded platform until this $20 radio came along and fostered a community that I enjoy being part of. It was thanks in part to you that I started to tinker with radios as a hobby, got three already with a fourth on the way.
You are appreciated. Look after yourself and be well. 73

I started developing on embedded systems around 1980 after my n-year apprenticeship was done when I moved into the design dept. It's a nice part of electronics, it empowers you to be able to create projects that go with your own ideas rather than someone else's or some companies idea.
These K5/K6's are so cheap at the moment, the day-to-day price of them goes up and down somewhat on aliexpress, one day they are less than £9 each (inc postage), the next they can be £18. Have no idea at all how they make them so cheaply, the workers must be paid next to nothing :(

Chances are the units are made en masse and people just stick their brand name on it. It wouldn't surprise me if there were over 100k in existence right now. I saw easily the most expensive K5 where I am in the UK, £50!

I bought these two on aliexpress, they were here within 6 days. one was £13, the other was £10'is I think.

I started developing on embedded systems around 1980 after my n-year apprenticeship was done when I moved into the design dept. It's a nice part of electronics, it empowers you to be able to create projects that go with your own ideas rather than someone else's or some companies idea.
These K5/K6's are so cheap at the moment, the day-to-day price of them goes up and down somewhat on aliexpress, one day they are less than £9 each (inc postage), the next they can be £18. Have no idea at all how they make them so cheaply, the workers must be paid next to nothing :(
If you want to play more with the cortex CPU's, then buy some little STM32F103 boards or such like, maybe STM32F40x boards that have FPU's, the ST boards with in-built programming/debugging interface are really nice, the windows dev software lets you program and debug and single step through your code so easily.

video of QS K5 manufacture U may be interested↓
https://b23.tv/r3rtLo1

I have another suggestion: why don't we leave open a single "issue" calles "Suggestions" in the Issues Section, where people can publish their ideas and, of course, OneOfEleven will evaluate if to attend those requests or pass, and leave the rest of the Issues Section only to post only real issues/bugs?.
I say this without any acrimony, and only with the best of the intentions of having the GitHub as organized as possible, thus avoiding having multiple issues open when in reality, they are not.

I have another suggestion: why don't we leave open a single "issue" calles "Suggestions" in the Issues Section, where people can publish their ideas and, of course, OneOfEleven will evaluate if to attend those requests or pass, and leave the rest of the Issues Section only to post only real issues/bugs?.
I say this without any acrimony, and only with the best of the intentions of having the GitHub as organized as possible, thus avoiding having multiple issues open when in reality, they are not.

Not actually a bad idea...

Can do if you like, I don't mind either way to be honest. Pitty github didn't have a section for non-issues really.
I use the issues section to keep me reminded of thing to do though, if an issue gets closed before I've got around to it I'll forget all about it .. comes with age ;)

Pitty github didn't have a section for non-issues really.

Actually there is a "discussions" section that can be turned on
repo settings -> general -> features -> discussions

+1 for a discussions section.
I'd like to get a discussion going on whether or not this radio has enough Non-Volatile Memory to implement DMR or M17 (by shamelessly stealing/duplicating the work that's being done in the OpenRTX codebase)

The radio can never do DMR as it has no AMBI codec chip, and the little CPU has no access to the audio paths (TX or TX), plus it's grossly underpowered and flash/mem challenged for anything above basic control of the radio.

Well put, thank you sir!


Fix this reference

:+1: :cake: :icecream:

This has also been backported into our stable/2.0.x branch: https://github.com/getsentry/raven-js/tree/stable/2.0.x
So we'll tag a 2.0.1 and push this out. Thanks!


About Lale Page in English has German

The our team page in english is not fully translated from German

Hi @Dbz Thanks for helping us on the Lale project. I will check into this asap...

Fixed today....See on Lale.help....

👍 Keep up the good work!


Looking For Maintainer

I will no longer be supporting this project and can transfer ownership to anyone who wishes to maintain or update this repo.

https://github.com/qkdreyer/heaps-ios


Set up some CI runs checking undefined behavior

Set up some CI runs checking undefined behavior.

It's probably best to do this after handling #15, then adding the new runs subsequently to branch protection.


White screen when opening modal

When the user opens a modal that does not contain an anchor (rumex for example). The code throws an exception and the page becomes white.
The issue is due to FocusTrap that expects one tabbable element in the modal. The fix is to replace the close <div> by a close <button> (more semantic BTW) to have at least one tabbable child.

Fixed in da993a0


ACS Calling UI SDK quickstart Fix Xcode 15 build issue

Purpose

ACS Calling UI SDK quickstart Fix Xcode 15 build issue

Does this introduce a breaking change?

[ ] Yes
[x] No

Pull Request Type
What kind of change does this Pull Request introduce?

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

How to Test

Get the code

git clone [repo-address]
cd [repo-name]
git checkout [branch-name]
npm install

Test the code

What to Check
Verify that the following are valid

...

Other Information

cocopods have fixed issue already.


Emulate touch from mouse not working in HTML (Scroll).

Godot version:
3.2.4
OS/device including version:
Windows 7 - Vivaldi(Chromium).
Issue description:
If emulate touch from mouse and you have scroll container you can drag and scroll as internet pages on smartphones.
This working if build native app, but not working if export HTML.
Steps to reproduce:
Turn on "Emulate touch from mouse".
Create scroll container, add big panel as child - make panel pass mouse or ignore.
Export HTML.
Minimal reproduction project:
TEST_HTML.zip

@SuperDIMMaX Please upload a minimal reproduction project to make this easier to troubleshoot.

@SuperDIMMaX Please upload a minimal reproduction project to make this easier to troubleshoot.

@Calinou Uploaded, and new issue - horizontal scroll inverted(if use mouse with 2 scrolls)

@Calinou Uploaded, and new issue - horizontal scroll inverted(if use mouse with 2 scrolls)

Up.
Still not working.
Godot 3.5.1

Having the same issue here still. Was this ever solved?
To clarify, scroll container works on android/local editor but not on the html export.

3.5.2

There is still this problem on 3.5.3.

I was able to bypass the problem using the code below.
public void _on_ScrollContainer_gui_input( InputEvent @event )
{
	if( @event is InputEventScreenDrag drag )
	{
		if( isVertical == false )
		{
			ScrollHorizontal = ScrollHorizontal - ( int )drag.Relative.x;
		}
		else
		{
			ScrollVertical = ScrollHorizontal - ( int )drag.Relative.y;
		}
	}
}

Thanks,
In GDScript :
func _on_Scroll_gui_input(event):	       if event is InputEventScreenDrag: 	var drag = event as InputEventScreenDrag 	$ScrollContainer.scroll_vertical -= int(drag.relative.y)


Earlystopping 'auto' mode is garbage

Click to expand!
Issue Type
Bug
Source
binary
Tensorflow Version
2.9.1
Custom Code
No
OS Platform and Distribution
No response
Mobile device
No response
Python version
No response
Bazel version
No response
GCC/Compiler version
No response
CUDA/cuDNN version
No response
GPU model and memory
No response
Current Behaviour?
Trying to use the EarlyStopping callback, the documentation states for the 'auto' mode:

mode: One of {"auto", "min", "max"}. In min mode,
training will stop when the quantity
monitored has stopped decreasing; in "max"
mode it will stop when the quantity
monitored has stopped increasing; in "auto"
mode, the direction is automatically inferred
from the name of the monitored quantity.

In fact the tensorflow code is just:
if mode == 'min':
      self.monitor_op = np.less
    elif mode == 'max':
      self.monitor_op = np.greater
    else:
      if 'acc' in self.monitor:
        self.monitor_op = np.greater
      else:
        self.monitor_op = np.less

This means that for any metric that is basically not the accuracy the 'auto' mode will default to 'min', while a vast majority of performance metrics are designed to be increasing functions of performance.
This documentation is extremely misleading, and given this behavior I think we can safely say that almost nothing is inferred from the monitored metric.
In order to protect other users from this trap, I would advise to remove the 'auto' mode and its associated argument altogether.
Standalone code to reproduce the issue
EarlyStopping(monitor='val_precision',
               mode='auto')
# this callback will tend to minimize precision...

Relevant log output
No response

Hi @qmarcou !
Thanks for sharing your observation .
Could you create a PR in  keras-team/keras repo for review.
To know more see;
https://discuss.tensorflow.org/t/keras-project-moved-to-new-repository-in-https-github-com-keras-team-keras/1999 .
Thank you!


KAFKA-12965 - Graceful clean up of task error metrics

Issue:
We noticed that the Error metrics reported in Kafka Connect worker continues to stay even after the task is re distributed to another worker. As a result you would notice over a period of time the task_error_metrics  of a worker would contain the errors of all the tasks  that it had ever come across.
This is an anti pattern to what other metrics are reported by Kafka Connect worker. The Kafka Connect worker should only report the error metrics of the present task and leave the persistence of the previous tasks to the metrics storage system that is consuming these metrics.
In the below example we notice that there is only 2 active tasks that are running , but we have more than 20+ tasks error metrics that are available.
Task counter mbean:
{"request":{"mbean":"kafka.connect:type=connect-worker-metrics","type":"read"}
,"value":{"connector-startup-failure-percentage":0.0,"task-startup-attempts-total":90.0,"connector-startup-success-total":1.0,"connector-startup-failure-total":0.0,"task-startup-success-percentage":0.0,"connector-startup-attempts-total":1.0,"connector-count":0.0,"connector-startup-success-percentage":0.0,"task-startup-success-total":90.0,"task-startup-failure-percentage":0.0,"task-count":2.0,"task-startup-failure-total":0.0},"timestamp":1623852927,"status":200}
Task Error metrics mbean:
{"request":{"mbean":"kafka.connect:connector=,task=,type=task-error-metrics","type":"read"}
,"value":{"kafka.connect:connector=,task=35,type=task-error-metrics":
{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0}
,"kafka.connect:connector=,task=38,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=14,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=5,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=0,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=29,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=37,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=28,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=25,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=91,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=31,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=7,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=74,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=2,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=26,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=30,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=,task=53,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0,"total-records-skipped":0.0,"total-record-errors":0.0,"total-retries":0.0},"kafka.connect:connector=****,task=16,type=task-error-metrics":{"last-error-timestamp":0,"total-errors-logged":0.0,"deadletterqueue-produce-requests":0.0,"deadletterqueue-produce-failures":0.0,"total-record-failures":0.0, .....
Solution:
As part of the bug fix to KAFKA-12965 introducing code changes to gracefully cleanup the error handling metrics associated with a task. This is required to avoid duplicate metrics of task being reported from a worker that had the same task in the past.
UT - Not yet covered, in progress

@kkonstantine  can you help reviewing the PR

Thanks, LGTM pending unit tests to verify expected behavior and help prevent regressions in the future.

Any update on when this diff can be landed? Incase you need some help, I am happy to help. This is a problem that we have had to deal with too.

@ramesh-muthusamy can you resolve the merge conflicts? Once that's done, I can do another round and, if everything still looks good, merge this PR.

Hi Chris,
Yes thank you
-Ramesh
On Fri, Sep 2, 2022 at 6:44 AM Chris Egerton @.***>
wrote:

@ramesh-muthusamy https://github.com/ramesh-muthusamy can you resolve
the merge conflicts? Once that's done, I can do another round and, if
everything still looks good, merge this PR.
—
Reply to this email directly, view it on GitHub
https://github.com/apache/kafka/pull/10910#issuecomment-1235397977, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AB57QP36E7HWAJSXU6BX5VTV4HSBHANCNFSM47BK7ZUQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi @ramesh-muthusamy--any plans to rebase this?

Hi @ramesh-muthusamy--any plans to rebase this?

Hi Chris, I will get to this this weekend. Apologies for the delay.

No worries! If for some reason it's difficult to find the time to carry this across the finish line, let me know and I can either complete the remaining work myself or find another contributor who could take care of it. Barring that, looking forward to reviewing the rebase :)

@C0urante  I have rebased the PR to the latest trunk and resolved the merged conflicts. I have also looked at the failed tests and they seem to be related to timeouts in worker threads. Please let me know


CFT linting failing, cannot find cft config

Example failure: docker: invalid reference format.

Lint updated in https://github.com/GoogleCloudPlatform/terraform-cloud-client-api/commit/e7b005776f6bfe34a2c6ff4b7b418c0da65ca720
Command was find *, now find .. Script is probably finding one of the other Makefiles in the repo, and failing to parse the required, causing defaults to be invalid.

Possible solutions:

Replicate config value in other Makefiles (depending on which is picked up first). May cause issues when versions update over time, etc.
Remove additional Makefiles (not preffered)
(Preferred (at this point)): Use alternative Makefile naming scheme of lowercase makefile for /app makefiles. On macOS, make lint still works if the makefile is lowercased. find . should then only find the root Makefile.


[WIP] Use SPRAM on ICE40UP5K based boards

This PR replaces the usage of automatically inferred BRAM cells with SPRAM on ICE40UP5K based boards like the Icebreaker. The available memory is thereby increased from 2 KiB to 128 KiB.
It also adds a simple memtest tool to the firmware.
The code is adapted from @daveshah1's version for the UPDuino 5K board.
If there are no objections, I would like to merge @daveshah1's up5k branch afterwards.

Due to the increased amount of RAM, the simulation now will take ages to initialize the ram (see start.s).
As a workaround, I limit the RAM in simulation to 256 words (see 3710a86).


imersive portals once again incompatable with dimthreading

#25 was the old issue.

https://github.com/qouteall/ImmersivePortalsMod/blob/1.18/src/main/resources/fabric.mod.json#L52
forces this crash on startup with any version of dimthread.
So as far as the crash goes, its intended behaviour, the author probably had a good reason to add it.
I have not read thru the rest of their source if anything important changed(yet)


Limit page size to prevent integer overflow

The $param is typed int. So if the routing param does not fit into an int, PHP will throw a TypeError. This in turn would trigger an 500 internal server error. So by requesting a too big page, e.g. /de/blog/page/147483647147483647147483647, one can trigger internal errors which should not be possible.
I don't think there is an easy solution to this general problem that Symfony could automatically provide. So the best solution seems to be to limit the size of the routing placeholder. With this limit the page will always fit into an int even on a 32-bit platform.

It looks like an edge-case, but let's fix it because this Demo application is studied and used by many. Thanks Tobias!


add float value (0.0) to FORMATS table

@z-kk Hi, nice additions! Do you have some references?

@ringabout Sorry, I don't have any references to the FORMATS table. I added it because it's inconvenient when cells with the 0.0 format in Excel are recognized as date type.


improve intro section to Github for weave project

@monadic said

This currently says "Weave creates a virtual network that connects Docker containers deployed across multiple hosts and enables their automatic discovery."

Let's update this to something that also mentions Service Discovery, Load Balancing, Address Management, as well as networking, and links back to weave.works for more info.

Let's not.

That opening sentence is quite hard to improve on.
I suggest we look at improving the entire intro section. Without making it (much) longer.


Hide mouse after 3 seconds inactivity

This will hide the mouse after it hasn't been moved for 3 seconds and re-appear when the user moves it again.

could you add a cleanup phase to it? react double renders components so essentially that would create two mousemove listeners. also can we use passive events? , { passive: true }

eact double renders components so essentially that would create two mousemove listeners. also can we use passive events? , { passive: true }

Got it. Let me handle that scenario. Passive events are for something otherwise AFAIK https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#improving_scrolling_performance_with_passive_listeners

passive events is generally a good idea, it allows the browser to optimize. it just means that we can't call preventDefault in the listeners that's all.


[DUOS-983] PDF Exchange: DPA for LCA on SO and DAR Step 4 pages

Replaced DPA PDF with LCA PDF on SO and DAR Step 4 pages.
Have you read Terra's Contributing Guide lately? If not, do that first.
I, the developer opening this PR, do solemnly pinky swear that:

[ ] PR is labeled with a Jira ticket number and includes a link to the ticket
[ ] PR is labeled with a security risk modifier [no, low, medium, high]
[ ] PR describes scope of changes

In all cases:

[ ] Get a minimum of one thumbs worth of review, preferably 2 if enough team members are available
[ ] Get PO sign-off for all non-trivial UI or workflow changes
[ ] Verify all tests go green
[ ] Squash and merge; you can delete your branch after this
[ ] Test this change deployed correctly and works on dev environment after deployment

@rushtong - possibly, but so we're clear, there are 2 distinct PDFs we need to have available.
The LCA needs to be replaced the SO page and DAR Step 4 (this is a prod error disrupting DAR submissions).
The DPA needs to be on Dataset Registration and it's accompanying info page, which is current state.
I think this means we need two versions of a PDF reference, since we need to consistently present 2 different PDFs in different places.

@solideoglori - I can understand the need for 2 separate PDFs, but that's not what we have now - all 4 locations reference the same PDF. They are:

Data Access Renewal
Dataset Registration
Home Signing Official (updated in this PR)
Data Use Agreements (updated in this PR)

Let's clarify the exact requirements and implementation in the Jira ticket before proceeding.

@rushtong updated ticket with the following text:
The LCA PDF needs to be referenced in the downloadable link on the following pages:
https://duos.broadinstitute.org/home_signing_official
https://duos.broadinstitute.org/dar_application
https://duos.broadinstitute.org/dar_renewal
The DPA PDF needs to be referenced in the downloadable link on the following pages:
https://duos.broadinstitute.org/dataset_registration

Looking at the ticket and this PR, I think we need one more change to the DAR Renewal page.
Also, it would be good if we could name the PDF document more generically so devs can understand what it is. I think Library_Card_Agreement.pdf is clear enough.

@rushtong I updated the name of the agreement and added it to the DAR Renewal page as well.


Backend Add/Delete Mentors and Mentor Manager Screen-Admin-App - Sprint 3

Create all the required entities, routes, requests for both Add/Delete Mentor and Mentor Manager Screen.
The frontend Base URL is http://mmsadmin.samprotech.duckdns.org
The signup URL is http://mmsadmin.samprotech.duckdns.org/sign-up-category-selector
put the base URL of the frontend as an environment variable in appsettings.json, appsettings.Development.json and appsettings.Production.json.

@OluwasegunA This issue has been assigned to you.

thanks @Honeyloveet


[InputLabel] Add missing FormControlClasses

I've noticed the alphabetical order of the fields. For some reason InputLabel.js has FormControlClasses before focused - not sure if it's because of the capital F or if it's a mistake, but I kept the order the same in the .d.ts file.

@svachmic Thanks


Fix the commit history between forsetisecurity.org-dev & forsetisecurity.org

The commit history diverged somehow between 2 branches and is creating some CLA problems every time we merge from forsetisecurity.org-dev to forsetisecurity.org.

I would just add that we also need to ensure there are no CLA issues every time either.

Description updated with CLA.

joecheuk to investigate.

Since forsetisecurity.org-dev & forsetisecurity.org should be in sync, when we merge from dev -> non dev, we will need to use MERGE instead of SQUASH AND MERGE to avoid commit history conflicts. The website release steps have been updated to make it clear that only do MERGE.


Better Documentation

Better Documentation is needed... 👺

Documentation is acceptable for now. Even though it´s only comments. I probably have to do real documentation.


when i download a file, Memory becomes very high

This is probably best suited for stackoverflow. We use Github to track bugs and feature requests.
:beers:

From our Contribution Guidelines
Asking Questions
We don’t use GitHub as a support forum. For any usage questions that are not specific to the project itself, please ask on Stack Overflow instead. By doing so, you’ll be more likely to quickly solve your problem, and you’ll allow anyone else with the same question to find the answer. This also allows maintainers to focus on improving the project for others.


Adding Transform related classes

Began adding MFnTransform class support, that lead me to adding MTransformationMatrix, MEulerRotation, MSpace, and some other updates to get  to a start. MEulerRotation is not complete.
I do some some differences between Maya's python api 2.0 and the original API signatures. I think there needs to be some guidance on exceptions since I am not clear on which one to throw.
This took a bit of work, kind of tedious and I have been pretty busy so I didn't make a lot of progress as I'd like. I am trying to tackle the classes I use the most, which are mostly on the function sets classes.
I have some other ideas to open up this API to make it easier to instantiate the classes more directly without having to always go through the MSelection list -> Dag/MObj -> Function class. If we can just do this: cmdc.FnTransform('my_transform_node'). Thoughts?
Any feedback and notes, I am going to keep building up the unit tests and also complete the Matrix / Vector classes too.

Awesome! 🥳


GPUs

Do whatever work we need to do to get Levanter working on GPUs

[x] Single gpu
[x] multi gpu
[ ] multi node
[ ] there's a memory leak somewhere?
[ ] compare performance with PyTorch (Mistral)
[ ] run profiler, see if there's anything obvious

I believe the first two should just work, but the other one will require (hopefully minor) changes
Should also investigate flash attention again as well

Multinode is blocked on https://github.com/google/jax/issues/13559

I think we can revisit this now that jax 0.4.7 is out

I'm going to mark this as closed as the remaining issues are covered by #249 and #250


It is not working if using stdin as source

browserify -t coffee-reactify --extension=".cjsx" --extension=".coffee" -
browserify -t coffee-reactify -
I get this error for above commands. It probaby wants .coffee or .cjsx file but the generated file by browserify is _stream_0.js for stdin. Can i tell coffee-reactify to also parse .js files?
/home/cocomo/dev/golang/src/bitbucket.org/cocomo/publicwall/_stream_0.js:1
fnnn = -> alert 'hello'
        ^
ParseError: Unexpected token

Yeah I don't know about this, not really sure if it makes sense to allow the transform to apply to arbitrary extensions because then how does it know what input is js and what is coffee? Possibly could add a config option to do it but I'm not sure how browserify via stdin is supposed to be used


fix: Revert "feat(wmg): 2501 Cell Grouping"

Reverts chanzuckerberg/single-cell-data-portal#2600

Actually, dev is working after we copy the WMG cubes to dev env in S3!


Refresh Button

Hi isteven, your component is great.
Are you watching if ticked property is true (to refresh button)? I mean, in single mode, I've put a "confirm service" between the selection and the action.
If "cancel" I need to mark the previous ticked. So I'm registering based on onOpen event the previous ticked, but I can't update back the button.
Did you get it? If you think necessary, I can create a plunker to demonstrate.
Thanks for your time.

Hi @jonataswalker ,
I use watchers in the directive, but only to monitor changes you do from outside, for example:

You pass new data into the input-model
You update the input-model from the controller, such as: $data[ 0 ].name = "John"

I'm not sure I understand you, but I guess you can always register the last state using onClick() callback.
If this is not what you're looking for, then I guess you need to provide me a Plunker or JsFiddler.

Hi isteven, I will show you soon what I've had to do, to get I wanted.
Thanks for your response.


Error building master

When trying to build the master branch via mvn clean package -DskipTests I hit this error:
[ERROR] /Users/.../mango/mango-core/src/main/scala/org/bdgenomics/mango/models/
FeatureMaterialization.scala:93:
error: value getContigName is not a member of org.bdgenomics.formats.avro.Feature
[ERROR]       .mapValues(r => r.map(f => BedRowJson(Option(f.getFeatureId).
getOrElse("N/A"), Option(f.getFeatureType).getOrElse("N/A"),
f.getContigName, f.getStart, f.getEnd)))

I was able to change f.getContigName to f.getContig.getContigName and it will compile, but not sure this is correct.
Details about my build environment mvn --version:
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_73, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.5", arch: "x86_64", family: "mac"

Thanks,
John

Ah yes, that was caused by a recent breaking upstream change in ADAM. @akmorrow13 is working to fix this in https://github.com/bigdatagenomics/mango/pull/206.

This should be resolved now by #206. I'm going to close this, but please reopen @johnbradley if you still have issues building!

This was just fixed and merged by #206


Phase out 0.10, 0.12 support

Node 0.10 is in maintenance mode.
Node 0.12 enters maintenance mode on 4/1.
Given that nvm exists, it is not clear to me that the polyfills and Babel steps required to support 0.x are necessary. Convenient, maybe, but not strictly necessary.
Would love feedback on this. Anyone expect to be significantly impacted if I drop 0.x Node support?

I think it's better to align dropping 0.x support with esint. See: https://github.com/eslint/eslint/issues/4483.
Also i tried to use memo-parser in my config and saw my build fail on Node 0.10 and 0.12. Is it possible to rewrite it in ES5? Will you accept a pull-request?

I'm on the fence.
It's nearly April. I can appreciate the practical aspects of keeping the compatibility, but what about doing something like:
nvm exec 4 eslint ...

?
Or even only linting on the Node 4+ builds? something like
[[ `node --version` > 'v4.'* ]] && eslint ...

It wouldn't be tough to modify the memo-parser to be 0.10-compatible, sure. I'm just not sure it is worthwhile, long term, given the state of LTS and the fact that no one is running ESLint "in production". And now seems like as good a time as any.
I'm excited to start stripping away Babel transformers and get down to more native code. I think I could almost get away with just the loose modules transform on Node v5.9.

I agree with @le0nik, this should align with what eslint supports, otherwise it will make configuring difficult for users. If it were up to me, I'd probably change the major version when eslint releases v3, and say that the next version needs node v4, and previous major versions support 0.x.
I understand your frustration as I have the same ones (though I usually don't transpile with Babel in my modules, so I'm still using plain ES2015).
(FYI, we still use 0.12 at work, though we want to hop to v6 soon).

mm, fair enough. I'll have to revert the things I ripped out for eslint-module-utils but that's not the end of the world.

Would be nice if ESX features were somehow not restricted by the Node version... We'll have the same concerns when v4 goes out of maintenance, v6 then, etc... (see how long we'll have to wait before async/await will be out of maintenance :p)

done in v2 branch.


os-bind - Thoughts Features

Hi
Firstly, I would like to say thank you, for your work on this, it is appreciated. However I would like to see the following added to the os-bind plugin

Host overides - basically move away from the Unbound package and solution "chaining"
Ability to enable safe search features (google, bing, youtube etc) from a check box type setup (I am currently doing this via unbound and the custom options) ( https://www.cwssoft.com/?p=1577 , https://forum.netgate.com/topic/105598/using-bind-to-enforce-google-safesearch/4)
Ability to identify blocking lists - Ie www.xxx.com was blocked by top porn list (bad example I know)
MalwarePatrol list integration - this requires people to sign up, and each user is assigned a unique reciept key which will need to be factored in (https://www.malwarepatrol.net/tech-support/ & https://www.malwarepatrol.net/non-commercial/). I am particulary interested in the ransomware list, followed by the URL block Lists (they are quite agreesive and would require whitelist management)
Ability to do RPZ lists via a master slave bind DNS setup (OPNsense being the slave) (https://www.deteque.com/app/uploads/2018/04/Spamhaus-DNS-RPZ-DROP-Setup-v.2.pdf & https://deepthought.isc.org/article/AA-00518/0/How-can-I-synchronize-DNS-RPZ-firewall-policies-across-multiple-DNS-servers.html  & https://www.securityzones.net/images/downloads/BIND_RPZ_Installation_Guide.pdf)

I have previously done most of the above on linux variants before, however this has always been via CLI, and I wouldn't have the foggiest on how to present this via the GUI. So basically I am willing to help on the backend side, where/if required
Thanks

I'm planning full authoritative DNS for next year, but for interim, Overrides should be doable. Force safesearch should be easy, will add it.3. is not possible since all lists will be put in one file and kill duplicates. Malwarepatrol is a good idea, I have an account somewhere .. will have a look. :)

Thanks, let me know, if you would like me to help out or test anything

With a separate RPZ zone, you mean just a new tab with key => value putting this to a zone like within telegraf:

Hi
I may be being dumb (more than likely) , which feature above is this related to ?
I thought you implied everything went into a single RPZ zone for the blacklists , multiple zones would allow for list differentiation of source logs in the logs ?
If it is regarding the walled garden question, that could be dealt with just by setting the "default" policy response to a CNAME that can be entered via the gui
Thanks

No .. not a single file, only the blacklists. I'm hoping you can read named.conf, perhaps you'll then understand my question:
acl "lan" { <IP_ADDRESS>/24; <IP_ADDRESS>/8; };

options {

        directory       "/usr/local/etc/namedb/working";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

         listen-on port 53530 { <IP_ADDRESS>; };
         listen-on-v6 port 53530 { ::1; };

        response-policy { zone "whitelist.localdomain"; zone "blacklist.localdomain";zone "rpzgoogle";zone "rpzyoutube"; };

        recursion          yes;
        allow-recursion    { lan; };

        max-cache-size    80%;

        dnssec-validation    no;

};

key "rndc-key" {
        algorithm hmac-sha256;
        secret "VxtIzJevSQXqnr7h2qerrcwjnZlMWSGGFBndKeNIDfw=";
};
controls {
        inet <IP_ADDRESS> port 9530
                allow { <IP_ADDRESS>; } keys { "rndc-key"; };
};

zone "." { type hint; file "/usr/local/etc/namedb/named.root"; };

zone "localhost"        { type master; file "/usr/local/etc/namedb/master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "/usr/local/etc/namedb/master/localhost-reverse.db"; };
zone "0.ip6.arpa"       { type master; file "/usr/local/etc/namedb/master/localhost-reverse.db"; };

zone "whitelist.localdomain" { type master; file "/usr/local/etc/namedb/master/whitelist.db"; notify no; check-names ignore; };
zone "blacklist.localdomain" { type master; file "/usr/local/etc/namedb/master/blacklist.db"; notify no; check-names ignore; };
zone "rpzgoogle" { type master; file "/usr/local/etc/namedb/master/google.db"; notify no; check-names ignore; };
zone "rpzyoutube" { type master; file "/usr/local/etc/namedb/master/youtube.db"; notify no; check-names ignore; };

logging {
        channel default_log {
                file "/var/log/named/named.log" versions 3 size 7m;
                print-time yes;
                print-severity yes;
                print-category yes;
        };

        channel query_log {
                file "/var/log/named/query.log" versions 3 size 7m;
                print-time yes;
        };

        channel rpz_log {
                file "/var/log/named/rpz.log" versions 3 size 7m;
                print-time yes;
        };

        category default { default_log; };
        category general { default_log; };
        category queries { query_log; };
        category rpz { rpz_log; };
};

Hi
Ok, so your talking about the safe search stuff the "zone "rpzgoogle"" and "zone "rpzyoutube"" in this case ?
If so the proposed above would work.
I assume Services -> Bind -> Configuration -> SafeSearch Tab -> tick boxes ?
Thanks

No, I mean the walled garden thing. Can you add a sample named.conf and a zone how you would use a walled garden. Perhaps I'm intepreting walled garden in a different way than you do :)

OK, so how you describe it lokal Overrides and walled Garden could be in the same file

Hi
I would presume they would be different, however a walled garden may require a host override for the CNAME entry.

Basically in RPZ blacklist configuration, setup required redirect CNAME
Setup a Host Override for the CNAME created above (this could be on public name servers aswell)

Hopefully I am making sense
Thanks

Hi
Just confirmed the syntax, slight typo in the above example (responsepolicy should be response-policy)
So
response-policy {
		zone "white" policy PASSTHRU;
		zone "black" policy CNAME walled.garden;
}

But essentially the format is correct, and walled.garden could be any valid DNS entry
Thanks

Ok, I belive I know how to implement it. It should be finished next week. Have to check some constraint options with @fichtner first :)

great, thanks, let me know if you need me to do anything

Hi,
Just updated and have flipped over to BIND for SafeSearch , working like a charm.
Thank you

Next update brings also safe search for Bind, then I'll start with Overrides ...

@stilez can you post your exact config please? Is this some RPZ related rewriting what you need?

@stilez can you post your exact config please? Is this some RPZ related rewriting what you need?

I'm still working it out, it's going to take a while to get good. Tentatively, it might look like this:
options {
        directory       "/usr/local/etc/namedb/working";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

	// service hardening

	version none;
	hostname none;
	rate-limit {
                responses-per-second 10;
                exempt-clients { <IP_ADDRESS>; ::1; };
        };

	// authoritative server only

        recursion no;
        fetch-glue no;
        allow-transfer { none; };
        allow-query { localhost;LETSENCRYPT'S_IP_OR_SUBNET_FOR_QUERYING; };
	// general service definitions
        listen-on port ******* { localhost;LETSENCRYPT'S_IP_OR_SUBNET_FOR_QUERYING; };
        dnssec-validation    auto;  // TO SET UP LATER
};

logging {
        [ default OPNSense config]
};

// "." ROOT ZONE HINT - should be OMITTED/COMMENTED OUT for authoritative server

zone "acme-validation.example.com" {
	type master;
	file "/etc/bind/zones/db.acme-validation.example.com";
	// allow-transfer { IP_ADDR_TO_ADD ; };	 // ENABLE WHEN SLAVE NS EXISTS
        notify yes;
        [ OTHER ZONE DATA / FILE LINK]
};

My scenario:  I want to use Let's Encrypt certbot DNS-01, but certbot can't use my ISP's DNS API. The domains are private use only - I only need DNS for myself, when I'm accessing them remotely via HTTPS (and need the TLS cert chain to work from other locations), nobody else uses them. Certbot can be used via RFC2136 with Bind though, so if I create a "dummy/fake" domain (acme-validation.mydomain.com), redireect the usual validation domain from my ISP to Bind's public IP, and use Bind locally as the authoritative NS for the acme validation domain, I can get acme/certrbot working nicely.
The only time Bind should get queried is once every 60 - 90 days, when Let's Encrypt wants to check the TXT records for acme-validation.mydomain.com. There are no other records, and the domain doesn't actually exist anywhere outside Bind.
Because that's a very narrow use-case, I can lock down Bind completely. I am using Unbound for my local resolver and want to continue doing so, listening on the LAN interface only. I enable Bind on port 53 of an unused public IP on the WAN interface with no recursion/forwarding, no root zone hint, heavy rate limiting, and one zone defined only, a bit like above. And with luck - acme/Let's Encrypt will now work, even though my ISP's DNS API isn't compatible. But it's a very customised config, not a common use-case (or is it?) so I can't see myself doing this purely using the OPNSense GUI.  I need to be able to manually create named.conf content lines.

Because your setup is so specific it should be easy to implement.
What is the reason for excluding hint file? As you disallow recursion and only allow your provider to query?
And what are the contents of your zonefile?

What is the reason for excluding hint file? As you disallow recursion and only allow your provider to query?
And what are the contents of your zonefile?

The hint is disabled based on this ISC technical note, which says to separate caching and authoritative nameservers, and explains the implication of a root hint for them. As no other NS will be updated in a timely manner, or at all, with the ACME TXT validation data, there's no point in providing a hint to another NS, and it's detrimental in the context - at best it will cause Let's Encrypt's system to look at other NS outdated versions of the TXT data if for any reason it doesn't reach Bind, rather than note the failure or try again, causing an explicit validation error (wrong TXT data found) rather than a retry or "can't connect" error, and may cache the bad result as well.
I don't yet know the zonefile contents I will need - I'm figuring this out (new to Bind, only using it because of ISP/provider API limitations, otherwise I'd do it via ISP/provider and not need Bind at all).

Ok, got it. Let's do it the other way around. What exactly to you need drom LE DNS-01 to work. Is there a technical doc from LE which explains for every DNS software how to configure? Maybe this way I can build a workaround for you.
My LE knowledge is sadly near 0 :)

To avoid jamming this thread with a slight side topic, let's discuss LE and its DNS-01 system by email, so we can focus here, on Bind plugin features/enhancements.  We can post back here, any conclusions or thoughts.  I've sent you a PM on the OPNsense forum with my email.

Thanks for the work on the BIND package - I have it working nicely also :-)
Just wanted to add support for a couple of the feature requests:

DNSBL local Blacklist domains (opposite of the whitest feature)
Advanced config option: support forwarder/secondary zones

Thanks.

Thanks for all the hard work.
I’ve read all above, but would still request a custom option somehow.
Even if it would be in a file on the file system and only available via ssh.  I’m currently adding options that way, but they get deleted on save or update.
Anyway, the option I’m after is to strip all IPv6 answers ( filter-aaaa-on-v4 yes; )
I don’t need bind to listen on an IPv6 address either, but that’s currently not possible in the gui either, as I’ll get an error if I don’t put anything in the listen IPv6 address.
Some background:
My ISP doesn’t support IPv6 at the moment, so I’ve got IPv6 functionality via HE net tunnelbroker.
The issue is that Netflix detects this as a possible way to get around their blocks and stops working.
The easiest way round this is by stripping all IPv6 answers from any of the Netflix servers.
I do this (as I used to on pfsense) by using unbound as normal dns server and use host overrides to send the Netflix servers to bind (running on a non standard port) in this scenario I don’t need bind to give me any IPv6 answers ever.

So, all you need is to make v6 field optional and a checkbox to strip v6 answers?
Thats easy :)
Next version will also offer zone management

@mimugmail Would be good if we could have requests go over DoH using cloudflare https://developers.cloudflare.com/<IP_ADDRESS>/dns-over-https/

Does bind support DoH yet? Perhaps we need a stunnel plugin ;) https://kb.isc.org/docs/aa-01386

Not that I am aware of but using a forwarder that would somehow point
to  cloudflare would work right? /home/pi/argo-tunnel/cloudflared
proxy-dns --port 54 --upstream https://<IP_ADDRESS>/.well-known/dns-query --
upstream https://<IP_ADDRESS>/.well-known/dns-query --upstream
https://2606:4700:4700::1111/.well-known/dns-query --ups
Having to use this on my pihole currently to have the DoH support and
just modified the config to point to that
Just would be nice to have a solution with no workarounds
On Fri, 2019-05-03 at 17:56 +0000, Michael wrote:

Does bind support DoH yet? Perhaps we need a stunnel plugin ;)
https://kb.isc.org/docs/aa-01386
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Why not using dnscrypt proxy plugin? I'm using it as main DNS on Firewall, also with DNSBL support.

Can you create a how to for it please?

From: Michael<EMAIL_ADDRESS>Sent: Saturday, May 4, 2019 7:21:12 AM
To: opnsense/plugins
Cc: J.Townsend; Comment
Subject: Re: [opnsense/plugins] os-bind - Thoughts Features (#974)
Why not using dnscrypt proxy plugin? I'm using it as main DNS on Firewall, also with DNSBL support.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/opnsense/plugins/issues/974#issuecomment-489298805, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AA3V2QXZQE5FY663CRVIXPTPTUTNRANCNFSM4GDFOYRQ.

Next time you try it on your own ;)
https://github.com/opnsense/docs/pull/169

Thank you 🤗

From: Michael<EMAIL_ADDRESS>Sent: Sunday, May 5, 2019 6:35:27 PM
To: opnsense/plugins
Cc: J.Townsend; Comment
Subject: Re: [opnsense/plugins] os-bind - Thoughts Features (#974)
Next time you try it on your own ;)
opnsense/docs#169https://github.com/opnsense/docs/pull/169
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/opnsense/plugins/issues/974#issuecomment-489446988, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AA3V2QWTVMNKYEMDAHDOUC3PT4LF7ANCNFSM4GDFOYRQ.

1, 2, 3, 5 done, close?

Sure, 4 can be re-requested.

@mimugmail was the option for ipv6 filtering ever added in?
For filter-aaaa-on-v4? I don't see it in the UI for opnsense for the most part

Not that I'm aware of, how is the exact Syntax?

It just needs to be enabled during the binary build with ./configure --enable-filter-aaaa
And usage is just simply
filter-aaaa-on-v4 yes;
filter-aaaa-on-v6 yes;

Docs: https://kb.isc.org/docs/aa-00576

@mimugmail
Actually. Looking at the Makefile, the os-bind plugin is using bind914.
bind916 is the next ESV version after bind911. Curious why bind 911 isn't being used since it's EOL in 2021 Q4 while bind914 is EOL 2020 Q1 and bind916 is EOL 2024 Q1.
Any issues reverting to bind911 since that will still be supported? bind911 has the filter-aaaa as default build options.
I've already submitted a pull to add it into bind916 upstream.
Bind support timeline: https://kb.isc.org/docs/aa-00896
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244332


Support workspace routing controller configuration on DevWorkspace object

With the advent of external workspace routing controllers, there has arisen the need to configure them on per-workspace basis. In another words it should be possible to pass down routing class specific configuration to the external controller.
== Proposed Solution
There is a precedent for handling this kind of "polymorphism" in Kubernetes with the Ingress annotations, e.g. https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/.
I would like to propose configuring the workspace routing controller using annotations on the DevWorkspace object.
Let's say we have a workspace routing controller handling the myrouting routing class.
We would be able to configure it on the DevWorkspace object like this:
kind: DevWorkspace
apiVersion: workspace.devfile.io/v1alpha1
metadata:
  name: cloud-shell
  annotations:
    controller.devfile.io/restricted-access: "true"
    controller.devfile.io/other-cotroller-annotation: "yes"
    myrouting.routingclass.controller.devfile.io/answer: "42"
spec:
  started: true
  routingClass: myrouting
  template:
    ...

This would create a workspace routing object with the 2 following annotations:
kind: WorkspaceRouting
apiVersion: workspace.devfile.io/v1alpha1
metadata:
  name: ...
  annotations:
    controller.devfile.io/restricted-access: "true"
    myrouting.routingclass.controller.devfile.io/answer: "42"
...

The restricted-access is already being passed down by the existing code. myrouting.routingclass.controller.devfile.io/answer is considered a configuration property of the controller and therefore is passed down to the WorkspaceRouting object. controller.devfile.io/other-cotroller-annotation is NOT passed down, because it is unrelated to the workpace routing.
== Alternative Solution
We could also specify the configuration directly in the spec of the Devworkspace, e.g.:
kind: DevWorkspace
apiVersion: workspace.devfile.io/v1alpha1
metadata:
  name: cloud-shell
  annotations:
    controller.devfile.io/restricted-access: "true"
    controller.devfile.io/other-cotroller-annotation: "yes"
spec:
  started: true
  routingClass: myrouting
  routingAnnotations:
    answer: "42"
  template:
    ...

This feels a little bit less idiomatic Kubernetes to me though.

@metlos https://github.com/devfile/devworkspace-operator/pull/245 full solves this issue? Can it be closed?

It can be closed... Sorry for forgetting about this.


Deploy directly to production

Production will be deployed only when staging will be deployed.
https://docs.travis-ci.com/user/build-stages/#how-do-build-stages-work
Stages group jobs that run in parallel and different stages run sequentially.

@slawosz looks good! Might be worth removing the Deploy to int job completely as this would no longer be triggered?


Mp4-H264 videos not working in Browser, if frame size is less than 360*360

I used AndroidSequenceEncoder8Bit class to generate video from sequence images, video file is not working well on Quicktime, I see black frames until I first frame(image) gone, also it is not working in chrome browser as HTML tag, before I used old version from Jcodec and videos were working good, but after I used latest code from master I faced this problem.
also I can't use old version because video file size was big before, but now it is good for me.
anyone know how to make output video works in chrome and most browsers ?
Thank you

In my case, works in browser but not in Android VideoView, neither with windows media player..


Feature/restrict #players

Fixed comments, more comments are welcome.

Misclick :P
Looks good to me now. Merging.

The branch is in conflict. You'll have to fix this before merge.


Cannot start hubot the second time

I deployed hubot on RC successfully, then the next day when i tried again, it won't start. This is what i did to start hubot the second time :
jymd@Chat:~/myhubot$ export ROCKETCHAT_ROOM='general'
jymd@Chat:~/myhubot$ export LISTEN_ON_ALL_PUBLIC=true
jymd@Chat:~/myhubot$ export ROCKETCHAT_USER=usor
jymd@Chat:~/myhubot$ export ROCKETCHAT_PASSWORD=jymd-roll23
jymd@Chat:~/myhubot$ export ROCKETCHAT_AUTH=password
jymd@Chat:~/myhubot$  bin/hubot -a rocketchat

and i got the following output:
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Starting Rocketchat adapter version 1.0.7...
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Once connected to rooms I will respond to the name: uso
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO I will also respond to my Rocket.Chat username as an alias: usor
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] WARNING No services ROCKETCHAT_URL provided to Hubot, using localhost:3000
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Connecting To: localhost:3000
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Successfully connected!
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Logging In
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Successfully Logged In
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO rid:  []
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO All rooms joined.
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Preparing Meteor Subscriptions..
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Subscribing to Room: __my_messages__
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Successfully subscribed to messages
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] INFO Setting up reactive message list...
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script.

Your hubot-scripts.json is empty, so you just need to remove it.
[Thu Jan 26 2017 06:16:05 GMT-0800 (PST)] ERROR Error loading scripts from npm package - Error: Cannot find module 'hubot-youtube'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Robot.loadExternalScripts (/home/jymd/myhubot/node_modules/hubot/src/robot.coffee:401:11, <js>:272:27)
at /home/jymd/myhubot/node_modules/hubot/bin/hubot:152:11, <js>:159:26
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)

But the bot was not logged in my chat. Is there anything missing?

Did you also have that error when it was working?  I'd correct that error and then give it a shot

you are right. i fixed it, now it works.
However, when i pm2 start hubot, even though it shows success on the terminal, but on RC hubot wouldn't login. Please see below for my pm2.json scripts, what is wrong with the script?
{
        "apps": [{
                "name": "usor",
                "max_memory_restart": "1024M",
                "log_date_format": "YYYY-MM-DD HH:mm:ss SSS",
                "script": "bin/hubot",
                "exec_interpreter": "bash",
                "args": "--name usor --adapter rocketchat",
                "watch": ["package.json", "external-scripts.json", "scripts/", "hubot-scripts.json", "HUBOT_GITHUB_EVENT_NOTIFIER_TYPES=issues,pull_reques$
                "out_file": "/var/log/hubot/app.log",
                "error_file": "/var/log/hubot/err.log",
                "port": "8079",
                "env": {
                        "ROCKETCHAT_URL": "https://chat.usorgames.com:3000",
                        "ROCKETCHAT_USER": "usor",
                        "ROCKETCHAT_ROOM": "",
                        "LISTEN_ON_ALL_PUBLIC": "true",
                        "ROCKETCHAT_PASSWORD": "jymd-roll23",
                        "PORT": "8079",
                        "HUBOT_YOUTUBE_API_KEY": "AIzaSyDXIekR7c04A52XXdR6tuqP4kc_uII9RzE",
                        "HUBOT_GITHUB_EVENT_NOTIFIER_TYPES": "issues,pull_request,push"

                }
        }]
}

I checked both /var/log/hubot/app.log  and    /var/log/hubot/err.log , both were empty.

Closing assuming this is resolved.


[QUESTION] Update replicaCount on already attached volumes without UI

Question
Is there any possibility to increase/decrease the number or replicas on an already attached Longhorn volume without using the Longhorn UI?
I have a single-node Kubernetes cluster installed using K3S and etcd (allowing to have a cluster with HA in the control-plane).
After deploying the cluster, I install Longhorn using the Helm Chart (currently using v1.1.0, but I'm planning to move to v1.1.1 soon). I have configured the Longhorn deployment with the following fields in the values.yaml file (as I'm currently working on a single-node cluster, I set all the "replicaCount" values to 1):
persistence:
  defaultClassReplicaCount: 1

csi:
  attacherReplicaCount: 1
  provisionerReplicaCount: 1
  resizerReplicaCount: 1
  snapshotterReplicaCount: 1

defaultSettings:
  replicaSoftAntiAffinity: true
  defaultReplicaCount: 1
  replicaZoneSoftAntiAffinity: true

When I want to add a new control-plane node to the cluster, I want to automatically increase the number of replicaCount for all the previous values. I was trying to use the following "helm upgrade" command to do that (after installing K3S in the new control-plane node):
# Get current Longhorn replicas
LONGHORN_CURRENT_REPLICAS=$(kubectl get configmap --namespace longhorn-system longhorn-default-setting \
	-o jsonpath='{.data.default-setting\.yaml}' | grep "default-replica-count" | awk '{print $2}')
# Update the current number of replicas on the Longhorn Helm Chart
LONGHORN_NEW_REPLICAS=$((LONGHORN_CURRENT_REPLICAS + 1))
# Upgrade the Longhorn Helm Chart
helm upgrade longhorn --namespace longhorn-system <path-to-longhorn-helm-chart> \
	--set persistence.defaultClassReplicaCount="$LONGHORN_NEW_REPLICAS" \
	--set csi.attacherReplicaCount="$LONGHORN_NEW_REPLICAS" \
	--set csi.provisionerReplicaCount="$LONGHORN_NEW_REPLICAS" \
	--set csi.resizerReplicaCount="$LONGHORN_NEW_REPLICAS" \
	--set csi.snapshotterReplicaCount="$LONGHORN_NEW_REPLICAS" \
	--set defaultSettings.defaultReplicaCount="$LONGHORN_NEW_REPLICAS"

After executing the "helm upgrade" command, the changes on the configuration are successfully applied (the Longhorn StorageClass, and the configmaps with the default settings and the storageclass config are updated with the new replicaCount), but the number of CSI pods in the cluster is still one (excepting the longhorn-csi-plugin pod, which belongs to a DaemonSet and it's automatically created when adding the new node), and the number of Longhorn replicas per Longhorn volume is still one.
I was going to try to restart the Longhorn Kubernetes objects that manage the replicas and the CSI pods to see if that results in the new replicas being created, but I'm not sure if it's the best solution.
Is there any way to increase/decrease the number of replicas for a Longhorn volume without the Longhorn UI?
Environment:

Longhorn version: v1.1.0
Kubernetes version: v1.20.4
Node config

OS type and version: CentOS Linux release 7.9.2009 (Core)
CPU per node: 4 vCPU
Memory per node: 8 GB
Disk type: Hard Disk
Network bandwidth and latency between the nodes: -

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal): VMWare vSphere

Additional context
I actually have the Longhorn UI disabled (not deployed in the cluster as part of the Helm Chart), so I'm looking for a solution without using the Longhorn UI (if it's possible).

I also discovered that the "default-replica-count" Longhorn Settings object is not updated after executing the "helm upgrade" command:
kubectl get settings -n longhorn-system default-replica-count
NAME                    VALUE   AGE
default-replica-count   1       18h

But all the configmap data is being updated with the new value:
kubectl get configmap --namespace longhorn-system longhorn-default-setting -o jsonpath='{.data.default-setting\.yaml}'
[...]
default-replica-count: 2

kubectl get configmap --namespace longhorn-system longhorn-storageclass -o jsonpath='{.data.storageclass\.yaml}'
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: longhorn
  annotations:
    storageclass.kubernetes.io/is-default-class: "false"
[...]
parameters:
  numberOfReplicas: "2"

And the spec of the longhorn-driver-deployer pod is also updated:
kubectl describe pod --namespace longhorn-system longhorn-driver-deployer-655f48bbf7-nxkvb
[...]
Containers:
  longhorn-driver-deployer:
    [...]
    Environment:
      POD_NAMESPACE:                    longhorn-system (v1:metadata.namespace)
      NODE_NAME:                         (v1:spec.nodeName)
      SERVICE_ACCOUNT:                   (v1:spec.serviceAccountName)
      CSI_ATTACHER_IMAGE:               longhornio/csi-attacher:v2.2.1-lh1
      CSI_PROVISIONER_IMAGE:            longhornio/csi-provisioner:v1.6.0-lh1
      CSI_NODE_DRIVER_REGISTRAR_IMAGE:  longhornio/csi-node-driver-registrar:v1.2.0-lh1
      CSI_RESIZER_IMAGE:                longhornio/csi-resizer:v0.5.1-lh1
      CSI_SNAPSHOTTER_IMAGE:            longhornio/csi-snapshotter:v2.1.1-lh1
      CSI_ATTACHER_REPLICA_COUNT:       2
      CSI_PROVISIONER_REPLICA_COUNT:    2
      CSI_RESIZER_REPLICA_COUNT:        2
      CSI_SNAPSHOTTER_REPLICA_COUNT:    2

There are multiple questions here.

Regarding to

I also discovered that the "default-replica-count" Longhorn Settings object is not updated after executing the "helm upgrade" command

The Longhorn settings cannot be updated by changing defaultSettings during Helm upgrades. defaultSettings is only used to create Longhorn settings in the initial installation. If you want to change Longhorn settings after the initial installation, you can change the setting in UI or kubectl edit settings <SETTING-NAME> -n longhorn-system

Regarding to

Is there any possibility to increase/decrease the number or replicas on an already attached Longhorn volume without using the Longhorn UI?

You can run kubectl edit volumes <VOLUME-NAME> -n longhorn-system and change the numberOfReplicas:

WARNING: only use kubectl  when you know what you are doing since it will bypass Longhorn back-end validation. It is dangerous. Therefore, we recommend using Longhorn UI when possible. In the future, we are having a plan to make a Longhorn CLI https://github.com/longhorn/longhorn/issues/613 so that users have another option to safely control Longhorn besides Longhorn UI

Thanks @PhanLe1010 for the answer!
I tried the approach that you pointed out in my cluster. I ended up using "kubectl patch" commands instead of "kubectl edit", as I wanted to automate those steps in some shell scripts:
# Get all the Longhorn volumes in the cluster
mapfile -t LONGHORN_VOLUME_NAMES < <(kubectl get volumes --namespace longhorn-system -o name | sed 's@volume.longhorn.io/@@g')

# Iterate over all the Longhorn volumes, and update their numberOfReplicas field with the new replica count
for vol in "${LONGHORN_VOLUME_NAMES[@]}"; do
  kubectl patch --namespace longhorn-system volumes/"$vol" --type=merge \
    -p '"spec" : { "numberOfReplicas": '"$LONGHORN_NEW_REPLICAS"'}'
done

This was the number of replicas in the cluster before applying the "patch" command:
kubectl get replicas --namespace longhorn-system | tail -n +2 | wc -l
5

This is the number of replicas in the cluster after applying the "patch" command:
kubectl get replicas --namespace longhorn-system | tail -n +2 | wc -l
10

New Longhorn replicas are successfully replicated when adding a second node.
Regarding to:

In the future, we are having a plan to make a Longhorn CLI #613 so that users have another option to safely control Longhorn besides Longhorn UI

That sounds very promising! Looking forward to hear more from that CLI, it would make the Longhorn deployment management much easier for me.

Closing, because the answer works and this will be tackled by #613 .


Refactor Dockerfile, fix #4061, etc.

Closes #4061
Dockerfile and Docker Compose changes:

Split python and node installation and compilation into separate parallel build stages
Add cache mounts for apt to hopefully improve rebuild performance
Change dev and final-dev targets to install to /opt/nautobot virtualenv and run as the nautobot user
Build Nautobot 2.0 UI as part of Docker image build
nodejs container now uses the nautobot dev image instead of pulling node image
Removed node_modules shared volume between nautobot and nodejs containers as no longer needed

Other changes:

Fix tasks.py definition for invoke markdownlint in docker workflow (fixes #4061)
Update installed Poetry version to 1.5.1
Update markdownlint to 0.35.0 and fix some new warnings it raises
Remove separate package.json for markdownlint/eslint/prettier, roll them into the main package.json

TODO

[x] Explanation of Change(s)
[x] Added change log fragment(s) (for more information see the documentation)
[x] Attached Screenshots, Payload Example
n/a Unit, Integration Tests
[x] Documentation Updates (when adding/changing features)
n/a Example Plugin Updates (when adding/changing features)
[x] Outline Remaining Work, Constraints from Design

Looks like hitting #4060 in CI - not clear yet why this isn't an issue with the local build. Investigating.


Chaining struct methods

Hello,
I've faced with an issue around using your library, when necessary to chain a couple of struct methods together, so that the code looks much better and easier to maintain. The issue raises in code that looks like this:
Box::new(pipe!(
    rabbitmq_client_local.get_channel()
        => self.declare_response_queue
        => self.link_response_queue
        => self.publish_message
        => self.consume_response
        => self.send_response
        => self.unbind_response_queue
        => self.delete_response_queue
        => self.post_process_result
))

Here we see pretty simple code, that contains a RabbitMQ channel and pass it to the nested calls so that each method will produce a new future, based on the previous one.
The piece of code, that was mentioned above, generates the following errors during the compiling stage:
error: no rules expected the token `.`
   --> src/engine/engine.rs:165:25
    |
165 |                 => self.declare_response_queue
    |                        ^

error: no rules expected the token `.`
   --> src/engine/engine.rs:166:25
    |
166 |                 => self.link_response_queue
    |                        ^

error: no rules expected the token `.`
   --> src/engine/engine.rs:167:25
    |
167 |                 => self.publish_message
    |                        ^

error: no rules expected the token `.`
   --> src/engine/engine.rs:168:25
    |
168 |                 => self.consume_response
    |                        ^

error: no rules expected the token `.`
   --> src/engine/engine.rs:169:25
    |
169 |                 => self.send_response
    |                        ^

error: no rules expected the token `.`
   --> src/engine/engine.rs:170:25
    |
170 |                 => self.unbind_response_queue
    |                        ^

error: no rules expected the token `.`
   --> src/engine/engine.rs:171:25
    |
171 |                 => self.delete_response_queue
    |                        ^

error: no rules expected the token `.`
   --> src/engine/engine.rs:172:25
    |
172 |                 => self.post_process_result
    |                        ^

error: aborting due to 8 previous errors

Try putting the statements into parentheses. Also try replacing the dot with double colons.


Copying code and pasting it into my VSCode projects causes whole code to stop working

I already got that problem several times.
For example: I copy a function I already used in another project and paste it in my new project. Suddenly my whole Javascript code isn´t working anymore. But when I comment the copied coude out and rewrite it, everything works. So why does pasting destroys everything, even though the code has no mistakes in it?

/needsMoreInfo


Infra command docs

Forgot that we never added this either haha.

[ ] infra docs
[ ] symlink docs (should be really useful to node / python people)
[ ] some examples of terraform setup?

https://github.com/apex/apex/blob/master/docs/infra.md

For example apex infra --env prod plan is effectively equivalent to the following command, with many -var's passed to expose information from Apex.

It would be good to document what these vars are. :)


MSRV addition

Is your feature request related to a problem? Please describe.
I noticed that as part of the latest release (thank you by the way) the MSRV was updated to 1.77. We use this as a dependency of our SDK, and try not to force people into the most bleeding edge version of Rust if possible, since people may not have upgraded. After trying to upgrade to png_pong v0.9.0 to fix a bug, our tests failed since we test on Rust 1.75 to ensure compatibility with older clients.
Describe the solution you'd like
I was wondering if the latest version needs 1.77 to function, or if this is an arbitrary requirement that is open to change/input - I also  see that the MSRV policy says the following, so I didn't know if this was temporary:

The current MSRV policy only supports the most recent Rust. This will be changed in the future.

If you are open to changing it and there are no technical requirements to requiring 1.77, would it be possible to relax the requirement to something such as 1.73 (or even 1.75) for wider compatibility?
Describe alternatives you've considered
Upgrading our library to use 1.77, which would require code changes plus possibly render our versions incompatible with a subset of the population.
Additional context
N/A

I can lower it, there's just no testing in place yet for older Rust versions, so I marked it as the most recent version.  I'm willing to go down to 1.65 if needed.  Although, I wonder what policy makes sense, would you prefer support on current Rust - 4 versions back, or some other policy for when png_pong can upgrade MSRV?

N-4 sounds good to me, and is a fair balance from my perspective. Thanks for considering this.

I'm planning on applying this MSRV policy to share across different crates I maintain, so png_pong will use this as well:
https://github.com/ardaku/.github/blob/05a83745d9366a78da6c1680256c3fc76a9f50d3/profile/MSRV.md

Just released PNG Pong 0.9.1!
https://crates.io/crates/png_pong/0.9.1
https://github.com/AldaronLau/png_pong/releases/tag/v0.9.1


ImageFit ignored on tablet, image always fills with distorted ratio

I have a simple view that just returns an image, on my Nexus 9 tablet with Android 6.0 the image always fills the view with distorted ratio (in both landscape or portrait). On Nexus 5X with 6.0 and Nexus 5 with 6.0, image displays fine and I get proper ratio and black-space around the image when needed.

Can you post an example to this bug so that we can reproduce this issue?  It's odd that you'd get different behavior on table rather than phone.

Will do, let me update to latest Flutter and Mojo to ensure it is still an issue and then I will update the bug with more details.

No longer an issue with latest flutter and android mojo shell.


Would like to have rain per hour and rain today values

Weather underground only takes per hour and per day values for rain and these are useful values in their own right.

Hi @sjefferson99. These sound pretty easy to add, if all that's needed is scaling up the current measurement (so the rain per hour becomes an estimate). Recording the cumulative rain over a full hour our day would be a bit more complicated though.

@ZodiusInfuser Apologies, I wasn't sure of the contribution approach so I created an issue for any PRs that didn't already have one to denote the reasoning behind them and tagged the issue in the PR. I'll make a clearer comment next time.


server command not sent to terminal upon freeing of port

see the free port suggestion, run it 👍🏼  succeeds
🐛 the command you just ran isn't in the terminal ready for you to press enter

Thanks for creating this issue! We figured it's missing some basic information, such as a version number, or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!


Ignore linebreaks between CJK characters in source code

Typst currently support breaking a paragraph into several consecutive lines in source code, without introduce a newline in result PDF. The single newline in source code will just become a space. However, when working with scripts that do not using spaces between words, like Chinese and Japanese, we often not want to have the newline, nor the space.
In a paragraph like this:
中文
测试

In Chinese context, the most sensible result is 中文测试, without any spaces and newlines.
I propose implementing the following features in typst:

Eliminate spaces between CJK characters in source code.
Let trailing comment consume a linebreak in source code.
This is because sometimes we have a inline frame and CJK detect will not work, so we need an opt-in method. I think the changed behavior can be minimal, comments will consume new line only if it has no space before it.
For example, this codeabc //
def

becomes abc def
andabc//
def

becomes abcdef.
Latin users often use the former one so they will not be affected.

+1 for the trailing comment
That would solve my issue at https://github.com/typst/typst/discussions/1173 and give users more control over line breaks.

+1

Is there any workaround to this problem for now?

+1
Yes, this feature is very desirable in East Asian context, especially when one wants to manually wrap lines in source file.
However, instead of removing space between CJK characters, I propose disabling automatic space insertion at linebreaks in source code depending on the lang or script parameter of the current text.
As for the syntax of opting-out this automatic space occasionally, I think this is another topic that needs further discussion (maybe in another issue).

If comments are going to consume a linebreak, I'd also like them to consume space at the beginning of the next line. That way,
#repr([//
  abc //
  // actual comment
  def//
])

evaluates to [abc def] and not [([ ], [abc], [ ], [ ], [ ], [def], [ ])].
I know this looks like ugly TeX, but you can't use block syntax for this purpose currently:
#repr({
  [abc ]
  // actual comment
  [def]
})

evaluates to [([abc], [ ], [def])], and you additionally have to deal with the introduction of scopes you may not want (e.g. because they throw off a #set). Variants of {} & [] that don't introduce new scopes would be a possible solution to this, but the result would still be noisy:
/{
  /[中文]/
  /[测试]/
}/

for the original example. I still think that syntax would be really useful for scripting.

Somewhat related: https://github.com/typst/typst/issues/710

Well, many behaviors in LaTeX are only documented in Chinese, so let me explain here.
What it is like in LaTeX

The CTeX package bundle implements common Chinese typesetting practices. It determines how LaTeX compilers interpret spaces and \n.

CTeX provides an option to control whether to keep spaces after Han characters in the generated PDF.
An example main.tex:
汉字 分词
技术 English Latin

auto (default): remove the space if it is followed by another Han character; keep it if not.
⇒  汉字分词技术 English Latin

(fallback): remove spaces generated by \n, but keep other literal spaces
⇒ 汉字 分词技术 English Latin

true: always keep
⇒  汉字 分词 技术 English Latin
In this case, we need to add % before \n.  (% in LaTeX = // in typst) Otherwise, \n will generate an extra space, because LaTeX compiler takes a single \n as a space.

false: always remove
⇒ 汉字分词技术English Latin

CTeX use different packages for different LaTeX compilers. Consequently, the option is not fully supported by all compilers…

auto (default)
(fallback)
true
false

XeLaTeX
✅
❌
✅
❌

LuaLaTeX
❌
✅
❌
❌

upLaTeX
❌
✅
❌
❌

(pdf)LaTeX
✅
❌
✅
✅

(Many Chinese templates only support XeLaTeX and LuaLaTeX.)

References:

CTeX doc (Chinese), §5.3 space = ⟨true|false|auto⟩.
xeCJK doc (Chinese), §3.1CJKspace = ⟨true|false⟩.
Chinese - Overleaf (English).

Also may I suggest that spaces added between CJK characters should not be rendered. This behavior is consistent with XeLaTeX and will make vim-based motion a lot easier.
Update: I've the following hack that achieves this behavior in most cases, though it struggles with spaces around CJK punctuation and line breaks. I'm unsure how to resolve this issue, which I believe may be related to #86.
#let cjkre = regex("\s*(\p{Han}+)\s*")
#show cjkre: it => it.text.match(cjkre).captures.at(0)

= 你好，我是 你的朋友。

“你好” check测试：
hello, this is a test!
世界 你好，
我很好。

Using the idea from #1173, I’ve made some changes that seem to handle both line breaks and spaces around CJK characters pretty well. I'm still new to typst and haven’t tested it beyond this example yet, though.
#let cjk-char = "\p{Han}，。；：！？‘’“”（）「」【】…—"
#let cjk-re = regex("\s*([" + cjk-char + "])\s*")
#show cjk-re: it => it.text.match(cjk-re).captures.at(0)
#show: rest => {
  let ends-with-cjk = it => {
    it != none and it.has("text") and it.text.ends-with(regex("[" + cjk-char + "]"))
  }
  let last-item = none
  for (n, item) in rest.children.enumerate() {
    if ends-with-cjk(last-item) and item == [ ] {
      item = []
    }
    last-item = item
    item
  }
}

= 你好，我是 你的 朋友。

“你好” check测试：
hello, world! this is a test!
this
is good.
世界
你好 啊，
我很好。

which gets rendered as:
你好，我是你的朋友。

 “你好”check 测试：hello, world! this is a test! 世界你好啊，我很好。

Hi @admk! As described in #710, content is not well traverseable.
For example, #set text(lang: "zh") will create styled (instead of sequence), breaking your #show: rest => … rule.
It might be possible to inspect sequence/styled and traverse the content, but it will be a fragile hack…

laurmaedje: this wasn't really an intended use case, which is also why they aren't publicly accessible as a global.
This might change with the type rework. I'm considering to make them properly public then.

https://discord.com/channels/1054443721975922748/1088371867913572452/1205542340144537651

Indeed, in particular with more usage ofcontext (which I believe will only grow). See also: https://github.com/typst/typst/discussions/4745

Well, it is not so difficult to remove spaces that generated by a \n after a Han character… If this behaviour is accepted, maybe I can organize it into a PR.
Implementation
The “(fallback)” behaviour mentioned in https://github.com/typst/typst/issues/792#issuecomment-2303677367 can be implemented by changing the function
https://github.com/typst/typst/blob/d48293f1c6ff5cfb256946be4f814df851197bd7/crates/typst-syntax/src/ast.rs#L67-L80
to
        let mut could_ignore = false;
        self.0
            .children()
            .filter(move |node| {
                let kind = node.kind();
                // Ignore newline if directly after…
                let keep = !could_ignore || kind != SyntaxKind::Space;
                // …statements without semicolons,
                could_ignore = kind.is_stmt()
                // or texts ended with a Han character.
                || (kind == SyntaxKind::Text
                        && node.text().ends_with(|c: char| {
                            matches!(c.script(), Script::Han)
                                || matches!(c, '，' | '。' | '：') // and other Chinese punctuations
                        }));
                keep
            })
            .filter_map(Expr::cast_with_space)

and use unicode_script::{Script, UnicodeScript};
An example
#set page(height: auto)
#set text(lang: "zh", region: "CN", font: "Noto Serif CJK is fantastic, but spaces are more visible between tofu")

汉字 分词
技术 English Latin
Continue 汉字
And
孔乙己

鲁镇的酒店的格局，是和别处不同的：
都是当街一个曲尺形的大柜台，
柜里面预备着热水，可以随时温酒。

鲁镇的酒店的格局，是和别处不同的： //
都是当街一个曲尺形的大柜台， //
柜里面预备着热水，可以随时温酒。

Side effects
Only one test failed, and it is expected.
❌ text-chinese-basic (tests/suite/layout/inline/cjk.typ:4)
  mismatched rendering
    live      | tests/store/render/text-chinese-basic.png
    ref       | tests/ref/text-chinese-basic.png
2225 passed, 1 failed, 0 skipped

Future work
If this is the right way to go,

'，' | '。' | '：' should be replaced by is_cjk_punctuation/is_cjk_left_aligned_punctuation/… here https://github.com/typst/typst/blob/d48293f1c6ff5cfb256946be4f814df851197bd7/crates/typst/src/layout/inline/shaping.rs#L114
an option to disable the behaviour might be necessary, e.g. #set text(ignore-???-newline: false), as in #2334 .

Well, it is not so difficult to remove spaces that generated by a \n after a Han character… If this behaviour is accepted, maybe I can organize it into a PR.

I'm sure most CJK users will be happy to see this new behavior. Looking forward to your PR!

providing an option to disable the behaviour

It might be quite complicated if not impossible. According to https://github.com/typst/typst/blob/022f34c43a2fb3084b93500163a601105ab582a4/docs/dev/architecture.md, my previous approach changes parsing, before evaluating. In other words, we don't know the set rule when we are parsing.
I think there are two solutions:

Continue to fix it during parsing, and make it an inevitable breaking change. (Same as #2648)
Find another way during layout. (Same as #2334)

I think there are two solutions:

Continue to fix it during parsing, and make it an inevitable breaking change. (Same as #2648)

Find another way during layout. (Same as #2334)

Maybe 2 is better?

I think solution 1 is superior for the following reasons.

Typst already merge multiple white spaces in to one in parser. The behavior is not configurable and is based on English tradition that only one space is needed between words. In that sense, an additional non-configurable behavior to erase spaces between Chinese/Japanese characters based on Chinese/Japanese  tradition is very reasonable and consistent.
Users can easily workaround using #[ ] if they really need white space between characters.
It's easy to reason about the final result in solution 1 than 2. Consider the following code:#let keywords(arr) = arr.join(" ")

case 1: #keywords(("数学", "语文", "物理"))
case 2: 数学 语文 物理

It will work as expected if we choose solution 1, but if we do the erase at layout time, we cannot distinguish case 1 from case 2, and all the white spaces will be erased, which may be surprising for users.
After all, solution 1 is easier to be implemented.

I imagine at some point in the future Typst will inevitably add something like #pragma to control global options, such as whether to use system font. After that we can add options to manage white space behavior.

if we do the erase at layout time, we cannot distinguish

I am persuaded.
Typst v0.11.1:
#"a
b
c"

a
b
c

merge multiple white spaces

I am afraid we have not reached consensus on what to implement? Is the following behavior OK?
https://github.com/typst/typst/issues/792#issuecomment-2303677367

汉字 分词
技术 English Latin

(fallback): remove spaces generated by \n, but keep other literal spaces
⇒ 汉字 分词技术 English Latin

I imagine at some point in the future Typst will inevitably add something like #pragma to control global options, such as whether to use system font. After that we can add options to manage white space behavior.

There aren't any plans to that effect and I would like to avoid it. Can't we retain the necessary information as a field of SpaceElem?

@laurmaedje says:

There aren't any plans to that effect and I would like to avoid it. Can't we retain the necessary information as a field of SpaceElem?

Then I think make the behavior non-configurable is fine. No need to add additional complexity.
@YDX-2147483647 says:

I am afraid we have not reached consensus on what to implement? Is the following behavior OK?
#792 (comment)

汉字 分词
技术 English Latin

(fallback): remove spaces generated by \n (after CJ), but keep other literal spaces
⇒ 汉字 分词技术 English Latin

Yes, that's what I would suggest. It matches the behavior of LuaTeX-ja and require minimal change to the current Typst.
But we have to decide behavior in some edge cases. What will happen in the following code?
= Case 1 // space is *not* desired here
分词
#footnote[abc]

= Case 2 // space is *not* desired here
*中文*
分词

= Case 3 // space is *not* desired here
#let a = [中文]
#let b = [分词]
#a
#b

= Case 3 // space is desired here
关于
#box[TeX]

= Case 4 // space is desired here, but we can safely
         // strip it because it will be added back during layout
关于
Typst

I think it's ok to produce some undesired result in edge cases, but there should be easy ways for users to workaround.

Based on those cases, I don't think we can do this purely in the parser, since we can only know if preceding or following text is CJK at runtime, and even then, show rules might affect it, so this is really a realization or layout effect.
I think the only thing we would need at the Parser stage is to add a new SingleNewline item to SyntaxKind that acts like SyntaxKind::Space, but preserves the fact of the single newline when added in the AST (double newlines already create a SyntaxKind::ParBreak).
Then evaluation can store if there was a single newline as a parameter in SpaceElem, and layout can check if both preceding and trailing text is CJK to determine if the space is kept.

We wouldn't even necessarily need a new syntax kind since the node stores its text, though checking at runtime whether it contains a newline is probably a little more costly than doing it in the parser.


Ability to consume GitDepend.yml

This is a critical feature. Almost everything else in the product will need to use the information from GitDepend.yml. There needs to be a way to read in GitDepend.yml and represent the data as an in memory object.
The format of the file is as follows
build:
  script: make.bat
packages:
  dir: artifacts/NuGet/Debug
dependencies:
  LibA:
    url: ssh://git@github.com:kjjuno/liba.git
    dir: ../LibA
    branch: develop
  LibB:
    url: ssh://git@github.com:kjjuno/liba.git
    dir: ../LibB
    branch: develop

I'm debating the merits of using json instead of yaml. Newtonsoft.Json is very standard for working with Json in .NET. How much uglier is this? (if any)
{
  "build": {
    "script": "make.bat"
  },
  "packages": {
    "dir": "artifacts/NuGet/Debug"
  },
  "dependencies": [
    {
      "name": "LibC",
      "url": "ssh://git@github.com:kjjuno/libc.git",
      "dir": "../LibC",
      "branch": "develop"
    }
  ]
}

For now I'm going with the Json version.


feat: url state for framework and package manager

note: when loading into a page without query params, it will load from local storage but will not update the current route. navigating to another page will however update the query params

tsconfig changed because it was trying to extend from a config in a packages dir that doesn't exist

feel a little buggy atm, important thing is sharing a link with query params will set the correct framework and package manager

Thanks!
Yeah, the tsconfig was dangling because i'm working on a complete rewrite on rspc so all the JS code has been wiped from main but fixing it is perfect for now.


Entry Details page

Add text below the table in the Entry Information Page:.
Suggested text:
Do you need help with this?  There is information about quarters, districts, and how to find the partner in a marriage in the Help section. Use the link in the menu at the top of the page.

@PatReynolds Where to find that information is missing — should there be a link to "Help", that would need to open in a new tab in order to make returning to results straightforward, or simply advice to look in "Help"?

Text only at this point, to test whether to include a link.

@PhilipClarke712  wrote on 24 Jan 2022: (a comment on story re absence of back buttons on the Records page
The Entry Information page currently links to the relevant UKBMD page which has a 'bit more history information' than is given on test3 Records Tab - District Information page: but the latter already has a link to the UKBMD page. So, for instance, we could swap the District link on the Entry Information from UKBMD to the Records Tab - District Information page. Note: there is another story covering Districts and the relationship between the results page and the District Information Page hyperlinked to it.
I don't think we need two links on the Entry Information page: one to UKBMD and the other to the Records Tab - District Information page.

@AlOneill text suggested in story description should be enough to direct users to help.

@Vino-S to deploy to test3

@DeniseColbert to test on test3 (and Alison)

Text isn't there:

@Vino-S could you investigate please?

Text still not present, did you take a look @Vino-S ?

Ready for testing in test3

Deployed, closing


How do I add more than one proxy?

How do I add more than one proxy. In the documentation, only one way is shown:
"proxy": "http://localhost:4000"
But I need add a few patterns for my proxy like:
"proxy": {     "/api/*": "http://localhost:4000",     "/forms/*": "http://localhost:4000",     "/content/*": "http://localhost:4000"   }
I would normally write this like so in my webpack.config file but this isn't working:
devServer: { 	proxy: { 		"/api/*": "http://localhost:4000", 		"/forms/*": "http://localhost:4000", 		"/content/*": "http://localhost:4000" 	} }

This is currently a WIP and you can comment on the proposal here: https://github.com/facebookincubator/create-react-app/pull/1790.
The original issue is https://github.com/facebookincubator/create-react-app/issues/1780 (of which this issue is a duplicate).
You can see if you can help expedite https://github.com/facebookincubator/create-react-app/pull/1790 by commenting there. 😄


brunch test in 0.9.1 not working?

Hi brunch
Dropped my test.specs.coffee in /test dir and run brunch test - I get command test unknown - is there Jasmine test support in 0.9.1?

Jamie

Hi Jamie.
No, brunch 0.* doesn't support testing. 1.x will support testing with Mocha (a far superior to Jasmine).

Cool - thanks Paul will checkout mocha!
Sent from my iPod Touch
On 29 Feb 2012, at 00:33, Paul<EMAIL_ADDRESS>wrote:

Hi Jamie.
No, brunch 0.* doesn't support testing. 1.x will support testing with Mocha (a far superior to Jasmine).

Reply to this email directly or view it on GitHub:
https://github.com/brunch/brunch/issues/208#issuecomment-4229252