Repository navigation
Show term sets, shorten long choice lists, and edit descriptions in the Contents summary - #41
Merged
Gabriel Mongefranco (gabrielmongefranco) merged 4 commits intoOct 23, 2026
Conversation
…he Contents summary Managed metadata columns showed a list ID in Lookup list, because the list they read from, TaxonomyHiddenList, is hidden and the report leaves hidden lists out. Sitenalyzer now reads the names of the site's hidden lists, and TaxonomyHiddenList from the top-level site, so Lookup list shows a name. The Columns tab has a new Term set column for lists with managed metadata columns. A term set in the site collection's term groups links to it in Taxonomy. Other term sets, such as the Keywords term set of Enterprise Keywords, are named without a link, and a term set that can't be read says Not read. With technical details on, Term set ID shows the ID. The printed report adds a Term set column for those lists. Choices now show only with technical details on. A column with more than 5 choices shows the first 5 and a Show all button. The printed report still shows every choice. The document library, list, and system list tables in the Contents summary now have the same edit button for descriptions as the Overview tab, for people who can manage the site. The data dictionary's sheets and columns are unchanged. Fixes #36, #37, and #38.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a4652f9718
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "Codex (@codex) review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".
Closed
…ts in the data dictionary The data dictionary had no link from a managed metadata column to the hidden list it reads from, and it named a column's term set only when the term set was in the site collection's term groups. - Assets gets one row for TaxonomyHiddenList when a managed metadata column reads from it. Its address is in the top-level site when the site is a subsite. - Relationships gets one Managed metadata row for each managed metadata column, to that list: M-1, or M-M for a column that allows several values. - The Fields notes column names each managed metadata column's term set and gives its ID. For a term set outside the site collection's term groups, such as a shared term set or Keywords, the note says its terms aren't listed in Value_Sets. Values that look like personal information are hidden in the term set name. Value_Sets is unchanged: it lists the terms of the site collection's own term sets only. The sheets and their columns are unchanged. The printed technical details of a list's columns now include each column's term set ID when the list has a managed metadata column.
This was referenced Oct 23, 2026
…y columns The data dictionary wrote each managed metadata column's term set into the Fields notes as text, and it could not show nested terms, a column that starts at one term, or a term set whose terms aren't listed. This change moves that information into real columns, named so that other data sources can use the same format. The format is now version 1.1, described in the new docs/data-dictionary.md. Data dictionary (format 1.1): - A new Value_Set_Definitions sheet, right after Value_Sets, has one row per value set: its ID, name, description, the asset that keeps it, and whether its values and parents are listed (values_listed and hierarchy_listed: All, Some, or None). Stewards stays the last sheet. - Every coded column now has a value_set_id. A term set uses its own ID. Shared term sets, Keywords, and term sets that couldn't be read get a definition with values_listed None, and their terms aren't listed. - Fields adds multi_valued, value_set_root_code (the term a column starts at), and allows_other_values (a choice column's fill-in setting, and Y for Enterprise Keywords). The notes column no longer holds the term set. - Value_Sets adds parent_value_code and synonyms. - Managed metadata relationships use the type Lookup. - Fields rows now write Unknown in contains_phi and contains_pii and leave sensitivity blank. Version 1.0 wrote these one column off. - Rows for Fields, Value_Sets, Value_Set_Definitions, and Relationships are built by column name, so a value can't land in the wrong column. On screen and in print: - Terms take their name in the term store's default language. A term set's terms table has a Synonyms column when any term has synonyms, and search finds a term by its synonyms. - The Columns tab says which term a managed metadata column starts at, such as "Starts at Treatment".
A test on SharePoint Online showed that a managed metadata column limited to one term lets people choose only the terms under it, not that term itself. The data dictionary format reference now says so for value_set_root_code.
Gabriel Mongefranco (gabrielmongefranco)
merged commit Oct 23, 2026
d911699
into
main
4 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This pull request fixes three problems in Contents and updates the data dictionary to format 1.1. The new format adds a sheet that describes each value set and adds generic columns that other data sources can use, not only SharePoint. The format is described in the new
docs/data-dictionary.md.Fixes #36
Fixes #37
Fixes #38
Changes
Managed metadata columns (#37)
Term names and synonyms
Data dictionary format 1.1 (#37)
The change only adds things, so tools that find sheets and columns by name keep working.
format_versionin Export_Info is now1.1.value_set_id,value_set_name,description,asset_id(where the values are kept),values_listedandhierarchy_listed(All,Some, orNone),standard_code_system,status, andnotes.value_set_id, and everyvalue_set_idhas a definition row.VS_000003.values_listedNone. Their terms aren't listed, andnotessays why.multi_valued:Yfor MultiChoice, LookupMulti, UserMulti, and multi-value managed metadata columns.value_set_root_code: the term a managed metadata column starts at.allows_other_values: from a choice column's fill-in setting,Yfor Enterprise Keywords, and blank for other columns.parent_value_codeandsynonymsat the end.hierarchy_listedsays when parents couldn't be read, so a blank parent isn't mistaken for a top-level term.notes.Lookuprelationship to TaxonomyHiddenList, and TaxonomyHiddenList has an Assets row. The term store asset row is now written whenever a value set is kept there, even when the site has no term groups of its own.Unknowninsensitivityand leftcontains_piiblank, one column off from Sources and Assets. They now leavesensitivityblank and writeUnknownincontains_phiandcontains_pii.Long choice lists (#38)
aria-expanded, and has a hidden label that names the column for screen readers.Descriptions in the Contents summary (#36)
Docs
docs/data-dictionary.md, linked fromREADME.mdanddocs/README.md, describes every sheet and column. It covers the rules for reading the format, the versioning rules, what changed in 1.1, the 1.0 correction, and how SharePoint fills the format.docs/usage.mdcovers the Term set column and its starting term, synonyms, choices, and editing descriptions from the summary.docs/architecture.mdlists the new requests and how the data dictionary is built.docs/development.mdlists the new tests.What I checked
bash build.shand.\build.ps1. They write the samesitenalyzer.jsandsitenalyzer.css.npx playwright test.multi_valuedandallows_other_values.hierarchy_listedandvalues_listedwhen terms or parents were only partly read.value_set_idhas one definition and every definition's asset is in Assets.javascript:links.git diff --checkfound no problems.Needs a check on a real site
I couldn't test this on a real SharePoint Online site. Someone should open one and check:
FillInChoiceto the columns request works on a real site. It belongs to the same column type asChoices, which the request already reads.Already checked on SharePoint Online: a column limited to one term lets people choose only the terms under it, not that term itself. The format reference says so.
Follow-ups
allows_other_valuesfor managed metadata columns other than Enterprise Keywords. This needs the column's fill-in setting, which Sitenalyzer doesn't read yet.enforcedon Relationships is alwaysY. SharePoint enforces a lookup only when the lookup's relationship setting says so.