METRON-1022: Elasticsearch REST endpoint

Contributor Comments
The PR adds a simple Elasticsearch REST endpoint that can execute simple queries.  This will serve as the foundation for building more complex Elasticsearch functions.
This can be tested with integration tests or in full dev.  To test is full dev, navigate to Swagger through Ambari and look for the "search-controller".  Here you can perform simple queries against data in Elasticsearch.  For example, posting this query should give back correct search results:
{
  "from": 0,
  "indices": [
    "bro", "snort"
  ],
  "query": "*",
  "size": 10,
  "sort": [
    {
      "field": "timestamp",
      "sortOrder": "desc"
    }
  ]
}

Note:  Swagger gives an example query with sortOrder = 'DESC'.  As of now this needs to be lowercase but I'm considering changing it to accept both.
I still need to come up with a good description and add it to the README so that is still pending.  Still wanted to put this up for review as it is fairly large and the first time any Elasticsearch-related code has been added to REST.  Looking forward to the community's feedback.
Pull Request Checklist
Thank you for submitting a contribution to Apache Metron.
Please refer to our Development Guidelines for the complete guide to follow for contributions.
Please refer also to our Build Verification Guidelines for complete smoke testing guides.
In order to streamline the review of the contribution we ask you follow these guidelines and ask you to double check the following:
For all changes:

[x] Is there a JIRA ticket associated with this PR? If not one needs to be created at Metron Jira.
[x] Does your PR title start with METRON-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
[x] Has your PR been rebased against the latest commit within the target branch (typically master)?

For code changes:

[x] Have you included steps to reproduce the behavior or problem that is being changed or addressed?

[x] Have you included steps or a guide to how the change may be verified and tested manually?

[x] Have you ensured that the full suite of tests and checks have been executed in the root incubating-metron folder via:
mvn -q clean integration-test install && build_utils/verify_licenses.sh

[x] Have you written or updated unit tests and or integration tests to verify your changes?

[x] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

[x] Have you verified the basic functionality of the build by building and running locally with Vagrant full-dev environment or the equivalent?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered by building and verifying the site-book? If not then run the following commands and the verify changes via site-book/target/site/index.html:
cd site-book
mvn site

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.
It is also recommended that travis-ci is set up for your personal repository such that your branches are built there before submitting a pull request.

I feel like this and the alert UI are building the transcontinental railroad from each end of the county, and are going to miss each other by a state.
How does this relate to that effort?  Have we done any coordination?
From that PR has discussion about NOT having an api direct to the realtime store, but rather abstracting that.  Should this endpoint not be an abstraction?

@merrimanr, I'm obviously feeling a little confused about what seems like 3 related things going on.  I don't mean to say this is the wrong approach.  Would you feel comfortable opening a [DISCUSS] thread on REST and or Real Time Search abstraction?

This is good work!  Thanks, Ryan.  We desperately need this abstraction.  I think the confusion may be that this PR is the general abstraction as well as a concrete implementation for one index.  I think, as we found with the indexing topology, that solr and ES won't be able to exist within the same project due to classpath issues (note we have 2 separate projects for solr and ES to isolate the dependencies completely).  I would think that the ES specific stuff may should be separated into a separate project (metron-rest-elasticsearch) where the abstraction should exist in metron-rest.

@ottobackwards just created a discuss thread on the general approach here.
@cestella you're absolutely correct.  We need a way for solr and ES to coexist.  A precedent has already been set in our indexing module but just want to throw another suggestion out there.  The downside of having separate modules that extend a common module is that automated deployment through Ambari MPack is more complex.  In fact, the current MPack doesn't support this right now.
Ideally we could leverage Spring to easily swap out the implementation at runtime but we would need both Solr and ES classes available on the classpath.  Would it be possible to add lucene classes (and possibly others) to the list of shaded classes in the elasticsearch-shaded module and create a similar module for Solr?  Or are there challenges I'm not thinking of and/or would it make things more confusing having different strategies in different parts of Metron?

What kind of isolation we do need?  The 777 introduces bundle loading gives classloader isolation
If they were loaded as plugins then it may work.

The core issue is that both Solr and Elasticsearch depend on Lucene.  Our version of Elasticsearch (2.3.3) is old so there are lots of Lucene class version conflicts when adding Solr as a dependency.  We have the same problem with Guava because some libraries we depend on use old versions of Guava.  The fact that Guava aggressively deprecates it's API makes it challenging.  We solved this by creating a "shaded" ES module that shades Guava so that it doesn't conflict with the version of Guava used by other libraries.
I'm not that familiar with bundle loading.  How would we use that here?

If the es or solr code was packaged as a bundle ( it with it's dependencies -> the es and solr libs ), the bundle system let you load each implementation as a plugin, and will create a new classloader for each.

The latest commit enforces a maximum page size.  A value of 1000 is set by default.  As it currently stands, you would need to add this property to the rest_application.yml file manually if it needed to be changed.  I will expose it as a property in Ambari as soon as METRON-1017 makes it in.

Looking at this implementation and working a bit on the PoC for index data mutation, I think the abstraction here isn't in the right place.  It's too bound-up in the REST layer whereas data access has traditionally existed further down in the abstraction layer.  It's a smell that metron-rest has to depend on ES at all.  That dependency should be provided at runtime entirely.  Also, we're going to need data access in batch as well and I'd like a sensible abstraction in place to enable that (e.g. merging modified records when reading as part of a Spark or MR job).
It seems to me that we need a DAO abstraction living in metron-writer or even metron-indexing for interacting with indices with the concrete implementations existing in metron-elasticsearch and metron-solr for ES and Solr respectively.  I think metron-rest should work entirely on abstract classes.  The REST layer should choose the DAO implementation via reflection and we should adjust the classpath in the shell script to include one of metron-elasticsearch or metron-solr.  In essence, I'm recommending something similar to how JDBC works where you choose your driver implementation via reflection (often) and work with base JDBC classes from there.

I just want to follow-up with something a bit more concrete suggestions.  I think the beginnings of an abstraction are there.    I'm looking for a DAO-like abstraction in metron-elasticsearch and the ServiceImpl in the REST layer uses the generic DAO implementation (which would not live in the REST layer so it's usable for lower level access) and the index impl is specified by at runtime.  The impl for the DAO would live in one of metron-elasticsearch or metron-solr.
Again, these are my $0.02 and just suggestions.

@cestella
https://issues.apache.org/jira/browse/METRON-956
Is the jira I had created on this topic.

@ottobackwards agreed, we should work to that goal.  I think we might want to make baby steps, though, and create the abstractions first and move to making it pluggable later.

Bear with me, @merrimanr, I am going to submit a PR with the DAO abstraction I was talking about so we can hash it out.  I started it in collaboration with @justinleet to ensure the ideas in the mutating indexed data and the meta alerts discuss threads made sense.  I'll just contribute the core abstraction here.  Unfortunately I won't be able to get around to it until Tuesday (vacation and all ;).

Ok, this appears to me like good infrastructure to base further index-oriented REST calls atop of.  I'm +1; good job, @merrimanr !

What do you think @ottobackwards?  Are you good with this?

I added this endpoint to the README with the latest commit and also tested on full dev with Kerberos enabled.

+1 - great job


RN-152 Add ability to create new group direct messages

This does a bunch of refactoring of CustomList alongside adding group messages. I was originally going to keep using CustomList for the MoreDirectMessages list, but I ran into some headaches with the CustomList maintaining an internal copy of the input which made it very difficult to have it rerender the rows when something external changed (like disabling unselected rows when the max number is selected or manually unselecting rows). I also extracted out the row components to be based around a common CustomListRow that works with both CustomList and the new CustomSectionList.
Note: There's a known issue that creating a new GM channel doesn't show the profile pictures at the top of the channel. I've filed a bug for that, but I think it's acceptable to leave in for 1.1
Ticket Link
https://mattermost.atlassian.net/browse/RN-152
Checklist

Has UI changes
Includes text changes and localization file updates

Device Information
This PR was tested on: iOS Simulator, Nexus 5 (Android 6.0.0)
Screenshots

@asaadmahmood I reduced the horizontal margin around the selected users and the "you can add X more users" message to match the search box, but the margin between items may be too large now. Thoughts?

I'm going to merge this and if @asaadmahmood has some feedback we can fix it later in another PR


Remove unused Parser72 class

Make sure our non-core cache stores aren't using it

I've already checked that. The method I used:  checked out all projects from the infinispan org that contain cachestore in their name (both public and private), into a local folder. Searched in all java and xml files for the text Parser72 and found 0 occurrences. Hopefully good enough.

Merged


ReferenceError: navigator is not defined

@scniro
Facing same issue in react-codemirror2
https://github.com/JedWatson/react-codemirror/issues/77
Issue addressed in this PR https://github.com/JedWatson/react-codemirror/pull/31
Can you please include in react-codemirror2.
Thanks

Interesting. Did you notice the bit one commented on regarding modes?

For what it's worth, require('react-codemirror') itself does not produce the error. Just including the modes does. So you could make that first require unconditional and render unconditionally as well.

Since this plugin does not include any modes, perhaps the check can be done on your end since it'll still be an issue even if I did implement this. I'd assume the following (example) could work for you...
if (typeof navigator !== 'undefined') {
  require('codemirror/mode/xml/xml');
  require('codemirror/mode/javascript/javascript');
  // [...]
}


bug: etcd crashes when reading CA key file

I am trying to set up an etcd cluster with server-to-server verification according to the Security Guide: https://github.com/coreos/etcd/blob/master/Documentation/security.md
However, etcd is unable to start because of a parsing error in my root CA certificate file.
This is what I find in the logfile with a CA file generated by etcd-ca (https://github.com/coreos/etcd-ca)
2015/04/16 19:20:52 etcd: asn1: structure error: tags don't match (16 vs {class:0 tag:2 length:1 isCompound:false}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 set:false omitEmpty:false} tbsCertificate @2
I also tried generating my own CA file with OpenSSL with these instructions: http://www.g-loaded.eu/2005/11/10/be-your-own-ca/ as recommended by the etcd security guide, but the same thing happens:
2015/04/16 18:57:45 etcd: asn1: structure error: tags don't match (16 vs {class:1 tag:11330 length:44 isCompound:false}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 set:false omitEmpty:false} certificate @4
It seems to be an issue in the go crypto library: https://github.com/golang/go/issues/6650
However, I can't imagine the security features in etcd exist without anyone ever getting them to work, so there must be a workaround or way to make things work. I am on Ubuntu 14.04. I can reproduce the problem by following the etcd security guide. I am willing to test anything or try any suggestions anyone may have.
Thank you

@ruphin Could you give command line that you use? Why do you think it is a CA file problem?
My guess is that the error may imply that your private key is encrypted instead of plain. Try etcd-ca export --insecure xxx instead?

I know for sure that it is the CA file, because if I do not set the ETCD_PEER_CA_FILE env variable etcd starts normally.
I use an upstart script that looks something like this (irrelevant lines are omitted):
env ETCD_DATA_DIR=/opt/etcd
env ETCD_NAME=<HOSTNAME>
env ETCD_PEER_CERT_FILE=/opt/etcd-certificates/peer.crt
env ETCD_PEER_KEY_FILE=/opt/etcd-certificates/peer.key
env ETCD_PEER_CA_FILE=/opt/etcd-certificates/ca.key

exec /usr/bin/etcd

If ca.key is an encrypted certificate key, etcd fails to start.
Log output: https://gist.github.com/ruphin/933933706248b63e62c8
If ca.key is an unencrypted certificate key, etcd fails to start as well.
Log output: https://gist.github.com/ruphin/abaa8abdf52df4d5d877
If I comment out out the ETCD_PEER_CA_FILE env, etcd starts normally.
Log output: https://gist.github.com/ruphin/28f9e16f5d45a188f928
I used the insecure export feature like you suggested to create an unencrypted file. I also tried creating CA certificates myself using OpenSSL. The certificates seem fine, only etcd crashes when reading them. I spent several hours trying every possible way to configure and generate certificates, with and without passwords, exporting them, unencrypting them manually, but etcd did not work with any of them.
I am wondering if there is anyone who has a working etcd setup with peer to peer certificate validation. I cannot imagine I am the only one running into this problem.

@ruphin i think you should give ca.crt instead of ca.key for ca file.

Brilliant.  :)
I don't know what it was but somehow the instructions made it seem like I had to give it the key file. I'll read again and see if I find why.


use default branch names in ci

weldx and jwst also failing on main: https://github.com/asdf-format/asdf-transform-schemas/actions/runs/4401949015


Feature/config changes

Coverage decreased (-14.3%) to 66.274% when pulling a0909aa78692b8c85081196d4bc4aa173e9a0530 on feature/config-changes into 6edcb5c88d51ab1d48566f9d08ae9d726e5287e4 on master.


TableRanges - with Multiple Tables per worksheet

I have been experimenting with putting multiple tables on the same worksheet using your MultipleTables example.
The issue i have is that if the tables have varying ranges. The subsequent tables have a range equal to the largest table range set to date and the visual presentation looks a bit odd.
Example 1 - Increasing Table size

Example 2 - Decreasing Table size

As you can see in the second example the second table has a range equal to the first of 12 rather than 10.
Its appears that possibly a variable is not reset for each new table and just increased if it's smaller than the new table range.
So not sure if this is a Export-Excel or Epplus or Excel issue.
Modified code below in case i am missing something
$xlfile = "testMultTables.xlsx"
rm *.xlsx
$r = Get-ChildItem C:\WINDOWS\system32
$BySize=@{}
$r | ForEach{ $BySize.($.extension)+=$.length }
$top10BySize = $BySize.GetEnumerator() |
ForEach{ [PSCustomObject]@{Name=$.key;Size=[double]$.value} } |
Sort size -Descending |
Select -First 10
$top12ByCount = $r.extension |
Group |
Sort count -Descending |
Select -First 12 Name, count
$top14ByFileSize = $r |
Sort length -Descending |
Select -First 14 Name, @{n="Size";e={$_.Length}} #,Extension,Path
#$r | Export-Excel $xlfile -WorkSheetname FullData
$test = "balh blah"
$Test | Export-Excel $xlfile -WorkSheetname FileInfo -StartRow 1 -StartColumn 1
$top10BySize     | Export-Excel $xlfile -WorkSheetname FileInfo -TableName ExtSize -StartRow 2
$test = "balh blah2"
$Test | Export-Excel $xlfile -WorkSheetname FileInfo -StartRow 1 -StartColumn 4
$top12ByCount    | Export-Excel $xlfile -WorkSheetname FileInfo -TableName ExtCount -StartRow 2 -StartColumn 4
$test = "balh blah3"
$Test | Export-Excel $xlfile -WorkSheetname FileInfo -StartRow 1 -StartColumn 7
$top14ByFileSize | Export-Excel $xlfile -WorkSheetname FileInfo -AutoSize -TableName FileSize -StartRow 2 -StartColumn 7
$ps = Get-Process | Where-Object Company
#$PS | Export-Excel $xlfile -WorkSheetname PSData
$test = "balh blah4"
$Test | Export-Excel $xlfile -WorkSheetname Handles -StartRow 1 -StartColumn 1
$ps |
sort handles -Descending |
select -First 12 company, handles |
Export-Excel $xlfile -WorkSheetname Handles -AutoSize -TableName Handles -StartRow 2
$test = "balh blah5"
$Test | Export-Excel $xlfile -WorkSheetname Handles -StartRow 1 -StartColumn 4
$ps |
sort PM -Descending |
select -First 10 company, PM |
Export-Excel $xlfile -WorkSheetname Handles -AutoSize -TableName PM -StartRow 2 -StartColumn 4 -Show

I'll check properly but IIRC when a table is setup it goes to the last row of the sheet so growing tables look fine and shrinking ones give the effect you describe.  If I got that right I'll see how easy or difficult it is to change it.

Quicker than I thought Round about line 700 in export-Excel.ps1 you have this
                $csr = $StartRow

                $csc = $StartColumn
                $cer = $ws.Dimension.End.Row
                $cec = $ws.Dimension.End.Column

So that's where you started inserting down to the bottom right corner of the sheet
Can you try changing the last two lines to
$cer = $row
$cec = $columnIndex

That should be the last cell inserted.  Easy to see why it was assumed that the last cell and bottom right corner would be the same
If that works I'll add it to the changes I'm doing for the next version - I'll need to look at other places where "bottom right corner" is present and needs changing :-)

Tried your suggested changes and although the range is "better" in some respects the output is a bit funky now.
have an extra column in each table range

and

Ok not sure what happened with the above but working ok now
I shutdown the ise i was using between changes i made to the export-excel file and that appears to have cleared the issue above - something hanging around i guess
Thanks look forward to the changes coming through on the next release etc

Just tested this against on a much larger dataset with $cec = ColumnIndex-1 and it generated 38 two column tables all with varying numbers of rows on the same sheet with no issues

Yes it does need to be columnindex -1    (column index gets incremented after each column is processed inserting cells so when the last cell is processed it is has got the extra 1 on it.)
I'll test doing this more widely.

I've checked in code to do all of this now, and your example has become one of the standard tests.

Cool - Thanks


Change config.json to config.js

Hi, my Wintersmith site is part of a larger web app.
I'd like to configure a dev/stage/prod.
To do that, I'll either need to juggle multiple config files, or make something to 'output' config.json for wintersmith.
Because I'm using Meteor, my webapp's settings are in another file anyways settings.json.
It would be awesome if I could access those settings via require(), and configuration on process.env
json is great for data in motion, but a PITA for data at rest.  A regular npm module format would be great:
module.exports = function() {
  return {
    // All the settings here
  }
}

Thanks!
Mike

You can use wintersmith programatically to pass in a config object you construct yourself. see https://github.com/jnordberg/wintersmith/blob/master/src/core/config.coffee and https://github.com/jnordberg/wintersmith/blob/master/src/core/environment.coffee#L290


Questions about the data

Hi, I'm confused about the 1.89 in Table 2d and 1.65 in Table 2e in your paper. I think they should be the same. Could you explain their difference?

Hi @863689877 , the difference lies in the upsampling method.
To make the comparisons as specific as possible, we use the simple bilinear upsampling for all methods in Table 2a-2d and also Table 1. You can find the relevant description in Section 4.1 (bottom right of page 5): ``Both methods
use bilinear upsampling in this comparison".
After Table 2e, all experimets are using the learned convex upsampling for the system-level comparisons. That is, the improvement from 1.89 to 1.65 comes from the learned upsampling module.
Besides, for ablation experiments, we train on Things for 200K iterations for fast experiments; while our final model is trained for 800K iterations (mentioned in Section 4 implementation details). Hope this can make it clear for the difference in Table 2e and Table 3 (w/o refinement) models (200K vs. 800K).

Thank you for your patient answer. Now I understand it.


Tests for exponential (dyadic *)

Optimizations for square root should be taken into account when writing tests for this


fix broken link

This repository is being archived. See https://github.com/jatoben/CommandLine/issues/111.


Set headless option when using firefox driver

Firefox supports running in headless mode as of version 56. This seems to be a desirable default compared to the current situation. MDN provides instructions here on how to enable headless mode when using Selenium: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode . Right now, jest-webdriver calls build() directly on the webdriver builder, without passing any options. We could maybe:

Detect when the browser string is "firefox" and append the headless option (maybe only if we detect a recent enough version ?)
Or, if this is deemed to be too intrusive, allow the user to customize the builder options (the user could then add the "headless" switch for Firefox manually)

PR #3 seems to enable this, I should have checked it before filing a new issue

Hi guys, is this possible to run Firefox or Chrome in headless mode?


Keywords in test case files with dots in name do not have precedence over imported keywords

I created resource res.robot like below:
*** Keywords ***
ok
	Log	This is external res.ok
res.keyword
	Log	This is external res.res.keyword

Then I created test suite Test.robot, which inside has keywords res.res.keyword and res.ok like below:
*** Settings ***
Resource	res.robot

*** Test Cases ***
Test Check
	res.ok
	res.res.keyword

*** Keywords ***
res.ok
	Log	This is internal res.ok
res.res.keyword
	Log	This is internall res.res.keyword

According to documentation http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#handling-keywords-with-same-names 1. Created as a user keyword in the same file where it is used. These keywords have the highest priority and they are always used, even if there are other keywords with the same name elsewhere.
What I see in the output is that RF call resource file keywords instead of corresponding internal, so I got message from res.robot file:
20161118 09:32:03.353 : INFO : This is external res.ok
20161118 09:32:03.355 : INFO : This is external res.res.keyword

Is it expected behaviour or a new issue?

Yeah, the code and docs don't agree here. You can see the current code here:
https://github.com/robotframework/robotframework/blob/master/src/robot/running/namespace.py#L285
We could easily fix the code, but the change would be backwards incompatible. I doubt it would in practice cause issues, but it would anyway be a bit safer to do it in RF 3.1 than 3.0.1. Alternatively we could fix the docs, but this would would be a pretty strange special case. My current thinking is that we should fix this in 3.0.1 but I need to think a bit more about possible consequences.

Ok, so as I understand the statement from documentation is what should be expected. Am I right?
I wonder if will be possible somewhere in the future to replace separation of libraries/resources from keyword names by different sign than dot, like i.e. C++ has this arrow sign ->.
Thanks for direct link to code where Robot Framework has implementation of search what to call.

Yeah, I would say that docs make more sense than the current functionality. We could document that if there is a dot in the name, we always first check is there a keyword that matches parent_name.keyword_name, but that sounds like a weird special case. Much easier if "local" keywords always have the highers priority.
I've also sometimes been thinking should we replace . as the marker between parent and keyword names but don't think that's worth the effort. Deprecating the current behavior would take lot of time and require lot of changes to tests everywhere. We should then also forbid using the new marker (e.g. -> or ::) in keyword names to make the usage really explicit.

After thinking this a bit more, I don't think there's any real backwards compatibility risk in the fix. If you currently have a keyword like foo.bar in a test case file and also resource foo with keyword bar, there's no way to call the keyword foo.bar in the test case file. I seriously doubt anyone would have such keyword, and even if someone would have, simply removing that unused keyword would fix the problem.

After implementing the change, our own tests showed that it can break tests using embedded arguments. For example, if we have keyword like ${embedded} args in a resource file and use it like 'resource.Embedded args, variable ${embedded}nowadays gets valueEmbeddedbut after the change it would getresource.Embedded`. This would be too big change in a minor version, and I'm not sure would that really make sense even in a major version. I guess the current implementation is actually the best one. We just need to document it better.

Scrap that! We can fix the original problem by always first looking does the test case file have the specified keyword. This can be done regardless does the keyword name have dot or not. If the test case file doesn't have such keyword, we can then first look from resources/libraries if the keyword has a dot. This implementation ought to cause no backwards compatibility problems and ought to also be in sync with the documentation.


Add Channel ID parametre to ForwardingHistoryRequest

It is currently impossible to request forwarding history for a single channel or a selection of channels.
I suggest adding IncomingChanID and OutgoingChanID (or IncomingChanIDs and OutgoingChanIDs) to ForwardingHistoryRequest.

I'll try to implement this tomorrow :)

Hi, I would like to work on this.


Support Split Pane via New Tab button

Description of the new feature/enhancement
There are two ways to add a pane:

from the profile menu
using the New Tab button.

A a user, I wish to have auto split pane in both cases. Currently, in version 1.1 preview, only the profile menu supports this.
Ways to add a paneFrom the profile menuUsing the New Tab button (the button with a plus symbol).Auto split pane supported?Alt+Click #5928 Not supported yet Suggestion: Alt+Click on the New Tab putton auto-splits using the default profile
References
#5928
#5025

I am shocked that we missed this.
Thanks.

/cc @carlos-zamora

That's fair, didn't think of that.


Dired multiple files removal fails.

Observed behavior
In dired trying to remove multiple files won't work and prints
Symbol's value as variable is void: +popup-ttl

For single files works fine. No problem there.
Expected behavior
Expected successfully remove all D tagged files.
Steps to reproduce

Create 2 test files
Open folder in dired
Press d to tag for delete
Press x to execute
Press y to accept deletion of multiple files

System information

Click to expand

OS: gnu/linux (x86_64-pc-linux-gnu)
Emacs: 26.1 (May 29, 2018)
Doom: 2.0.9 (develop d822560b34e514b6e1d1cc037f79e375ce349dd3)
Graphic display: t (daemon: nil)
System features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS LIBSYSTEMD LCMS2
Details:

elisp
  elc count: 0
  uname -a:  Linux amatelan-laptop 4.14.48-2-MANJARO #1 SMP PREEMPT Fri Jun 8 20:41:40 UTC 2018 x86_64 GNU/Linux
  modules:   (:feature eval (evil +everywhere) file-templates (lookup +devdocs +docsets) snippets spellcheck (syntax-checker +childframe) version-control workspaces :completion (ivy +fuzzy) :ui doom-dashboard doom-modeline doom-quit evil-goggles hl-todo nav-flash neotree (popup +all +defaults) vi-tilde-fringe window-select :emacs ediff electric imenu :tools magit rotate-text :lang (cc +irony) data emacs-lisp markdown (org +attach +babel +capture +export +present) sh :app :config (default +bindings +snippets +evil-commands))
  packages:  n/a
  exec-path: (/usr/local/bin /usr/bin /bin /usr/local/sbin /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl /usr/lib/emacs/26.1/x86_64-pc-linux-gnu)

My bad. This variable was accidentally removed in a recent major commit. I've brought it back in 0fd8e1d, which should resolve your issue. Let me know if that isn't the case!

Works fine now! Thanks!


Feat(Table): Add ability to expand

Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

The PR looks good. Please add a unit test. When it is ready, please update the status of the PR.


Update package.json

Codecov Report

Merging #144 (ec01e7e) into master (5bba889) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #144   +/-   ##
=======================================
  Coverage   44.11%   44.11%
=======================================
  Files           8        8
  Lines          68       68
  Branches        2        2
=======================================
  Hits           30       30
  Misses         38       38

Continue to review full report at Codecov.

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


BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback

hi.
first of all: thankx for sharing this library!!
i cannot start a server...it tries for a long time but nothing happens. my logcat says:
BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback
bye
phil

Can you post any code that you are using? What types of devices are you trying to connect?

hi
here is my code (it is in fact just your example):
https://bitbucket.org/just4phil/djvoter/src/f8bf7afd28a91f849d0755c27b88ff87351965a0/app/src/main/java/de/philweb/djvoter/MainActivity.java?at=master&fileviewer=file-view-default
it seemd that the message "getBluetoothService() called with no BluetoothManagerCallback" is just a standard warning that shouldnt be an issue....
but i wonder why  the method "start server" doesnt work... it just runs forever...
i tested it on my mobile google nexus 4 and on my tablet google nexus 10...both the same result....
i added 3 permissions in my manifest... is that right?
bye
phil

i just forked/cloned your repo and tried again..... but the same result.
create server only shows "waiting..." and nothing happens

That doesn't sound like it's doing anything wrong. That just means the device is waiting for a client to connect to the server. If you're just running my demo you should be able to hit create server on one device, then on the second device (also running my demo) click connect to server. Is that what you're doing or are you doing something different?

ok i see...
thats my fault.... now i understand :)
but i just saw that when i send a message from client to server then i cant send a message from server to client afterwards (and vice versa)

Yes I believe that is correct. I was having the same issue at times with the movement of data between client and server. It's something I'm looking into since the popularity of my library is growing.

I think I fixed it! Can you confirm?

See the latest release for the fix.


EDIFACT

I edited your code and included a beautifier for EDIFACT messages (https://en.wikipedia.org/wiki/EDIFACT), which are used e.g. in (mostly B2B) e-commerce. would you be interested in a pull request?
I would have to refactor the code a bit, but wouldn't necessarily do that just for me ;)

Send me pull request :)


Null safety migration

hi
First, I am so thankful for what you have done here.
I am just wondering is there any plane for migrating null-safety??
or any way to use this package with null-safety version of dart and flutter?

Hello @Geonjae-Joo !
Thanks for your kind words. 😊
We don't have much time these days for a null safety migration.
If you - or anyone interested - could work on it (see migration guide) I would review it asap.
Have a nice day!

We're about to ship null safety. If you can have a try: #6


IntelliJ not working properly with waff-query

What exactly does not work? You gave no information.


Uninstalling Mod Causes Crashes when Opening the Map.

Mod removed icons, disabled placement of icons.
After uninstalling it, reran fresh vanilla, game crashes when I open the map in that world (I assume due to null map file, or incorrect map file)
The only way to avoid crashes is to reinstall the mod and have no map icons, or the map is corrupted permanently.

Duplicate of #4
Resolved in 1.1.0


Reduce the number of timer-log example projects

We could just have a single polyglot timer-log example that can demo CDI, Spring, Kotlin & XML in the same app, instead of having separate projects for each.

@jamesnetherton I would like work on this, can you please assign this to me? Thanks!

@svkcemk do you mind if I take over this task? I'm thinking of adding a new example project but I like to reduce the existing number before I do it.

Sure @jamesnetherton no worries.

Fixed in https://github.com/apache/camel-quarkus-examples/pull/93.


Fix ReferenceError exception by passing :output-wrapper true to the compiler

When invoking the clojurescript compiler directly with :optimizations :advanced,
also set :output-wrapper true. lein-cljsbuild does this too, and without it
^:export'ed symbols don't get exported correctly.
See #78.

I think the bug boils down to this:
alessandro@june:/tmp$ cat a.js
console.log("this === global", this === global);
(function() {
console.log("this === global", this === global);
})()
alessandro@june:/tmp$ node a.js
this === global false
this === global true

Looking at the output of  :optimizations :advanced, it seems (the output is really horrible) like Google Closure expects this to be the global object, which without :output-wrapper true is instead {}.
Meh.

Awesome, thanks - I wasn't aware you were using the Serverless template.


secureTextEntry not working in Android

I have added this component and working fine in iOS but in android "secureTextEntry" is not working.
Any idea how it will work?

@AnchalMulchandani Hi, It's not really related to my package but to React-Native
https://github.com/facebook/react-native/issues/20606. I will leave it as reference to this issue.

@dsznajder  I want to secure the code in android also but its not working with "secureTextEntry".
AnyIdea how to get inputs in dot formate(secured formate) instead of number formate?

@dsznajder  I got the solution Thanks!
Its all about, "secureTextEntry" will not work with keyboardType={"email-address"} or keyboardType={"phone-pad"} and in package its by-default {"phone-pad"}, so it was not working..
I passed keyboardType={"numeric"}  and it works :)
Thanks

@dsznajder I got the solution Thanks!
Its all about, "secureTextEntry" will not work with keyboardType={"email-address"} or keyboardType={"phone-pad"} and in package its by-default {"phone-pad"}, so it was not working..
I passed keyboardType={"numeric"} and it works :)
Thanks

where did you add prop KeyboardType={"numeric"} , please a code snippet if possible

@dsznajder I got the solution Thanks!
Its all about, "secureTextEntry" will not work with keyboardType={"email-address"} or keyboardType={"phone-pad"} and in package its by-default {"phone-pad"}, so it was not working..
I passed keyboardType={"numeric"} and it works :)
Thanks

where did you add prop KeyboardType={"numeric"} , please a code snippet if possible

Here is the way  i have used-
<OtpInputs
                                isReset={isReset}
                                clearTextOnFocus={true}
                                handleChange={code => this.changeValue('OTP', code)}
                                numberOfInputs={4}
                                keyboardType={"numeric"} secureTextEntry ={true}

                            />

i just overwrite its keyboardtype property, as bydefault it's value is 'phone-pad'.

@dsznajder I got the solution Thanks!
Its all about, "secureTextEntry" will not work with keyboardType={"email-address"} or keyboardType={"phone-pad"} and in package its by-default {"phone-pad"}, so it was not working..
I passed keyboardType={"numeric"} and it works :)
Thanks

Thank you so much its perfect answer.


Verify signed message

Hi,
Is there any node-independent methods/library available to generate a  random key pair(private and public key), sign a message, and verify a signed message?
I got the node-dogecoin package but it requires the node to connect with. Is there any other without node?

I answered your question yesterday here: https://github.com/dogecoin/dogecoin/issues/2379#issuecomment-877218994


Add Makefile.dist for release binaries in Travis-CI

Continuation of #154:

Hook Makefile.dist into Travis-CI
Skip compression of artifacts since it's just one file per arch
Use karalabe/xgo again to get cross-compile with PKCS11 (CGO must be enabled)
Skip builds for BSD platforms since it's not supported by xgo at the moment
Skip 386 build for linux/darwin (shouldn't bother with 32-bit on those platforms)

In effect, this builds linux/amd64, darwin/amd64, windows/{386,amd64} (with 5.1 API level).

Note I changed this to skip the _compress step, since the binaries are single files anyway I don't think it's worth bundling them into zip files:
❯❯❯ tree dist
dist
├── ghostunnel-v1.2.0-rc.1-darwin-386
├── ghostunnel-v1.2.0-rc.1-darwin-amd64
├── ghostunnel-v1.2.0-rc.1-freebsd-386
├── ghostunnel-v1.2.0-rc.1-freebsd-amd64
├── ghostunnel-v1.2.0-rc.1-linux-386
├── ghostunnel-v1.2.0-rc.1-linux-amd64
├── ghostunnel-v1.2.0-rc.1-netbsd-386
├── ghostunnel-v1.2.0-rc.1-netbsd-amd64
├── ghostunnel-v1.2.0-rc.1-openbsd-386
├── ghostunnel-v1.2.0-rc.1-openbsd-amd64
├── ghostunnel-v1.2.0-rc.1-sha256sums.txt
├── ghostunnel-v1.2.0-rc.1-windows-386.exe
└── ghostunnel-v1.2.0-rc.1-windows-amd64.exe

Coverage remained the same at 90.487% when pulling 2d5a593c0f86e38a711bd7e36b44df5dfb3ed7b3 on cs/dist into 1c904cf1c9566e00de1229963a82119782d8d853 on master.

@ewdurbin Does this address #152 sufficiently, or do you think there is anything missing?

Awesome!!! Thank you @csstaub glad I could help/inspire.


Allow namespace and hset/zadd style

redisdown has a fun option for allowing a namespace prefix and uses hset + zadd to create entries.
They're useful options and require little code to implement.
See:
https://github.com/hmalphettes/redisdown/blob/master/index.js

I'm not actively working on this project at the moment but I'd happily merge a pull request to add it.


FR: Ability to delete a user

I ran through the feature list and took account of what's been done so far.

[ ] Logically delete (aka disable)

[X] User login is disabled
[X]  Doesn't show up in drinker list (ie in tablet)
[ ]  Maybe disable the drinker stats page & don't linkify the profile
[X] Drinks, session contributions, stats, etc, are preserved

I like the fact that the stats page and everything is still visible for disabled drinkers. Kind of nostalgia for those that are gone. 🤷

[ ] Actual delete

[ ] Reassign all drinks to "guest"

[ ] Recomputes all stats and sessions
[ ] This can be very expensive

[ ] Delete all photos (and any other per-user assets down the road)
[ ] Disable the account

As proposed, in both cases the User record isn't ever deleted: disable is reversible, and for delete, it prevents the username from being reclaimed. (We could visit that topic separately, but I haven't thought through what it would mean for other clients like the app.)

For the actual delete process if we go through all the effort to reassign all the drinks and delete all the photos, why wouldn't we just delete the User? There is no data left associated to it, so it doesn't have much value. If the User is gone and the human returns and wants a new 'kegbot life', they can start fresh with a new registration.


ps vue ios app

@mitchellkrogza what was added to the list recently? i get error when i open this app on my iphone.
auth error ps vue is unable to connect to authentication server. my only option is exit

ok problem fixed


Update overview.md

Updated Brazil South zone HA

@sunilagarwal

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


⚠ GitLab Server has degraded performance

In ff9c026, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 9121 ms

Resolved: GitLab Server performance has improved in e63994d.


Is the outgoing call deeplink now working properly?

When I inquired about the following issue, I received an answer that "Generate a deep link to a call" does not work on mobile devices.
The note is now missing from the documentation.
Am I correct in my understanding that we have added support for mobile devices?
https://github.com/MicrosoftDocs/msteams-docs/issues/3500

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

ID: 45541337-ecd7-5cf6-cbe4-3f0d2f39aa79
Version Independent ID: 6b4203f0-2844-06c9-eaa3-9cc03e6f76c0
Content: Create deep links - Teams
Content Source: msteams-platform/concepts/build-and-test/deep-links.md
Service: msteams
GitHub Login: @surbhigupta
Microsoft Alias: lajanuar

@1411381 - Yes, Now deep link call is supported for mobile devices. Please check it with the updated teams version.

Thanks for the confirmation.
Glad to see it is supported on mobile devices.


Mobile Responsive using CSS

Right now, we do not have responsiveness on our website. It will be great feature, if we can make it responsive.

@imabp is this issue solved

Yes, closing the issue


AWS aws.rds_get_list requires markers, params and action to be set

I suspect this is the case with several other AWS actions as well as I've seen it a fair amount.
In particular the aws.rds_get_list action requires markers, params and an action to be set before execution when it shouldn't. According to boto docs, it should only require access_key, secret and region which are all in config.yaml.
Patrick suggested I submit this issue as he is looking into it.

Tracking this against new repo location https://github.com/StackStorm-Exchange/stackstorm-aws/issues/40


Build issue on openSUSE tumbleweed: nanodmx.cpp

Hi Massimo, hi everybody,
I'm trying to re-sync to the latest qlcplus git after updating my laptop, and I've been running into a number of build issues.
System is openSUSE tumbleweed of 2015-01-15, i.e. pretty recent.
g++ -c -pipe -Werror -Wno-unused-local-typedefs -g -Wall -W -D_REENTRANT -fPIC -DQT_WEBKIT -DLIBFTDI1 -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I../../interfaces -I../../midi/common -I/usr/include/libftdi1 -I/usr/include/libusb-1.0 -I. -o nanodmx.o nanodmx.cpp
nanodmx.cpp: In member function ‘QString NanoDMX::getDeviceName()’:
nanodmx.cpp:84:52: error: invalid use of incomplete type ‘libusb_device {aka struct libusb_device}’
if (dir.startsWith(QString::number(m_device->bus->location)) &&
^
In file included from qlcftdi.h:36:0,
from dmxusbwidget.h:24,
from nanodmx.h:25,
from nanodmx.cpp:20:
/usr/include/libftdi1/ftdi.h:345:12: error: forward declaration of ‘libusb_device {aka struct libusb_device}’
struct libusb_device *dev;
^
Makefile:312: recipe for target 'nanodmx.o' failed
I'm not using a nanodmx, so I'm currently working around the issue by commenting out the corresponding lines in the Makefile.
Best,
Jörn

Hello, thanks for the report. There are two API-incompatible version of libFTDI currently out there. You're using the 1.0-branch of libFTDI. I once fixed it for the plugins that existed at that time (#287) but was unable to fix build for the plugins introduced afterwards (tried several times though).

kripton, thanks for the feedback. I'm confused, though. This is what I have installed (from openSUSE tumbleweed repository):
i | libftdi1       | package | 1.2-1.1 | x86_64 | repo-oss  name: libftdi1
i | libftdi1-devel | package | 1.2-1.1 | x86_64 | repo-oss   name: libftdi1-devel
And according to http://www.intra2net.com/en/developer/libftdi/, this is indeed the most recent API version. Or has it been forked somewhere else and a slightly incompatible 2.0 version been released?

nettings, you are using 1.0 version of libftdi. QLC+ was written using 0.x version. As I understand it,  what you see are differences between 0.x and 1.x version.

This is related to libusb and not libftdi. Support for libftdi 1.x is there since a while now.
It seems nanodmx.h cannot resolve the libusb include, even though it finally includes qlcftdi.h.
Check if libusb-devel package is in the system (it's written in the build instructions)
Or try to add this to nanodmx.h includes:
#if defined(LIBFTDI1)
#include <unistd.h>
#include <libusb.h>
#endif

Massimo, thanks for your help. The libusb-devel package is installed, and in fact also a libusb.h header in /usr/include/libusb-1.0/libusb.h. But even your suggested addition does not fix the issue. I re-installed both libusb and libftdi1 including devel packages, and even tried a custom-built libftdi1, but they all show the same error message.

OK, then try this. Add 'struct' where libusb_device is used.
So from
libusb_device ...
to
struct libusb_device ...
These are the places:
https://github.com/mcallegari/qlcplus/blob/master/plugins/dmxusb/src/nanodmx.h#L71
https://github.com/mcallegari/qlcplus/blob/master/plugins/dmxusb/src/nanodmx.cpp#L31
https://github.com/mcallegari/qlcplus/blob/master/plugins/dmxusb/src/qlcftdi-libftdi.cpp#L116
https://github.com/mcallegari/qlcplus/blob/master/plugins/dmxusb/src/qlcftdi-libftdi.cpp#L117

Tried that already, but it doesn't seem to be the root cause. Here's the compiler output with all types marked as struct:
nettings@hoppetosse:/local/build/qlcplus/plugins/dmxusb/src> make
g++ -c -pipe -Werror -Wno-unused-local-typedefs -g -Wall -W -D_REENTRANT -fPIC -DQT_WEBKIT -DLIBFTDI1 -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I../../interfaces -I../../midi/common -I/usr/include/libftdi1 -I/usr/include/libusb-1.0 -I. -o nanodmx.o nanodmx.cpp
nanodmx.cpp: In member function ‘QString NanoDMX::getDeviceName()’:
nanodmx.cpp:84:52: error: invalid use of incomplete type ‘struct libusb_device’
if (dir.startsWith(QString::number(m_device->bus->location)) &&
^
In file included from qlcftdi.h:36:0,
from dmxusbwidget.h:24,
from nanodmx.h:25,
from nanodmx.cpp:20:
/usr/include/libftdi1/ftdi.h:345:12: error: forward declaration of ‘struct libusb_device’
struct libusb_device *dev;
^
Makefile:312: recipe for target 'nanodmx.o' failed
make: *** [nanodmx.o] Error 1

I've got another idea.
It seems that in qlcftdi.h, libusb.h is included after ftdi.h
Try to build again by moving these lines
 #if defined(LIBFTDI1)
  #include <unistd.h>
  #include <libusb.h>
#endif
at the beginning of the file (after #include <QMap>)

g++ -c -pipe -Werror -Wno-unused-local-typedefs -g -Wall -W -D_REENTRANT -fPIC -DQT_WEBKIT -DLIBFTDI1 -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I../../interfaces -I../../midi/common -I/usr/include/libftdi1 -I/usr/include/libusb-1.0 -I. -o nanodmx.o nanodmx.cpp
nanodmx.cpp: In member function ‘QString NanoDMX::getDeviceName()’:
nanodmx.cpp:84:52: error: invalid use of incomplete type ‘libusb_device {aka struct libusb_device}’
if (dir.startsWith(QString::number(m_device->bus->location)) &&
^
In file included from qlcftdi.h:32:0,
from dmxusbwidget.h:24,
from nanodmx.h:25,
from nanodmx.cpp:20:
/usr/include/libusb-1.0/libusb.h:901:8: error: forward declaration of ‘libusb_device {aka struct libusb_device}’
struct libusb_device;
^
Makefile:312: recipe for target 'nanodmx.o' failed
make[3]: *** [nanodmx.o] Error 1
make[3]: Leaving directory '/local/build/qlcplus/plugins/dmxusb/src'
Makefile:39: recipe for target 'sub-src-make_default-ordered' failed
make[2]: *** [sub-src-make_default-ordered] Error 2
make[2]: Leaving directory '/local/build/qlcplus/plugins/dmxusb'
Makefile:52: recipe for target 'sub-dmxusb-make_default' failed
make[1]: *** [sub-dmxusb-make_default] Error 2
make[1]: Leaving directory '/local/build/qlcplus/plugins'
Makefile:335: recipe for target 'sub-plugins-make_default-ordered' failed
make: *** [sub-plugins-make_default-ordered] Error 2
same old problem. I looked at /usr/include/libusb-1.0/libusb.h:901:8, and this is what I find:
/* libusb */
struct libusb_context;
struct libusb_device;
^---- this is a forward declaration, no? so where is the actual declaration? is that what we have to include?
struct libusb_device_handle;
struct libusb_hotplug_callback;

Well, a little down below (around line 962 of libusb.h) there's also:
typedef struct libusb_device libusb_device;
Maybe we need to add it somewhere before including libusb.h....just guessing though

Hello everyone, I have the same issue on Fedora 21 with qlcplus-4.8.3
In nanodmx.cpp:84 replace m_device->bus->locator by  libusb_get_port_number(m_device)
In qlcftdi-libftdi.cpp:152 add
struct libusb_device_descriptor dev_descriptor;
libusb_get_device_descriptor(dev, &dev_descriptor);
then replace dev->descriptor by dev_descriptor
I'm working on it and I'll try to send you a patch with "#ifdef LIBFTDI1"  tomorrow.
I hope it is the good values cause I can't test now with real device

I sent my patch with the Pull Request #443
I hope it's good :)

Thanks Axel. I've got the nanoDMX but not a system with FTDI1, so unfortunately I cannot test the patch.
If anyone reading this thread has both, please report feedbacks, thanks.
I'll merge the patch anyway cause at least it allows QLC+ to build on those systems.

Thanks for the patch Alex. While I don't have a nanoDMX (I usually connect my anyma uDMX clone but have access to ENTTEC USB DMX Pro) but libFTDI1 here, I cannot currently test you patch:
webaccess.cpp: In member function 'mg_result WebAccess::beginRequestHandler(mg_connection*)':
webaccess.cpp:262:48: error: 'WEBFILESDIR' was not declared in this scope
       if (sendFile(conn, QString("%1%2%3").arg(WEBFILESDIR).arg(QDir::separator()).arg(clUri), "text/css") == true)

Are you sure your build error is linked to the libftdi1 ?

No, my one's not but it makes testing the actual patch harder

Kripton, this is usually case for make distclean && qmake && make...

Yep, this seems to have been my fault. Patch looks good to me, thanks again! (Compiled fine and FTDI-based RS-485 started to send data. Content of sent data not verified due to the lack of fixtures)

OK guys, gonna close this.
If you still find problems, I'll reopen
Thanks to everyone for feedbacks and tests


package-diff: support different locations

Not all builds are stored in the public bucket but may be available on
Origin or the bincache server.
Add a location parameter to the package-diff tool to fetch the
image/package text files from Origin or bincache.
How to use/Testing done
FROM_A=release MODE_B=/developer/ CHANNEL_A=lts CHANNEL_B=developer ./package-diff  2605.27.1  2022.04.28+dev-flatcar-3033-nightly-5522

Sure, done


Authentication timeout -> throw new AuthenticationException

Laravel Version: 5.4.15
PHP Version: 7.1.2-4
Database Driver & Version: Mongodb (jenssegers)

Description:
After a few hours of inactivity, if a authenticated user reloads the page he gets the following AuthenticationException:
Illuminate\Auth\AuthenticationException
…/vendor/laravel/framework/src/Illuminate/Auth/GuardHelpers.php39
It should redirect to the login page, since this is the page that was instructed in the App/Exceptions/Handler.php:
protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        return redirect()->guest('login');
    }

Steps To Reproduce:
Fresh laravel install, add the auth module thru artisan command make:auth; register a new user; login; wait a couple hours with the browser inactive; reload the screen.

If I delete my cookies and refresh, I get redirected to login. If I have the session timeout and refresh, I get redirected to login.

I can't replicate this issue, it redirects back to the login screen in case the session is invalidated.

Closing for lack of activity & being unable to replicate.


Cache user signatures outside the loop

Most of the times, signatures can be reused from the commit loop because the userbase doesn't change across a single p4-fusion run.
The expected performance boost from this is very small, but it is something to test as well.

Also need to test what happens when p4-fusion is running and a new user submits a CL


Problem opening exported ODS files in Excel

When I export a table as an ODS file and then try to open that file in Excel in editing mode I get the following error:
"We found a problem with some content in myfilename.ods. Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes."
Clicking Yes results in the following message and the file opening correctly "Excel was able to open the file by repairing or removing the unreadable content."
Are there any known solutions or workarounds to this problem?
Recreating the problem
This occurs on the table export demo, so can be seen by going to https://sheetjs.com/demos/table.html, click export to ODS, open the downloaded file in Excel.

For ODS we check against LibreOffice.  To make it work with Excel, it looks like a master page style is needed.  We:

uncomment the part in https://github.com/SheetJS/sheetjs/blob/master/bits/81_writeods.js#L164 to force style:master-page-name="mp1" in the table style

add a predetermined master page style.  https://github.com/SheetJS/sheetjs/blob/master/bits/81_writeods.js#L16 should have a style like

  <office:master-styles>
    <style:master-page style:name="mp1" style:page-layout-name="pm1">
      <style:header/>
      <style:header-left style:display="false"/>
      <style:footer/>
      <style:footer-left style:display="false"/>
    </style:master-page>
  </office:master-styles>


Particle jitter on low speed scale

Godot version
cf8e9fd
System information
W10
Issue description
When you set speed_scale of particles to low value, e.g. 0.1, this happens:

Steps to reproduce

Add GPUParticles2D
Add some material etc.
Set time_scale to 0.1

Minimal reproduction project
No response

The interpolation likely doesn't take the time scale into account. Can you reproduce this if you disable interpolation in the GPUParticles2D node?

You mean fract_delta? It doesn't change anything.

GPUParticles3D has this property:

It looks like it wasn't ported to GPUParticles2D yet.

This problem is not only happening on slow time scales - it's only making it more visible.
It's also extremely visible when using the orbit parameter.

This may be related to https://github.com/godotengine/godot/issues/51318.

To work around this, disabling Interpolation and setting Fixed Fps to 0 seems to do the trick.

This problem is not only happening on slow time scales - it's only making it more visible. It's also extremely visible when using the orbit parameter.

This may be due to https://github.com/godotengine/godot/issues/51318.


Substories/Hierarchy

Would be nice to be able to have "Substories" or a Hierarchy of stories. My case involves various mini "apps" being contained in the same repo. A simple solution would be an option to display stores named like ui.core.foo and ui.core.bar like:
ui
└── core
    ├── bar
    └── foo

With support for expanding and collapsing nodes.

Currently, we've no plan to implement that. That's because it makes navigation harder. You can namespace story kinds with dot like "ui.core", "ui.app". Then you can filter them as you need.
If there are a lot of stories, you can start a few storybook instances. You can do that by having two storybook config directories. But, anyway that's an extreme case.

I'm willing to concede this point, and thought I'd just make a different config and run it on a different port and whatnot...
But I think it'd be much better to allow storybook to take multiple config files... and then toggle between named config files, perhaps reloading...
As for UI to switch configs, it would only appear if your config file "loaded" other config files, and it could be sidebar items at the top or bottom of the sidebar nav.
Anyway - I think for larger apps, if you can't (or don't) split out configs, it's kinda crazy.

Adding additional configs seems to be overly complex. What about a toggle for classic/hierarchy view? I'm happy spike out an implementation over the next few days.

This would be a very valuable feature to me as well, but for organization of component types within a single app rather than for multiple apps.
I would be more than happy to provide any help in shaping an implementation that could work for both use cases if this is able to move forward.

@travi One of our another idea is to provide a drop down menu just below the filter box to select the category.
A category is assigned in the config.js and different set of files. So, we can have a another layer of grouping.

I think that type of solution would be enough to satisfy my needs at this point. In addition, I think the namespacing convention mentioned above could still be a reasonable way to assign the category that could be interpreted into the choices in the drop down. Such a solution would enable linking across categories to still remain simple as well.

The way that we're getting around this in the app I'm building (hundreds of components, organized inside loose "pillar" areas) is with a script that dynamically writes out the stories for the area we're currently working on.
find.file(
  /\.story\.js/,
  path.resolve(__dirname, '../src/app/components', targetComponentPath),
  function(files) {
    var requires = files.map(function(file) {
      return "require('" + path.relative(__dirname, file) + "');";
    });
    fs.writeFileSync(path.resolve(__dirname, '../.storybook/stories.js'), requires.join("\n"));
  }
);

This means that Storybook doesn't even have to build the other components. I would love some level of support for this as a built-in option.

#201 could help on this.

any updates on this one?

+1

I'm argee thats a very useful feature!

+1

+1

+1

+1

+1

+1

Hey @arunoda, has there been any progress on the categories implementation front?
If not, does anyone else have an example app that toggles between two storybook configs?

+1 I absolutely need one additional level of nesting :/

+1

+1

+1

+1

+1

+1

well looks like while your app grows, the components list grows too, and you need some more nesting. 1 more level would already cover much cases

+1

Hey, Guys!
Despite the fact that such a feature isn't planned in the near future this doesn't mean that we can't get such behavior via Storybook Addons API
Here is one such:

Storybook Chapters

Storybook Chapters
Adds unlimited levels of nesting for (sub)stories

To add one more nesting level just put .chapter(name) to your stories:
// stories.js:

storiesOf('React App', module)
    .chapter('Left panel')
        .add('Button 1', fn(1))
        .add('Button 2', fn(2))
        .chapter('Bottom Panel')
            .add('Input 3', fn(3))
            .add('Input 4', fn(4))
            .endOfChapter()
        .chapter('Header Panel')
            .add('Input 5', fn(5))
            .add('Input 6', fn(6))
            .endOfChapter()
        .endOfChapter()
    .chapter('Right panel')
        .add('Button 7', fn(7))
        .add('Button 8', fn(8))
        .endOfChapter()

Features

The hierarchical structure of Substories
Compatible with Knobs, addWithInfo and other addons
Use storyDecorator to wrap all chapters

Demo page
Project
Example

Any feedback will be very appreciated! :)

@UsulPro Nice!

@UsulPro Storybook Chapters is a brilliant solution. Thanks!

@UsulPro seems to be excactly what I was looking for, thanks!

Hi all! Not trying to compete with @UsulPro (who did an awesome job with storybook-chapters), but I came up with a small, slightly different solution that allows you to toggle between different groupings of stories with a button in the preview window. This is useful for us in particular because we want to be able to switch easily between a sort of related components view a la the bootstrap documentation and a detailed components view a la what storybook is well-suited for and we have a ton of components to show off. I'd consider this a lightweight version of setting up multiple storybook instances:
If it's useful to you, you can check it out here - https://github.com/majapw/storybook-addon-toggle

I built on @UsulPro's awesome storybook-chapters to make a storybook loader that will mirror your component file hierarchy as Storybook chapters: storybook-filepath-chapters
With this, I can put my stories in a _stories file or folder right inline with my components. The loader finds all the story files and map them into a corresponding navigational structure.

Thanks for the warm feedback, guys!
Really cool to see @hadfieldn's  storybook-filepath-chapters! 👍
I like storybook-addon-toggle as an example, that it is desirable to have a possibility to build a hierarchy not only in depth but also in the top. Actually, technically it's possible, but I think it's hard to choose the best way (staying within addons API). Perhaps this can be done using decorators (like @majapw) or via addon panels.
I don't plan to add a hierarchy over stories yet, but storybook-chapters addon now has an API, are able to simplify the construction of such a hierarchy:

enable/disable to show/hide your stories

it works this way:

-
add enable()/disable() to your stories. As an argument, specify the callback to which the control function will be transferred.
let toLight = () => {};
let toDark = () => {};

storiesOf('Heroes Lightside', module)
    .enable((en) => { toLight = en; })
    .add('Yoda', info('Yoda'))
    .add('Mace Windu', info('Mace Windu'));

storiesOf('Heroes Darkside', module)
    .disable((en) => { toDark = en; })
    .add('Darth Sidious', info('Darth Sidious'))
    .add('Darth Maul', info('Darth Maul'));

then you can use  toLight(false) to hide Heroes Lightside and toDark(true) to show Heroes Darkside stories. You might want to put  toLight and toDark into some decorators or maybe to callback from other stories. I'll show the simplest possible example:
storiesOf('Choose Your Side', module)
    .add('Lightside', () => {
        toLight();
        return (
{'Lightside selected'}
);
    })
    .add('Darkside', () => {
        toDark();
        return (
{'Darkside selected'}
);
    });

So now we have 3 sets of stories: Choose Your Side, Heroes Lightside and Heroes Darkside. Of the last two, only one is visible and the first one allows you to switch.
in the next release I plan to add the ability to control the visibility of the stories via customizable addons panel

-
With enable/disable feature you can build custom navigation with your preferred logic.
complete example here

We will be implementing a hierarchy browser, but would love concepts how the community thinks it should be done:

UX wise
How to configure the groups

UX wise, I like this idea: http://multi-level-push-menu.make.rs/demo/basichtml/basichtml.html
Configuration I don't know yet.. We could use file exploration and mirror the filesystem, or we could do something like this: https://github.com/sm-react/storybook-chapters/issues/1#issue-215446017

@ndelangen have you given thought to (at least optionally?) allowing the navigation to be defined outside the stories? It seems to me that there might be value in treating how the story looks (the preview area / iframe) and how you want to organize the browsing (the manager) as separate concerns.

@jackmccloy I'm interested, can you tell me more about what you mean?

i've mentioned in a different issue, but my target with categories would be to align mostly with atomic design. pattern lab is the official style guide approach for atomic design, but adding categories to storybook would fill the last remaining gap.
i already arrange my components in top level folders for those categories, so being able to load components into categories based on top level folders would be a great thing the shoot for too.

@travi Can you give me a print of your folder layout?
I'm definitely interested at improving storybook for this exact purpose, But I'm interested what would be technically required to read this categorisation from your folder structure.

its essentially
project root
|
+--
|  +-- atoms
|  |  +-- foo
|  |    +-- index.js // the component
|  |    +-- stories.js
...
|  +-- organisms
|  |  +-- bar
|  |    +-- index.js
|  |    +-- stories.js
...
|  +-- organisms
|  |  +-- baz
|  |    +-- index.js
|  |    +-- stories.js

does that help? i have multiple components under each top level folder, sometimes further grouped by another folder level. happy to provide more detail if it would be helpful

ok, so what we could do is set a flag in config.js. something like autoDiscoverStories or so. Which would mean you do not have to import stories manually, and the filesystem folders would be used as categories.

@ndelangen I guess what I'm thinking is this: right now, our conversation is around "how do we make the navigation better", but it assumes that there will be a single navigation that everyone will use. I feel that it might be worth talking about ways to make the navigation extensible, in a similar way to how addons extend the functionality of the stories themselves.
One possibility:
Currently, each story is added in two steps - a first step where a category is assigned, and a second step where a title is assigned, i.e.
storiesOf('storyCategory', module).add('storyTitle', () => <Component />)

You can chain adding multiple stories to the same category, but the structure limits flexibility to an extent - all stories must have a category and a title, and categories are a "higher level" than titles.
But if stories could be defined in a slightly different way, i.e.
const storyData = {
  category: "category",
  title: "storyTitle",
}
stories.add(() => <Component />, storyData)

we could experiment with different navigation options more easily.
The default navigation could stay as it is. It's a sane default, and probably works well enough for most of us. storyData could even be optional - stories without a category could appear at the top level, and stories without a title could default to the displayName of the component.
But the community could experiment with different ways of organizing their stories by (a) adding additional metadata fields to stroyData and/or (b) changing the way the navigation panel renders based on the metadata fields.
Some ideas:
// add an additional level to the hierarchy called subCategory
const stroyData = {
  category: "Buttons",
  subCategory: "Blue",
  title: "BlueButton",
}
stories.add(() => <BlueButton />, storyData)

// add tags to a story that you could then filter by
const stroyData = {
  category: "Buttons",
  tags: ["button", "homepage"],
  title: "HomepageButton",
}
stories.add(() => <HomepageButton />, storyData)

// have a story to appear in multiple categories
const stroyData = {
  categories: ["Buttons", "Homepage Elements"],
  title: "HomepageButton",
}
stories.add(() => <HomepageButton />, storyData)

Nice! that's quite out of the box, and indeed extensible. I'm going to think about this for a bit. 🤔

Awesome. Let me know what you decide on - I'll pitch in where I can regardless of what direction you choose to go - big fan of the project

@jackmccloy's proposal is great, thanks for the great idea!
However, it seems to discourage one strong use-case for Storybooks which is thinking about UI as a series of "visual test cases" and easily defining UI states as individual stories using an add() call per state.
Registering the story metadata in the add() call feels like it's adding the category at the wrong level. I'd like to see the same proposal, but using the storiesOf() function:
storiesOf({
  title: Component,
  category: "My Category"
}, module)
  .add("when empty", () => <List items=[] />)
  .add("with items", () => <List items=["one", "two", "three"] />)
  .add("etc.", () => <List items={etc} />);
``

I like the idea of just being able to take the title from the `Component.displayName` and all the other ideas about sub-categories or adding a component to multiple categories, I'd just like to preserve the simplicity of adding states.

one thing to keep in mind, regardless of where the category is defined, is that another file should be able to add to the category. if a category could only be defined from a single file, i think it would be very limiting

I agree @travi — that's why the category just being a string (which I imagine would map to some dictionary key) is appealing.
I am imagining that I might define my categories in one place to prevent typos like so:
// categories.js
export const Layouts = "Layouts";
export const Components = "Components";
export const Styles =  "Styles";

// myLayout.story.js
import { Layouts } from "../categories";
import DashboardLayout from "./DashboardLayout";

storiesOf({
  title: DashboardLayout,
  category: Layouts
}, module)

but that would be an implementation detail.

@theinterned @jackmccloy I like your suggestions.
I'm thinking how you might use your suggestions in a hierarchy of arbitrary depth. Perhaps instead of category/subCategory it could be path with an array of path components. (I know you weren't necessarily intending specifics there, just riffing on your ideas.)
I also like the idea of a configuration option to use the filesystem to create the nav hierarchy. With this option enabled, the path argument would be optional.
This is more of a stretch goal, but it might be good for page in the hierarchy to be loaded as a separate chunk, to keep the storybook lightweight as it gets larger. It would also be cool to allow the storybook loader to run with a specific filesystem folder as a root context, so that it could build a storybook with only the stories defined in that folder rather than all the stories in the entire project.

What do you people think about defining / registering categories up front in your config?
// config.js
import { configure, addCategory } from '@kadira/storybook';

function init() {
  require('../src/stories');
  addCategory({
    id: 'atom',
    name: 'Atoms',
    index: 0
  });
  addCategory({
    id: 'molecule',
    name: 'Molecules',
    index: 1
  })
}

configure(init, module);

// component.story.js
import Component from "./Component";

storiesOf({
  title: Component,
  category: 'atom'
}, module)
  .add("default", () => <DashboardLayout />);

We may as well support an array: category: ['atom', 'deprecated'], why not?
This would help making sure categories are placed in the right order, which in atomic design, is important.
Retrieving categories from config would be nice, magic string are bad 👎

that makes sense to me.
also, +1 for pulling the category for the story from what was defined in the config rather than hoping to match strings

@ndelangen defining categories up front so we can control ordering would be HUGE! But I think it'd be important to make it so that categories can be defined in the config, not that they must be defined there.
One thing I love about Storybook is that I can tell whether or not a component is in Storybook just by checking if whether there's a story.jsx file co-located with the component. That guarantee -
that if a story.jsx file exists, a story exists - is an important one that shouldn't be undone by pre-defining categories, imo.
From that view, needing an id and an index for categories in the config might not even be necessary - something like this (assuming it uses the options plugin)
setOptions({
  categoryOrder: [
    "First Category",
    "Second Category",
    "Third Category",
});

where First Category, Second Category, and Third Category are guaranteed to appear first, second, and third, and any other categories declared in stories will appear alphabetically after those three.
This approach could also be a smart way to control arbitrary-depth nesting, too, by doing something like this:
categoryOrder: [
  {
    "Atoms": [
      {
        "Buttons": []
      }
    ],
  }, {
    "Molecules": [],
}],

Stories with the category "Buttons" would appear inside Atoms -> Buttons. Stories with the category "Atoms" would appear inside Atoms, below Buttons (but not inside it), etc.
Users would get one level of depth w/o any config (just like now), and arbitrary levels of depth with minimal config. Importantly, it'd be the categories that have depth (set at the config level) rather than the stories themselves (i.e. stories don't need to know their depth in the hierarchy).
@theinterned I agree with you re: needing to preserve the simplicity of adding states. I hadn't thought of that, probably b/c I use the knobs addon heavily. So for me, I try to have a 1-1 relationship between components and stories, and my story titles are descriptive of the component rather than descriptive of the state the component is in.
One potential solution that might work for both use cases would be to do something like this
const storyData = {
  category: "category",
  title: "first item",
}
stories.add(() => <Component />, storyData)
  .add(() => <Component />, {title: "second item"})
  .add(() => <Component />, {title: "third item"})

where (a) the order of the stories can be controlled from where they're declared (as opposed to needing an external config) and (b) the storyData param can preserve the previous object, overwriting only the values that are explicitly passed.
Just a thought.

while i would be thrilled with even just top-level categories, if things do go far enough to support nested categories, it is worth noting that it is not safe to assume that category names would be unique between different categories.
continuing the atomic design example, it is common to have a subcategory of the same name across each of the top-level categories of atoms, molecules, and organisms. in the pattern lab demo, forms are a good example of this. individual field elements are listed under atoms, the combination of field and label are listed under molecules, and multiple fields grouped as a complete form are shown under organisms.

An interesting thought would be to consider what if the category could be defined with a callback that gets the the component, the path to the component and the path the the story file as well as some sort of meta data the user can pass to configure the callback.
The only requirement is that the callback needs to return an object defining a category tree:
storyData.category() //=> returns the below object

// a simple category tree might look like:
[ "One category" ];

// The tree for a story nested three categories deep would look like:
[ "Parent Category",  "Child Category", "Grandchild category where the story lives" ];

This would allow people to write any category system they want.
If you want to have global config you could register that inside the callback and use the custom meta data to configure which categories / subcategories you want to register the story with.
categories: [
  {
    "Atoms": [
      {
        "Buttons": []
      }
    ],
  }, {
    "Molecules": [],
}];

function setCategory({ meta }) {
  const { categroy } = meta; // maybe a dot path string like "Atoms.Buttons" ?
  return someFunctionThatValidatesTheMetaCategoryIsDefinedInCategoriesHash(); // [ "Atoms", "Buttons" ]
}

If you want to set the category structure based on file structure you have the path info to do that with.
function setCategory({ component, storyPath }) {
  // for story path `src/components/Atoms/MyComponent.story.js`
  const folders = getPathSegments(storyPath); // [ "components", "Atoms" ];
  return folders;
}

If you just want to use a simple category name you can just use one! (And maybe category could take one of either a simple string, an array describing a hierarchy or a callback).
Now the sky's the limit!

on a similar note, for defining sort order I'd suggest a addCategorySort function you could register that takes the tree category structure generated by loading all the stories and sorts it.
import { configure, addCategorySort } from "@kadira/storybook";

addCategorySort( categories => // sort logic here);

configure(loadStories, module);

@travi I hadn't considered the need for duplicate-named categories, but I agree that it's important. Any thoughts on a solution? This is what pops into mind for me, but maybe there's a better solution:
const storyData = {
  categories: ["Buttons"],  // any category with the title "buttons"
}

const storyData = {
  categories: ["atoms.buttons"],  // any category with the title "buttons" that also has the parent category "atoms"
}

@theinterned I dig the approach, but worry that it might make things harder / less intuitive for typical users (who need/want something that works well out of the box) for the benefit of the power user (who want something that works perfectly with a bit of effort).

@jackmccloy yeah ... I agree that implementing a function shouldn't be a requirement for everyone. But it seems that there are a number of different use cases that people are looking to support and so ... a callback system seems to be a nice way to provide extensibility for everyone to customize their own use case.
To assuage the worry that it makes the "happy path" harder, I recommend the following:

Let storydData.category accept a string in which case the category would be a top-level category.
Let storydData.category accept an array where the elements in the array are the path to the category:

// given
storydData.category = ["grand parent", "parent", "story category"];
// category tree would look like:
categories = {
  "grand parent": {
    "parent: {
      "story category": /* the story lives here */
    }
  }
};

Let story data accept a function as described above (https://github.com/storybooks/react-storybook/issues/151#issuecomment-292689536).
We could actually write a few category handlers that cover some of the common use cases we have here (Atomic design, folder-based ...);

Similarly for sorting we can support the default strategy (alpha no doubt) by default and if there's a need we could provide other pre-built sort strategies (sort based on an object shape, sort indexes in the meta data etc ...);

@ndelangen what do you see as the path forward on this? Is anyone working on it? If not, happy to take a crack at it over the weekend

When I get notice work has started by anyone and their solution is viable I remove the PR needed label. So, this is currently on the roadmap, but no work has yet been done.
If you want to make a start on it, that'd be super welcome!

@jackmccloy may I join and participate in this work as well if you don't mind?

100%. Planning to start taking a real look at it on Sunday afternoon (NYC time). If you'll be online at the same time, lmk and we can move the convo over to slack. Otherwise I'll post here with some thoughts after I dig in a bit

@jackmccloy @usulpro I'm definitely interested in working on this as well.

@theinterned That would be great! Connecting in slack?

@UsulPro sorry — bad stomach flu hit my household.
I've got a hack day coming up at work on Friday and I plan to work on this then. Have you had a chance to get started? I'd be happy to synch up on Slack. I'm in the SB channel.

If you just require one level of nesting, React Storybook Addon Chapters might suit your needs.

I've released the first version of @igor-dv 's excellent implementation of story hierarchy and would love to get your feedback on the alpha so we can make it better before releasing to the broader community:
https://gist.github.com/shilman/947a3d1d4cfdf5c3a8bb06d3d4eb84cf
@1i1it @andrubot @arunoda @atnovember @danielbartsch @franzihubrick @hadfieldn @iaanvn @imsnif @isuvorov @jackmccloy @joeruello @johnnyghost @lnmunhoz @majapw @markopavlovic @mystetskyivlad @mzedeler @ndelangen @nirhart @noahprince22 @revolunet @sethkinast @theinterned @thesisb @travi @usulpro @yangshun @zeroasterisk @zvictor

Just a small quirk I noticed with the story hierarchy:
Depending on whether a directory has subdirectories changes the result of clicking a directory.
If there are subdir's the folder will expand, but if it is down at the story level the story will be auto selected.
A user may wish to view the contents of dir without selecting a story inside.

In the previous implementation when selecting a kind its first story was autoselcted. So this functionality I wanted to preserve. But maybe with hierarchy it's already looks like a bug.

In the pic Component 5 is not a directory - it's a kind.
Actually I don't like this behavior as well...

Long story names wrap oddly

Resizing the sidebar to be really small causes the preview pane to overflow into it.

is it possible to combine hierarchy folders with individual stories? I have some stories I want at the top level, otherwise I have a folder with a single item
Currently if you do this
storiesOf('Something', module).add('top story');
storiesOf('Something.Chapter', module).add('substory');

Then it creates 2 entries for 'Something', one with a folder and one with an item

@TheSisb , thanks, will be fixed until the official release.
@psimyn , in the current implementation it's not possible.. but might be changed.. @UsulPro mentioned this in the initial PR too.
IMO this is not a good behavior (and brings more complexity). Comparing it to the every IDE, there are namespaces (dirs/folders/packages) and could be some items in those namespaces (or near by) with the same name..
Anyway, if this is a desired behavior of the community, it should be changed, but I wouldn't like it be stopper for the release =)

This is the exact solution I needed !!! thank you +1

@psimyn Please open a new issue describing the feature? This issue will be closed real soon with the release of 3.2.0

is having multiple level of nesting now possible with the new CSF format ?

@gaurav5430 it's been possible for some time, see our example here:
CSF:
import React from 'react';
import { linkTo } from '@storybook/addon-links';
import { Welcome } from '@storybook/react/demo';

export default {
  title: 'Other/Demo/Welcome',
  component: Welcome,
};

export const ToStorybook = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;
ToStorybook.storyName = 'to Storybook';

Hey @ndelangen
Thanks i get that from here: https://storybook.js.org/docs/basics/writing-stories/#story-hierarchy
I think what I want is the ability to create sub-folders based on storyName and not only the default export title
export default {
  title: 'Other/Demo/Welcome',
  component: Welcome,
};

export const ToStorybook = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;
ToStorybook.storyName = 'to/Storybook';

would show up as Other/Demo/Welcome/To/Storybook

I think a workaround for the above issue would be to create multiple story files and export default with the correct hierarchy in each of them.
like in one.stories.js:
export default {
  title: 'Other/Demo/Welcome/One',
  component: Welcome,
};

export const ToStorybookOne = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;

and in two.stories.js
export default {
  title: 'Other/Demo/Welcome/Two',
  component: Welcome,
};

export const ToStorybookTwo = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;

That way, both the stories would show up as expected in the storybook folder structure

@gaurav5430 that's the recommended usage, and not a workaround. 😄

@gaurav5430 that's the recommended usage, and not a workaround. 😄

Yes, I was just hesitant to do that as both these files are for different states of the same component. In my case, the component has 2 main states and multiple sub states based on those 2 main states. Usually I would keep all the states of the component in the same file, but in this case i would need to have a separate file for hierarchy in stories.

@gaurav5430 that's the recommended usage, and not a workaround. 😄

This is not possible though when using "Mixed CSF / MDX Stories" approach.

Hey @ndelangen Thanks i get that from here: https://storybook.js.org/docs/basics/writing-stories/#story-hierarchy
I think what I want is the ability to create sub-folders based on story.name and not only the default export title
export default {
  title: 'Other/Demo/Welcome',
  component: Welcome,
};

export const ToStorybook = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;
ToStorybook.story = { name: 'to/Storybook' };

would show up as Other/Demo/Welcome/To/Storybook

I would also like to see something like this. Having to create a new file just to create some visual hierarchy is really cumbersome. On the other hand, our storybook gets cluttered really quickly if we dont create subfolders - Designers want an easy to understand storybook where they know where to click, and Developers want to cover all their test states, leading to dozens of stories per component. Being able to group those easily would help a lot with this problem.


Support views

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

371 of 399 (92.98%)  changed or added relevant lines in 31 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-1.7%) to 94.455%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/sqlalchemy_declarative_extensions/alembic/view.py
35
37
94.59%

src/sqlalchemy_declarative_extensions/dialects/sqlite/query.py
4
7
57.14%

src/sqlalchemy_declarative_extensions/view/compare.py
55
58
94.83%

src/sqlalchemy_declarative_extensions/dialects/sqlite/schema.py
5
13
38.46%

src/sqlalchemy_declarative_extensions/view/base.py
90
102
88.24%

Files with Coverage Reduction
New Missed Lines
%

src/sqlalchemy_declarative_extensions/dialects/postgresql/grant_type.py
1
77.05%

Totals

Change from base Build<PHONE_NUMBER>:
-1.7%

Covered Lines:
1513

Relevant Lines:
1586

💛  - Coveralls


add the filesystem storage driver

@SuperSandro2000, this was superseded by https://github.com/sapcc/keppel/pull/129. So I'll close this PR.


Add pyLoad

I'm not super familiar with git and pull requests, so I'm sorry if I've made any mistakes.
Pyload is simple web-interface download manager that is able to handle most of the major download services online. I think I covered all the bases and added it to nas.yml and traefik.toml as needed.
I tested this in a VM running Ubuntu 18.04 and everything seems to work.

On Tue, May 7, 2019, 4:47 AM Pierre Spring<EMAIL_ADDRESS>wrote:

@caillou commented on this pull request.
In group_vars/all.yml.dist
https://github.com/davestephens/ansible-nas/pull/91#discussion_r281554227
:

@@ -275,14 +278,21 @@ heimdall_data_directory: "{{ docker_home }}/heimdall"

Transmission

transmission_available_externally: "false"
-transmission_with_openvpn_available_externally: "false"
Why did you remove this line?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/davestephens/ansible-nas/pull/91#pullrequestreview-234416150,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA24LQE5ON3ZYJL7ZRA7W2DPUFFZXANCNFSM4HLEU3NA
.

Hi, please can you fix the b0rked build then I can take a look at merging this? You'll also need to ad some docs, see the other application doc pages for examples.

This is awesome, thank you. Sorry it's taken me a while to re-reviewing it!

Oh and congrats on your first ever merged PR :D

@ripps818 the defaule pyload config is not working for me. getting

any ideas on how to fix this?

@xerosanyam No idea. You might want to hit up the pyload developers and see if they know. Only they would know what an error 36 means.


Developer added

This PR fixes #
Onboarding pull request

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 42.756%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
26224

Relevant Lines:
55681

💛  - Coveralls


MockModule  no Directive annotation found

Hello,
I try to mock a entire module using MockModule(MyModule) function.
But I get :
Failed: No Directive annotation found on [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase]

I think CommonModule is missing somewhere. This may be a link to issue #1.
Thank you for your help.

I went ahead and updated MockModule to never mock CommonModule.
Fixed with release of 6.2.2
cea5055b8194c12a7ca6ecd31182d9454941c8ed

I m having this issue with MockDirective method
Uncaught Error: No Directive annotation found on e
    at t.e.resolve (main.ef271016ceb35fa51ea5.js:formatted:18905)
    at t.resolve (main.ef271016ceb35fa51ea5.js:formatted:19267)
    at Object.c [as MockDirective] (main.ef271016ceb35fa51ea5.js:formatted:158611)
    at Object.RnxJ (main.ef271016ceb35fa51ea5.js:formatted:103344)
    at f (runtime.bf0ad6a492d455f9de3a.js:1)
    at Object.GmxJ (main.ef271016ceb35fa51ea5.js:formatted:60193)
    at f (runtime.bf0ad6a492d455f9de3a.js:1)
    at Object.Ss9G (main.ef271016ceb35fa51ea5.js:formatted:104314)
    at f (runtime.bf0ad6a492d455f9de3a.js:1)
    at Object.zUnb (main.ef271016ceb35fa51ea5.js:formatted:191690)

this issue is coming when I compile for production


Set up Contact Us / Meet the Creators section of website

Footer of website with information on the creators, maybe links to contact and blurbs about the creators as well as maybe link to an FAQ with potential questions customers could have about LoveNotes

As work has been completed and pushed into main, I will be closing this issue.


fixes #8 and #9 but introduce bcmath extension dependency

Thank you so much!
As I wrote in https://github.com/delight-im/ShortURL/issues/7, I think the fix can be even shorter, changing only 1 line instead of 3. However, there are some reasons why I think it's better not to implement this change here, as outlined in that other issue as well.
I would only consider implementing this fix if there were no new dependencies. BC Math is built-in to PHP, however it requires a flag to be set during configuration of PHP. I don't know if we can assume this to be guaranteed for everybody.
Consistency with the implementations in other languages would be a good thing, but is not really necessary, since we're just extending their capabilities and not changing anything that they do.
Again, I want to thank you for your help and effort in this matter!

That said, feel free to use your fix or my shorter if (if that works as well) in your own application. I hope that this library can be helpful to you with that fix :)


Changed deploy script to use babel instead of babel-node

My attempt at #47
Fix #47

Thanks @arnif. This PR is very helpful!


Using vcpkg repo with cmake not adding include paths

According to docs, it should be enough to specify the toolchain file (vcpkg.cmake) on config command for cmake. However, that does not add the vcpkg/installed//include to the generated compile instructions.
If I explicitely add the vcpkg/installed//include to the CMakeLists.txts file, then  it works
(Or just add Boost_INCLUDE_DIR, since points to all the includes...)
I don't know if that is a bug of cmake 3.8.rc2 or, vcpkg.cmake, or if i'm doing something wrong.
I'm using the cmake-usage  sample from the (old) wiki, except instead of sqlite, I'm including boost/asio.hpp. Everything else is the same (hello worlr type main.cpp, cmakelists finding boost system, instead of sqlite).
Coinfiguring works, but build doesn't, complaining can't find boost/asio.hpp....
same with others. e.g. rapidxml
IIRC it used to work earlier, but not sure. Using version
0.0.76-d46563d862228241124bfa345c6b0d80b0efac7b

We don't add the include path by default anymore because we have no way to ensure we add the path to the end of your compiler line. If your sources happen to share a header with one that is installed inside Vcpkg, we don't want to override your header.

Ok, so the workaround I'm using (as described in the OP)  is also what you would suggest.
It might be better to just define a generic 'vcpkg_Include_dir' to use, otherwise one would have to add documentation to the Cmakelists fiel why only one of the include dirs are being used
Thx.

I highly recommend we add this to the documentation about CMake immediately. I just ran into the exact same issue and was awfully confused until I found this issue.

Thanks for showing how important this is! I've extended the documentation with
a6957eb, please take a look and make sure it would have helped you :)

It's awesome! Thank you so much!


Add additional language and translations

Add PT language.
Add config for Paypal Title and description
(missing: Translation in de.json from original English title and descriptions to DE language)

looks good, will be merged.


Fix execute_through_host auth (not all keys the same, as Client)

Simplify code
adopt tests and make ordered

[x] I think the code is well written
[x] Unit tests for the changes exist

Pull Request Test Coverage Report for Build 104

8 of 8 (100.0%) changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.0007%) to 99.687%

Totals

Change from base Build 103:
-0.0007%

Covered Lines:
955

Relevant Lines:
958

💛  - Coveralls


Documentation seems out of date

Following Desktop app quickstart, I get the following error message when I call AcquireTokenInteractivetry :

Only loopback redirect uri is supported, but https://login.microsoftonline.com/common/oauth2/nativeclient was found. Configure http://localhost or http://localhost:port both during app registration and when you create the PublicClientApplication object. See https://aka.ms/msal-net-os-browser for details

Following the instructions in the exception does fix the issue.

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

ID: af32734a-08ca-322c-f79c-62dc088ec175
Version Independent ID: a72bd1f5-58f4-0edd-2d78-eb1e83bbf807
Content: Quickstart: Sign in users and call Microsoft Graph in a desktop app - Microsoft identity platform
Content Source: articles/active-directory/develop/desktop-app-quickstart.md
Service: active-directory
Sub-service: develop
GitHub Login: @Dickson-Mwendia
Microsoft Alias: dmwendia

@nlz242
Thanks for your feedback! We will investigate and update as appropriate.

Hi @nlz242,
Thanks for opening this issue. Would you please clarify which of the desktop app quickstarts you were following so I can continue looking into it. We have guidance on UWP and WPF.
Thank you!

#label:"doc-bug"

@nlz242 thanks again for bringing this issue to our attention. I ran through the UWP and WPF quickstarts, and by following the steps in our documentation, I was able to acquire a token interactively in both .NET samples without encountering an error.
The error you encountered is more likely to occur when .NET Core needs another redirect URI. Did you check the configuration settings used in the app registration portal and your sample to verify everything is correct? If yes, would you please provide some more context for reproducing this issue.
On a sidenote, I'll make a minor update to the AcquireTokenInteractive code to fix a CS0103 error that occurs in the try-catch when using the AcquireTokenInteractive snippet as it is in the docs.
Cc: @mmacy @henrymbuguakiarie


Can't concatenate arrays

actor {
  public shared func f(): async () {
      var newEntries: [Int] = [];
      newEntries #= newEntries;
  };
}

The above code must be compilable, but:
$ moc x.mo
x.mo:4.7-4.31: type error [M0060], operator is not defined for operand types
  [Int]
and
  [Int]
$ moc --version
Motoko compiler 0.11.0+ (source yh3wb1vx-vj8j4j32-k8gq4m8y-4cxlqinf)

Checked with a newer version of moc, the same bug:
$ moc --version
Motoko compiler 0.11.1+ (source 7k01snp5-bm3lbckz-84fkkzp5-zqz3gvyv)

Because Array is not Text :-) and #= (as well as #) applies to Text.
Background: Text has a representation of ropes internally and provides O(1) concatenation. Arrays are contiguous, so concatenation is a linear complexity operation. You'll have to implement it in terms of Array.tabulate.

https://github.com/dfinity/motoko-base/blob/6f49e5f877742b79e97ef1b6f226a7f905ba795c/src/Array.mo#L176 provides Array.append, but we deprecate it because it easily leads to quadratic behaviour.


Overwrite cmd+k shortcut

Hi.  Warp assigns cmd+k to clear blocks by default, which is not available in keybindings.yaml.
Is cmd+k overwriteable?

I reached out to the team and we're going to create a ticket for this as it's a bug!

@HenryC-3 gonna close this and open a new issue in the Warp repo.