Skip to content

Web app improvements #81

@georgefst

Description

@georgefst

The web branch contains Miso code for generating the app currently deployed at https://georgefst.github.io/pretty-simple. This is really just a proof of concept. Places to improve:

  • General prettiness - the current layout exposes the fact that I'm very much not a web developer.
    • EDIT: since Web app #116, I don't think it's too bad (ironically, two years on from the above comment, frontend web development is a big part of my job).
  • The initial settings for the buttons and sliders do not currently reflect the initial OutputOptions. I was unsure how to set the right HTML attributes, without them being constantly refreshed and causing flickering. Probably worth asking on the Miso Slack channel. See this unused commit.
    • Relatedly, selecting an example from the drop-down menu should populate the text box.
  • The settings should be reflected in the URL - I've found myself wanting to share a particular formatting of an expression.
  • It would be nice to have several example inputs to select from. Perhaps some of these. At least one should show an effect from changing the StringOutputStyle dropdown (see pPrint prints unexpected characters for unprintable string contents #64).
  • Sliders should display exact current value as text.
  • Version bounds. I've been using GHC 9.2 with plain Cabal, and GHC 8.6 (!) with Nix, which may make it awkward to get this right. Also, because this isn't a library, and we mostly only care about the Nix build, which has everything pinned, this is much less of an issue than it would usually be.
  • Host at a more suitable URL. Probably https://cdepillabout.github.io/pretty-simple in order to match this repository.
  • Integrate with CI, so that it can be rebuilt and deployed whenever a release tag is pushed.
  • Link to the webpage prominently from Github and Hackage.
  • Switch from GHCJS to GHC's own JS backend.
    • Actually, WASM would be even better. See examples. Note that the packaging situation is currently a bit messy, so it might be best to wait for that. For example, currently Nix is strongly recommended for managing ghc-wasm-meta, but we can only (easily?) use it to get a development shell, rather than an actual package derivation.
    • There's no rush on this. Everything still works with the current code. The biggest reason to move might be dropping support for GHC 8.6, but we're pretty conservative about dropping old GHCs. At time of writing, we still test 8.0.2 on CI.

Note that, for development, everything can be built with just Cabal, which will use jsaddle to run a web server. Use nix-build to compile to JavaScript, using GHCJS.

Inspiration:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions