microsoft / microsoft/terminal

Implement inheritance/layering behavior for settings lists/maps

Open
#8,100 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area-Settings Issue-Task Product-Terminal
Dominant language
C++
Stars
105k
Forks
9.6k
Avg merge
3d 17h
Merged PRs (30d)
29

Description

Description of the new feature/enhancement

TSM Inheritance (Spec #7876 + Impl #7923 ) enabled an object model representation of layering JSON. Some settings that are saved to arrays/maps (i.e. actions, color schemes) still experience a special form of layering that is not represented in the object model.

Today, the object model std::moves the list of actions/schemes down child-by-child, and directly modifies those values. We need to restructure this system to...

  • track where an action/color scheme came from
  • layer actions over other actions

This blocks the following work items:

  • serialization for actions
  • Settings UI implementation for actions
  • serializing only new color schemes (ones not from defaults.json)

This also is partially related to...

  • #7175 Action IDs

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the inheritance work in Spec #7876 and implementation #7923, then inspect the object model handling for action and color-scheme lists/maps. Done means preserving each item's origin through inheritance and layering actions over inherited values, enabling the blocked serialization and Settings UI work.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli, desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.