Remaining work before first public release:
Other important work:
Lower priority:
Hello @maoanran! I've talked about the basics in our readme.
That says how we build the project and how to set up a dev-loop so that you can instantly preview your work in the browser.
As for task assign, we just say in our common channel what we're going to work on.
Testing and verification is kind of bad at the moment because we're sprinting to meet the FF57 release. That said, we are using Typescript extensively and have strict type-checking for most of the codebase.
At the moment, testing consists of writing a change and checking that your change had the desired effect manually - we do have some automatic testing, but the coverage is awful. On the up-side, the code is written in a sort of functional style that will be easy to test if/when we get around to it.
Please, come by our channel and talk to us :)
Thanks for your advise, @cmcaine , I take one night to know some part of your implementation. I have one to two hours for development every night. And I am in China, 8 hours earlier than you guys in UK.
Refactor work looks fine for me right now which will not block your guys to release the first version.
About state.ts
refactor, I am not clear what state in keydown_background.ts
you mean. Do these states below can cover most scenario?
enum State {
Normal,
Insert,
Search,
Hint,
EX,
}
And I think I can figure out Move clipboard read into background
issue at first. Any thing need to be pay attention about this one?
src
├── background
│ ├── background.ts
│ ├── commandline_background.ts
│ └── keydown_background.ts
├── content
│ ├── commandline_content.ts
│ ├── content.ts
│ └── keydown_content.ts
├── execmds
│ ├── excmds.ts
│ ├── excmds_background.ts
│ ├── excmds_content.ts
│ └── excmds_macros.py
├── manifest.json
├── static
│ ├── commandline.css
│ ├── commandline.html
│ ├── defaultFavicon.svg
│ ├── newtab.css
│ ├── newtab.html
│ ├── userChrome-example.css
│ └── userChrome-minimal.css
enum Mode {
Normal,
Insert,
Hint,
Search,
Ignore,
// etc
}
class Maps {
remap: Map[]
noremap: Map[]
}
class State {
mode: Mode = Mode.Normal
maps: {
normal: Maps
insert: Maps
}
// etc
}
const state = new State()
export {state as default}