Skip to content

Next major version breaking changes #1271

@Tyrrrz

Description

@Tyrrrz

The upcoming major version update (3.0) is expected to batch a few notable breaking changes. Here's the current planned list (none of these are done at the time of writing):

  • CLI commands rework (Rework the CLI commands to be more composable #1210)
    • The details are explained well in the linked issue
  • CLI AOT rework with new CliFx (pending new AOT-compatible CliFx release)
    • Currently, the CLI app flavor relies heavily on reflection for command routing, parameter/options binding, etc. Moving to AOT-compatible approaches (i.e. source generation) in CliFx will allow us to improve performance and further reduce binary size.
  • Asset file name collision fixes (--reuse-media creates an unacceptably high chance of a collision #1231 Improve filenames for downloaded assets #1232)
    • This is a breaking change due to the "reuse assets" feature relying on the existing filename strategy.
  • File name replacement tokens rework (Make template tokens work properly for export paths of threads #1123 Add path placeholders for threads #1192 Add "%r" placeholder to wrap parts of the path #1170)
    • Original tokens were introduced at a time when channels had no nesting. With categories and threads, there's currently no good way to automatically organize exports in a hierarchical structure.
  • Markdown false by default for JSON
    • This default makes sense for JSON where users want data as raw as possible.
    • Having different defaults for different formats may be confusing.
  • Download assets true by default for HTML
    • Due to the new CDN policies (Remove CDN signature before hashing asset URL #1138), HTML exports without downloaded assets become almost unusable after some time.
    • This mainly affects the HTML format, as others are not as reliant on rich media assets (images, videos, etc.).
    • Having this as the default will significantly increase the export time for the 90th percentile user, so it's important to highlight that in the UI.
    • Having different defaults for different formats may be confusing.
  • Remove the CSV export format
    • CSV format was deprecated in favor of JSON a long time ago and hasn't been updated past the most rudimentary features. Nobody should be using it, as JSON is better in every way, so it makes sense to remove it.
    • One minor advantage of the CSV format is that, due to its minimal features, it's really small. JSON has a bit more overhead, but it shouldn't be dramatic.
  • Standardize on sever/guild terminology
    • Discord internally calls servers as guilds. DiscordChatExporter uses a mix of both terminologies, with the GUI mostly using "servers" and the CLI mostly using "guilds". Internally we also use "guilds". We should converge on "servers" both externally and internally as this is what users are most familiar with, and for consistency purposes.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions