Code highlighting in chat CLI

Colored code in the CLI chat!

This PR focuses around the implementation of real-time streaming codeblocks with the examples/chatcode.py CLI chat script. Via pyterm, I stream the codeblocks as floating boxes with black background, similar to the ChatGPT interface.
This makes debugging code models much more pleasing :)

If you want, I can copy this into chat.py, but I didn't want to bloat it without your approval

This is very nice. I actually had it on my todo list to find some sort of syntax highlighting library to use for this exactly. It's not perfect, I think:

But that's something to fix down the line I guess. I know even ChatGPT struggles with formatting code as it's streaming in. Hell, I've seen Visual Studio mess up syntax highlighting sometimes, I guess it's a nontrivial problem.
In any case, I'll include it as is, then probably merge it into the main chat example later as a (default) option.
Thanks a bunch :)

Wohooo, I am super glad you like it! :) 🎉❤
And thank you for the whole repo, your nice support and your dedication to enhance LLM inference for everyone!

@turboderp Sorry, I first assumed the screenshot was your attempt, that's why I respond so late. Regarding your issue; what was your exact prompt? I have tested it across multiple code lengths and languages and could not replicate your result.

Regarding your screenshot, is your default color scheme red? When I try C# code it looks like this, white:

Not perfect by any means (Java also doesn't look too pretty), but that's up to pygments not having good syntax highlighters for these languages. If anyone finds add-ons for pygment I would be happy to upgrade the highlighters :)

Nope, most code comes out white. And that block was morphing a bit while updating, so maybe it was just too long?

Hmm that's odd, I will OCR your code and look if it's a pygment issue when I find time
(but it theoretically must, because my code just processes everything around the codeblock for pretty formatting and injects the black background, maybe I did an oopsie with the ANSI background injection)

I mangled it a bit and wrapped it in a class in examples/chat_formatting.py, so I can use it from the main chat script without cluttering it too much. I'll do some more refactoring at some point I guess, to build out with more formatters for lists, BBCode, what have you. Eventually it'll probably morph into some sort of unified backend for console and web UI chats.
I think the lexer autodetection is broken, though. It seems kind of random what syntax highlighting it applies, and I can't get it to format comments in any language.

It also looks like calling guess_lexer on every token is a little slow, so maybe it makes more sense to call it at the end of every line instead?
But anyway this is fine as something to build on.

(Turns out the black background was missing because of my Konsole profile, but now the output looks the same in gnome-terminal as well, so I think I have Konsole dialed in at least.)

I mangled it a bit and wrapped it in a class in examples/chat_formatting.py, so I can use it from the main chat script without cluttering it too much. I'll do some more refactoring at some point I guess, to build out with more formatters for lists, BBCode, what have you. Eventually it'll probably morph into some sort of unified backend for console and web UI chats.

How awesome! Tell me if I can help you out or do some reptitive work for you

I think the lexer autodetection is broken, though. It seems kind of random what syntax highlighting it applies, and I can't get it to format comments in any language.

I see, at the moment I don't have much time, but given your assessment I'd like to implement the following:

Sometimes the model specifies the language, use that (and/or incorporate a small prompt to ensure lang specification)
Detect comments-only and lists etc by hand (always treat // only codeblocks as C++ or something)
(- Maybe improve on Java and C# formatter)

When I find time in a couple of days I will implement that

Well, I have some ideas, and I was going to look into this anyway, so it's fine. I did some quick digging and it looks like pygments is a little crude when guessing what lexer to use. Here is how it detects C++, for instance:
    def analyse_text(text):
        if re.search('#include <[a-z_]+>', text):
            return 0.2
        if re.search('using namespace ', text):
            return 0.4

So that won't really work for code snippets. Also it supports a lot of obscure formats so maybe that could be narrowed down a bit for more accurate results. I'm looking into it.

So that won't really work for code snippets.

Ah I see, that's really low effort lang guessing lol
I also found guesslang, but it needs tensorflow installed, so idk if that is too much overhead
But if that's no problem for you I will look into it and implement it

(the thing is that if I understand  this correctly:
❯ pip install guesslang                                                                                (exllama)
Collecting guesslang
  Using cached guesslang-2.2.1-py3-none-any.whl (2.5 MB)
INFO: pip is looking at multiple versions of guesslang to determine which version is compatible with other requirements. This could take a while.
  Using cached guesslang-2.2.0-py3-none-any.whl (2.5 MB)
  Using cached guesslang-2.0.3-py3-none-any.whl (2.1 MB)
  Using cached guesslang-2.0.1-py3-none-any.whl (2.1 MB)
  Using cached guesslang-2.0.0-py3-none-any.whl (13.0 MB)
  Using cached guesslang-0.9.3-py3-none-any.whl (3.2 MB)
  Using cached guesslang-0.9.1-py3-none-any.whl (3.2 MB)
ERROR: Cannot install guesslang==0.9.1, guesslang==0.9.3, guesslang==2.0.0, guesslang==2.0.1, guesslang==2.0.3, guesslang==2.2.0 and guesslang==2.2.1 because these package versions have conflicting dependencies.

The conflict is caused by:
    guesslang 2.2.1 depends on tensorflow==2.5.0
    guesslang 2.2.0 depends on tensorflow==2.5.0
    guesslang 2.0.3 depends on tensorflow==2.5.0
    guesslang 2.0.1 depends on tensorflow==2.2.0
    guesslang 2.0.0 depends on tensorflow==2.2.0
    guesslang 0.9.3 depends on tensorflow==1.7.0rc1
    guesslang 0.9.1 depends on tensorflow==1.1.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

❯ pip install tensorflow==2.5.0                                                                                (exllama)
ERROR: Could not find a version that satisfies the requirement tensorflow==2.5.0 (from versions: 2.8.0rc0, 2.8.0rc1, 2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.9.0rc0, 2.9.0rc1, 2.9.0rc2, 2.9.0, 2.9.1, 2.9.2, 2.9.3, 2.10.0rc0, 2.10.0rc1, 2.10.0rc2, 2.10.0rc3, 2.10.0, 2.10.1, 2.11.0rc0, 2.11.0rc1, 2.11.0rc2, 2.11.0, 2.11.1, 2.12.0rc0, 2.12.0rc1, 2.12.0, 2.12.1, 2.13.0rc0, 2.13.0rc1, 2.13.0rc2, 2.13.0, 2.13.1, 2.14.0rc0, 2.14.0rc1, 2.14.0)
ERROR: No matching distribution found for tensorflow==2.5.0

there is no TF 2.5 anymore. So if I understand correctly (I am no dependency expert) it's non-trivial to install the required TF version, so that would be out of question I think)

Yeah, I wouldn't want to rely on TensorFlow in any case. Seems like kind of a large dependency for syntax highlighting.
It may make more sense to just have no syntax highlighting unless the model suggests a languate, with ```python or whatever. Or perhaps train a small micro-llama model for it. Idk.

I also thought about a super tiny one layer model or something but in the end some good regex rules will rule I think. To be honest, the current langguessing really isnt too bad for all the scripting languages
I am just about done with the mistral fix, just give me a second before merging the other PR :D

I reworked it a bit cause I couldn't get it to behave. I think it's a little more stable now, and it only applies formatting once per line, so it's a bit faster. At least it recognizes the language now with Mistral-instruct, idk. Probably nothing you can really do if the model doesn't output a language, short of attaching another language model.

Okay nice!

it only applies formatting once per line

I tested it and noticed that it updates the whole block (coloring + block rendering) each line, which makes the block look laggy, in my original PR I only updated the lexguessing, assuming that was performance intensive.
It's just a super tiny detail and I will probably work on only coloring once per line (to keep your modifications performance boost) but updating the codeblock (black bg) + streamed text each streamed token when I find some time
(it's really a minor detail and no criticism, I just like the smoother codeblock gen)

Probably nothing you can really do if the model doesn't output a language, short of attaching another language model.

What do you mean exactly? When it doesn't provide a codeblock at all or if the codeblock has no specified language? Tbh the current langguessing for me at least is sufficient enough so that it almost gets it right everytime
Thank you for improving on the syntax highlighting with me!

Okay nice, thanks!

it only applies formatting once per line

I tested it and noticed that it updates the whole block (coloring + block rendering) each line, which makes the block look laggy, in my original PR I only updated the lexguessing, assuming that was performance intensive.
It's just a super tiny detail and I will probably work on only coloring once per line (to keep your modifications performance boost) but updating the codeblock (black bg) + streamed text each streamed token when I find some time
(it's really a minor detail and no criticism, I just like the smoother codeblock gen)

Probably nothing you can really do if the model doesn't output a language, short of attaching another language model.

What do you mean exactly? When it doesn't provide a codeblock at all or if the codeblock has no specified language? Tbh the current langguessing for me at least is sufficient enough so that it almost gets it right everytime
Thank you :)

It's mostly that it makes some very bad guesses, I feel. A lot of them still get some coloring, but it's inconsistent from one block to the next. That's almost worse than no syntax highlighting, when keywords are highlighted in comments, or when two versions of the same Python code are formatted as two different languages, neither of which is Python.
I'm tempted to start writing a more intelligent language guesser, since you could improve on it a lot by adding a few extra rules, e.g.:

Lines starting with #  indicate Python, Bash, Ruby, YAML etc.
Lines ending in ; indicate C, Java, Go, Rust etc.
Lines starting in let  suggest JS, Rust, Haskell, etc.
f-strings are unique to Python (I think?)
etc.

Of course those are also very straightforward cues for a tiny transformer to pick up on.


Add entity with related entity that's not tracked by current context throw exception

Steps to reproduce
Considering this architecture
class Inner
{
    public Guid Id { get; set; }
    public string String { get; set; }
    public ICollection<Top> Tops { get; set; }
}

class Top
{
    public Guid Id { get; set; }
    public string Data { get; set; }

    public Inner Inner { get; set; }
    public Guid InnerId { get; set; }
}

And this mapping
var b = modelBuilder.Entity<Inner>();
b.HasMany(m => m.Tops).WithOne(m => m.Inner).HasForeignKey(m => m.InnerId);

 var i = modelBuilder.Entity<Top>();
i.HasOne(m => m.Inner).WithMany(m => m.Tops).HasForeignKey(m => m.InnerId);

Doing this operation  (extra simplified for demonstration purpose)
using (var c = new Ctx())
{
  c.Database.Migrate();

  Inner i = new Inner
  {
      String = "test",
      Id = Guid.NewGuid()
  };

  c.Add(i);
  c.SaveChanges();
}

var list = new List<Inner>();
using (var c = new Ctx())
{
   list.Add(c.Set<Inner>().First());
}

using (var c = new Ctx())
{
  Top i = new Top
  {
      Data = "test",
      Inner = list.First(),
      Id = Guid.NewGuid()
  };

  c.Add(i);
  c.SaveChanges();
}

Makes last SaveChanges throw exception "Primary key already exists". This is normal because the Inner object is not tracked by the last context. However, this kind of operation happens many times in our application. We don't keep a global context for all application, cause it will explode with too many entries to manage and really slowing the application.
Instead, we use Autofac to resolve our repository, and create a new Context to all resolve operation.
If, in previous example, I attach the Inner object to last context, I don't have any exceptions. Should it not be Dbcontext job to manage that for graph entities ? Simple check would be to see if Id is already set or not ... ?
Else, how can generically found a solution to attached already treated object to context with the good state in order to prevent entites graph to be persisted and throw a primary key exception ?
Further technical details
EF Core version:  1.1.0-preview1-final
Operating system: Windows 10 x64
Visual Studio version: VS 2015

@cdie There are several ways to handle this:

Query for the existing object in the context for the unit of work where you will make the changes.
If the existing object must come from an external source, then treat it as a disconnected entity and Attach it to the context for the unit of work before adding the new entity.
Use TrackGraph to determine the state for each entity in the graph. For example:

ctx.ChangeTracker.TrackGraph(
    i,
    n => n.Entry.State = n.Entry.IsKeySet ? EntityState.Unchanged : EntityState.Added);

About original issue, setting State (solution I chosse, thanks @ajcvickers for this) is now throwing InvalidOperationException.
In m y case, I retrieve my entity from a part of my app, and with a set of include, in another context, when trying to setting state, I have the exception. I work in a pub-sub situation, so my context is freshly created any time, but I sometimes use Include, which, in this case track this particular entity in this side.
Also note that my domain object IS completely fill when this happens, so i CANNOT query this particular thing within my context.
I've tried Context.Attach, same exception than setting state.
Exception detail :
The instance of entity type 'Specialite' cannot be tracked because another instance of this type with the same key is already being tracked. When adding new entities, for most key types a unique temporary key value will be created if no key is set (i.e. if the key property is assigned the default value for its type). If you are explicitly setting key values for new entities, ensure they do not collide with existing entities or temporary values generated for other new entities. When attaching existing entities, ensure that only one entity instance with a given key value is attached to the context.
Stack Trace :
à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(TKey key, InternalEntityEntry entry)
  à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(InternalEntityEntry entry)
  à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.StartTracking(InternalEntityEntry entry)
  à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState oldState, EntityState newState, Boolean acceptChanges)
  à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState entityState, Boolean acceptChanges)
  à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.PaintAction(EntityEntryGraphNode node)
  à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraph(EntityEntryGraphNode node, Func`2 handleNode)
  à Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.AttachGraph(InternalEntityEntry rootEntry, EntityState entityState)
  à Microsoft.EntityFrameworkCore.DbContext.SetEntityState(InternalEntityEntry entry, EntityState entityState)
  à Microsoft.EntityFrameworkCore.DbContext.SetEntityState[TEntity](TEntity entity, EntityState entityState)
  à Microsoft.EntityFrameworkCore.DbContext.Attach[TEntity](TEntity entity)
  à DALCore.EFRepository`1.<MarkForInsertOrUpdate>b__34_0(EntityEntryGraphNode e)

Please note that this entity as its IsKeySet to true.
I cannot figured out how to avoid this exception which is blocking my process.

@cdie That message indicates that there are two entity instances that have the same key. If these are intended to be the same entity--for example, one from a query, the other coming from somewhere else, then it will require them to be resolved to a single instance, possibly just choosing one, otherwise merging values from one into another.


Fix Android modals drawing under the StatusBar

Details

Removes the statusBarTranslucent prop from our BaseModal so that it doesn't draw under the status bar.
This prop is Android-only, so there are no changes on other platforms.
Fixed Issues

$ https://github.com/Expensify/Expensify.cash/issues/3900
Tests

Opened  a chat
Clicked on an attachment
The attachment modal wasn't drawn under the status bar

QA Steps

Open any chat
Click on an attachment
The attachment modal shouldn't be drawn under the status bar

Tested On

[ ] Web
[ ] Mobile Web
[ ] Desktop
[ ] iOS
[X] Android

Screenshots

Web

Mobile Web

Desktop

iOS

Android

https://user-images.githubusercontent.com/53711423/124971120-3263fc00-dfff-11eb-9183-1b8661902841.mp4

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to production         in version: 1.0.77-5🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Can't select any setting dropowns

I have just upgraded Chimera OS, and now all places in the settings where there is a dropdown item, or a selection item (a highlightable UI element with a down-pointing triangle), when I try to change the selection, the screen briefly flashes black. Previous versions of the OS worked here; a list of choices would be present and I could select from them.
This is pretty high priority for me as it makes the entire thing unusable. ChimeraOS chooses my Dualshock controller as the audio output and so I must select the correct audio output from the dropdown to hear anything.
If the hardware matters (I would expect not), this is running on a Udoo Bolt.

There have not been any OS upgrades for a few months now. What upgrade do you mean?

This happens if your controller was duplicated becouse of inputplumber (it very often happens with Dualsense but do not know about Dualshock). Check it in Controller settings. You can totally safe disable InputPlumber if you use HTPC via commands:
systemctl stop inputplumber
systemctl disable inputplumber

It has been a few months since I turned on my system.

Thanks @Vallefor those commands work for me.


Revert deleted ec2

Description
[Describe what this change achieves]
Issues Resolved
[List any existing issues this PR resolves]
Contribution Check List

[ ] All tests pass.
[ ] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable
[ ] New functionality has been documented in CHANGELOG.MD

          8 Errors

:no_entry_sign:
Please add a CHANGELOG.md file

:no_entry_sign:
A README.md is required for new templates

:no_entry_sign:
Please add labels to this Pull Request

:no_entry_sign:
Add info provider and service. aws/rs_aws_compute/aws_compute_plugin.rb

:no_entry_sign:
Add plugin version. aws/rs_aws_compute/aws_compute_plugin.rb

:no_entry_sign:
Add plugin short_description. aws/rs_aws_compute/aws_compute_plugin.rb

:no_entry_sign:
Add plugin documentation_link for readme. aws/rs_aws_compute/aws_compute_plugin.rb

:no_entry_sign:
Add plugin documentation_link for source. aws/rs_aws_compute/aws_compute_plugin.rb

          1 Warning

:warning:
Should this include readme changes

  Generated by :no_entry_sign: Danger


Map gets destroyed after calling map.getViewPort().resize()

Hello Milan,
hello guys,
Project: Displaying map data in an Angular 6 project
I have a problem here and I really don't know, where to look for the solution:
I am displaying a here map and everything is working quite well. I want the map to resize whenever the outer container grows or shrinks.
So, according to the docs, I have to call map.getViewPort().resize() for this functionality.
(see here developer docs: map-viewport-resize)
I call the function in my MapComponent like so:
this.hereMapsManager.getMap('fh.here-maps-0').then((map) => {
  map.getViewPort().resize();
});

This is working, the map gets resized accordingly. But, when I navigate to another page via the angular router and then navigate back, the map cannot be initialized anymore.
This does not happen if .resize() is not called prior.
Error Message:
Error: Uncaught (in promise): InvalidArgumentError: H.map.DataModel#add (Argument #0 [object Object]) Error at new C (https://js.api.here.com/v3/3.0/mapsjs-core.js:11:460) at B (https://js.api.here.com/v3/3.0/mapsjs-core.js:7:55) at Di.add (https://js.api.here.com/v3/3.0/mapsjs-core.js:180:380) at new Q (https://js.api.here.com/v3/3.0/mapsjs-core.js:300:269) at https://localhost:5001/vendor.js:143922:40 at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (https://localhost:5001/polyfills.js:2741:26) at Object.onInvoke (https://localhost:5001/vendor.js:58219:33) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (https://localhost:5001/polyfills.js:2740:32) at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (https://localhost:5001/polyfills.js:2491:43) at https://localhost:5001/polyfills.js:3225:34

Do you have any ideas?

So it looks like there is an issue with the code. I will create a pull request for this.
It is actually related to the loader being called when you run the getMap command, it isn't actually related the resize function.
So while we are waiting for the pull-request and for npm to be updated. There is a fairly easy workaround, if you don't mind violating TypeScript privacy settings of variables temporarily.
Instead of:
this.hereMapsManager.getMap('fh.here-maps-0').then((map) => {
  map.getViewPort().resize();
});

try:
this.hereMapsManager._maps.get('fh.here-maps-0').getViewPort().resize();

Works like a charm.

Hi guys,
sorry I have to reopen this issue. At first, it seems to be working now but unfortunately it is not.
Here is a screenshot of my application:

What I am basically doing is the following:
There is a sidebar-button and when this is clicked and the sidebar opens, I want the map to resize accordingly. This works.
Whenever I click one of the menu items on the left and navigate via router to another page and return back to the map, resizing does not work anymore.
The error is: After calling this.hereMapsManager.getMap('fh.here-maps-0'), the returned map is undefined. And also, I have the impression that there are two instances of the map somehow because I always end up hitting the breakpoint twice. This is not the case when resize is working!
I appreciate any help from you guys!
Best regards,
elvirus

That does sound like an error from loading the map twice. The problem before was that the map was being loaded twice in the module causing it to load some stuff into one map and the rest into the other which broke everything. However, that shouldn't be the case after the last fix. Are you doing anything at the component level that might be loading the map twice?
Do you have some code examples you could share, maybe a git repo, a plunker, or stackblitz where we could see the error? I am not sure how you are running into the error. I would love to help but I am busy the next couple of days but if I had an easy way to reproduce it I could squeeze in some time to take a look, but I don't have the potential hours it could take to find a bug.

@elvirusHDS I just realized what did you do. Please don't use mapManager to get map by name since it is for internal use only. Every time you destroy map host control (by navigating or ng-if condition change ...) map will be destroyed, and we internally need that map name so manager can dispose properly previously instantiated map, it's kind of reference counter.
Instead, use @ViewChild(MapComponent) private mapComponent and then call this.mapComponent.getMap().then(map => {.... do something with map...})

Hey Milan,
thank you so much! I was not aware of the fact that HereMapsManager is just internal!
With the way you provided, everything is working well now!
In one place I am using
... new H.map.Icon(...)
}```
Is this ok? I cannot instantiate an Icon too early because Angular needs some time before "H" is known, else I get a reference error. How should I do it the right way?

Thank you

Hi @elvirusHDS ,
Yes, that is the only way to ensure heremaps api is properly loaded and available to call.

Thank you!
CU later... ;-)


Problem: Submission results are hidden too far below the fold

When submitting a transaction the result appears below the fold, so it’s not obvious that anything has happened. It’s easy to sit here waiting for something to happen when the result already loaded below the fold. The result should probably display immediately under the button.
If the decoded xdr didn't display under the button, it would be more obvious when the result became available.
https://github.com/user-attachments/assets/2d8cbddb-8108-4dfd-b316-d0b4f799f723

For a second today when using it, I thought the decoded tx was the result from submission and submission occurred automatically. The placement of that decoded tx on that page is pretty confusing. Maybe it’d be better if there was a link to view the xdr for the tx on the view xdr page? Then the result can display immediately under the button.

@sdfcharles Do you think we should add some visual element close to the button indicating the submission occurred?

Discussed with @sdfcharles and @quietbits. We will automatically scroll the user to the result of the tx section.


Init Korean translation

1. Issue, if available:
2. Description of changes:

As the first Korean translation, index.html was translated.
add website/content/ko folder and Translate the index.html into Korean.

3. How was this change tested?
n/a
4. Does this change impact docs?

[ ] Yes, PR includes docs updates
[ ] Yes, issue opened: link to issue
[ ] No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Thank you very much! Feeling excited about having another language available for the webpage.
Curious, I don't see the content when I click preview.
https://deploy-preview-1124--karpenter-docs-prod.netlify.app/ko/

This is really cool. I'm a bit nervous about the maintainability of this in the long term. Our docs can and do evolve over time, so I'm a little bit wary of not being able to keep things accurate unless we have someone dedicated that can do this translation work. I'm not opposed to merging, but another option to consider is to write a blog in korean that translates karpenter's index. Blogs have a greater expectation of staleness while still being extremely useful for users. We would, of course, link to that from Karpenter's main page.

@ellistarn
Thank you so much for your opinion.
So far, I haven't seen many cases used in Korea.
But I think karpenter is a good project, and I want more people to use and contribute, so I want to translate little by little as of now.
By doing so, I believe that many people will participate in Korean translation while maintaining accurate content.
Which would be better to merge or write down a new blog?
I wonder how blogs should be conducted.

@felix-zhe-huang
I can't believe there was a function to see preview when building!
This is really cool!
There was a lack because it was awkward for me to contribute.
I'll check it again and upload it.
Thank you.

Does creating a blog mean creating a subdomain or purchasing and using a new domain?
I would appreciate it if you could give me an example or advice.
Enter "https://deploy-preview-1124--karpenter-docs-prod.netify.app/ko/" to make it work properly!
It was my first time playing Hugo, but it was fun.

Does creating a blog mean creating a subdomain or purchasing and using a new domain? I would appreciate it if you could give me an example or advice. Enter "https://deploy-preview-1124--karpenter-docs-prod.netlify.app/ko/" to make it work properly! It was my first time playing Hugo, but it was fun.

I'd look at something like medium (e.g. https://evgenibir.medium.com/aws-karpenter-6246c6efc718).


Minor refactoring

Signed-off-by: Sai Sindhur Malleni<EMAIL_ADDRESS>Description
Fixes

@dry923 this is tested locally and ready for review. Improves some logging, moves around some code to make it cleaner.

/rerun all

Results for SNAFU CI Test

Test
Result
Runtime

snafu/log_generator_wrapper
PASS
00:03:53


[Doc Improvement] [Add video] [2478962]

Docs Build status updates of commit 96690a4:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/concepts/build-and-test/share-to-teams-from-web-apps.md
:white_check_mark:Succeeded
View

msteams-platform/messaging-extensions/how-to/link-unfurling.md
:white_check_mark:Succeeded
View

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/bots/how-to/authentication/auth-aad-sso-bots.md
93
14
link
:white_check_mark:

msteams-platform/concepts/build-and-test/share-to-teams-from-web-apps.md
91
6
link
:white_check_mark:

msteams-platform/messaging-extensions/how-to/link-unfurling.md
93
5
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 900c4f1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/bots/how-to/authentication/auth-aad-sso-bots.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/build-and-test/share-to-teams-from-web-apps.md
:white_check_mark:Succeeded
View

msteams-platform/messaging-extensions/how-to/link-unfurling.md
:white_check_mark:Succeeded
View

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


Opening page has a tab/sample for "Async & Parallelism" - does perl6 / that sample illustrate parallelism or concurrency?

Opening page has a tab/sample for "Async & Parallelism" - does perl6 / that sample illustrate parallelism or concurrency?
https://perl6.org/
This sample:
start { sleep 1.5; print "hi" }
await Supply.from-list(<A B C D E F>).throttle: 2, {
    sleep 0.5;
    .print
}

# OUTPUT: ABCDhiEF

A cursory glance looks like that is concurrency (running multiple idling things in tandem vs sequentially).  This is not parallelism, which would require multi-threading and running across multiple cores (active processing/computing) at the same time.
Should this tab title be changed to "Async & Concurrency" ?

This is not parallelism, which would require multi-threading and running across multiple cores (active processing/computing) at the same time

I'm not sure what the example illustrates but "multi-threading and running across multiple cores at the same time" definitely exists in Raku 🤔


[Jest] : TypeError: _reactNativeMmkv.MMKV.set is not a function

Seems like the race condition again when using Jest for testing.
In the app, everything works well, but when I'm trying to test, Jest sees all methods as undefined.
Here are the screenshots:
Jest:

Flipper:

That has nothing to do with a race condition, Jest does not run on a real device so the native code does not exist. You have to mock MMKV. See: https://jestjs.io/docs/manual-mocks

Maybe, it will be useful for someone, who faces the same issue as me.
I create file react-native-mmkv.ts under the folder __mocks__
Here is the file:
// /**
//  * @format
//  */

const mmkvMock = {
  __INTERNAL_MOCK_STORAGE__: {},

  set: jest.fn(async (key, value) => {
    mmkvMock.__INTERNAL_MOCK_STORAGE__[key] = value;

    return null;
  }),

  getString: jest.fn(async (key) => {
    const result = mmkvMock.__INTERNAL_MOCK_STORAGE__[key]
      ? mmkvMock.__INTERNAL_MOCK_STORAGE__[key]
      : null;

    return result;
  }),

  delete: jest.fn((key: string) => _removeItem(key)),

  clearAll: jest.fn(_clearAll),
  getAllKeys: jest.fn(_getAllKeys),
};

async function _removeItem(key: string) {
  if (mmkvMock.__INTERNAL_MOCK_STORAGE__[key]) {
    delete mmkvMock.__INTERNAL_MOCK_STORAGE__[key];
  }
}

async function _clearAll() {
  mmkvMock.__INTERNAL_MOCK_STORAGE__ = {};

  return null;
}

async function _getAllKeys() {
  return Object.keys(mmkvMock.__INTERNAL_MOCK_STORAGE__);
}

jest.fn(() => mmkvMock);

module.exports = {
  MMKV: mmkvMock,
};

Hello,
@nazmeln  - I am working on integrating MMKV into a solution currently and am trying your solution for the Tests.  However, I am getting an error (using your mock file) when running the unit tests :
 TypeError: _reactNativeMmkv.MMKV is not a constructor
I have copied your code in to a mock folder with the name react-native-mmkv.  But when using it in a test with jest.mock() I get the above error.
Any thoughts or advice?
// Thanks Andrew

Hey, @Corliosity
Have you tried to use without jest mock()?
Could you try to import and use MMKV like in the example below?
If I'm not mistaken when you created a file under the mocks folder there's no reason for using jest.mock()
import {MMKV} from 'react-native-mmkv';

describe('Storage', () => {
  const key = 'key';
  const value = 100;
  const stringifiedValue = JSON.stringify(value);

  it('call getItem method of MMKV with key', async () => {
    await Storage.getItem(key);

    expect(MMKV.getString).toBeCalledWith(key);
  });

@nazmeln
I tried with both removing the mock and adding the import in the Test file and it fails on both still claiming that MMKV is not a constructor.

Add a wrapper provider to your App/Component
import { Provider } from 'react-redux';
import store from '../stores/store';

export const renderWithProviderTheme = (component: React.ReactElement) => {
  const { debug, ...rest } = render(
      <Provider store={store}>{component}</Provider>,
  );

  return {
    debug,
    ...rest,
  };
};

import { renderWithProviderTheme } from '...';

describe('Render with provider, store(mmk)', () => {
  test('Should render correctly component', () => {
    renderWithProviderTheme(
      <MyComponent/>,
    );
  });


What's the best practice for managing Dynamic tables through schemachange, versioned or repeatable?

** What are you trying to accomplish? **
We are using dynamic tables heavily. Decided to use schemachange for Gitlab CI pipeline.
I've structured the folders, but there's not much documentation about how to handle dynamic tables, should they be treated as versioned objects similar to simple SQL tables or repeatable objects like views?
** What options have you tried so far ? **
For now, I've structured them as versioned objects, but obvious concern is if there's any change to implementation logic of DT, need to create new version script for DT
But if I put them as repeatable, then problem is data may get deleted on next CI pipeline run.
Please provide guidance and recommended approach, it'll be helpful for others if this is included in the documentation of schemachange as well
@jamesweakley, @jeremiahhansen

Hi @mayur0207 ,
Based on my limited use of dynamic tables so far, changes to their implementation logic (the body of the query), are designed to be a drop+create action, regardless of which change management tool you're using. So for that reason, I think they're a good fit for versioned objects and I don't really see any other way.

Dynamic tables belong in repeatable scripts.
I don't believe you will experience any data loss on subsequent CI pipeline runs unless you make a change to the dynamic table script, and if you do make a change to the script, then you would want to recreate the dynamic table anyway.


Missing parallel samples

Issue description
Many blog posts and websites still refer to the old code gallery location for the parallel samples https://devblogs.microsoft.com/pfxteam/samples-for-parallel-programming-with-the-net-framework-4/
I've noticed that some samples can be found on the new gallery, however many are missing. I managed to find a repository on github that contained all the samples, which I promptly forked myself. You can find it over here.
It would be great to have these samples included in this repository together with the other parallel samples that are already there. They might require an update to dotnet core since many of them use WPF.

@CrispyDrone Do we need to add all the samples at https://github.com/CrispyDrone/parallel/tree/master/samples ? There are  28 folders.

@CrispyDrone Anyone working on this issue?

I'm not sure. I've actually not gone through all the samples myself. I just came across them because I am reading "Patterns of parallel programming: Understanding and applying parallel patterns with the .NET framework 4 and visual C#" by Stephen Toub.
I could have a look myself to see if I can port some of them, but I can't make any promises because I don't have that much free time right now.

Go Ahead
On Thu, Oct 29, 2020 at 2:35 PM CrispyDrone<EMAIL_ADDRESS>wrote:

I'm not sure. I've actually not gone through all the samples myself. I
just came across them because I am reading "Patterns of parallel
programming: Understanding and applying parallel patterns with the .NET
framework 4 and visual C#" by Stephen Toub.
I could have a look myself to see if I can port some of them, but I can't
make any promises because I don't have that much free time right now.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/dotnet/samples/issues/3885#issuecomment-718975210,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACVHOGBQ75NRZRQR6PNO2K3SNG7WZANCNFSM4RHT3RIQ
.


Change API

Remove redundant file.

Move standardization as asked in #396.

Add the variable xspec = {xlimits, xtypes} in every KRG based model.

Until now, only GEKPLS and RMTS-based models used xlimits. Now, it is more consistent.

Mixed integer only supports KRG based models now.

Add XSpec class in krg_utils

Add MixedIntegerKriging in EGO

The random seeds are back in EGO thanks to #397.

Update tests and rework RMTS tests.

Add XSpec class in krg_utils
Add MixedIntegerKriging in EGO

It's okay for me ! :) 🎉

Perfect, let's keep in touch !


Improve Emojis

Forking the emoji mod to add things like more emoji that are paginated would improve it by allowing players to express a broader range of ideas and emotions.

[x] Change 😷 to 😬
[ ] Support standard :emoji_name: syntax for making emoji
[ ] More emoji with pagination

I would love to have this pleading face emoji


Cleanup shuffle transport receive calls

Signed-off-by: Alessandro Bellina<EMAIL_ADDRESS>Closes #1024

build

build


UP-4784:  Make Favorites permissions-governed

https://issues.jasig.org/browse/UP-4784
Currently any authenticated user may favorite any portlet that he or she can render.
It would be better to control this behavior through permissions.  Some uPortal adopters will want to restrict what can appear in the Favorites portlet to certain portlets or groups of portlets.

Coverage decreased (-0.01%) to 22.987% when pulling 5ba472da0a492d4cb25732762207ad636d70cf08 on drewwills:UP-4784 into ab2f5f62db99263c252834e841379cc4780a53f6 on Jasig:master.

@cousquer -- c'est fait!

Coverage decreased (-0.007%) to 22.992% when pulling 8e5721934a39411c605bbbb2578d82d8d0c069ba on drewwills:UP-4784 into ab2f5f62db99263c252834e841379cc4780a53f6 on Jasig:master.

@apetro -- FWIW, SCCCD (a unit within CCC) want to have a portal with maybe 70% app-launchers, 30% other content.  They want to use Favorites to allow users to select their own most-used app-launcher style portlets only.

@apetro  @drewwills
I was thinking at these use cases :

restrict favorites to a type of portlets like CCC,
"one shot portlet" : (UPMC) we can lanch "a special event portlet" : it's life is just 6 hours and then it will never exist anymore. what happens if a user favorites this portlet during its existance ?

Coverage increased (+0.04%) to 23.041% when pulling 5b605974f1f7599fa3b32fc0b711b0823401fb34 on drewwills:UP-4784 into ab2f5f62db99263c252834e841379cc4780a53f6 on Jasig:master.

Coverage increased (+0.05%) to 23.046% when pulling 5b605974f1f7599fa3b32fc0b711b0823401fb34 on drewwills:UP-4784 into ab2f5f62db99263c252834e841379cc4780a53f6 on Jasig:master.


Re-export correct jsonx version from htx and rtx

Problem
htx and rtx don't expose the required jsonx version, forcing developers to track it themselves.
Proposal
Re-export the used jsonx version as part of htx and rtx for easier dependency management.

Track on https://github.com/FartLabs/rtx.

Resolved in #4.


Update iclosable_close_811482585.md

Adds information for C# projection.

@Jaiganeshkumaran : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@hickeys for review
Thanks.

@hickeys : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Server Rendering breaks when adding onEnter

I wanted to add authentication flow to my routes and it works great for the client but it breaks for server rendering maybe there is a problem with the match or something. It only breaks when I add the onEnter.
here is what I get sometimes (other times it just spins and times-out):
Warning: React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:
 (client) <noscript data-reacti
 (server) <div class="page" dat

My routes look like this:
export default function getRoutes(user) {

  function auth(nextState, replaceState, callback) {
    if (!user.isAdmin() && process.env.IS_BROWSER) {
      replaceState(null, '/error', {hello: 'test'});
    }
  }

  return (
    <Route component={App}>
    <Route
      component={Dash}
      name='dash'
      onEnter={auth}
      path='/secret-dashboard'
    />
    //... more routes
   </Route>
  );
}

seems that my problem is related to #2714. I tried the lazy match on the client and still no dice.

Uhh you're trying to redirect the user to a different route on the client only. That by construction won't work with server side rendering.

I tried on the server too but it didnt work either.


树图（径向树状图）可以在节点的连线上增加文字吗，并且连线可以增加箭头吗

What problem does this feature solve?
树图连线支持在线上显示文字，连线增加箭头
What does the proposed API look like?
关于连线显示label:比如在数据里可以增加一个关联值 relationship
children: [
{
id: 1001,
name: 'analytics',
children: [
{
id: 1002,
name: 'graph',
relationship:2,
}
]
关于箭头：例如可以在series里加个属性配置是否显示箭头，showArrow
series: [
{
type: 'tree',
showArrow:true,
data: [this.testData],
top: '18%',
bottom: '14%',
]

像这样

+1

可以
Pauli @.***> 于2022年2月28日周一 16:32写道：

+1
—
Reply to this email directly, view it on GitHub
https://github.com/apache/echarts/issues/15232#issuecomment-1054009773,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AM6TLQANAY5ISYYDIFPFQ63U5MXI3ANCNFSM47I7TUCQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

this question has been solved?  have any plan for it?


ui: enabling or disable links/switches should ask for confirmation

Hi,
I thought we had open this issue before, but I didn't manage to find the issue. We had cases in production in which people disabled a switch by accident and that created a lot of impact.
Thus, it would be nice to have a feature that asks for confirmation when enabling/disabling switches/interfaces/links.

I've just labeled it with future_release to next in the radar list.

A pop up modal similar to what's been used for switch deletion confirmation can meet this requirement you asked:


[FEATURE] A way to chat in team chat by just adding a '!' in ur message (from the general chat)

What is the feature request for?
A way to chat in team chat by just adding a '!' in ur message. This only works atm in team chat to general chat, but unfortunality tho not vice versa, I hope this get implemented in one of the future updates!
Relevant links
No response
Additional Information
No response

This feature has been implemented and will be included in the next update. Thank you for the suggestion.


feat: added support for indexing by legacy identifiers

Currently different parts of the verifiable credential ecosystem are being migrated from did:sov spec to did:indy. This PR adds support to index did:sov and did:indy by a common format.
ie this pr makes it so that identifiers such as these are equal: did:indy:sovrin:F72i3Y3Q4i466efjYJYCHM/anoncreds/v0/SCHEMA/npdb/4.3.4 and F72i3Y3Q4i466efjYJYCHM:2:npdb:4.3.4
I've tested these changes in bifold and they fix the issue with the mobile verifier and accepting proofs

I’m slightly nervous about this because the unique identifier portion of an Indy did:sov is supposed to be different from an Indy did:indyDID — the algorithm that generates the identifier when the DID is first registered is different between the two methods.  E.g. the F72i3Y3Q4i466efjYJYCHM part of the identifiers are not the same with “real” did:sov and did:indy.  I also see that the relatively flippant idea we accepted when creating did:indy of changing the the unique identifier algorithm because the new way was “better” was just a bad idea.  We should have left the embedded identifier the same and accepted both as equivalent — as is being done here.
So in theory — this fix should not work/be needed.  That said, I think what is happening is that somewhere, someone’s code is just doing an inapporpriate (but understandable) text transformation for DID Indy, and so there is no real harm in doing this.  The different identifier is generated at DID creation time, and once it is created, it can be put into a DID of either form and still be found.
So — all good from my perspective.  Others?

If you don't think this should go in the main anoncreds package, I can just make a specific npm package for these changes that only bifold will use as a patch. I was planning on this only being a temporary fix anyway while projects transition to did:indy.

I’m happy for it to go in — I think it makes good sense, a clever way to make this transition much easier.
My thoughts on the topic changed as I wrote my previous comment — as reflected in hesitation at the start, go for it by the end :-).  I would like @TimoGlastra @berendsliedrecht @andrewwhitehead to look at the code though, and weigh in on it.

The identifier is determend based on the nym transaction right? So i think we can do the transformation two ways in this case as a did won't change:

legacy to did:indy. If the anoncreds object was created with w legacy identifier it means the nym transaction version is 1
new did:indy: we can transform it to a legacy identifier as if the user has one with a legacy it works, we only need to transform did:indy dids with a legacy identifier though (but this should be detectable using a regex or something)

Curious how this solves your issue in Bifold @wadeking98, as you still need to make the query logic try to fetch both credentials.
Also i'm not sure what will happen if i put a cred with qualified identifiers in a presentation to a wallet that only supports unqualified and vice versa. It would seem to me there's more logic needed for this

Hi Timo, I think I need a bit more clarification on your proposed transformation method. I don't know if we can properly convert from legacy identifiers to the new did:indy ones because I don't know which ledger a legacy identifier is coming from. I think I'd have to import some functionality from indy-vdr in order to figure that out which seems likely to become messy.
This solves my issue in bifold because after the credo update some objects were being saved using the new did:indy identifiers and then fetched using the legacy identifiers. This changes makes it so that legacy and did:indy identifiers can be used interchangeably while we're transitioning away from legacy to did:indy identifiers across the ecosystem.

The identifier is determend based on the nym transaction right? So i think we can do the transformation two ways in this case as a did won't change:

legacy to did:indy. If the anoncreds object was created with w legacy identifier it means the nym transaction version is 1
new did:indy: we can transform it to a legacy identifier as if the user has one with a legacy it works, we only need to transform did:indy dids with a legacy identifier though (but this should be detectable using a regex or something)

Wasn't this type of transformation already supported in AFJ 0.4.0? At that time, we were limited to use did:indy only for object creation, but not when it comes to storage/resolution. What has changed in Credo 0.5.0/anoncreds-rs to prevent that?
Probably a good topic to discuss in tomorrow's Credo Contributors meeting!

Is this PR still needed?  Any progress on root cause discussions?

I think the credo changes should cover it, I'll just do some testing once those credo changes are available and then I'll close this if it all works out

Still running into the same issue after upgrading to 0.5.3 going to do some more testing to see if I can solve it in credo

@genaris @TimoGlastra cc: @andrewwhitehead  I'm not quite sure what changes you would like on this PR before we consider merging. Could you please clarify?


Split in & out transaction sql

https://github.com/snowplow/snowplow-rdb-loader/pull/1255 needs this separation

closing this PR as it is no longer needed in rdb loader


Support line grouping and editing for line-level annotations

see also https://github.com/Princeton-CDH/geniza/pull/1537
In this PR

Support for line and block level annotation editing in new "line mode"

Notes

The biggest change here is actually a new custom element that's just for editing an annotation label. That's because block-level annotations must not be otherwise editable in line mode. (Conversely, individual line-level annotations have no labels themselves and thus the label editor is disabled for them.)

It ends up having many methods of AnnotationBlock written in a similar, but not identical, way—unfortunately I ultimately couldn't easily leverage polymorphism.

In line mode, I disabled most functionality except for editing text contents of line-level annotations, and label content of block-level annotations—mostly to avoid dealing with complications and bugs that arise from the rest of the functionality. I figure we can add them back in one by one if/when needed in later passes.
There were some strange interactions between blocks and lines contained within, namely that the two were constantly z-fighting and it seemed random which would be selected when you clicked. So I decided just to not display the block-level annotations in Annotorious when in line mode, though their geometry is being stored.
Note that the cropped line image by each line of text from your original proof of concept is not included at this point.
Thoughts on whether this needs unit testing? My inclination is not to write them, since this may be somewhat provisional.

Is the new label object is so you can edit the label associated with a group of line-level annotations separately, since the block itself is not editable, only the lines?

Exactly right, thanks for describing this succinctly and clearly!


Checkbox validation with "required" works only the first time

Reproduction
https://formkit.link/f95a4040044675d4f8712c48bed94ffe
Describe the bug
When you use required on a checkbox it's only working when you didn't checked the checkbox before. After it was checked and unchecked the required validation is not complaining.
Environment
• OS: [e.g. iOS]
• Browser [e.g. chrome, safari]
• Version [e.g. 22]

Ok — this is super nuanced, but technically this is working as desired (we can then further discuss if it makes any sense) — a checkbox that has been checked and unchecked has its value set to false (by default you can change this with the on-value and off-value props).
However, false is a valid input indication so it passes the required check because it does have a valid value. If you want to check if a given checkbox has actually been checked you can leverage the accepted rule (https://formkit.link/e97ef74c02659403554449d194ab6def).
Now on the surface that is pretty confusing, so I'm not sure what the right path forward is here. I feel making false an empty value is not the right path forward, because then false could never fulfill the required rule and certainly it should sometimes.

I think the only problem with the current behaviour is that the value is not set to false by default, so to send a false value to the required rule you need to check and uncheck the box, that is odd because I can totally see a user saying:

if the first time I tried and the uncheck didn't work, why does it work the second time?

And if the behaviour for sending false values is meant to be it should be setted to false by default, otherwise it does not make sense that required rule let it pass a false value.

Yes, again a difficult question and I think there are different expectations in the usage. I was only wondering, but now I'm also not sure what's the best.

In general the approach to inputs has been "dont set a value until it is specified". So the default value all inputs is basically "undefined" unless otherwise noted. The only real exceptions to this are array-only values like multi-select and multi-checkbox, or repeater (not available yet). Those automatically change their empty default value to an empty array:
https://formkit.link/44b24fc9e336387b56b1a2d48b8c2379
So, as @GustavoFenilli is suggesting we could make another exception and set the default of an empty checkbox to the off-value.
That said — perhaps the most confusing thing is how the rule itself works because of the "lexical" nature of the rule. I think developers hear "Checkbox is required" in their mind when they type <FormKit type="checkbox" validation="required" /> — so it might be an improvement to make the default value the off-value but I think people will likely keep getting tripped up on this 🤔

I think changing the default to starting at the off-value and changing the default behaviour of required to need the on-value to be set, would make more sense, as if the person needs to send the both off-value and on-value he wouldn't add the required validation.

Sounds for me also like the best solution.

I'm seeing a similar odd behavior even with the accepted validation, not just required.
If I have a fresh form that the user hasn't touched, they can immediately submit it and the accepted validation doesn't even trigger. This hardly works for the intended purpose of things like "accept the terms" since the user can submit strait away without accepting them!
But if the user first checks the box, then unchecks it again, the error will begin to trigger the accepted validation.
The only way I can make it works right is using both required|accepted. Required will catch that first submit attempt if they haven't touched the checkbox at all, and accepted will catch others after that.
The documentation states: "The value must be yes, on, 1 or true. Useful for checkbox inputs — often where you need to validate if someone has accepted terms."
This ends up being misleading since it doesn't actually trigger unless the user first interacts with the checkbox or has required on as well.
I guess I'm just saying, accepted, should implicitly assume required, or at least make this known in the docs as a caveat.
This can be tested easily in the playground, just put a checkbox there with accepted as the validation and validation-visibility="live". The error won't show up until you check/uncheck the box. Then add "required|accepted" and you'll see the initial message says "is required" but if you check/uncheck it now says "please accept..." because it switched rules after interacting.

The only way I can make it works right is using both required|accepted.

Thanks @guyinpv, I tried accepted|required but it didn't work for me

Perhaps a good solution here would be to change the accepted rule to have skipEmpty set to false. You can actually do this yourself by importing it and re-assigning it in the config (see example), but we could also do this by default.
https://formkit.link/79fa0a8683df23f40762941a9e851f6b

Also worth mentioning you could use a rule hint to do this inline:
https://formkit.link/bf8115f77a6ec461825eaf8284a4cc62

Also worth mentioning you could use a rule hint to do this inline:

This works and is easiest to implement quickly. I still think greenhorns will fall into the same trap as me and assume the 'accepted' filter will automatically prevent the blank submission. It's not intuitive to think it wouldn't, especially since the docs say it only passes for "yes, on, 1, or true". Maybe add "also blank but only if they don't check and uncheck it first".
The docs do say that only 'required' works on empty fields, but it certainly feels to me like 'accepted' should too. At least in the context of a single checkbox. Not sure how it works for a grouping.


[WIP] Adding an option to remove seconds hand in clock activity

I'm taking a step by step process approach to this issue ( #885 )

I planned on adding the button, svg for the button, .ini file changes, Which I have done already
Adding the functionality, that will eventually hide the seconds hand

will start the 2nd step after changes in 1st step are approved, waiting for feedback

@llaske I have added the two images, they perform the switch between them but just once. However,I have given it a try. I request you to guide me on how to achieve the desired output i.e toggle effect of background image in here. And suggest changes if any.

@llaske all the changes requested have been made

The svg files are free/libre to use
-The onclick toggle works completely fine now

please review the changes, so that I can move to step 2

Both icons should be identical except for the seconds hand.
Icon should be localized before the vertical bar.

Icon should be localized before the vertical bar.

Can you please tell me what exactly, i have to do in here?(please pardon my repeated queries)

Regarding the icon, you should find one with the seconds hand and use a tool like Inkscape to create a copy of the icon without the seconds hand.
For the location of this new icon, you should put it before the hr tag in the index.html file.

Fixed in https://github.com/llaske/sugarizer/commit/0aa669ed630a83ef629b0b3bc6b36107d19edad8


Start fantasy draft for a fantasy league

Acceptance Criteria

The owner of the fantasy league can start the fantasy draft by moving the status of the fantasy league from PRE_DRAFT to DRAFT
current_draft_position for the fantasy league is set to 1

Tech Notes

Should have some checks to validate the league is in a proper state before performing this operation. Checks should consist of:

The fantasy league status is currently PRE_DRAFT
The fantasy league has as many ACCEPTED members as is the max number of teams.
The pro leagues that users can draft from is properly set

blocked on #200


Ref: To refacator the SignIn Page

To Refactor the signIn page acc. to the wireframes provided

@CoderKaushik going to take this issue.


Question: Table Data

Hi,
I'm trying to generate a view that just contains a row count of a table for reporting or a dashboard down the road, but I can't seem to find the right combination of setting to do this. I can get it to show up in a mouse over in a chart but not just the number. It's very possible that I'm over-complicating this.
Best Regards

That would be really cool to populate a dashboard, I also tried to do it without success, I think this needs a special plugin, something similar to the visualize plugin.

I see, so if you wanted to count relationships you could use an aggregation but since you want to count the whole table that's not going to work.
I am going to write a statistics plug-in plug-in that can deal with this and similar need, like pivot tables.

There is now a statistics plug-in, which supplies a statistic view template. In this configuration you choose the statistic/ aggregation function) you want (In your case Count, but could also be average, max, min etc) and the field this is applied to. Of course this makes more sense for averages etc that you have to choose the field you are averaging over. For counts it's less intuitive, but just pick any field e.g. id. If you pick a non-required field, the count will be the number of rows where the field has a value.

Great...Thank you!


Missing validation in Golang Delivery Service API

Delivery Service API validation that was done in the Perl API is missing from the current Golang API:

typeId is a valid Delivery Service type (see here)
missLat is a valid latitude (see here)
missLong is a valid longitude (see here)
initialDispersion must be 1 or greater (see here)
orgServerFqdn has a valid <protocol>://<fqdn>[:<port>] format (see here)

I'll handle item 5 in #2314 because it requires valid orgServerFqdn input at a minimum.


(&rest.Request{}).Stream() segfaults

The code below segfaults. It would be more convenient to return an error instead. This happens on version 2.0.0 and 3.0.0-beta.0.
package main

import (
	"k8s.io/client-go/rest"
)

func main() {
	req := &rest.Request{}
	req.Stream()
}

Request has an initializer.[1] Why aren't you using that?
Lots of go structs exhibit similar behavior. For example the following program panics:
package main

import "regexp"

func main() {
	(&regexp.Regexp{}).MatchString("")
}

[1] https://godoc.org/k8s.io/client-go/rest#NewRequest

I want to write a unit test for PodExpansion interface using FakePods. In client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go the following code returns &rest.Request{}
func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *rest.Request {
        action := testing.GenericActionImpl{}
        action.Verb = "get"
        action.Namespace = c.ns
        action.Resource = podsResource
        action.Subresource = "logs"
        action.Value = opts

        _, _ = c.Fake.Invokes(action, &v1.Pod{})
        return &rest.Request{}
}

This obviously results in a segfault as soon as my code calls Stream().

Ah, that's a different issue then.
Hmm, with a fake client, Stream isn't going to give you anything and I don't see a way to set the Request error without making an HTTP call. Does restructuring your test to take an io.ReadCloser work? I wouldn't see client-go adding setters for the error specifically for testing.

Unless you see another way, it looks like that I have to write my own version of FakePods with its own GetLogs() that returns my own fake.Request{}.

@andrejvanderzee did you end up implementing anything for this? I've run into the same issue you did, and (I think) come to the same conclusion you did above; I was hoping to use whatever you came up with :D


Error decompiling method com.codename1.components.ToastBar.updateStatus()V part 5

I get the following error when I try to build a project with the latest TeaVM 0.6.0-snapshot.  The same error occurs (except on a different class) with 0.5.0.
Project is https://github.com/shannah/teavm-060-error-decompiling-method
ToastBar class source seen here
[java] [ERROR] Failed to execute goal org.teavm:teavm-maven-plugin:0.6.0-SNAPSHOT:compile (web-client) on project KitchenSink: Unexpected error occured: Error decompiling method com.codename1.components.ToastBar.updateStatus()V part 5:
     [java] [ERROR] var @this as this
     [java] [ERROR] var @c as c
     [java] [ERROR] var @5 as s
     [java] [ERROR] var @6 as s
     [java] [ERROR] var @7 as s
     [java] [ERROR] var @13 as c
     [java] [ERROR] var @14 as s
     [java] [ERROR] var @15 as s
     [java] [ERROR] var @16 as oldText
     [java] [ERROR] var @20 as s
     [java] [ERROR] var @21 as s
     [java] [ERROR] var @22 as s
     [java] [ERROR] var @s as s
     [java] [ERROR] var @l as l
     [java] [ERROR] var @26 as oldText
     [java] [ERROR] var @27 as oldText
     [java] [ERROR] var @28 as oldText
     [java] [ERROR] var @29 as oldText
     [java] [ERROR] var @30 as oldText
     [java] [ERROR] var @31 as newLabel
     [java] [ERROR] var @32 as oldText
     [java] [ERROR] var @33 as newLabel
     [java] [ERROR] var @34 as oldText
     [java] [ERROR] var @36 as oldText
     [java] [ERROR] var @38 as oldText
     [java] [ERROR] var @40 as oldText
     [java] [ERROR] var @41 as oldText
     [java] [ERROR] var @43 as oldText
     [java] [ERROR] var @44 as anim
     [java] [ERROR] var @anim as oldText
     [java] [ERROR] var @49 as oldText
     [java] [ERROR] var @51 as oldText
     [java] [ERROR] var @52 as newLabel
     [java] [ERROR] var @53 as oldText
     [java] [ERROR] var @61 as oldText
     [java] [ERROR] var @62 as oldText
     [java] [ERROR] var @65 as oldText
     [java] [ERROR] var @67 as oldText
     [java] [ERROR] var @69 as oldText
     [java] [ERROR] var @71 as oldText
     [java] [ERROR] var @72 as newLabel
     [java] [ERROR] var @73 as oldText
     [java] [ERROR] var @74 as newLabel
     [java] [ERROR] var @76 as oldText
     [java] [ERROR] var @77 as oldText
     [java] [ERROR] var @78 as oldText
     [java] [ERROR] var @79 as oldText
     [java] [ERROR] var @81 as oldText
     [java] [ERROR] var @82 as newLabel
     [java] [ERROR] var @83 as oldText
     [java] [ERROR] var @85 as oldText
     [java] [ERROR] var @86 as oldText
     [java] [ERROR] var @87 as oldText
     [java] [ERROR] var @88 as newLabel
     [java] [ERROR] var @90 as oldText
     [java] [ERROR] var @91 as oldText
     [java] [ERROR] var @92 as oldText
     [java] [ERROR] var @oldText as oldText
     [java] [ERROR] var @95 as oldText
     [java] [ERROR] var @96 as oldText
     [java] [ERROR] var @97 as oldText
     [java] [ERROR] var @98 as newLabel
     [java] [ERROR] var @99 as oldText
     [java] [ERROR] var @100 as newLabel
     [java] [ERROR] var @101 as oldText
     [java] [ERROR] var @102 as s
     [java] [ERROR] var @103 as s
     [java] [ERROR] var @104 as s
     [java] [ERROR] var @105 as s
     [java] [ERROR] var @106 as oldText
     [java] [ERROR] var @107 as s
     [java] [ERROR] var @109 as newLabel
     [java] [ERROR] var @112 as oldText
     [java] [ERROR] var @113 as oldText
     [java] [ERROR] var @114 as oldText
     [java] [ERROR] var @newLabel as oldText
     [java] [ERROR] var @116 as oldText
     [java] [ERROR] var @117 as oldText
     [java] [ERROR] var @118 as oldText
     [java] [ERROR] var @119 as s
     [java] [ERROR] var @120 as s
     [java] [ERROR] var @121 as s
     [java] [ERROR] var @122 as s
     [java] [ERROR] var @124 as s
     [java] [ERROR] var @125 as s
     [java] [ERROR] var @126 as s
     [java] [ERROR] var @127 as oldText
     [java] [ERROR] var @129 as oldTextAreaSize
     [java] [ERROR] var @130 as s
     [java] [ERROR] var @131 as s
     [java] [ERROR] var @133 as newTexAreaSize
     [java] [ERROR] var @134 as s
     [java] [ERROR] var @oldTextAreaSize as s
     [java] [ERROR] var @136 as s
     [java] [ERROR] var @137 as s
     [java] [ERROR] var @138 as oldText
     [java] [ERROR] var @141 as l
     [java] [ERROR] var @145 as s
     [java] [ERROR] var @147 as c
     [java] [ERROR] var @152 as c
     [java] [ERROR] var @153 as s
     [java] [ERROR] var @154 as oldText
     [java] [ERROR] var @155 as oldText
     [java] [ERROR] var @156 as newLabel
     [java] [ERROR] var @157 as oldText
     [java] [ERROR] var @158 as newLabel
     [java] [ERROR] var @159 as s
     [java] [ERROR] var @160 as oldText
     [java] [ERROR] var @162 as s
     [java] [ERROR] var @167 as c
     [java] [ERROR] var @168 as s
     [java] [ERROR] var @169 as c
     [java] [ERROR] var @173 as s
     [java] [ERROR] var @174 as oldText
     [java] [ERROR] $0
     [java] [ERROR] goto $90
     [java] [ERROR] catch  goto $88
     [java] [ERROR] $1
     [java] [ERROR] $2
     [java] [ERROR] $3
     [java] [ERROR] $4
     [java] [ERROR] $5
     [java] [ERROR] $6
     [java] [ERROR] $7
     [java] [ERROR] $8
     [java] [ERROR] $9
     [java] [ERROR] $10
     [java] [ERROR] $11
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 499
     [java] [ERROR] @7 := field com.codename1.components.ToastBar.statuses @this as `Ljava/util/ArrayList;`
     [java] [ERROR] catch  goto $88
     [java] [ERROR] $12
     [java] [ERROR] $13
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 507
     [java] [ERROR] @s := invokeStatic `com.codename1.components.ToastBar$ToastBarComponent.access$500(Lcom/codename1/components/ToastBar$ToastBarComponent;)Lcom/codename1/components/ToastBar$Status;` @c
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 509
     [java] [ERROR] nop
     [java] [ERROR] @l := new com.codename1.ui.Label
     [java] [ERROR] @26 := invoke `com.codename1.components.ToastBar$Status.getMessage()Ljava/lang/String;` @s
     [java] [ERROR] if @26 === null then goto $16 else goto $17
     [java] [ERROR] catch  goto $88
     [java] [ERROR] $14
     [java] [ERROR] $15
     [java] [ERROR] $16
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 509
     [java] [ERROR] @27 := ''
     [java] [ERROR] at unknown location
     [java] [ERROR] goto $18
     [java] [ERROR] catch  goto $88
     [java] [ERROR] $17
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 509
     [java] [ERROR] @27 := invoke `com.codename1.components.ToastBar$Status.getMessage()Ljava/lang/String;` @s
     [java] [ERROR] goto $18
     [java] [ERROR] catch  goto $88
     [java] [ERROR] $18
     [java] [ERROR] catch  goto $88
     [java] [ERROR] catch  goto $88
     [java] [ERROR] $19
     [java] [ERROR] $20
     [java] [ERROR] $21
     [java] [ERROR] $22
     [java] [ERROR] $23
     [java] [ERROR] $24
     [java] [ERROR] $25
     [java] [ERROR] $26
     [java] [ERROR] $27
     [java] [ERROR] $28
     [java] [ERROR] $29
     [java] [ERROR] $30
     [java] [ERROR] $31
     [java] [ERROR] $32
     [java] [ERROR] $33
     [java] [ERROR] $34
     [java] [ERROR] $35
     [java] [ERROR] $36
     [java] [ERROR] $37
     [java] [ERROR] $38
     [java] [ERROR] $39
     [java] [ERROR] $40
     [java] [ERROR] $41
     [java] [ERROR] $42
     [java] [ERROR] $43
     [java] [ERROR] $44
     [java] [ERROR] $45
     [java] [ERROR] $46
     [java] [ERROR] $47
     [java] [ERROR] $48
     [java] [ERROR] $49
     [java] [ERROR] $50
     [java] [ERROR] $51
     [java] [ERROR] $52
     [java] [ERROR] $53
     [java] [ERROR] $54
     [java] [ERROR] $55
     [java] [ERROR] $56
     [java] [ERROR] $57
     [java] [ERROR] $58
     [java] [ERROR] $59
     [java] [ERROR] $60
     [java] [ERROR] $61
     [java] [ERROR] $62
     [java] [ERROR] $63
     [java] [ERROR] $64
     [java] [ERROR] $65
     [java] [ERROR] $66
     [java] [ERROR] $67
     [java] [ERROR] $68
     [java] [ERROR] $69
     [java] [ERROR] $70
     [java] [ERROR] $71
     [java] [ERROR] $72
     [java] [ERROR] $73
     [java] [ERROR] $74
     [java] [ERROR] $75
     [java] [ERROR] $76
     [java] [ERROR] $77
     [java] [ERROR] $78
     [java] [ERROR] $79
     [java] [ERROR] $80
     [java] [ERROR] $81
     [java] [ERROR] $82
     [java] [ERROR] $83
     [java] [ERROR] $84
     [java] [ERROR] $85
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 640
     [java] [ERROR] throw @169
     [java] [ERROR] $86
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 639
     [java] [ERROR] @172 := 0
     [java] [ERROR] field com.codename1.components.ToastBar.pendingUpdateStatus @this := @172 as Z
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 640
     [java] [ERROR] @173 := invokeStatic `com.codename1.ui.Display.getInstance()Lcom/codename1/ui/Display;`
     [java] [ERROR] @174 := new com.codename1.components.ToastBar$2
     [java] [ERROR] invoke `com.codename1.components.ToastBar$2.<init>(Lcom/codename1/components/ToastBar;)V` @174, @this
     [java] [ERROR] $87
     [java] [ERROR] $88
     [java] [ERROR] @169 := exception
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 637
     [java] [ERROR] @170 := 0
     [java] [ERROR] field com.codename1.components.ToastBar.updatingStatus @this := @170 as Z
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 638
     [java] [ERROR] @171 := field com.codename1.components.ToastBar.pendingUpdateStatus @this as Z
     [java] [ERROR] if @171 == 0 then goto $85 else goto $86
     [java] [ERROR] $89
     [java] [ERROR] $90
     [java] [ERROR] at 'com/codename1/components/ToastBar.java' 498
     [java] [ERROR] @23 := invoke `java.util.AbstractCollection.isEmpty()Z` @22
     [java] [ERROR] if @23 == 0 then goto $13 else goto $11
     [java] [ERROR] catch  goto $88: fromIndex(2) > toIndex(1)
     [java] [ERROR] -> [Help 1]
     [java] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.teavm:teavm-maven-plugin:0.6.0-SNAPSHOT:compile (web-client) on project KitchenSink: Unexpected error occured
     [java] 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
     [java] 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
     [java] 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
     [java] 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
     [java] 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
     [java] 	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
     [java] 	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
     [java] 	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
     [java] 	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
     [java] 	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
     [java] 	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
     [java] 	at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
     [java] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [java] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [java] 	at java.lang.reflect.Method.invoke(Method.java:483)
     [java] 	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
     [java] 	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
     [java] 	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
     [java] 	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
     [java] Caused by: org.apache.maven.plugin.MojoExecutionException: Unexpected error occured
     [java] 	at org.teavm.maven.TeaVMCompileMojo.execute(TeaVMCompileMojo.java:111)
     [java] 	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
     [java] 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
     [java] 	... 19 more
     [java] Caused by: org.teavm.ast.decompilation.DecompilationException: Error decompiling method com.codename1.components.ToastBar.updateStatus()V part 5:
     [java]   var @this as this
     [java]   var @c as c
     [java]   var @5 as s
     [java]   var @6 as s
     [java]   var @7 as s
     [java]   var @13 as c
     [java]   var @14 as s
     [java]   var @15 as s
     [java]   var @16 as oldText
     [java]   var @20 as s
     [java]   var @21 as s
     [java]   var @22 as s
     [java]   var @s as s
     [java]   var @l as l
     [java]   var @26 as oldText
     [java]   var @27 as oldText
     [java]   var @28 as oldText
     [java]   var @29 as oldText
     [java]   var @30 as oldText
     [java]   var @31 as newLabel
     [java]   var @32 as oldText
     [java]   var @33 as newLabel
     [java]   var @34 as oldText
     [java]   var @36 as oldText
     [java]   var @38 as oldText
     [java]   var @40 as oldText
     [java]   var @41 as oldText
     [java]   var @43 as oldText
     [java]   var @44 as anim
     [java]   var @anim as oldText
     [java]   var @49 as oldText
     [java]   var @51 as oldText
     [java]   var @52 as newLabel
     [java]   var @53 as oldText
     [java]   var @61 as oldText
     [java]   var @62 as oldText
     [java]   var @65 as oldText
     [java]   var @67 as oldText
     [java]   var @69 as oldText
     [java]   var @71 as oldText
     [java]   var @72 as newLabel
     [java]   var @73 as oldText
     [java]   var @74 as newLabel
     [java]   var @76 as oldText
     [java]   var @77 as oldText
     [java]   var @78 as oldText
     [java]   var @79 as oldText
     [java]   var @81 as oldText
     [java]   var @82 as newLabel
     [java]   var @83 as oldText
     [java]   var @85 as oldText
     [java]   var @86 as oldText
     [java]   var @87 as oldText
     [java]   var @88 as newLabel
     [java]   var @90 as oldText
     [java]   var @91 as oldText
     [java]   var @92 as oldText
     [java]   var @oldText as oldText
     [java]   var @95 as oldText
     [java]   var @96 as oldText
     [java]   var @97 as oldText
     [java]   var @98 as newLabel
     [java]   var @99 as oldText
     [java]   var @100 as newLabel
     [java]   var @101 as oldText
     [java]   var @102 as s
     [java]   var @103 as s
     [java]   var @104 as s
     [java]   var @105 as s
     [java]   var @106 as oldText
     [java]   var @107 as s
     [java]   var @109 as newLabel
     [java]   var @112 as oldText
     [java]   var @113 as oldText
     [java]   var @114 as oldText
     [java]   var @newLabel as oldText
     [java]   var @116 as oldText
     [java]   var @117 as oldText
     [java]   var @118 as oldText
     [java]   var @119 as s
     [java]   var @120 as s
     [java]   var @121 as s
     [java]   var @122 as s
     [java]   var @124 as s
     [java]   var @125 as s
     [java]   var @126 as s
     [java]   var @127 as oldText
     [java]   var @129 as oldTextAreaSize
     [java]   var @130 as s
     [java]   var @131 as s
     [java]   var @133 as newTexAreaSize
     [java]   var @134 as s
     [java]   var @oldTextAreaSize as s
     [java]   var @136 as s
     [java]   var @137 as s
     [java]   var @138 as oldText
     [java]   var @141 as l
     [java]   var @145 as s
     [java]   var @147 as c
     [java]   var @152 as c
     [java]   var @153 as s
     [java]   var @154 as oldText
     [java]   var @155 as oldText
     [java]   var @156 as newLabel
     [java]   var @157 as oldText
     [java]   var @158 as newLabel
     [java]   var @159 as s
     [java]   var @160 as oldText
     [java]   var @162 as s
     [java]   var @167 as c
     [java]   var @168 as s
     [java]   var @169 as c
     [java]   var @173 as s
     [java]   var @174 as oldText
     [java]   $0
     [java]       goto $90
     [java]       catch  goto $88
     [java]   $1
     [java]   $2
     [java]   $3
     [java]   $4
     [java]   $5
     [java]   $6
     [java]   $7
     [java]   $8
     [java]   $9
     [java]   $10
     [java]   $11
     [java]     at 'com/codename1/components/ToastBar.java' 499
     [java]       @7 := field com.codename1.components.ToastBar.statuses @this as `Ljava/util/ArrayList;`
     [java]       catch  goto $88
     [java]   $12
     [java]   $13
     [java]     at 'com/codename1/components/ToastBar.java' 507
     [java]       @s := invokeStatic `com.codename1.components.ToastBar$ToastBarComponent.access$500(Lcom/codename1/components/ToastBar$ToastBarComponent;)Lcom/codename1/components/ToastBar$Status;` @c
     [java]     at 'com/codename1/components/ToastBar.java' 509
     [java]       nop
     [java]       @l := new com.codename1.ui.Label
     [java]       @26 := invoke `com.codename1.components.ToastBar$Status.getMessage()Ljava/lang/String;` @s
     [java]       if @26 === null then goto $16 else goto $17
     [java]       catch  goto $88
     [java]   $14
     [java]   $15
     [java]   $16
     [java]     at 'com/codename1/components/ToastBar.java' 509
     [java]       @27 := ''
     [java]     at unknown location
     [java]       goto $18
     [java]       catch  goto $88
     [java]   $17
     [java]     at 'com/codename1/components/ToastBar.java' 509
     [java]       @27 := invoke `com.codename1.components.ToastBar$Status.getMessage()Ljava/lang/String;` @s
     [java]       goto $18
     [java]       catch  goto $88
     [java]   $18
     [java]       catch  goto $88
     [java]       catch  goto $88
     [java]   $19
     [java]   $20
     [java]   $21
     [java]   $22
     [java]   $23
     [java]   $24
     [java]   $25
     [java]   $26
     [java]   $27
     [java]   $28
     [java]   $29
     [java]   $30
     [java]   $31
     [java]   $32
     [java]   $33
     [java]   $34
     [java]   $35
     [java]   $36
     [java]   $37
     [java]   $38
     [java]   $39
     [java]   $40
     [java]   $41
     [java]   $42
     [java]   $43
     [java]   $44
     [java]   $45
     [java]   $46
     [java]   $47
     [java]   $48
     [java]   $49
     [java]   $50
     [java]   $51
     [java]   $52
     [java]   $53
     [java]   $54
     [java]   $55
     [java]   $56
     [java]   $57
     [java]   $58
     [java]   $59
     [java]   $60
     [java]   $61
     [java]   $62
     [java]   $63
     [java]   $64
     [java]   $65
     [java]   $66
     [java]   $67
     [java]   $68
     [java]   $69
     [java]   $70
     [java]   $71
     [java]   $72
     [java]   $73
     [java]   $74
     [java]   $75
     [java]   $76
     [java]   $77
     [java]   $78
     [java]   $79
     [java]   $80
     [java]   $81
     [java]   $82
     [java]   $83
     [java]   $84
     [java]   $85
     [java]     at 'com/codename1/components/ToastBar.java' 640
     [java]       throw @169
     [java]   $86
     [java]     at 'com/codename1/components/ToastBar.java' 639
     [java]       @172 := 0
     [java]       field com.codename1.components.ToastBar.pendingUpdateStatus @this := @172 as Z
     [java]     at 'com/codename1/components/ToastBar.java' 640
     [java]       @173 := invokeStatic `com.codename1.ui.Display.getInstance()Lcom/codename1/ui/Display;`
     [java]       @174 := new com.codename1.components.ToastBar$2
     [java]       invoke `com.codename1.components.ToastBar$2.<init>(Lcom/codename1/components/ToastBar;)V` @174, @this
     [java]   $87
     [java]   $88
     [java]     @169 := exception
     [java]     at 'com/codename1/components/ToastBar.java' 637
     [java]       @170 := 0
     [java]       field com.codename1.components.ToastBar.updatingStatus @this := @170 as Z
     [java]     at 'com/codename1/components/ToastBar.java' 638
     [java]       @171 := field com.codename1.components.ToastBar.pendingUpdateStatus @this as Z
     [java]       if @171 == 0 then goto $85 else goto $86
     [java]   $89
     [java]   $90
     [java]     at 'com/codename1/components/ToastBar.java' 498
     [java]       @23 := invoke `java.util.AbstractCollection.isEmpty()Z` @22
     [java]       if @23 == 0 then goto $13 else goto $11
     [java]       catch  goto $88
     [java]
     [java] 	at org.teavm.ast.decompilation.Decompiler.decompileAsyncCacheMiss(Decompiler.java:336)
     [java] 	at org.teavm.ast.decompilation.Decompiler.decompileAsync(Decompiler.java:295)
     [java] 	at org.teavm.ast.decompilation.Decompiler.decompile(Decompiler.java:219)
     [java] 	at org.teavm.ast.decompilation.Decompiler.decompile(Decompiler.java:208)
     [java] 	at org.teavm.backend.javascript.JavaScriptTarget.modelToAst(JavaScriptTarget.java:332)
     [java] 	at org.teavm.backend.javascript.JavaScriptTarget.emit(JavaScriptTarget.java:238)
     [java] 	at org.teavm.backend.javascript.JavaScriptTarget.emit(JavaScriptTarget.java:226)
     [java] 	at org.teavm.vm.TeaVM.build(TeaVM.java:397)
     [java] 	at org.teavm.tooling.TeaVMTool.generate(TeaVMTool.java:423)
     [java] 	at org.teavm.maven.TeaVMCompileMojo.execute(TeaVMCompileMojo.java:106)
     [java] 	... 21 more
     [java] Caused by: java.lang.IllegalArgumentException: fromIndex(2) > toIndex(1)
     [java] 	at java.util.ArrayList.subListRangeCheck(ArrayList.java:991)
     [java] 	at java.util.ArrayList.subList(ArrayList.java:981)
     [java] 	at org.teavm.ast.decompilation.Decompiler.closeExpiredBookmarks(Decompiler.java:532)
     [java] 	at org.teavm.ast.decompilation.Decompiler.getRegularMethodStatement(Decompiler.java:403)
     [java] 	at org.teavm.ast.decompilation.Decompiler.decompileAsyncCacheMiss(Decompiler.java:331)
     [java] 	... 30 more
     [java] [ERROR]
     [java] [ERROR] Re-run Maven using the -X switch to enable full debug logging.
     [java] [ERROR]
     [java] [ERROR] For more information about the errors and possible solutions, please read the following articles:
     [java] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Where did that project go?
I'm seeing the same error in a code snippet that has a break from a while loop

@shooshx what do you mean?
Can you please provide a project that reproduces your issue?

shannah above posted a link to a repository that shows the error
https://github.com/shannah/teavm-060-error-decompiling-method
but it's a dead link right now.
I'll try to isolate that bit of code, it's part of a rather big project

I see. It's a private repository, Steve gave me access to the repository, so I can clone it and reproduce the issue.


Enhancement: Decorator with a generator or iterable

Enhancement: Add support for providing the StackInABoxService
objects via a generator or iterable to the decorators
Enhancement: Add unit tests to validate

Completed Issue #32

Changes Unknown when pulling 8fca6ef3bc1e3471fd46e2d54cfc4b8d68ea23dc on BenjamenMeyer:enhancement_stack-decorator into ** on TestInABox:master**.


TEXT() function seems to convert numbers with the dot notation before converting to text

TEXT(123456789) results in  "123.456.789"

Thanks @gethrok .
I see what the issue is, there's extra formatting going on that in this case seems to be unnecessary. I'll have a new version without that shortly

New version Id: 04tRb000001sOuPIAU


Extend 'go get' to tests

The -t flag asks Go to fetch anything required for tests, which is more necessary now we have added testify.
I considered adding a go get line to the make tests target, but it's already unwieldy and not necessary if people do 'make' first.

This doesn't actually work. sigh
make clean; make; make tests
...
common/sched_queue_test.go:8:2: cannot find package "github.com/stretchr/testify/require" in any of:
...

bin/test in scope handles this nicely...
On Thursday, 25 June 2015, Matthias Radestock<EMAIL_ADDRESS>wrote:

This doesn't actually work. sigh
make clean; make; make tests
...
common/sched_queue_test.go:8:2: cannot find package "github.com/stretchr/testify/require" in any of:
...
—
Reply to this email directly or view it on GitHub
https://github.com/weaveworks/weave/pull/1015#issuecomment-115354251.

Fixed in 82da45a


Some teasers are not centered with margins and the image is extending to the left

not an issue. just checked the main site and this is how it is supposed to be.