Giter VIP home page Giter VIP logo

caniuse.rs's Introduction

Rust feature search

About

This site allows you to quickly which version of Rust stabilized a certain feature, or whether it is still unstable. Head over to caniuse.rs to try it!

Contributing

Running the site locally

First you need to be able to run the site locally of course, to try your changes.

Pre-requisites:

  • cargo
  • wasm-pack (website has install instructions, to build from source use cargo install wasm-pack)
  • rollup (npm install --global rollup if you have npm installed)

Once those are installed, just run cargo xtask serve and the site will be built and served at http://localhost:8000/.

Adding data

You may want to look at issue #16 for missing data. These fields can be specified for a feature:

  • title: Short description to identify the feature. Should fit into "can i use {title}?".
  • flag: The feature flag, if any – you can most often find this in the diff of the stabilization or implementation PR, for library features look for #[stable] and #[rustc_const_stable] attributes.
  • rfc_id: RFC ID, if applicable – the number of the PR that added the RFC. Also the first part of the filename of the RFC after being merged.
  • impl_pr_id: Implementation PR ID, if applicable – the number of the PR that added this feature. For features where is no clear single implementation PR, leave out this field.
  • tracking_issue_id: Tracking issue ID, if applicable.
  • stabilization_pr_id: Stabilization PR ID, if applicable.
  • doc_path: Documentation path, if applicable – https://doc.rust-lang.org/{path}.
  • edition_guide_path: Edition guide path, if applicable – https://doc.rust-lang.org/edition-guide/{path}
  • unstable_book_path: Unstable book path, if applicable – https://doc.rust-lang.org/unstable-book/{path}
  • items: Language items (functions, structs, modules) that are part of this feature – do not specify if this feature is exactly one item and that item is already used as the title
  • aliases: Alternatives to the title

Related Projects

caniuse.rs's People

Contributors

a1phyr avatar bastidood avatar chrysn avatar davidpdrsn avatar homersimpsons avatar jdkaplan avatar jplatte avatar not-my-profile avatar robjtede avatar thomwiggers avatar workingjubilee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

caniuse.rs's Issues

Support Standback

Standback allows for newer Rust std APIs to be used from older versions of Rust. Features should additionally have a standback badge if they are not supported in the version of Rust, but are by Standback.

Thanks for this service 💜!

It's very useful and I believe I will use it more in order to avoid accidentally targeting the very latest version of Rustc.

Thanks for hosting it for the community!
I would love to see it mentioned in the Release notes of new Rust stable releases, giving it more exposure.

Closing this 'issue' as it is just a way to say thanks.

"About" button and "?" icon should move closer together

Hey @jplatte,
regarding the discussion in #1, I really like the new design! Thank you for being so responsive and for your nice comment. 😊

In my view, the section in the menu with the "About" button can be improved further:
At the moment, "About" and "?" are pretty far apart from each other. One could easily get the false impression that these are two separate buttons.
Therefore, my suggestion is, to move them closer together.
Something like this. What do you think?

New design:
Screenshot_2020-03-11 caniuse rs Rust feature search

Old design:
Screenshot_2020-03-11 caniuse rs Rust feature search(1)

Enable query parameter

Hey,

you created a great application. I would like to add it to my browser search bar with a shortterm. But for this, i need a query parameter.
In best case, it should looks like this: https://caniuse.rs/?query=%s.

Thank you and have a great day,
Heiss

Consider using .toml files instead of .md files

a407f82 split features.toml into many small files ... which of course makes sense maintenance-wise. The data is now however stored in .md files with a TOML frontmatter like

+++
title = "`debug_assert_ne!`"
rfc_id = 1653
impl_pr_id = 35074
tracking_issue_id = 35073
+++

this makes the data harder to work with. If you want to use the data for any other purpose you need to write your own parser for this non-standardized format. It also makes contributing a bit harder ... because it's not immediately clear what format these files have. .toml files are well understood by Rust programmers so I think they really are the natural choice.

Soft crash on input to search bar

As soon as I try to enter anything in the search bar I get the output in console:

caniuse_rs.js:458 panicked at 'No current Scope. `use_context` can only be called inside function components', /home/jplatte/.cargo/registry/src/github.com-1ecc6299db9ec823/yew-0.19.3/src/functional/hooks/use_context.rs:38:10

Stack:

Error
    at imports.wbg.__wbg_new_693216e109162396 (https://caniuse.rs/caniuse_rs.js:446:23)
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[760]:0x547e2
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[310]:0x39f61
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[604]:0x42e91
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[718]:0x43feb
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[98]:0x16538
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[204]:0x2d94c
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[93]:0x13d8e
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[277]:0x37f2e
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[387]:0x3dca6


imports.wbg.__wbg_error_09919627ac0992f5 @ caniuse_rs.js:458
$func760 @ caniuse_rs.wasm:0x54867
$func310 @ caniuse_rs.wasm:0x39f61
$func604 @ caniuse_rs.wasm:0x42e91
$func718 @ caniuse_rs.wasm:0x43feb
$func98 @ caniuse_rs.wasm:0x16538
$func204 @ caniuse_rs.wasm:0x2d94c
$func93 @ caniuse_rs.wasm:0x13d8e
$func277 @ caniuse_rs.wasm:0x37f2e
$func387 @ caniuse_rs.wasm:0x3dca6
$func363 @ caniuse_rs.wasm:0x3cda0
$func104 @ caniuse_rs.wasm:0x1937f
$func715 @ caniuse_rs.wasm:0x43f0e
$_dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hffc6db5e0694434e @ caniuse_rs.wasm:0x43b46
__wbg_adapter_26 @ caniuse_rs.js:257
real @ caniuse_rs.js:243
caniuse_rs.wasm:0x39f84 Uncaught RuntimeError: unreachable
    at caniuse_rs.wasm:0x39f84
    at caniuse_rs.wasm:0x42e91
    at caniuse_rs.wasm:0x43feb
    at caniuse_rs.wasm:0x16538
    at caniuse_rs.wasm:0x2d94c
    at caniuse_rs.wasm:0x13d8e
    at caniuse_rs.wasm:0x37f2e
    at caniuse_rs.wasm:0x3dca6
    at caniuse_rs.wasm:0x3cda0
    at caniuse_rs.wasm:0x1937f
$func310 @ caniuse_rs.wasm:0x39f84
$func604 @ caniuse_rs.wasm:0x42e91
$func718 @ caniuse_rs.wasm:0x43feb
$func98 @ caniuse_rs.wasm:0x16538
$func204 @ caniuse_rs.wasm:0x2d94c
$func93 @ caniuse_rs.wasm:0x13d8e
$func277 @ caniuse_rs.wasm:0x37f2e
$func387 @ caniuse_rs.wasm:0x3dca6
$func363 @ caniuse_rs.wasm:0x3cda0
$func104 @ caniuse_rs.wasm:0x1937f
$func715 @ caniuse_rs.wasm:0x43f0e
$_dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hffc6db5e0694434e @ caniuse_rs.wasm:0x43b46
__wbg_adapter_26 @ caniuse_rs.js:257
real @ caniuse_rs.js:243

Further if I enter more I get more errors:

caniuse_rs.js:458 panicked at 'called `Option::unwrap()` on a `None` value', src/components/app.rs:95:88

Stack:

Error
    at imports.wbg.__wbg_new_693216e109162396 (https://caniuse.rs/caniuse_rs.js:446:23)
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[760]:0x547e2
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[310]:0x39f61
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[604]:0x42e6b
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[564]:0x42245
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[387]:0x3dcbe
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[363]:0x3cda0
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[104]:0x1937f
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[715]:0x43f0e
    at https://caniuse.rs/caniuse_rs.wasm:wasm-function[678]:0x43b46


imports.wbg.__wbg_error_09919627ac0992f5 @ caniuse_rs.js:458
$func760 @ caniuse_rs.wasm:0x54867
$func310 @ caniuse_rs.wasm:0x39f61
$func604 @ caniuse_rs.wasm:0x42e6b
$func564 @ caniuse_rs.wasm:0x42245
$func387 @ caniuse_rs.wasm:0x3dcbe
$func363 @ caniuse_rs.wasm:0x3cda0
$func104 @ caniuse_rs.wasm:0x1937f
$func715 @ caniuse_rs.wasm:0x43f0e
$_dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hffc6db5e0694434e @ caniuse_rs.wasm:0x43b46
__wbg_adapter_26 @ caniuse_rs.js:257
real @ caniuse_rs.js:243
caniuse_rs.wasm:0x39f82 Uncaught RuntimeError: unreachable
    at caniuse_rs.wasm:0x39f82
    at caniuse_rs.wasm:0x42e6b
    at caniuse_rs.wasm:0x42245
    at caniuse_rs.wasm:0x3dcbe
    at caniuse_rs.wasm:0x3cda0
    at caniuse_rs.wasm:0x1937f
    at caniuse_rs.wasm:0x43f0e
    at caniuse_rs.wasm:0x43b46
    at __wbg_adapter_26 (caniuse_rs.js:257:14)
    at HTMLBodyElement.real (caniuse_rs.js:243:24)
$func310 @ caniuse_rs.wasm:0x39f82
$func604 @ caniuse_rs.wasm:0x42e6b
$func564 @ caniuse_rs.wasm:0x42245
$func387 @ caniuse_rs.wasm:0x3dcbe
$func363 @ caniuse_rs.wasm:0x3cda0
$func104 @ caniuse_rs.wasm:0x1937f
$func715 @ caniuse_rs.wasm:0x43f0e
$_dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hffc6db5e0694434e @ caniuse_rs.wasm:0x43b46
__wbg_adapter_26 @ caniuse_rs.js:257
real @ caniuse_rs.js:243
Unchecked runtime.lastError: The message port closed before a response was received.
Unchecked runtime.lastError: The message port closed before a response was received.
Unchecked runtime.lastError: The message port closed before a response was received.
Unchecked runtime.lastError: The message port closed before a response was received.
Unchecked runtime.lastError: The message port closed before a response was received.
Unchecked runtime.lastError: The message port closed before a response was received.
Unchecked runtime.lastError: The message port closed before a response was received.

It also makes me unable to click any links anymore.

Similar thing on firefox:

panicked at 'No current Scope. `use_context` can only be called inside function components', /home/jplatte/.cargo/registry/src/github.com-1ecc6299db9ec823/yew-0.19.3/src/functional/hooks/use_context.rs:38:10

Stack:

init/imports.wbg.__wbg_new_693216e109162396@https://caniuse.rs/caniuse_rs.js:446:23
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[760]:0x547e2
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[310]:0x39f61
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[604]:0x42e91
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[718]:0x43feb
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[98]:0x16538
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[204]:0x2d94c
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[93]:0x13d8e
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[277]:0x37f2e
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[387]:0x3dca6
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[363]:0x3cda0
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[104]:0x1937f
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[715]:0x43f0e
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[678]:0x43b46
__wbg_adapter_26@https://caniuse.rs/caniuse_rs.js:257:14
real@https://caniuse.rs/caniuse_rs.js:243:24
EventListener.handleEvent*init/imports.wbg.__wbg_addEventListener_55682f77717d7665/<@https://caniuse.rs/caniuse_rs.js:531:29
handleError@https://caniuse.rs/caniuse_rs.js:286:22
init/imports.wbg.__wbg_addEventListener_55682f77717d7665@https://caniuse.rs/caniuse_rs.js:530:83
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[610]:0x42fda
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[101]:0x176a1
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[95]:0x1525e
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[87]:0xf6bf
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[185]:0x2ad67
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[82]:0x6edb
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[87]:0xf7a6
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[185]:0x2ad67
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[82]:0x6edb
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[87]:0xf7a6
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[185]:0x2ad67
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[82]:0x6edb
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[87]:0xf7a6
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[79]:0x3423
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[93]:0x13d8e
@https://caniuse.rs/caniuse_rs.wasm:wasm-function[107]:0x1a196
run@https://caniuse.rs/caniuse_rs.js:263:14
main@https://caniuse.rs/caniuse_rs.js:712:13
async*@https://caniuse.rs/caniuse_rs.js:714:9
@https://caniuse.rs/caniuse_rs.js:722:3


caniuse_rs.js:458:25
    __wbg_error_09919627ac0992f5 https://caniuse.rs/caniuse_rs.js:458
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:346215
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:237409
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:274065
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:278507
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:91448
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:186700
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:81294
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:229166
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:253094
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:249248
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:103295
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:278286
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:277318
    __wbg_adapter_26 https://caniuse.rs/caniuse_rs.js:257
    real https://caniuse.rs/caniuse_rs.js:243
    (Async: EventListener.handleEvent)
    __wbg_addEventListener_55682f77717d7665 https://caniuse.rs/caniuse_rs.js:531
    handleError https://caniuse.rs/caniuse_rs.js:286
    __wbg_addEventListener_55682f77717d7665 https://caniuse.rs/caniuse_rs.js:530
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:274394
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:95905
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:86622
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:63167
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:175463
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:28379
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:63398
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:175463
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:28379
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:63398
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:175463
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:28379
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:63398
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:13347
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:81294
    <anonymous> https://caniuse.rs/caniuse_rs.wasm:106902
    run https://caniuse.rs/caniuse_rs.js:263
    main https://caniuse.rs/caniuse_rs.js:712
    <anonymous> https://caniuse.rs/caniuse_rs.js:714
    <anonymous> https://caniuse.rs/caniuse_rs.js:722

System specs:

Windows 10
Google Chrome - Version 98.0.4758.102 (Official Build) (64-bit)
Firefox - 97.0.1 (64-bit)

Data to add

It can be a somewhat time-intensive task to collect all the relevant data about a feature in addition to just keeping on top of what things are getting stabilized. This is my todo list of stuff that's been stabilized and I've been meaning to add. Help in gathering data and putting it into the right format (simple example, complex example) would be much appreciated.

ToDo (stable):

ToDo (unstable):
Needs another update once stabilized

Done:

SSL certificate issue

Seems that certificates for caniuse.rs and www.caniuse.rs are mixed up

$ curl -vvv https://caniuse.rs
* Rebuilt URL to: https://caniuse.rs/
*   Trying 37.120.167.212...
* TCP_NODELAY set
* Connected to caniuse.rs (37.120.167.212) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=www.caniuse.rs
*  start date: Mar  5 09:31:56 2020 GMT
*  expire date: Jun  3 09:31:56 2020 GMT
*  subjectAltName does not match caniuse.rs
* SSL: no alternative certificate subject name matches target host name 'caniuse.rs'
* stopped the pause stream!
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
curl: (51) SSL: no alternative certificate subject name matches target host name 'caniuse.rs'
 $ curl -vvv https://www.caniuse.rs                                                                                       
* Rebuilt URL to: https://www.caniuse.rs/
*   Trying 37.120.167.212...
* TCP_NODELAY set
* Connected to www.caniuse.rs (37.120.167.212) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=caniuse.rs
*  start date: Mar  4 18:18:33 2020 GMT
*  expire date: Jun  2 18:18:33 2020 GMT
*  subjectAltName does not match www.caniuse.rs
* SSL: no alternative certificate subject name matches target host name 'www.caniuse.rs'
* stopped the pause stream!
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
curl: (51) SSL: no alternative certificate subject name matches target host name 'www.caniuse.rs'

Consider adding `keywords` field

E.g. the generators feature is also known as "coroutines", so it should also show up when searching for "coroutines". Currently the only way to do that would be to add it to the title e.g. "generators (coroutines)" ... but that approach doesn't scale well. For some features there might be many names.

Make website accessible without JavaScript

Currently https://caniuse.rs/ requires both JavaScript and WebAssembly. If you lack one of those you just get a blank page.

I think we can make the site more accessible as well as greatly simplify its build process:

  • main.rs would just generate a bunch of static .html files along with a single .json file containing all feature data (which by the way is also what caniuse.com is doing)
  • there would be some small optional JavaScript that enables the client-side search

For the search we could use the same setup that mdBook is using: elasticlunr.js + elasticlunr-rs to have the search index be generated statically. I think the resulting search would be even more performant than the current search (I have a noticable lag when starting to type).

Of course the optional search part could also be implemented in Rust & WASM but I really don't think that there is any good reason for that ... it just significantly increases both the build as well as the runtime dependencies.

Search should yield exact matches first

image

And if there are enough good matches I would also expect matches with a low trigram score to be hidden ... It's a bit confusing getting shown "intra-doc links" when searching for "sink".

Make About button more intuitive

The heart on the button leading to the About page is a poor choice. It's so strongly associated with like/fave (or, secondarily, with donate or bookmark) that, when it failed to produce a tooltip, I didn't click it to figure out what it did until after I'd searched through the DOM inspector trying to identify its purpose by a CSS class or some other non-href, non-tooltip indicator.

I strongly recommend two things:

  1. Consider following the rule of thumb I follow: Every icon without accompanying text must have a tooltip. (This is also an accessibility improvement, since screen readers can access tooltips.)
  2. Use iconography built around a question mark instead, since that's secondarily associated with "About" via the primary association of "Help".

Perhaps a "question mark in a circle" design like this FontAwesome glyph: https://fontawesome.com/icons/question-circle?style=solid

(You could even use that FontAwesome glyph. It's part of the CC-BY 4.0 licensed free subset and they offer an SVG version via the download button near the top of that page.)

Cookies are required

I can't load the website with cookies turned off. It seems that it is trying to use LocalStorage, which requires cookies:

Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
    at https://caniuse.rs/caniuse_rs.js:604:17
    at https://caniuse.rs/caniuse_rs.js:623:2

I am using Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36.

I have cookies off by default to protect my privacy. It is an inconvenience to whitelist this site, and I would prefer to keep them off anyway.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.