## Version 1.0
- [x] Language Server scaffolding
- [x] Hover
  - [x] Basic hovering
    - [x] Functions
    - [x] Methods
    - [x] Identifiers
    - [x] Kwargs
  - [x] Limited docs on hover
  - [x] Improve docs on functions/methods regarding arguments and return types
- [x] Symbol resolving
- [x] Basic diagnostics
- [x] Type definitions for all modules/builtins
  - [x] Functions
  - [x] Builtin objects
  - [x] Modules
    - [x] CMake
    - [x] CUDA
    - [x] Dlang
    - [x] External Project
    - [x] Filesystem
    - [x] GNOME
    - [x] Hotdoc
    - [x] i18n
    - [x] Icestorm
    - [x] Java
    - [x] Keyval
    - [x] Python 3
    - [x] Python
    - [x] Qt4
    - [x] Qt5
    - [x] Qt6
    - [x] Simd
    - [x] SourceSet
    - [x] Rust
    - [x] Wayland
    - [x] Windows
- [x] Formatting
- [x] Symboltree
- [x] Rudimentary autocompletion
## Version 2.0
- [x] Usable autocompletion
- [x] More diagnostics
  - [x] Unused variables
  - [x] Deprecated options
- [x] Full Wrap support
  - [x] Define data model
  - [x] Parse wrap files
  - [x] Setup directory structures
    - [x] wrap-file
    - [x] wrap-git
    - [x] wrap-hg
    - [x] wrap-svn
    - [x] Apply patches
    - [x] Apply diffs
  - [x] Check all checksums
  - [x] Use fallback URLs
  - [x] Apply to all files to WrapDB in CI
- [x] Full Subproject support
  - [x] Setup subproject structure
  - [x] Load subprojects in `initialize`
  - [x] Wire it up so that the LSP functions work
  - [x] Include in type analysis
- [x] Highlighting
- [x] Cache tree from tree-sitter (And the AST that is generated from the tree-sitter tree!)
- [x] More tests
- [x] VSCode Extension (Just a fork of vscode-meson currently)
- [x] Inlay hints
- [x] Add swiftlint to CI
- [x] Add swift-format to CI
- [x] Add MacOS to CI
- [x] Switch from atomics to Task.isCancelled for cancellation of parsing
## Version 3.0
- [x] Renaming
  - [x] Rename loop variables
  - [x] Rename local variables
- [x] Code actions
  - [x] Integer literal to decimal/binary/octal
  - [x] `static_library`/`shared_library`/`both_libraries` to `library`
  - [x] `shared_library` to `shared_module` (And reverse)
  - [x] `configure_file(copy: true)` to `fs.copyfile()`
  - [x] Create dependency using `declare_dependency` from library
  - [x] Sort filenames
  - [x] Download wrap for missing subproject from WrapDB
- [x] Document the language server
- [x] Add to [vscode-meson](https://github.com/mesonbuild/vscode-meson/pull/123) upstream
- [x] Upstream GNOME Builder plugin (See [issue #629](https://gitlab.gnome.org/GNOME/gnome-builder/-/issues/629))
- [x] Investigate PGO (Does not seem to work on Linux)
- [x] Check if `CollectionOfOne` speeds up TypeAnalyzer (Not tested, but requires too many other changes)
- [x] Autocomplete variable names in `subproj.get_variable()`
- [x] Support apt-like
  - [x] Debian
    - [x] Stable
    - [x] Testing
    - [x] Unstable
  - [x] Ubuntu
    - [x] 18.04
    - [x] 20.04
    - [x] 22.04
  - [x] Setup apt repo in an external GitHub repo
- [x] Update git repos of subprojects, when a branch was specified as revision
- [x] Basic typechecking of arguments (Not every error will be caught)
- [x] Add progress bar for setting up the subprojects (Requires upstream work)
- [x] Add Windows to CI
  - [x] Compiles on Windows
  - [x] Works using CLI
  - [x] LSP works
  - [x] Downloading wraps works
  - [x] Setting up wraps works
    - [x] wrap-git
    - [x] wrap-svn/wrap-hg
    - [x] wrap-file
      - [x] tar.gz
      - [x] tar.bz2
      - [x] tar.xz
      - [x] zip
    - [x] Applying diffs works
## Version 4.0
- [x] Checking for nested ternaries
- [ ] Semantic tokens
  - [x] Single-line strings
  - [ ] Multi-line strings
- [x] Actions need cleanup
- [x] Folding range
  - [x] Foreach-Loops
  - [x] Selection-Statements
- [x] Automatic update of vscode-meson
- [x] Improve heuristics for subdir etc.
- [ ] More Codeactions
  - [ ] `''.format(x,y,z)` where the arguments are only identifiers, convert to format string
- [ ] More tests
  - [x] LSP-Tests using pygls
  - [ ] Other tests using GTest
    - [ ] Find declaration
    - [ ] Find definition
    - [ ] Document symbols
    - [ ] Folding ranges
    - [ ] Formatting
    - [ ] Highlighting
    - [ ] Hover
    - [ ] Inlay hints
    - [ ] Semantic Tokens
    - [ ] Completion
    - [ ] Typeanalyzer
## Version n
- [ ] Full typechecking of arguments (Depends on generating of type definitions from JSON)
- [ ] Get docs from embedded JSON file, not from the MesonDocs/ module (Currently not possible/very difficult due to SPM being not that capable of embedding a file in a binary)
- [ ] Autogenerate type definitions from JSON (Requires upstream work)
- [ ] Don't depend on curl/wget CLI tools for downloading wraps
- [ ] Maybe contact Jetbrains (See: https://matrix.to/#/!GNNuZCPFOXyoAJPmtC:matrix.org/$Q0nPPHlWA_tSn0R_DuFn49yDmlkTLru7R1QnfnkQSVc?via=matrix.org&via=gnome.org&via=fedora.im)
- [ ] Add support for linting/completion of *.wrap files