Skip to content

Enhanced Settings System #43

@thatplatypus

Description

@thatplatypus

Summary

We want to improve keybindings in #32 as well as support some of the basic settings Monaco generally supports including but not limited to things like font size, showing line numbers, etc. The amount of settings in the app isn't going to decrease and some of this could work with a feature flag system, experimental group is fairly common.

Basic example

I want to make the font size bigger. I want to search for a setting

Motivation

Adds functionality expected of a modern code editor to Apollo and increases user customize ability.

Design proposal
A lot of the settings groups are tied to some specific domain of functionality, the editor, analysis, themeing.

The settings modal is going to get bloated over time so an easier way to globally add and work with settings would be great.

Each domain would implement an 'ISettingsService' where T is the specific settings model it needs with strongly typed c# properties.

We add new custom attributes to help decorate these properties for the ui, things like 'Order' and 'Description'

Only the settings modal will likely care about those properties so we'll have a wrapping 'ISettingsProvider' or 'SettingsState' type of class to handle grabbing all implementing settings from DI and inspecting attributes and making sure we display the UI as expected.

Ideally we would even be able to persist these in local storage like we do with some theme settings today, but we can standardize it even more.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestfeatureBrand new functionality

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions