By András Jankó on Monday, November 17, 2014 — 0 comments

CloudSharper 0.9.22.2 released Core team

This is a bugfix release with some additions for FSI.

Full changes:

  • #568: Do not send multiple commands to local service when using the "Retry" button on the dashboard screen.
  • Markdown documents with embedded F# code blocks show two buttons now. "Send to interactive" was renamed to "Run" and "Edit" just sends the contents to the Interactive input box without executing it.
  • DLL files have a "Reference in interactive" context menu which runs an #r command with that library.
  • "Find in solution explorer" context menu item on tab headers is only visible when the file has a node in solution view.

Happy coding!

By Adam Granicz on Thursday, November 13, 2014 — 2 comments

Self-hosted WebSharper application template available Core team

A new Visual Studio template has been added to the latest Visual Studio installer called "Self-Hosted Client-Server Application," and you can use this template to build OWIN-based self-hosted applications that can be deployed via an .exe file and without requiring an installed web container (IIS, etc.) on the serving machine.

The following code shows embedding a given sitelet (Site.MainSitelet) into an OWIN container and starting it:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module SelfHostedServer =

    open global.Owin
    open Microsoft.Owin.Hosting
    open Microsoft.Owin.StaticFiles
    open Microsoft.Owin.FileSystems
    open IntelliFactory.WebSharper.Owin

    [<EntryPoint>]
    let Main = function
        | [| rootDirectory; url |] ->
            use server = WebApp.Start(url, fun appB ->
                appB.UseStaticFiles(
                        StaticFileOptions(
                            FileSystem = PhysicalFileSystem(rootDirectory)))
                    .UseSitelet(rootDirectory, Site.MainSitelet)
                |> ignore)
            stdout.WriteLine("Serving {0}", url)
            stdin.ReadLine() |> ignore
            0
        | _ ->
            eprintfn "Usage: OWIN1 ROOT_DIRECTORY URL"
            1

The OWIN machinery to make this work has been released as a new WebSharper.Owin NuGet package as well. The new Visual Studio template contains this boilerplate code, takes care of fetching the dependent OWIN packages, and calls the generated OWIN container .exe with the right arguments to host your sitelets easily.

Work to add this new WebSharper project template to the MonoDevelop/Xamarin Studio integration is underway.

Let us know what you think and happy coding!

By András Jankó on Wednesday, October 29, 2014 — 0 comments

CloudSharper 0.9.22.1 released Core team

This is a bugfix release for cloud workspace management. A context menu item was added on cloud workspaces to get the clone and download links. If you delete a cloud workspace, you still have to wait a minute before you can re-upload it, but get correct notification about the failed upload.

Full change log:

  • #571: Download zip returns a corrupt archive.
  • #569: Add 'Get Share URL' option to cloud workspaces on the dashboard.
  • #570: Sync up fails if there are spaces in the workspace name.
  • #574: Dashboard workspace menus are not updated after sync operations.
  • #566: Fix uploading a previously deleted cloud workspace.

Happy coding!

By András Jankó on Tuesday, October 28, 2014 — 0 comments

CloudSharper 0.9.22.0 released Core team

The dashboard is now showing your cloud-synced workspaces as well as your local ones. Separate icons show the availability of your workspaces in local working directory and the cloud storage. You can access the sync up/down commands on the context menu of the workspaces grid or by the More menu above. If both cloud and local copy exists, sync up or down will overwrite the other copy or if newer files exist at the destination, you will have the choice of keeping the newer version of all files.

Opening a workspace clone link will now warn if a local clone already exists and ask for opening the last version or create a new clone. However, cloning information is only stored starting from this release so older cloned workspaces won't get notified about.

Full change log:

  • #561: Add cloud workspaces management on the dashboard.
  • #564: Detect when user is trying to open an online-only workspace.
  • #560: Users should be able to log in with their email addresses as well.
  • #561: Add cloud workspaces management on the dashboard.
  • #424: Fix for using IF.Build.
  • #447: Notify user when the number of synced up workspaces reached the quota of his or her account.
  • #553: Deleting a file removes its compiler errors in Notification.
  • #565: Opening a clone URL with existing local workspace.

Known issues:

  • #566: Fix uploading a previously deleted cloud workspace.
  • #568: List workspaces sometimes get called twice if Retry button on dashboard was used .
  • Happy coding!

    By Loïc Denuzière on Wednesday, October 15, 2014 — 0 comments

    CloudSharper 0.9.20.3 released Core team

    This release of CloudSharper adds configuration options for the local service's web server and the workspaces directory. These options are present in the CloudSharper.Console.exe.config file if you use the GUI console, or can be passed via the command line if you use CloudSharper.exe directly.

    • #558: Added an option rootdir pointing to the directory where CloudSharper should store workspace files.
      The string "$USERPROFILE" is replaced with the user's home directory (usually C:\Users\username in Windows).
      The default value is "$USERPROFILE\CloudSharper".
    • #559: Removed the option serveip and replaced it with two options: websocketserverip and webserverhostname.

      • websocketserverip configures the IP address on which the WebSockets server listens.
        The default is 127.0.0.1.
      • webserverhostname configure the hostname or IP address on which the web servers (for static files and WebSharper Sitelets) listen.
        The default is localhost.

    Note for users in restricted environments such as Windows Domain accounts:

    CloudSharper used to require the use of the netsh command with administrator privilege in order to be able to run its web servers. Starting with this version 0.9.20.3, this is not the case anymore when webserverhostname="localhost". However, you may still experience a failure to start the web server and an error message printed by CloudSharper advising you to use netsh to allow the server to run. The most likely reason is that the port was reserved for previous CloudSharper versions to serve under the hostname 127.0.0.1 instead of localhost. The best course of action is to remove this reservation by running the following command as administrator:

    1
    
    netsh http delete urlacl http://127.0.0.1:PORT/

    where PORT is the port number indicated in the error message.
    You do not need to then run the netsh http add command as advised in the error message, because localhost is allowed by default if no other hostname reserves the same port.

    If you have any questions, don't hesitate to ask us on the FPish forums.

    Happy coding!

    By András Jankó on Thursday, October 9, 2014 — 0 comments

    WebSharper 2.5.127 released Core team

    Additions to RPC functionality

    Map and Set types are now usable in RPC functions.

    If you are returning these to client side, be sure that the type of the set elements or map keys have the same comparison logic the server and client side, or else it can lead to unexpected behavior as the returned collection is not re-sorted. However, you don't have to worry about this if you don't explicitly overload the CompareTo method with a JavaSript `Inline` working differently than the method body running in .NET.

    Bugfixes

    • A compile error is given if a non JSON-encodable type is used in an RPC signature.
    • Date.now and the Async scheduler now works on IE8.
    • No more deprecated warning about using nodeValue.
    • In WIG, T<SomeGenericType<_>>.[YourTypeDefinition]
    • now translates properly to indicate the type SomeGenericType<YourType>.

    By András Jankó on Thursday, October 9, 2014 — 0 comments

    CloudSharper 0.9.20.2 released Core team

    This release fixes a long-standing bug: closing an FSI session by opening or closing a workspace would start an asynchronous infinite loop, spinning CPU and failing to restart FSI properly.

    Install the latest local service to avoid this issue.

    Full change log:

    • #336, #555: Fix CPU spinning on closing an FSI session.

    Happy coding!

    By András Jankó on Monday, October 6, 2014 — 0 comments

    CloudSharper 0.9.20.1 released Core team

    This release makes tooltips better, adds Go To Definition, close button on docked floating panes (Console/Interactive and Browser).

    The previous local component is compatible with the current site, however Go To Definition needs the latest.

    Full change log:

    • #538: Add editor context menu with Go To Definition.
    • #539: Hide code tooltips when mousing over them.
    • #554: X icon for both FloatingPane and corresponding docked panel.

    Happy coding!

    By András Jankó on Monday, September 29, 2014 — 0 comments

    CloudSharper 0.9.20.0 released Core team

    The highlight of this release is tooltips for F# code. Be patient when loading a larger projects, tooltips appear when the FSharp Compiler Services has loaded all the code files.

    Full change log:

    • Adding tooltips for F# in code editor.
    • #548: Style fixes with browse panel, toolbar and workspace treeviews.
    • Updating to WebSharper 2.5.127.64. Map<_,_> and Set<_> types are now usable in RPC arguments and results.

    Happy coding!

    By Loïc Denuzière on Wednesday, September 24, 2014 — 2 comments

    CloudSharper 0.9.19.3 released Core team

    The main highlight of this release is the switch from plain FSharp.Compiler.Service to the higher-level FSharp.CompilerBinding. This will allow us to benefit from more community-developed enhancements, and to develop improvements to the code service more quickly. A few bugs have already been fixed thanks to this transition, and you can expect hover tooltips, go to definition and more soon!

    Full change log:

    • #281: Close affected tabs when running rmdir
    • #300: Always fail as expected when trying to run a program that doesn't exist from the console
    • #543: Auto-close and match brackets in the editor
    • #544: Fix upload file window style
    • #546: Reassign tab when the file's directory is renamed
    • #547: Fix persisting "Loading custom editors..." message in some cases
    • #551: Correctly reflect saved changes to a file in the code service for another file of the same project
    • #552: Fix updating the completion list when typing extra letters

    Happy coding!