# Roadmap

## Version 0.1 (previous)

Initial release

## Version 0.2 (actual)

- Blastproof:
  - New boot password screen, with power options
  - Support for custom keyboard layouts using correspondance tables
  - Config is now stored in .cfg files
  - VFTM support
  - Partition tables is now parsed without relying on UEFI firmware
  - New configuration key: `kernel_kbd_events_queue_capacity`
- Vyx:
  - Support for payloads with custom mappings options
- Initfsgen:
  - The `initfs-footprint.bin` file is now named `initfsfp.bin`
  - The `signsyst-hash.bin` file is now named `sshash.bin`
- Keygen:
  - Removed layout conversion feature
  - The utility will now check if a password is provided in the `VYSTEM_KEYGEN_PASSWORD` environnement variable
  - The manual password setup will still be proposed if `VYSTEM_KEYGEN_PASSWORD` isn't defined or is empty
  - This method of inputing password via `VYSTEM_KEYGEN_PASSWORD` should ONLY be used in a developpement environnement
  - Keygen now generate root and manifest keypairs, and expect a `vftm.sock` UNIX socket to transmit manifest keypair to a compatible build system
- VyBuild:
  - A new build system, see documentation for more informations
- Commoncrypto:
  - A new library made of three cryptographic libraries, required for Keygen, Initfsgen and VyBuild 
- Vystem FAT Trusted Manifest:
  - A new signed manifest, injected inside the reserved sectors of the ESP partition FAT32
  - It's signed using a combinaison of Keygen and VyBuild
  - It allow to verify the link between ESP partition and current disk, as well as FAT32 integrity and self bootloader verification
- Common Lib:
  - In the `common` folder, new headers that will be accessible to all components of Vystem will be put here
  - For the moment, it only includes the reference version of each component
- Shelter:
  - Can now manage TSS, GDT and IDT
  - Can now parse root ACPI table and MADT
  - Can now interact with LAPIC, estimating CPU and LAPIC frequency
  - Can now start APs
  - Can now manages IOAPIC devices and GSI lines as well as legacy IRQs
  - Added thread safety to print, timers and malloc. Added iprint/iprintf/sprintf.
  - Added Device System, endpoints from APIC, TSC, kernel configuration, memory and SMP subsystem are available
  - Device System is not available for the input subsystem yet, as it would requires Ring 3 architecture, that isn't ready for now
  - Add very basic framebuffer support for early kernel progress bar
- Image build processus:
  - The signatures are now stored as `<filename without original extension>.sig` files
  - The signatures are now stored inside `EFI/BPSIGN` folder
  - The bootloader files are now stored inside `EFI/BPFILES` folder

## Version 0.3 (future release with planned additions)

- Updated `SH_STATUS` struct
- New Modular Daemon Unit with the first type being implemented: kernel library. Run in ring 3 with very basic API
- First features of the VFS, with InitFS drivers
- MCFG ACPI table parsing, PCIe devices enumeration, first MSI/MSI-X implementation
- SATA driver, volumes enumeration with integration to the VFS
- Upgrade to the Device System, with new APIs for the input subsystem and VFS, as well as Device System querying through the VFS
