Skip to content

Latest commit

 

History

History
68 lines (59 loc) · 3.27 KB

CONTRIBUTING.md

File metadata and controls

68 lines (59 loc) · 3.27 KB

Contributors welcome! I'm open to ideas, feedback, and kind words.

Technical

  • Nexus API reference.
  • dmodman uses ratatui for the TUI.
  • API responses are stored in $XDG_DATA_HOME/dmodman/ (default ~/.local/share/dmodman).

Things to do

General

  • Contextual keybinds
  • Overlayfs support.
    • Some method to mount/umount the overlayfs. This could be as simple as a hotkey, or could be handled by an external program based on load_order.txt.
    • Decide between regular and/or fuse overlayfs
  • In-app mod search, display and downloading (downloads for premium users only)?
  • Automatically sort table items
  • Manually sort table items
  • Remember order of installed mods (can currently only be sorted in a text editor).
    • The same order will be used by the overlayfs
  • Color configuration?
  • Implement Home, End and Page Up/Down keys.
  • Consider which columns need showing, and perhaps add a way to configure what is shown.
    • The current UI is designed for small screens.

File updates

  • Important: use the API to query mods that have been updated in the past 1 month, combined with a timestamp for last update check
  • Freezes UI during updates (does it still?). Needs threading a bit earlier in the code
  • Show details of currently selected file in the UI. The border of the UI block can be rendered on.
  • Permanently ignore updates (trivial to implement with a new enum variant)
  • Show archive connected to mod and vice versa
  • Delete metadata if file is no longer tracked
  • The update lists can be quite long (13k lines in one case) and shouldn't be loaded to memory all the time.
    • Needs compression on disk
    • Fixed. Unnecessary data is no longer stored at all.

Archives

  • Extraction using libarchive
  • Popup dialog that asks for directory name
  • Configurable extract location
  • Confirmation dialog (for overwriting when extracting and file deletion).
  • Show which mod a file belongs to
  • Import archives to dmodman using the md5search API.
  • Fomod installer support
  • Create metadata files into extracted directories (high prio)
  • Allow extracting directly into the game data dir. This is a destructive operation and not allowed by default.

Downloads

  • Delete cached download links when no longer valid/needed
  • Query download urls without visiting the Nexus (Premium users only).

Cache

  • Compression (zstd?) for the cache, easy to implement
  • Some unneeded data is still kept around needlessly
    • Prune old data from update lists when downloading them
    • Avoid serializing unnecessary fields in FileDetails

Log

  • Needs line wrapping. Depends on a WIP issue in the TUI library.

Command line interface

  • Basic support for running in the background as a downloader.
    • Can't run at the same time as the TUI, since they would listen to the same socket. Fixing this would probably require a client/server architecture
  • Set settings/profile from the CLI (the config uses the builder pattern so this is easy to implement)
  • Help text (generated by a CLI-library?)