wso2 / carbon-ui-server Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Description:
org.wso2.carbon.uis.feature
feature does not create following directories upon installation.
<carbon_home>/deployment/web-ui-apps/
<carbon_home>/wso2/<runtime>/deployment/web-ui-apps/
Affected Product Version:
0.10.1
OS, DB, other environment details and versions:
N/A
Steps to reproduce:
org.wso2.carbon.uis.feature
into a product.<carbon_home>/deployment/web-ui-apps/
and <carbon_home>/wso2/<runtime>/deployment/web-ui-apps/
directories.Related Issues:
N/A
Currently maven-checkstyle-plugin
plugin is disabled in the parent pom.xml. This needs to be enabled.
Description:
Deploy web app via only HTTP or HTTPS transport.
Suggested Labels:
New Feature
Suggested Assignees:
@this (SajithAR)
Description:
Can deploy an empty directory.
Affected Product Version:
v.13.1
Currently org.wso2.carbon.uis.api.App class does not have a method to retrieve all extensions of a given type.
Description:
Currently configuration.yaml
is mandatory in a web UI app. Make it optional.
Affected Product Version:
0.10.1
OS, DB, other environment details and versions:
N/A
Steps to reproduce:
N/A
Related Issues:
N/A
Through the org.wso2.carbon.uis.spi.Server
OSGi service, other services should be able to get deployed web apps.
Description:
With the current implementation, we append the word app
just after the app context
https://localhost:9292/publisher/public/app/dist/index.bundle.js
Since we use that naming convention to differentiate the app specific static files and extensions, Shall we remove the app
prefix making it default to pick app static files.
With this, the above URL will change as
https://localhost:9292/publisher/public/dist/index.bundle.js
Making it easy to locate the file in the backend as well.
AFAIK[1] , when a resource can't be found it should return a 404 Error, But currently, it returns a 400 Error.
Suggested Assignees:
Affected Product Version:
Description:
Exception org.wso2.carbon.uis.internal.exception.DeploymentException
is thrown inside the deploy()
method of the org.wso2.carbon.uis.internal.io.deployment.ArtifactAppDeployer
instead of org.wso2.carbon.deployment.engine.exception.CarbonDeploymentException
.
Affected Product Version:
0.10.2
OS, DB, other environment details and versions:
N/A
Steps to reproduce:
Refer code.
Related Issues:
N/A
Following exception stack trace is found when building the repo with mvn clean install
.
java.lang.IllegalArgumentException: Invalid syntax for version: 0.8.0-SNAPSHOT
at aQute.bnd.version.Version.<init>(Version.java:46)
at aQute.bnd.osgi.Analyzer.augmentExports(Analyzer.java:1711)
at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:229)
at aQute.bnd.osgi.Builder.analyze(Builder.java:352)
at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:618)
at aQute.bnd.osgi.Builder.build(Builder.java:81)
at org.apache.felix.bundleplugin.BundlePlugin.buildOSGiBundle(BundlePlugin.java:632)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:351)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:268)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:259)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
java.lang.IllegalArgumentException: Invalid syntax for version: 0.8.0-SNAPSHOT
at aQute.bnd.version.Version.<init>(Version.java:46)
at aQute.bnd.osgi.Analyzer.augmentExports(Analyzer.java:1711)
at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:229)
at aQute.bnd.osgi.Builder.analyze(Builder.java:352)
at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:618)
at aQute.bnd.osgi.Builder.build(Builder.java:81)
at org.apache.felix.bundleplugin.BundlePlugin.buildOSGiBundle(BundlePlugin.java:632)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:351)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:268)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:259)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
java.lang.IllegalArgumentException: Invalid syntax for version: 0.8.0-SNAPSHOT
at aQute.bnd.version.Version.<init>(Version.java:46)
at aQute.bnd.osgi.Analyzer.augmentExports(Analyzer.java:1711)
at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:229)
at aQute.bnd.osgi.Builder.analyze(Builder.java:352)
at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:618)
at aQute.bnd.osgi.Builder.build(Builder.java:81)
at org.apache.felix.bundleplugin.BundlePlugin.buildOSGiBundle(BundlePlugin.java:632)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:351)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:268)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:259)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
java.lang.IllegalArgumentException: Invalid syntax for version: 0.8.0-SNAPSHOT
at aQute.bnd.version.Version.<init>(Version.java:46)
at aQute.bnd.osgi.Analyzer.augmentExports(Analyzer.java:1711)
at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:229)
at aQute.bnd.osgi.Builder.analyze(Builder.java:352)
at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:618)
at aQute.bnd.osgi.Builder.build(Builder.java:81)
at org.apache.felix.bundleplugin.BundlePlugin.buildOSGiBundle(BundlePlugin.java:632)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:351)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:268)
at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:259)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Description:
Once a web app get registered to the transport, it does not get unregistered when it is undeployed.
Issue is in Msf4jHttpConnector.unregisterApp(String appName)
method. It does not perform the remove operation.
Affected Product Version:
0.10.4
When browsing http://localhost:9090/test, it shoes a page not found error. Instead it should be redirected to http://localhost:9090/test/
It is required to compose the api urls from the client side, in order to call the backend apis. For that we need to get the app context.
Description:
Currently context path of an app is computed by its name (/ + name
) and there is no way to configure that. Customers should be able to change the context path of an app.
Affected Product Version:
v 0.12.5
An OSGi error occurrs in the server startup when consuming the org.wso2.carbon.uis.spi.Server
service from another bundle. See below log.
[2017-09-20 12:22:43,218] ERROR {org.wso2.carbon.uis} - FrameworkEvent ERROR - org.wso2.carbon.uis org.osgi.framework.ServiceException: org.eclipse.equinox.internal.ds.ServiceReg.getService() returned a service object that is not an instance of the service class org.wso2.carbon.uis.spi.Server
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:243)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111)
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461)
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619)
at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:730)
at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:119)
at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:331)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:430)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bind(ServiceComponentProp.java:218)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:343)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
[2017-09-20 12:22:43,219] WARN {org.wso2.carbon.uis.test-component} - [SCR] Could not get the service object relevant to the reference. One possible reason is a circularity problem. Another possible reason is that BundleContext.getService() returns null.
Details:
Problematic reference = Reference[name = cuis-server, interface = org.wso2.carbon.uis.spi.Server, policy = dynamic, cardinality = 1..1, target = null, bind = setServer, unbind = unsetServer]
of service component = org.wso2.carbon.uis.test.internal.TestServiceComponent
component implementation class = org.wso2.carbon.uis.test.internal.TestServiceComponent
located in bundle with symbolic name = org.wso2.carbon.uis.test-component
bundle location = reference:file:../lib/plugins/org.wso2.carbon.uis.test-component_0.9.1.SNAPSHOT.jar
[2017-09-20 12:22:43,220] WARN {org.wso2.carbon.uis.test-component} - [SCR] ComponentReference.bind(): bind method 'setServer' is not found or it is not accessible!
Details:
Problematic reference = Reference[name = cuis-server, interface = org.wso2.carbon.uis.spi.Server, policy = dynamic, cardinality = 1..1, target = null, bind = setServer, unbind = unsetServer]
of service component = org.wso2.carbon.uis.test.internal.TestServiceComponent
component implementation class = org.wso2.carbon.uis.test.internal.TestServiceComponent
located in bundle with symbolic name = org.wso2.carbon.uis.test-component
bundle location = reference:file:../lib/plugins/org.wso2.carbon.uis.test-component_0.9.1.SNAPSHOT.jar
Description:
I'm wondering if it is still possible to deploy or configure the UI with a HTTP listener? I can find some hints that it should but no evidence so far. I live in an environment where HTTPS is a problem. A workaround would be to fake things that the UI accepts a login from a non-secure client. Because that's the main problem. The UI denies a login from HTTP.
Nevertheless, SSL termination at an earlier point in the infrastructure would be much better and easier to handle. I prefer to outsource SSL termination to a central place so all services would benefit from it.
Affected Product Version:
Stream Processor Status Dashboard 4.3.0
Steps to reproduce:
wso2.transport.http:
transportProperties:
- name: "server.bootstrap.socket.timeout"
value: 60
- name: "client.bootstrap.socket.timeout"
value: 60
- name: "latency.metrics.enabled"
value: true
listenerConfigurations:
- id: "default-https"
host: "0.0.0.0"
port: 9643
scheme: https
keyStoreFile: "${carbon.home}/resources/security/wso2carbon.jks"
keyStorePassword: wso2carbon
certPass: wso2carbon
Changing things to something like this
listenerConfigurations:
- id: "default-https"
host: "0.0.0.0"
port: 9643
scheme: https
doesn't work.
Caused by: org.wso2.carbon.uiserver.internal.exception.AppDeploymentEventListenerException: Cannot find any HTTPS transports to register web app 'portal'.
Related Issues:
Description:
Following WARN logs appears when building org.wso2.carbon.uis
module with mvn clean install
.
[INFO] --- maven-bundle-plugin:3.0.1:bundle (default-bundle) @ org.wso2.carbon.uis ---
[WARNING] Bundle org.wso2.carbon.uis:org.wso2.carbon.uis:bundle:0.13.0-SNAPSHOT : Unused Import-Package instructions: [org.wso2.carbon.kernel.startupresolver.*, org.osgi.service.component.annotations.*]
[WARNING] Bundle org.wso2.carbon.uis:org.wso2.carbon.uis:bundle:0.13.0-SNAPSHOT : Export org.wso2.carbon.uis.api, has 1, private references [org.wso2.carbon.uis.internal.exception],
Affected Product Version:
v.0.13.0
Description:
Following WARN log that complains netty-transports.yml
is not found, can be seen when starting the test distribution.
WARN {org.wso2.carbon.transport.http.netty.config.ConfigurationBuilder} - Netty transport configuration file not found in: conf/transports/netty-transports.yml ,hence using default configuration
Affected Product Version:
v0.11.0
Steps to reproduce:
Description:
There should be an API to retrieve messages for a given locale.
<APP>/languages/<LOCALE>.json
.GET
/<APP_CONTEXT_PATH>/apis/languages/
will return all available localesGET
/<APP_CONTEXT_PATH>/apis/languages/<LOCALE>
will return messages of the specified locale read from <APP>/languages/<LOCALE>.json
GET
/<APP_CONTEXT_PATH>/apis/languages/current
will return messages of the locale computed from the Accept-Language
HTTP headerThose should be changed to @since 0.8.0
Description:
Currently when a web app is deployed successfully, following log appears.
INFO {org.wso2.carbon.uis.internal.http.Msf4jHttpConnector} - Web app 'test' is available at 'https://0.0.0.0:9292/test'.
Instead of https://0.0.0.0:9292/test
URL, its better to print a user friendly URL e.g. https://10.100.7.128:9292/test
.
Affected Product Version:
v 0.12.2
ATM, when the server starts up URLs of the available apps ere printed in the colsole as follows.
Webapp 'test' is available at '/test'
Instead, printing the full URL (e.g. https://localhost:9292/test/) is more user friendly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.