Default profile does not reflect deprecation of global settings #7843

Closed
opened 2026-01-31 01:14:02 +00:00 by claunia · 15 comments
Owner

Originally created by @schuelermine on GitHub (Apr 30, 2020).

Environment

Windows build number: Microsoft Windows NT 10.0.18363.0
Windows Terminal version (if applicable): 0.11.1191.0

Steps to reproduce

Open the settings after a fresh install

Expected behavior

Either the comment about global settings is missing or there is a predefined empty global section

Actual behavior

The comment mentions global settings.

Originally created by @schuelermine on GitHub (Apr 30, 2020). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> # Environment ```none Windows build number: Microsoft Windows NT 10.0.18363.0 Windows Terminal version (if applicable): 0.11.1191.0 ``` # Steps to reproduce Open the settings after a fresh install # Expected behavior Either the comment about global settings is missing or there is a predefined empty global section # Actual behavior The comment mentions global settings.
Author
Owner

@zadjii-msft commented on GitHub (Apr 30, 2020):

That sure sounds wrong - should you share the contents of your settings.json file? Note that I think it's possible that if you have a profiles.json file laying around, we'll first try to migrate that to settings.json if settings.json doesn't exist, so that might be what happened.

@zadjii-msft commented on GitHub (Apr 30, 2020): That sure sounds wrong - should you share the contents of your `settings.json` file? Note that I _think_ it's possible that if you have a `profiles.json` file laying around, we'll first try to migrate that to `settings.json` if `settings.json` doesn't exist, so that might be what happened.
Author
Owner

@DHowett-MSFT commented on GitHub (Apr 30, 2020):

Also, which comment are you referring to?

@DHowett-MSFT commented on GitHub (Apr 30, 2020): Also, which comment are you referring to?
Author
Owner

@ossdesign commented on GitHub (May 1, 2020):

Sorry if I am off-topic, but it seems like the new settings.json file in 0.11 got "polluted" due to changes and deprecations or whatever. Maybe I am being way too picky, but it seems very hackish. I want this file to represent my overrides and settings, not a place to hack on changes to the defaults. Anyway, I came here to open up a new issue on this, but didn't want to rock the boat too much and found this open issue in regards to the 0.11 settings.json file. So figured I would post this here.

@ossdesign commented on GitHub (May 1, 2020): Sorry if I am off-topic, but it seems like the new settings.json file in 0.11 got "polluted" due to changes and deprecations or whatever. Maybe I am being way too picky, but it seems very hackish. I want this file to represent *my* overrides and settings, not a place to hack on changes to the defaults. Anyway, I came here to open up a new issue on this, but didn't want to rock the boat too much and found this open issue in regards to the 0.11 settings.json file. So figured I would post this here.
Author
Owner

@schuelermine commented on GitHub (May 1, 2020):

I have some things to do right now, when I'm done I will delete my settings document and reinstall to give feedback

@schuelermine commented on GitHub (May 1, 2020): I have some things to do right now, when I'm done I will delete my settings document and reinstall to give feedback
Author
Owner

@schuelermine commented on GitHub (May 1, 2020):

Deleted it, here's the resulting file after reinstallation: https://gist.github.com/schuelermine/03579d6951ea422f083880acdddcb436

@schuelermine commented on GitHub (May 1, 2020): Deleted it, here's the resulting file after reinstallation: https://gist.github.com/schuelermine/03579d6951ea422f083880acdddcb436
Author
Owner

@schuelermine commented on GitHub (May 1, 2020):

Still contains this:

    // You can add more global application settings here.
    // To learn more about global settings, visit https://aka.ms/terminal-global-settings

with no tags following it

@schuelermine commented on GitHub (May 1, 2020): Still contains this: ``` // You can add more global application settings here. // To learn more about global settings, visit https://aka.ms/terminal-global-settings ``` with no tags following it
Author
Owner

@schuelermine commented on GitHub (May 1, 2020):

What it looked like beforehand: https://gist.github.com/schuelermine/261e678c54fa2c365bb741790c2c4b25

@schuelermine commented on GitHub (May 1, 2020): What it looked like beforehand: https://gist.github.com/schuelermine/261e678c54fa2c365bb741790c2c4b25
Author
Owner

@zadjii-msft commented on GitHub (May 1, 2020):

Okay, I guess I misunderstood your original bug report. Is the problem here just "There's a comment saying I should put global settings here, but there's no here to put them"? Because that's definitely by-design. There's not supposed to be a globals anymore. You can just put global settings right into the root of the json object, like copyOnSelect (for example).

@zadjii-msft commented on GitHub (May 1, 2020): Okay, I guess I misunderstood your original bug report. Is the problem here just "There's a comment saying I should put global settings here, but there's no _here_ to put them"? Because that's definitely by-design. There's _not_ supposed to be a `globals` anymore. You can just put global settings right into the root of the json object, like `copyOnSelect` (for example).
Author
Owner

@schuelermine commented on GitHub (May 1, 2020):

But if there isn't supposed to be a globals, why encourage people to put them?

@schuelermine commented on GitHub (May 1, 2020): But if there isn't supposed to be a globals, why encourage people to put them?
Author
Owner

@zadjii-msft commented on GitHub (May 1, 2020):

Oh no, global settings are just a category of settings. All of these settings are categorically "global" settings, not "per-profile" settings.

@zadjii-msft commented on GitHub (May 1, 2020): Oh no, global settings are just a _category_ of settings. [All of these settings](https://github.com/microsoft/terminal/blob/master/doc/cascadia/SettingsSchema.md#globals) are _categorically_ "global" settings, not "per-profile" settings.
Author
Owner

@schuelermine commented on GitHub (May 1, 2020):

OK. I understand.

@schuelermine commented on GitHub (May 1, 2020): OK. I understand.
Author
Owner

@DHowett-MSFT commented on GitHub (May 1, 2020):

Sorry if I am off-topic, but it seems like the new settings.json file in 0.11 got "polluted" due to changes and deprecations or whatever. Maybe I am being way too picky, but it seems very hackish. I want this file to represent my overrides and settings, not a place to hack on changes to the defaults. Anyway, I came here to open up a new issue on this, but didn't want to rock the boat too much and found this open issue in regards to the 0.11 settings.json file. So figured I would post this here.

@OssDesign no, you're completely correct. This is something we've struggled with since we don't really have any live documentation (🤞): user education. A lot of people come back to us surprised that "Terminal can do Xxx? Yyy?!", and we wanted the "settings template" to be informative and contain thoughtful callouts to things people might not be aware of.
It's structured so that they are overrides, and you can delete or replace anything you wish to get the "default" behavior back.

A couple of times, we decided to make the template differ from the defaults so we didn't break existing users. copyFormatting is one of those things: when we add a setting for something that used to be on, but new users overwhelmingly shouted at us for having ti be on, we had to make it "on by default, off by user choice" the stock out-of-box state so we didn't break people with old settings files who simply didn't have copyFormatting in them. Know what I mean?

Happy to discuss this more 😄

@DHowett-MSFT commented on GitHub (May 1, 2020): > Sorry if I am off-topic, but it seems like the new settings.json file in 0.11 got "polluted" due to changes and deprecations or whatever. Maybe I am being way too picky, but it seems very hackish. I want this file to represent _my_ overrides and settings, not a place to hack on changes to the defaults. Anyway, I came here to open up a new issue on this, but didn't want to rock the boat too much and found this open issue in regards to the 0.11 settings.json file. So figured I would post this here. @OssDesign no, you're completely correct. This is something we've struggled with since we don't really have any live documentation (🤞): user education. A lot of people come back to us surprised that "Terminal can do Xxx? Yyy?!", and we wanted the "settings template" to be informative and contain thoughtful callouts to things people might not be aware of. It's structured so that they _are_ overrides, and you can delete or replace anything you wish to get the "default" behavior back. A couple of times, we decided to make the template _differ_ from the defaults so we didn't break existing users. `copyFormatting` is one of those things: when we add a setting for something that used to be on, but new users overwhelmingly shouted at us for having ti be on, we had to make it "on by default, off by user choice" the stock out-of-box state so we didn't break people with old settings files who simply didn't _have_ `copyFormatting` in them. Know what I mean? Happy to discuss this more :smile:
Author
Owner

@ossdesign commented on GitHub (May 14, 2020):

@DHowett-MSFT Sorry it took me so long to get back to this. I am not really a developer, though I like to dabble with some things. I do have no fear of the terminal, and have been a dual-booter for some time. I am also just starting to dig deeper into GitHub. Basically, I've got some skills, but also have got some learning to do ;) On that terminal front, thanks for the work being done on this, it was needed. Btw, I have been using "envy code r" font for some time now everywhere, and it has started to render very nice in the new terminal and also VS Code. Not sure if some underlying text rendering engine changes have started to happen. But I like it!

Ok, so back on topic. I wanted to make sure I thought about this a bit before responding. I don't really know how overrides and whatnot work in the new terminal settings. In an ideal world, I would see "defaults.json", which you should not change, reflect the defaults, and "settings.json" only be the user modified settings. But I get that in a situation where you want to make changes to the defaults, but not "anger" those who expect different/previous behaviors, that you would maybe take a hybrid approach.

Like a lot of things in life, I don't see that there is that one right and correct answer how to handle here. You could make changes to "defaults" and comment in how to change settings in "settings", but people may not look there. You could just make the changes to "defaults" that you want going forward, then have a section in "settings" that has commented out overrides, and mention that hey, uncomment these to revert behavior. But that would mean generating a new and fresh "settings". At any rate, I understand there is not an ideal solutions. But again, in an ideal world, "settings" reflects my overrides and wishes over and above "defaults", at least that is how I would see it. Again, in an ideal world. And if you can find me an ideal world, please point me in that direction!!

@ossdesign commented on GitHub (May 14, 2020): @DHowett-MSFT Sorry it took me so long to get back to this. I am not really a developer, though I like to dabble with some things. I do have no fear of the terminal, and have been a dual-booter for some time. I am also just starting to dig deeper into GitHub. Basically, I've got some skills, but also have got some learning to do ;) On that terminal front, thanks for the work being done on this, it was needed. Btw, I have been using "envy code r" font for some time now everywhere, and it has started to render very nice in the new terminal and also VS Code. Not sure if some underlying text rendering engine changes have started to happen. But I like it! Ok, so back on topic. I wanted to make sure I thought about this a bit before responding. I don't really know how overrides and whatnot work in the new terminal settings. In an ideal world, I would see "defaults.json", which you should not change, reflect the defaults, and "settings.json" only be the user modified settings. But I get that in a situation where you want to make changes to the defaults, but not "anger" those who expect different/previous behaviors, that you would maybe take a hybrid approach. Like a lot of things in life, I don't see that there is that one right and correct answer how to handle here. You could make changes to "defaults" and comment in how to change settings in "settings", but people may not look there. You could just make the changes to "defaults" that you want going forward, then have a section in "settings" that has commented out overrides, and mention that hey, uncomment these to revert behavior. But that would mean generating a new and fresh "settings". At any rate, I understand there is not an ideal solutions. But again, in an ideal world, "settings" reflects my overrides and wishes over and above "defaults", at least that is how I would see it. Again, in an ideal world. And if you can find me an ideal world, please point me in that direction!!
Author
Owner

@DHowett-MSFT commented on GitHub (May 14, 2020):

@OssDesign Thanks for the thoughtful response 😄

I can almost offer you that ideal world -- everything in settings.json right now can be deleted and replaced with just your overrides. Until we land some additional work, we'll only touch it to add newly detected profiles (like extra WSL distributions, if you install more) and because of a tracking issue we'll re-add ones your explicitly delete. That bit is pretty annoying, so we're working on fixing it.

Hopefully, we'll get there. Hopefully. 🤞

@DHowett-MSFT commented on GitHub (May 14, 2020): @OssDesign Thanks for the thoughtful response :smile: I can almost offer you that ideal world -- everything in `settings.json` right now can be deleted and replaced with just your overrides. Until we land some additional work, we'll **only** touch it to add newly detected profiles (like extra WSL distributions, if you install more) and because of a tracking issue we'll re-add ones your explicitly delete. That bit is pretty annoying, so we're working on fixing it. Hopefully, we'll get there. Hopefully. 🤞
Author
Owner

@ossdesign commented on GitHub (May 14, 2020):

Thanks, and it is all good. It is hard to have to make evolving changes, yet also respect previous behavior. I will come out fine with all of this and be okay. I promise ;) Thanks!

@ossdesign commented on GitHub (May 14, 2020): Thanks, and it is all good. It is hard to have to make evolving changes, yet also respect previous behavior. I will come out fine with all of this and be okay. I promise ;) Thanks!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#7843