Need an automated build system

Needs to be able to build the files
Would like it to publish to NPM as well
Should not do either of the above if tests fail
The CDN distribution should continue as it is now

Some initial work was done in #2552 which was temporarily reverted until the NPM / CDN stuff can be finalized

Submitted a new PR #2555

Closed since #2555 was merged


[Streaming] Streaming doesn't work on non node runtime

Environment

Operating System: Darwin
Node Version:     v20.2.0
Nuxt Version:     3.5.3
Nitro Version:    2.4.1
Package Manager<EMAIL_ADDRESS>Builder:          vite
User Config:      devtools, nitro, alias, modules, runtimeConfig
Runtime Modules<EMAIL_ADDRESS>Build Modules:    -

Reproduction
This can be reproduced by trying to return a stream from an edge platform. For example, trying to run something like this with a preset like cloudflare-pages or vercel-edge https://github.com/vercel-labs/ai/tree/main/examples/nuxt-openai
Describe the bug
Streaming currently doesn't work on non-node based environments due to limitation in Nitro and H3.
This issue can be used to track the progress and reference all the related ones.

H3

https://github.com/unjs/h3/issues/401 (Response/Request support)
https://github.com/unjs/h3/issues/394 (CFW streaming)
https://github.com/unjs/h3/issues/144 (ReadableStream support)
https://github.com/unjs/h3/issues/73 (Events API)

Nitro

https://github.com/unjs/nitro/issues/19 (Sending streams)
https://github.com/unjs/nitro/issues/1130 (lambda)
https://github.com/unjs/nitro/issues/1168 (vercel-edge)

Nuxt :

https://github.com/nuxt/nuxt/issues/21223 (Netlify-edge)
There might be more issues and maybe some of these could be closed.
As I needed this for my personal projects, I made a PR with the code I'm personally using : https://github.com/unjs/h3/pull/395
However this work might conflict/be redundant with @pi0 plans (that being said it's currently working fine for my personal needs)
Additional context
It's technically possible to get it working by making some modifications to H3, Nitro and Nuxt to achieve streaming on the edge plaftorms.
Here is a working POC, deployed on cloudflare pages
However this is a little rough in the current state, try in your own projects at your own risks.
Anyhow, there's 3 steps to make this happen :

Support native Response with H3. Streaming in non-node environment happens naturally by returning a Response with a writable body.

Remove reliance on unenv/fetch for non node environment in Nitro. This allows returning the Response in a more direct way to the client.

Update Nitro presets to support returning the Response directly to the client.

Ideally we should remove all references to event.node in Nitro and Nuxt, and only use helpers provided by h3 as a part of the migration to the event API
Logs
No response

Linking https://github.com/unjs/nitro/issues/1327

With h3 we now have a way cleaner way to use streams by using a custom sendStream utility
Here's @pi0 demo : https://github.com/unjs/nitro-deploys/blob/main/routes/stream.ts
I tried it with cloudflare and the vercel sdk, and despite the environment variables and unenv issues, this works with some little modification to the original

Code : https://github.com/Hebilicious/vercel-sdk-ai/blob/cloudflare-official/examples/nuxt-openai/server/api/chat.ts

Diff with node code : https://github.com/Hebilicious/vercel-sdk-ai/pull/1/files#diff-d515093e9c3e4cd8d169844b5f19dd9e5195d211c817fcf7bd00e2b18269c387

@Hebilicious Feel free to contribute to upstream issue / demo for your fixes :)

I've made this demo with the latest changes in nitro and h3  https://github.com/Hebilicious/nuxt-openai-vercel-edge-demo
Deployed here :
-vercel-edge preset : nuxt-vercel-edge-hebilicious.vercel.app
-cloudflare-pages preset : d182f224.openai-nuxt-test.pages.dev
@danielroe I think this means we can close this thanks to the amazing changes in Nitro 2.5.2+ and H3 1.8.0-rc.2 + 🎉


adapt segmind tiny model

segmind tiny model has no mid_block

[x] I agree to the terms outlined in CONTRIBUTING.md

The new model Segmind SSD-1B has been released


⚠ ClamAV has degraded performance

In a323ab4, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 453 ms

Resolved: ClamAV performance has improved in 68c3a1a.


Sum two times

Working with timestamps in JavaScript has been a pain in the 🍑 . I don't know if I'm doing something wrong or if it's really complicated.
I'm going to write in plain JS what I want to do and I need help making it easier on iso-fns if possible.
JS doesn't have a Time format, only Date, so if I want to create a date with the time as 00:00:00 I would need something like this:
const a = new Date()
a.setHours(0, 0, 0, 0)

I can't just new Date("00:00:00") otherwise I get a Invalid Date message.
Now Imagine that I want to sum two times. 00:00:00 and 00:30:00. If you try this:
const a = new Date()
a.setHours(0, 0, 0, 0)

const b = new Date()
b.setHours(0, 30, 0, 0)

const c = a + b

c is now a string 😞
But let's try using an approach that seems to be the right one:
const a = new Date()
a.setHours(0, 0, 0, 0)

const b = new Date()
b.setHours(0, 30, 0, 0)

const c = new Date(a.getTime() + b.getTime())

The result is funny, the year is now 2074, the hour is like 03:30:00 (it might differ for you), but not even close to what we wanted.
The only way I could make it work was doing something like this:
const a = new Date()
a.setHours(0, 0, 0, 0)

const b = new Date()
b.setHours(0, 30, 0, 0)

const c = new Date()
c.setHours(a.getHours() + b.getHours())
c.setMinutes(a.getMinutes() + b.getMinutes())
c.setSeconds(a.getSeconds() + b.getSeconds())

Now we have the right sum of times.
Is there a better way of doing that? Is there a way that iso-fns can help me with that? Thank you very much.

Apologies for the late reply- I'm a graduate student and the end of the semester hits hard 😂. This is exactly the problem iso-fns is solving. iso-fns is multi-domain, meaning it has not one, but eight different date time types

Instant: a fixed point in time without regard to calendar or location, e.g. July 20, 1969, at 20:17 UTC.
ZonedDateTime: a timezone-aware date/time that represents a real event that has happened (or will happen) at a particular exact time from the perspective of a particular region on Earth, e.g. December 7th, 1995 at 3:24 AM in US Pacific time.
DateTime: represents a calendar date and wall-clock time that does not carry time zone information, e.g. December 7th, 1995 at 3:00 PM.
Date: represents a calendar date that is not associated with a particular time or time zone, e.g. August 24th, 2006.
Time: represents a wall-clock time that is not associated with a particular date or time zone, e.g. 7:39 PM.
YearMonth: A date without a day component. This is useful to express things like "the October 2020 meeting".
MonthDay: A date without a year component. This is useful to express things like "Bastille Day is on the 14th of July".
Duration: expresses a length of time, e.g. 5 minutes and 30 seconds. This is used for date/time arithmetic and for measuring differences between two dates/times.

Your example in iso-fns would look like
timeFns.add("00:00", {minutes: 30}) // "00:30"


Use Ruff format

Use Ruff format

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (aa517ce) 100.00% compared to head (eabdc13) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #173   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            6         6
  Lines          188       188
  Branches        28        28
=========================================
  Hits           188       188

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


Document ids are confusing when using subfolders and versioning

🐛 Bug Report
(Not sure if this should be a proposal instead).
When using both subfolders and versioning, document ids become quite confusing.
Have you read the [Contributing Guidelines on issues]
Yes
To Reproduce

Start with a file docs/sub1/doc1.md, with id: doc1. It is accessible as /docs/sub1/doc1, as expected.
Run yarn docusaurus-version v2.

Expected behavior
I expect document id, path, sidebar reference and URL to follow a consistent pattern, instead of four different ones.
I would expect something like this:
path: versions/v2/sub1/doc1.md
id: v2/sub1/doc1 # should be automatically inferred from the path, but that's another issue
sidebar: v2/sub1/doc1
url: /docs/sub1/doc1
versioned url: /docs/v2/sub1/doc1

I would also expect the versioned URL to be available immediately, not only when the next version is published. But that's also another issue.
Actual Behavior
path: version-v2/sub1/doc1.md
id: version-v2-doc1
sidebar: version-v2-sub1/doc1
url: /docs/sub1/doc1
versioned url: /docs/v2/sub1/doc1

Reproducible Demo
TODO

While i agree it can be confusing, doing the change now will require all docusaurus user to manually edit their markdown file on the versioned folder.
Lets avoid major breaking changes for now
Sent with GitHawk


Remove ruby from packages

Remove Ruby from the stack to reduce the CVE surface area of the image. Work has been done in the Java Buildpack to remove reliance on a stack-provided Ruby installation.
Packages removed:

ruby

Packages added:

none

Packages in the final receipt that were removed as a result of these changes:

libruby3.0:amd64
rake
ruby
ruby-net-telnet
ruby-rubygems
ruby-webrick
ruby-xmlrpc
ruby3.0
rubygems-integration

also requesting @robdimsdale

@ryanmoran, @sophiewigmore
That's pretty late notice about removing ruby from the newest stack. The buildpack we use is mainly written in Ruby and it's not really popular one like java buildpack.
https://github.com/cloudfoundry/ibm-websphere-liberty-buildpack
If there's no further development of this BP we would get into the trouble.
Is it final decision about this?


[tenplay] Add support for downloading whole seasons

Description of your pull request and other information
Adapted from gormster's Fix 10Play PR on youtube-dl; https://github.com/ytdl-org/youtube-dl/pull/31892
Allows to download whole seasons, e.g. https://10play.com.au/masterchef/episodes/season-14
Fixes #7744
(Not sure if this should be using _perform_login()... not quite sure on the details specifically of how the authentication should be setup, but that's existing code :P
Template

Before submitting a pull request make sure you have:

[x] At least skimmed through contributing guidelines including yt-dlp coding conventions
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8 and ran relevant tests

In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under Unlicense. Check all of the following options that apply:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

(adapted from yt-dl 31982; I have written most of it from scratch & structured differently, but most of the logic comes from there. Also the commit message also links to there)
What is the purpose of your pull request?

[x] Fix or improvement to an extractor (Make sure to add/update tests)
[ ] New extractor (Piracy websites will not be accepted)
[ ] Core bug fix/improvement
[ ] New feature (It is strongly recommended to open an issue first)

Copilot Summary

🤖 Generated by Copilot at e05e6af
Summary
🆕🌐🎞

Add support for season URLs of 10play in a new extractor class TenPlaySeasonIE. Import this class in the _extractors module.

Sing, O Muse, of the skillful coder who devised
A new extractor class for the 10play website,
Where many a season of shows can be accessed
By the TenPlaySeasonIE that joins the URLs aright.

Walkthrough

Import new extractor class TenPlaySeasonIE from tenplay module (link)
Add urljoin function from utils module to construct absolute URLs (link)
Define TenPlaySeasonIE class that inherits from TenPlayIE and extracts a playlist of episodes from a season URL (link)

In the future, try to avoid force-pushing. Having an explicit commit chain helps with reviewing.
The commits will be squashed so you don't worry how the history looks. Take as many commits as needed.


Dark mode text color change

In dark mode the text under Installation is not clearly visible . I think making it white will be great .

Fixed on same PR #1045


Bulkrax importer page stuck processing (Ajax error)

Post cutover, I edited an existing importer on prod to test how it would run. I told it to rerun the metadata. The full importer list shows that the importer is running with works enqueued, processed, and failed. However, opening the importer page shows the Processing message until it is replaced by an error message. Details for the works never loads.
Importer URL: https://sdapi.b2.adventistdigitallibrary.org/importers/557?locale=en
Full importer listing:

Ajax error:

Sometimes, on other importers we will get cloudflare error.

During the times it actually loads, it also displays "processing" until it eventually throws the same data tables error from above.

Folks, the Ajax error is present on the SDAPI tenant and it is blocking more work in that context than it did/does in the ADL tenant.
The Ajax error causes the full importer page to freeze frequently. Refresh usually brings it back. However, some importer pages won't load the works (which blocks me from investigating errors and failed works like in the importer linked below). The pages spin and say processing, then the Ajax error appears. Forward progress is blocked.

https://sdapi.b2.adventistdigitallibrary.org/importers/631?locale=en


Integrate back end

Merge branch that finishes and integrates the back-end

At this moment this branch cannnot be merged

Now that all endpoints are working as planned this branch can be merged


ci: use keyless cosign and super-linter

:tada: This PR is included in version 1.4.8 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Is it possible to restart after a crash?

I've had situations when the extension crashes and I would like to be able to restart it without having to restart the whole VSCode. Is this currently possible?

What do you mean by crash?
It shouldn't happen, if it's happening that's a bug.
(for more detail all the heavy lifting is done by one time process calls to another binary so i expect the server to do not die at all.)

@vasco it would be great to provide a repro for the crash.

I don't remember what were the precise steps to repro. I was just coding in a .res file, made a bunch of changes with mistakes and when I saved the file the vscode extension through a warning that there was a compilation error, so I kept trying to fix it using my best guesses and after the third tried it crashed.
It has happened to me a couple of times since I upgraded to the latest v1.1.2

Feel free to reopen with a repro.

Meanwhile, I'll strengthen a couple of parts blindingly, but might be completely unrelated to what you have experienced.
If it happens again, it would be great to try to reproduce it and open a new issue.


Invalid media description 'metadata'

We are trying to record a RTSP stream using Media-MTX, but an error is thrown due to an invalid media description field with the value: 'metadata':
2023/12/01 13:23:42 ERR [path test] [RTSP source] invalid SDP: sdp: invalid value `metadata`

The SDP response contains the following section:
m=metadata 0 RTP/AVP 98
c=IN IP4 <IP_ADDRESS>
b=AS:1000
a=rtpmap:98 METADATA/90000
a=control:track2
a=x-onvif-track:track2
a=x-bufferdelay:1.000000

The sdp.go only the values described in RFC 4566 are allowed and therefore the error is thrown and the stream is not valid. If we add the value metadata to sdp.go the stream is recorded as intended. Would it be possible to add this value, or if not: could you let us know if it is save to add the value even though its not specified in the RFC? Our change looks something like this:
// <media>
// Set according to currently registered with IANA
// https://tools.ietf.org/html/rfc4566#section-5.14
if fields[0] != "video" &&
	fields[0] != "audio" &&
	fields[0] != "application" &&
	fields[0] != "metadata" &&
	!strings.HasPrefix(fields[0], "application/") {
	return fmt.Errorf("%w `%v`", errSDPInvalidValue, fields[0])
}

I believe this example came from an (older) UDP Technology dome camera, but I am unsure about the exact model.

Fixes with #478


Insights app shows some error on Log settings.

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Installed the app
Open the App
Click on Log Settings

Screenshots

Serverpod versions

CLI Version: 1.1.0
Library version: 1.1.0

Platform information
sw_vers
ProductName:		macOS
ProductVersion:		13.4
BuildVersion:		22F5037d

There should be better error messages here for sure!

@yahu1031 - Could you validate that this is still an issue?
With the latest version of insights, an error message is displayed in log settings if no project is connected for example.
Closing this as resolved but please open it again if the problem persists.

Yes seems fixed.


crash fixes and updates to client.py

1.The client would crash if no server connection was established. This has been fixed.
2.The Chat interface was not working as intended. Pressing the [t] key was meant to open up the chat but was not properly setting the focus to the chat entry. This has been fixed and the code for placement of the chat has been changed to pin it to the lower left corner regardless of screen resolution.
3.The camera was, in my opinion, not practical. The code for moving the camera has been replaced with code that allows the user to toggle between 3 camera views. The default is a third person shoulder level PoV, the second is a first person PoV, and the third is a free camera PoV ( hold RMB to zoom in and out, hold MMB to change angle of view, press [c] key to toggle between views ).
3a. Auto Run is now available by pressing the period key [.] on either the standard keyboard or the numpad.

Sorry about the indents as I could not easily change from my 2 indent style to the 8 indent style.

Very nice! Thanks for taking the time to make the PR :smile:
Had a couple of questions, but overall looks good.

Sorry for the additional commits. This Pull Request should be good to go.

Nice!


[google_maps_flutter] Breaking change fix for bitmap scaling

Description
Fixes the breaking change introduced in https://github.com/flutter/plugins/pull/1737
Related Issues
https://github.com/flutter/flutter/issues/34386
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[ ] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[ ] All existing and new tests are passing.
[ ] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

Friendly ping. What's the status of this pull request?

@iskakaushik ?

@duzenko is it possible to add a test that would've caused this to fail? or at least an example that would trigger this code path?

@duzenko is it possible to add a test that would've caused this to fail? or at least an example that would trigger this code path?

I doubt a test for this exists. I could write one though. The example was given by @asanoki in the parent PR.

I could probably write one though. The example was given by @asanoki in the parent PR.

Thanks!

I could probably write one though. The example was given by @asanoki in the parent PR.

Thanks!

How do I make tests play nice with assets? It looks like assets are not accessible from tests currently.
Please see my attempt in the last commit.
The console output suggests that it can not find the asset images.
I run it with
flutter drive test_driver/google_maps.dart

any updates?

any updates?

Try adding the emoji on the first post.
This PR seems to have been 'prioritized'.

@asanoki @iskakaushik why the review is taking so long? We are using this PR and it works fine, can it be approved?

@asanoki @iskakaushik why the review is taking so long? We are using this PR and it works fine, can it be approved?

Let's push the fix please

Let's push the fix please

A friendly reminder to check this PR and solve the issue in this discussion:
https://github.com/flutter/flutter/issues/24865

Happy to merge this once the conflicts are resolved and the tests pass.

Happy to merge this once the conflicts are resolved and the tests pass.

Happy to complete the tests after my question receives a reply.

Happy to merge this once the conflicts are resolved and the tests pass.

Happy to complete the tests after my question receives a reply.

I'm surprised that this doesn't work. Assets should be available if you add them to the example app. Can you post the console output that you're seeing? Thanks!

Happy to merge this once the conflicts are resolved and the tests pass.

Happy to complete the tests after my question receives a reply.

I'm surprised that this doesn't work. Assets should be available if you add them to the example app. Can you post the console output that you're seeing? Thanks!

iOS test does not work at all
a@Mac-Admin example % flutter drive test_driver/google_maps.dart
Using device Anton Duzenko’s iPhone.
Starting application: test_driver/google_maps.dart
Found saved certificate choice "Apple Development: Антон Дузенко (CC9C8Z5BXR)". To clear, use "flutter config".
Signing iOS app for device deployment using developer identity: "Apple Development: Антон Дузенко (CC9C8Z5BXR)"
Running Xcode build...

 ├─Assembling Flutter resources...                           7.3s
 └─Compiling, linking and signing...                         3.7s
Xcode build done.                                           13.4s
Checking for advertised Dart observatories...
Checking for available port on io.flutter.plugins.googleMobileMapsExample._dartobservatory._tcp.local
Checking for authentication code for io.flutter.plugins.googleMobileMapsExample._dartobservatory._tcp.local
Installing and launching...                                        18.0s
[info ] FlutterDriver: Connecting to Flutter application at http://<IP_ADDRESS>:1025/AvzbD6S1PdU=/
[trace] FlutterDriver: Isolate found with number:<PHONE_NUMBER>433295
[trace] FlutterDriver: Isolate is paused at start.
[trace] FlutterDriver: Attempting to resume isolate
[trace] FlutterDriver: Waiting for service extension
[info ] FlutterDriver: Connected to Flutter application.
Stopping application instance.

Android test works but I'm not sure what it's supposed to test.
BitmapDescriptor.fromAssetImage(imageConfiguration, 'red_square.png') seems to always return an descriptor with pixelRatio=1.
So while I can't reproduce the original missing asset problem, these two are still blocking.

Any updates on this?

Any updates on this?

@collinjackson what's the policy on 'dead locked' PRs? @duzenko seems to be stuck on resolving testing issue to ensure they pass, to get the PR to position where it could be approved. Someone has to do something .... otherwise we will remain without a fix.
Any suggestions how how he can resolve his question" https://github.com/flutter/plugins/pull/1821#issuecomment-511742017

@duzenko Does this now help enough for you to be able to finish doing the tests, so we can get your great work on this PR done?

@duzenko Does this now help enough for you to be able to finish doing the tests, so we can get your great work on this PR done?

I don't see any help for the tests above at all

Thanks for the PR. I left some comments.

Here you are

Any updates on this guys ? :)

Any updates on this guys ? :)

@cyanglaz
please review the today's commit

the submit-queue check seems to be stuck. Will close this PR and reopen to rerun the check.

@submit-queue[bot] poke


Blogpost for unified training operator

Draft of the training operator blogpost

/cc @kubeflow/wg-training-leads Please have a review

Thanks @theadactyl for putting time on this.
Rest all looks good.
/lgtm

/lgtm
/approve
Thank you @johnugeorge for composing this blogpost, and everyone for the review!

/approve

/approve


How to do TagUI visual automation using OCR

Raising this issue on behalf of user email so that other users can benefit -

I planning to make a tagui script in recognizing a receipt and was wondering is there tutorials in using visual automation OCR ?

This part of homepage would cover on the setup and use of the visual recognition - https://github.com/kelaberetiv/TagUI#visual-automation
In particular, you probably use something like below -
dclick image_of_pdf_icon.png
wait 5 seconds
read page.png to pdf_contents
echo pdf_contents

Breakdown of what the lines above do -

double click on the desktop icon of the pdf file to be opened. note that dclick step is still in cutting edge version. If you have installed TagUI from the packaged release, you can download the cutting edge version to overwrite your local installation.

wait for a few seconds to make sure pdf file has been opened in pdf viewer on your laptop

the read step captures info from elements to a variable. if used with .png or .bmp as the element, it will look for an element on the screen instead of a webpage. using page.png tells TagUI to scan through the whole screen for text and saves the OCR text captured to variable pdf_contents

do your post-processing to extract whatever info you want from the receipt, using standard JavaScript string manipulation code. after that you can echo or do the other steps with that information. My favorite reference for JS is https://www.w3schools.com/js/default.asp (I usually search for something on google but it almost always goes to this w3 schools).

Note that the OCR is based on Tesseract which is the standard open-source library for OCR. I think the best state of the art is still lousy for hand-written text. But for printed fonts it should do fairly ok. Try above out and lemme know if you run into issues!

Hi @adegard Xvfb is X Virtual Frame Buffer. It is a virtual display buffer to be used on Linux that has no display screen / monitors. An example would be running on VM (virtual machine) that does not have display. To set up, you can look at the link above and search for setup instructions for your version of Linux. I have not tried setting up Xvfb before but I have heard from people who used it for other purposes that it can be a pain to configure to work correctly.
For the integration with AutoHotKey or RoroScript, there are more details here - https://github.com/kelaberetiv/TagUI/issues/113 I aim to integrate them on a better level. Right now, you can write AHK scripts and trigger them with the TagUI run step. Am thinking over how to make the integration better.
Thanks for your encouragement! Thanks to AI Singapore who hired me and continue working on this project as part of my job. Otherwise, frankly, it is hard in 2018 open-source world to maintain an open-source project on your own part-time. If a project becomes successful, the number of users will be too much to support as a part-time maintainer.

Thank you @kensoh for your answer. I'm a beginner devlopper so virtual display seems to me a little bit complicate for now...
Aboout AutoHotKey, I would like to make a little tool for editing Tagui script if it is possible... Can I share with you a repository to work on it? it is a little menu to remember mains comands in english (activated by using crtl+left click), it is not completed, but I could share it to you and other user: https://github.com/adegard/tagui_scripts
I read about AI Singapore and other blogs on RPA, it seems that for beginners UIpath is a bit complicate and RPA express too much big program to install... So in my opinion Tagui is a very good alternative, simple and leight. Please continue your project, even it's so hard to maintain ;-)

Re-posted here for more visibility - as it is related to AHK and that issue is still open.


CGA does not load contigs after being selected from workspace

Making the selection:

And the text box never fills with the file:

Moreover, when I look at the drop-down box, those damn contigs aren't there, so totally stuck!!!

Issue only happens if loading contig from Public Workspace.  Loads okay from my home directory


Node 6.2.0 NPM 3.8.9: Homebridge killed /node_modules/npm

all those replaced below are basically deletions.  The directory and modules are no longer there . . . back to the drawing board.  At least I'm beyond it can't find node-gyp.
Homebridge works great on my MACBOOKPRO, but I have failed at every attempt to get it to run on my QNAP TS253Pro.  90% or perhaps all of the problems are with the NAS and not homebridge.  Next time I'll try the install in a public directory away from the node_modules.  Sorry the debug file got wiped also.
<EMAIL_ADDRESS>/share/CACHEDEV1_DATA/.qpkg/nodejs/node/lib/node_modules/npm
└──<EMAIL_ADDRESS>extraneous
npm WARN In<EMAIL_ADDRESS>replacing bundled version of abbrev with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ansi-regex with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ansicolors with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ansistyles with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of aproba with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of archy with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of chownr with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of cmd-shim with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of clone with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of proto-list with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of debuglog with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of asap with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of editor with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of fs-vacuum with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of fs-write-stream-atomic with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of fstream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of balanced-match with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of concat-map with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of balanced-match with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of concat-map with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of path-is-absolute with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of graceful-fs with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of has-unicode with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of hosted-git-info with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of iferr with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of imurmurhash with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of inflight with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of inherits with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ini with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of balanced-match with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of concat-map with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of path-is-absolute with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of promzard with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lockfile with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._baseindexof with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._createset with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._setcache with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._bindcallback with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._cacheindexof with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._createcache with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._getnative with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._baseclone with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.isarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.keys with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.restparam with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._baseflatten with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.rest with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.uniq with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._setcache with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.rest with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of minimist with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of balanced-match with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of concat-map with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lru-cache with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of sigmund with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ms with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of d with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of es6-iterator with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of nopt with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of normalize-git-url with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of builtin-modules with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of npm-cache-filename with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of npm-install-checks with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of npm-package-arg with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of core-util-is with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of isarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of process-nextick-args with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of string_decoder with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of util-deprecate with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of typedarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of retry with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of npm-user-validate with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ansi with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of delegates with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.repeat with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.tostring with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.repeat with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.tostring with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.repeat with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.tostring with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of once with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of opener with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of os-homedir with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of os-tmpdir with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of path-is-inside with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of mute-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of read-cmd-shim with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of util-extend with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of balanced-match with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of concat-map with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of path-is-absolute with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of jju with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of read-package-tree with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of core-util-is with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of acorn with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of foreach with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of isarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of object-keys with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of isarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of xtend with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of isarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of process-nextick-args with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of string_decoder with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of esmangle-evaluator with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ast-types with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of esprima with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of private with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of source-map with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of util-deprecate with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of readdir-scoped-modules with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of realize-package-specifier with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of aws-sign2 with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of pseudomap with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of yallist with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of core-util-is with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of isarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of process-nextick-args with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of string_decoder with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of util-deprecate with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of caseless with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of delayed-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of extend with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of forever-agent with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of async with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ansi-styles with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of escape-string-regexp with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of has-ansi with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of supports-color with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of graceful-readlink with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of generate-function with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of is-property with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of jsonpointer with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of xtend with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of pinkie with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of boom with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of cryptiles with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of hoek with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of sntp with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of assert-plus with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of extsprintf with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of json-schema with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of verror with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of asn1 with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of assert-plus with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of ecc-jsbn with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of jodid25519 with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of jsbn with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of tweetnacl with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of is-typedarray with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of isstream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of json-stringify-safe with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of mime-db with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of node-uuid with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of oauth-sign with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of qs with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of stringstream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of tough-cookie with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of tunnel-agent with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of retry with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of rimraf with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of semver with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of sha with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of slide with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of sorted-object with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of strip-ansi with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of block-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of text-table with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of uid-number with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of umask with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of unique-slug with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of unpipe with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of spdx-license-ids with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of spdx-exceptions with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of spdx-license-ids with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of builtins with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of is-relative with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of isexe with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of wrappy with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of write-file-atomic with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of defaults with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of dezalgo with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._baseuniq with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.clonedeep with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.union with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash._basedifference with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of debug with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of is-builtin-module with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.pad with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.padend with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.padstart with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of osenv with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of read-installed with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of chalk with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of commander with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of generate-object-property with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of pinkie-promise with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of dashdash with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of mime-types with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of spdx-correct with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of spdx-expression-parse with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of is-absolute with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of validate-npm-package-name with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of config-chain with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of brace-expansion with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of brace-expansion with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of brace-expansion with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of mkdirp with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of brace-expansion with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of minimatch with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of readable-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of are-we-there-yet with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of read with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of brace-expansion with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of json-parse-helpfulerror with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of readable-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of recast with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lru-cache with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of readable-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of combined-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of form-data with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of tar with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of unique-filename with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of es5-ext with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of falafel with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of hawk with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of jsprim with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of wcwidth with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of lodash.without with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of normalize-package-data with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of gauge with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of is-my-json-valid with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of validate-npm-package-license with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of which with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of minimatch with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of minimatch with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of minimatch with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of minimatch with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of minimatch with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of sshpk with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of through2 with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of unreachable-branch-transform with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of aws4 with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of concat-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of bl with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of glob with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of fstream-ignore with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of glob with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of columnify with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of glob with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of npmlog with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of glob with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of inline-process-browser with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of har-validator with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of npm-registry-client with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of es6-symbol with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of http-signature with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of init-package-json with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of read-package-json with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of fstream-npm with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of readable-stream with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of array-index with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of request with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of path-array with<EMAIL_ADDRESS>npm WARN In<EMAIL_ADDRESS>replacing bundled version of node-gyp with<EMAIL_ADDRESS>npm ERR! Linux 3.12.6
npm ERR! argv "/share/CACHEDEV1_DATA/.qpkg/nodejs/node/bin/node" "/opt/bin/npm" "install" "homebridge"
npm ERR! node v6.2.0
npm ERR! npm  v3.8.9
npm ERR! path /share/CACHEDEV1_DATA/.qpkg/nodejs/node/lib/node_modules/npm/node_modules/.staging/npm-3ec3a9a7
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/share/CACHEDEV1_DATA/.qpkg/nodejs/node/lib/node_modules/npm/node_
modules/.staging/npm-3ec3a9a7' -> '/share/CACHEDEV1_DATA/.qpkg/nodejs/node/lib/node_modules/npm'
npm ERR! enoent ENOENT: no such file or directory, rename '/share/CACHEDEV1_DATA/.qpkg/nodejs/node/lib/node_modules/npm/node_
modules/.staging/npm-3ec3a9a7' -> '/share/CACHEDEV1_DATA/.qpkg/nodejs/node/lib/node_modules/npm'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Linux 3.12.6
npm ERR! argv "/share/CACHEDEV1_DATA/.qpkg/nodejs/node/bin/node" "/opt/bin/npm" "install" "homebridge"
npm ERR! node v6.2.0
npm ERR! npm  v3.8.9
npm ERR! path npm-debug.log.3581445944
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'npm-debug.log.3581445944'
npm ERR! enoent ENOENT: no such file or directory, open 'npm-debug.log.3581445944'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Please include the following file with any support request:
npm ERR!     /share/CACHEDEV1_DATA/.qpkg/nodejs/node/lib/node_modules/npm/node_modules/npm-debug.log

This was probably a "Da-aah!", I have reloaded homebridge dozens of times and not had this problem duplicated.  I don't know what mistake I made, but I'm sure I did something stupid.


Undo mappings in insert mode don't work as expected

for _, char in ipairs({ '<space>', '-', '_', ':', '.', '/' }) do
  vim.keymap.set('i', char, char .. '<c-g>u')
end

After mappings, insert <space> or - cannot insert a undo point as expected.

The feature to solve this, which is falling back to keymapping, is on the TODO list.
But until I get to that part of the TODO list, you can use this config:
require'ultimate-autopair'.init({
    require'ultimate-autopair'.extend_default({
        --Your config
    }),
    {profile='map',p=-1,
        {'i',' ',function () return vim.api.nvim_replace_termcodes(' <C-g>u',true,true,true) end},
        {'i','-',function () return vim.api.nvim_replace_termcodes('-<C-g>u',true,true,true) end},
    },
})

This workaround seems also adding cmap.

Fixed


iOS: Don't scroll when going back to a story list (#832)

See #832.

Very nice. Tested this and it works better than the middle strategy.


Add noInnerDeclarations lint rule

My attempt to add the no-inner-declaration lint rule.
Also, wouldn't it be nice to be able to specify the lint rules we want to check against when calling the testLint function? This to be able to run only the tested rule in isolation for each test and avoid the result being "polluted" by the other rules.
What do you think?

I think the reported lint issues are valid ones. What do you think?

This to be able to run only the tested rule in isolation for each test and avoid the result being "polluted" by the other rules.

All the lint rules are going to be ran together. It's best for the tests to be as close to the code paths that the user will ran as possible. For things like autofixes, they can interact in odd ways if we test them independently versus all together.

I'm actually not sure if this lint rule makes sense anymore. Function declarations in blocks are totally allowed and the behaviour is well standardized. Especially since it's not a conflicting rule with #146.


Authorize-Attribute producing white page / empty claims

Hi,
first of all thanks for the great work - it's really appreciated and I am currently working on using your solution productively ;)
I can finish the authorization process and get redirected to the ASP.NET-page after I succesfully logged in - but it seems the identity gets lost afterwards, probably because the SET-Cookie-Command that should appear after the login is not reaching my browser.  If I add an [Authorize]-Attribute I only get a 401-response, seeing a blank page. If I try to access the Claims-View without the Authorize-Attribute I don't get any claims, and in the AccountController/Login-Method User.Identities.Any(identity => identity.IsAuthenticated) always returns false - so I get redirected to the login-page of the ADFS, that immediately redirects me back to the application.
I tried to replicate what you did in your sample application in a blank .NET Core Web-Application - maybe I missed something.
Some snippets from my code :
ConfigureServices:
services.AddAuthentication(
                options => options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);

Configure:
 var adfsSettings = Configuration.GetSection("ADFS");
            app.UseCookieAuthentication(new CookieAuthenticationOptions());
            app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
            {
                Wtrealm = adfsSettings.GetValue<string>("Wtrealm"),
                MetadataAddress =
                   adfsSettings.GetValue<string>("Metadata")
            });

I copied your Views & Controllers into my project.
I also need to do some ssl-redirection, but I don't think it is related to it :
var sslPort = 0;
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
                // https://long2know.com/2016/07/asp-net-core-enforcing-https/
                var builder = new ConfigurationBuilder()
                        .SetBasePath(env.ContentRootPath)
<EMAIL_ADDRESS>optional: false, reloadOnChange: true);
                var launchConfig = builder.Build();
                sslPort = launchConfig.GetValue<int>("iisSettings:iisExpress:sslPort");
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

// https://long2know.com/2016/07/asp-net-core-enforcing-https/
            app.Use(async (context, next) =>
            {
                if (context.Request.IsHttps)
                {
                    await next();
                }
                else
                {
                    var sslPortStr = sslPort == 0 || sslPort == 443 ? string.Empty : $":{sslPort}";
                    var httpsUrl = $"https://{context.Request.Host.Host}{sslPortStr}{context.Request.Path}";
                    context.Response.Redirect(httpsUrl);
                }
            });

This are my dependencies:

Any ideas what I might be missing?
Thanks & best regards,
Christoph

Looks good to me. The only thing I'm not doing is that SSL redirect. Can
you capture the traffic in the Chrome dev tools (enable Preserve Logs) or
something similar so I can see what's getting passed back and forth?
On Wed, Mar 22, 2017 at 6:32 AM Compufreak345<EMAIL_ADDRESS>wrote:

Hi,
first of all thanks for the great work - it's really appreciated and I am
currently working on using your solution productively ;)
I can finish the authorization process and get redirected to the
ASP.NET-page after I succesfully logged in - but it seems the identity gets
lost afterwards, probably because the SET-Cookie-Command that should appear
after the login is not reaching my browser. If I add an
[Authorize]-Attribute I only get a 401-response, seeing a blank page. If I
try to access the Claims-View without the Authorize-Attribute I don't get
any claims, and in the AccountController/Login-Method
User.Identities.Any(identity => identity.IsAuthenticated) always returns
false - so I get redirected to the login-page of the ADFS, that immediately
redirects me back to the application.
I tried to replicate what you did in your sample application in a blank
.NET Core Web-Application - maybe I missed something.
Some snippets from my code :
ConfigureServices:
services.AddAuthentication(
options => options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);
Configure:
var adfsSettings = Configuration.GetSection("ADFS");
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
Wtrealm = adfsSettings.GetValue("Wtrealm"),
MetadataAddress =
adfsSettings.GetValue("Metadata")
});
I copied your Views & Controllers into my project.
I also need to do some ssl-redirection, but I don't think it is related to
it :
var sslPort = 0;
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
// https://long2know.com/2016/07/asp-net-core-enforcing-https/
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
<EMAIL_ADDRESS>optional: false, reloadOnChange: true);
var launchConfig = builder.Build();
sslPort = launchConfig.GetValue("iisSettings:iisExpress:sslPort");
}
else
{
app.UseExceptionHandler("/Home/Error");
}
// https://long2know.com/2016/07/asp-net-core-enforcing-https/
app.Use(async (context, next) =>
{
if (context.Request.IsHttps)
{
await next();
}
else
{
var sslPortStr = sslPort == 0 || sslPort == 443 ? string.Empty : $":{sslPort}";
var httpsUrl = $"https://{context.Request.Host.Host}{sslPortStr}{context.Request.Path}";
context.Response.Redirect(httpsUrl);
}
});
This are my dependencies:
[image: image]
https://cloud.githubusercontent.com/assets/10026694/24197937/fcc68584-0f03-11e7-8f44-088ad06e30e0.png
Any ideas what I might be missing?
Thanks & best regards,
Christoph
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/chrisdrobison/aspnetcore-wsfed/issues/1, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ABu24Z7yxzx5NV8fweeomlKFoSjMKLO5ks5roRTegaJpZM4MlIEM
.

The important call to look for is the one the post back to /signin-wsfed. That should be where the claims are read in and handed off to the middleware that stores them--in this case the cookie middleware.

Read the part about the important call just yet, after doing my professional screenshots xD So, I think screenshots 7,8 & 9 might be the most interesting ones.
1:

2:

3:

4:

5:

6:

7:

8:

9:

10:

Numbers 7 & 8 doesn't look like the POST is going to /signin-wsfed, which is where the post would need to go for those claims to get picked up. On the WsFederationOptions object, you can try setting CallbackPath to something else. I'm guessing something is out of sync between an ADFS setting and the defaults this middleware puts in place. What does the list of reply urls look like in ADFS? Also, on number 1, is there a wreply attribute? In the end, ADFS does need to POST back to whatever the configured CallbackPath is so that the claims can get picked up.

It may be that ADFS is POSTing to the wtrealm (I can't be sure though, it has been a long time since I've used on-prem ADFS) in the absence of a wreply attribute, which is something Azure AD does not do in my sample. I'll have to look when I get on my computer a little later.

Unfortunately we are currently not administrating the ADFS I am using, so I don't know what the attributes you ask for are currently set to.
But, fortunately I found a workaround for now :
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
            {
                Wtrealm = adfsSettings.GetValue<string>("Wtrealm"),
                MetadataAddress =
                   adfsSettings.GetValue<string>("Metadata"),
                Wreply = adfsSettings.GetValue<string>("Wtrealm") + "/signin-wsfed"
            });

Just as a sidenote: When I set up the ADFS with the .NET Framework 4.6.2 Web-App-Wizard it automagically worked without me setting these parameters. So it seems to do something similar in the background. Maybe setting the default Wreply to match the default CallbackPath might be a solution.
I'm really thankful to have a working ADFS in .NET Core now, this is awesome!

Okay, I put that in and have updated the Nuget package.


What about using ngResource, etc. Inside the web worker?

I tried a to execute some ngResource calls in the web worker but $resource, and other things weren't avalable inside the worker.
Any thoughts on this?

It can get a little confusing. You can write a function in your angular app, but it converts it into its own thread. Lexical scope of variables that you are used to cannot be shared between your worker function at your main code.
It is however possible to load other files like angular into your webworker, but I'm not sure what features will and wont work. It might require some core modifications to even run. If you try this, keep in mind that there is no DOM to bootstrap in the worker. Also, require.js is also webworker compatible if you like require.


Use dea apis to create subjobs, manage state, work directories and logging

Note that Travis will fail until the DEA patch is merged: GeoscienceAustralia/digitalearthau#32
I'm raising this now as an example of using the apis.  See that pull request for the folder structure currently used.
Notes:

The app is no longer managing locations of pickled task files, pbs parameters between jobs, etc. Most "decisions" about pbs jobs I'm trying to move to the common dea lib.
umask/etc are set by default by the dea apis (default is currently set to 33 at the moment, which we used on previous jobs)

Coverage decreased (-2.8%) to 38.701% when pulling f3ef773115475f3930503e788b89d373dbdd5b68 on jeremyh:master into<PHONE_NUMBER>3086cfadc960303542ceaab42032af on GeoscienceAustralia:master.


createHistory error when trying to use createBrowerHistory

I have tried substituting createBrowserHistory for createHistory in my basename configuration for a React application and keep getting the error "createHistory is not a function" EVEN THOUGH createHistory is NOT EVEN IN MY CODE.  It seems that bundle.js is picking up createHistory from the history module at some point (rather than using createBrowserHistory.  Frankly, I am baffled by this, since the createBrowserHistory substitution is something that I picked up from examples and can't see why it shouldn't work.
This happens even when I include both {createBrowserHistory, createHistory} -- which shouldn't be necessary.
I have history v 2.1.0 in the top level of node_modules repository and history v 2.1.0 in the top of my "react-router" module.
const history = useRouterHistory(createBrowserHistory)({
basename: '/react_librivox_search/'
});
TypeError: createHistory is not a function
useBasename/<()bundle.js (line 27095)
useQueries/<()bundle.js (line 24459)
useRouterHistory/<(options=Object { basename="/react_librivox_search/"})

break on exceptions and see what's going on, happy to reopen if you find a problem but it seems unlikely, wish i had time to help you debug.

The documentation for basename customization is wrong for the current version ( 2.8.1) of react-router that I happen to be using:
https://github.com/ReactTraining/react-router/blob/master/docs/guides/Histories.md

Defining a basename:
import { useRouterHistory } from 'react-router'
import { createHistory } from 'history'
const history = useRouterHistory(createHistory)({
basename: '/base-path'
})

FIRST
"import {createHistory} from 'history'" tries to find the history module in the top-level node_module folder.  IF you have the current history (v 4.3.0) installed there, it does NOT have a "createHistory" function.  So createHistory is UNDEFINED.  When it is injected into useRouterHistory(createHistory), this causes the "createHistory is not a function" error when the code hits the following webpack transpiled code:
function useBasename(createHistory) {
return function () {
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var history = createHistory(options);   <----- ERROR IS HERE
. . . .
SECOND
react-router (v 2.8.1) now has its OWN included history dependency in  "node_modules/history".  Presumably THIS is the one that we are supposed to use.  To import that, you have to do this:
 import createBrowserHistory from 'react-router/node_modules/history/lib/createHistory';

You might THINK that the following would work (if history has been imported into the react-router package), but it doesn't:
 import createHistory from 'react-router';

It also gives the "createHistory is not a function" error (createHistory is UNDEFINED).
FINALLY
According to Dan Abramov,
"I know it's somewhat confusing—maybe we should just rename createHistory to something like
createAbstractHistory or whatever just so people stop importing it by mistake. createHashHistory() and
createBrowserHistory() are compatible with React Router, but createHistory() is low-level and isn't meant
for use with it."  (  https://github.com/mjackson/history/issues/106 )
So the solution for me was the following, since I in fact wanted to use browserHistory:
 import { useRouterHistory } from 'react-router';
 import { createBrowserHistory } from 'react-router/node_modules/history/lib/createBrowserHistory';

 const history = useRouterHistory(createBrowserHistory)({
      basename: '/base-path'
 })

ReactDOM.render(
    <Provider store={librivoxStore}>
        <Router history={history}>    <--- Then reference history in the router JSX
        . . . .

EXTRA NOTE:
When I try to include createHistory with
import createHistory from 'react-router/node_modules/history/lib/createHistory';

I got the following error:
TypeError: getCurrentLocation is not a function

So Abramov seems to be right, and the documentation is really OFF in showing the use of  createHistory with the current version of react router.

Such a mess, I tried<PHONE_NUMBER>9889455023 configuration versions find around Stack Overflow and GitHub and none seems to work: why can't anybody point out a 2017 working version of "basename in react-router"?

The examples use it

@ryanflorence examples where? I can't even find those with any reference to useRouterHistory

@shawnmclean ... useRouterHistory is no longer in react-router under node_modules
This worked in 3.0.2 but not now in 4.0.0
...
import { useRouterHistory } from 'react-router'
import { createHistory } from 'history'
...
// Set up the router history off the base application name.
const browserHistory = useRouterHistory(createHistory)({ basename: '/sample-app' })
const historyRouterMiddleware = routerMiddleware(browserHistory)

Test app here if you would like to see more - https://github.com/rpoitras/sample-app

Was in the same situation as @damianobarbati (tried countless approaches without success), but finally was able to get rid of the createHistory is not a function error by slightly changing the import 😲
- import { createBrowserHistory } from 'react-router/node_modules/history/lib/createBrowserHistory';
+ import createBrowserHistory from 'react-router/node_modules/history/lib/createBrowserHistory';

import { Router, Route, useRouterHistory } from 'react-router';
import createBrowserHistory from 'react-router/node_modules/history/lib/createBrowserHistory';

const browserHistory = useRouterHistory(createBrowserHistory)({
  basename: '/apps/test/myapp/myapp.html',
});

FWIW: here the output from npm ls history
+--<EMAIL_ADDRESS>`--<EMAIL_ADDRESS>  `--<EMAIL_ADDRESS>

You need to pair react-router 3.x with history 3.x. You have the wrong version of history installed.

@timdorr thanks for your comment. I'll inform our devs (I'm only doing the integration into the CMS and have no prior experience with react). Anyway, it seems to work now with the mentioned changes, so I tought it might still be valuable for others that are experiencing the same issue.

Just make sure, if you're using react-router 3.x, you do npm install --save history@3 react-router@3

@timdorr any tips/docs on how to replace useRouterHistory() in<EMAIL_ADDRESS>

Sorry about all the spam on a closed issue. I think <Router> will need to be replaced with <BrowserRouter> and then put the basename tag in there. I'm still have problems with syncing the history with the store.  I'll keep digging and stop posting on here.

It seems that simply setting the basename in createBrowserHistory like described in the history docs does not work.
const history = createHistory({
  basename: '/the/base'
})

For react-router 2.4 .. 3.x this works for me:
const browserHistory = useRouterHistory(createHistory)({ basename: '/sample-app' })

For react-router 4.0.0:
const browserHistory = createBrowserHistory()
...
<BrowserRouter basename='/sample-app'>  // from react-router-dom

Full examples:
https://github.com/rpoitras/sample-app
https://github.com/rpoitras/sample-app/tree/react-router-4

@timdorr, I'm seconding @rpoitras' question - are there any tips or docs on how to replace useRouterHistory() in<EMAIL_ADDRESS>

You don't need to. Just create a history instance from the history library. It works without modification now.

Hi @gabygandrade here is an example of setting up browser history in a store https://github.com/rpoitras/sample-app/blob/react-router-4/src/main/web/app/store.js
And then using it in the app's main entry point https://github.com/rpoitras/sample-app/blob/react-router-4/src/main/web/app/index.js
Hope this helps.

This is such a mess and poorly documented; Google searches lead to a confusing array of GitHub, StackExchange, and other idiosyncratic "answers" … is there some clear guide somewhere that supersedes the literally hundreds of conflicting problem-solution pairs that litter the interwebs? :)

@merges most stuff is in here: https://reacttraining.com/react-router/

Pretty frustrating how poor the docs are on upgrading to v4 re: history. None of the suggested approaches are working, even trying your sample app @rpoitras is giving me errors re: Could not find a declaration file for module 'history/createBrowserHistory' using history@4, react-router@4, <EMAIL_ADDRESS>

@dwasyluk that example has gotten stale.  I'll do some upgrades and make sure it's working.  One other thing I want to change is the usage of static routing.  I think the authors recommendations are best.

@dwasyluk https://github.com/rpoitras/sample-app/tree/react-router-4 should be working now.  I'd suggest starting with a fresh node_modules.  BTW I cannot upgrade past<EMAIL_ADDRESS>or HMR stops working properly.  When making changes to a React Component I get:
[HMR] Cannot apply update. Need to do a full reload!
[HMR] Error: Aborted because <some-component> is not accepted Update propagation:

[hmr] (probably because of restarting the server)
[hmr] cannot find update. need to do a full reload!
react [hmr] cannot apply update. need to do a full reload!
the following modules couldn't be hot updated: (they would need a full reload!)

@dwasyluk
Fixed the webpack/HMR issue.  I had to remove the routes bundle.  Older versions of webpack was able to descend the tree from the main app's index in one bundle to the routes in another bundle.  That doesn't seem to work anymore.

I get the same error as- WEBPACK_IMPORTED_MODULE_10_history_createBrowserHistory__.createHistory is not a function. I have "react": "^15.6.1", "react-router": "^4.1.1", "react-router-dom": "^4.1.1",
"react-router-redux": "^4.0.8". Please help me
I am not getting the solution anywhere.

@sugandhgoyal You have to use react-router-redux@next. The previous version is likely giving you the wrong version of history to import from.

Not to pile on the mixed messages in this thread, but i went back and forth trying to get rid of my warnings about using base in my index.html header.  This post seemed to be exactly the same thing I was experiencing.  I ended up removing React-Router (v2.x) and History (vX.x) from my project and reinstalling using version 3 for React-Router.

npm install --save react-router@3

I didn't not explicitly include v3.x history install as I hoped react-router's install would install what it needed, which it appeared it did.
I did not have to do any workarounds using createBrowserHistory at this point. Simply using:
import { useRouterHistory } from 'react-router'
import { createHistory } from 'history'

const history = useRouterHistory(createHistory)({
basename: '/base-path'
})

Worked fine at that point.  I didn't even realize the relationship between react router in history.  For the record, I did try the same with version React Router 4.x but got error

TypeError: (0 , _reactRouter.useRouterHistory) is not a function

So dropped down to 3.x and  thats when everything worked.  Good luck to any with this issue.
ReactDOM.render(
  <Router history={history}>

Just replace:
import { createHistory } from 'history'
to:
import  createHistory from 'history'