/platypuslol

Clone of bunny1 (or facebooks bunnylol) in Rust.

Primary LanguageRustBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

platypuslol

Clone of bunny1 (or facebooks bunnylol) in Rust. Works as local server. Use at your own risk (for now).

Instructions

Assuming you have rust installed, simply run

make install

It will install everything for you, and run the service using systemd on linux. See Makefile for more details. If you are on mac, you are on your own, but please share how you did it, I am happy to include it here.

After that, visit https://localhost:3047/install in your browser, follow instructions and profit. You can edit then ~/.config/platypus-lol/commands.json to your liking.

TODO

  • Split into separate crates: nfa parser, redirect query, command line tool, wasm module
  • Create mock extension (with faked suggestor)
  • Bundle WASM into extension
  • Plug in the parser (with hardcoded config or something like that).
  • Fix suggestion behavior -- return multiple suggestions for substitutions
  • Fix suggestion behavior -- return multipls suggestions in middle of substitution
  • Figure out how to handle state
  • Figure out how to handle configuration
  • [-] Extension pages: conflict resolution -- canceled, no conflict resolution, just everything
  • Extension pages: list of all commands
  • Extension pages: configuration
  • Options validation
  • [-] Make it possible to load parser from external configured url. -- canceled, this is not easy, because of chrome security model
  • Fix suggestions behavior (return longer items)
  • Consider removing regex node for compile time weight (or not bundle it into wasm).
  • Removal of duplicit suggestions in API, not in client
  • Make it as suggestion api server.
  • Make list of commands page.
  • [-] Make configuration page. Not necessary
  • Make hot reloading of config file.
  • Rename binary
  • Check equivalency with haskell and delete haskell
  • Limit size for returning amount of suggestions to some reasonable number (20)
  • Docker / systemd setup with cron-like update of config repo
  • When doing something wrong, substitute query for anything? -- parser do not allow it I think
  • Figure out why reloading of config does not work.
  • Default to google or other configurable search engine
  • Require space between suggestions, but not before / after if it's fixed word.
  • Test for 2 different substitutions of same type
  • Make default and extra config (multiple config files possible)
  • Add possible to have local files
  • keyboard shortcut for list page if possible to fill
  • Check for html escapes and so on from links redirects
  • Remove unwraps, handle errors properly everywhere
  • Better validation errors and documentation
  • Add more tests to all parser parts to document expectations / behavior of modules
  • Add better parser error handling -- more useful errors
  • Foldable list of command for same type of suggestion (substitutions)
  • Go over code, remove unnecessary things / dependencies (some libraries are heavy)
  • Remove browser extension
  • Simplify after removing extension
  • shortcuts [e]xtend all
  • shortcuts fi[r]st, defa[u]lt
  • just fold by tokens
  • Work with mouse
  • back with mouse
  • Help message for list
  • Make it pretty
  • UI for commands
  • Help message for commands