Skip to content

Commit 8f529b3

Browse files
committed
Update config research: Graph API, MQTT enhancements, option count
- Updated option count from 64 to 65 (new graphApi config) - Added Graph API integration (PR #1958) to recent improvements - Added graphApi to conditional options and good nested objects examples - Referenced new MQTT enhancement research and ADRs (006, 007) - Updated all line counts and totals throughout document The graphApi option follows the same conditional pattern as customNotification - only relevant when enabled, reinforcing finding #3 about not all implementations needing all features.
1 parent 1e7819f commit 8f529b3

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

docs-site/docs/development/research/configuration-organization-research.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
## Executive Summary
88

99
### Current State
10-
Teams for Linux has **64 active configuration options** managed through a flat yargs-based configuration system. While functional, the current organization has several issues: related options are scattered across documentation categories, naming conventions are inconsistent, and conditional options add complexity.
10+
Teams for Linux has **65 active configuration options** managed through a flat yargs-based configuration system. While functional, the current organization has several issues: related options are scattered across documentation categories, naming conventions are inconsistent, and conditional options add complexity.
1111

1212
**Recent Improvements**:
1313
- MQTT documentation added in PR [#1939](https://github.com/IsmaelMartinez/teams-for-linux/pull/1939)
1414
- Deprecated options (`contextIsolation`, `sandbox`) removed from configuration
1515
- Custom notification system added in PR [#1979](https://github.com/IsmaelMartinez/teams-for-linux/pull/1979) with new `customNotification` object config
16+
- Graph API integration added in PR [#1958](https://github.com/IsmaelMartinez/teams-for-linux/pull/1958) with new `graphApi` object config
17+
- MQTT enhancement research: command-line arguments ([ADR-006](../adr/006-cli-argument-parsing-library.md)), embedded broker ([ADR-007](../adr/007-embedded-mqtt-broker.md)), extended status publishing ([#1941](https://github.com/IsmaelMartinez/teams-for-linux/pull/1941))
1618

1719
### Key Findings
1820

@@ -26,13 +28,14 @@ Teams for Linux has **64 active configuration options** managed through a flat y
2628

2729
3. **Conditional Options**: Some options are only relevant when other options are set to specific values:
2830
- `customNotification` settings only apply when `notificationMethod: "custom"`
31+
- `graphApi` settings only apply when `graphApi.enabled: true`
2932
- This pattern creates complexity where not all implementations need all options
3033
- Future consideration: validation/documentation to clarify these dependencies
3134

3235
4. **~~Technical Debt~~ ✅ RESOLVED**: Deprecated options (`contextIsolation`, `sandbox`) have been removed from the configuration.
3336

3437
5. **Structural Inconsistency**: Mix of flat options and nested objects without clear pattern:
35-
- Good: `mqtt`, `cacheManagement`, `screenSharingThumbnail`, `customNotification` (nested)
38+
- Good: `mqtt`, `cacheManagement`, `screenSharingThumbnail`, `customNotification`, `graphApi` (nested)
3639
- Bad: `customBGServiceBaseUrl`, `customBGServiceConfigFetchInterval` (should be nested)
3740

3841
6. **Naming Issues**: Mix of negative (`disableNotifications`) and positive (`trayIconEnabled`) naming, plus some overly verbose names.
@@ -79,7 +82,7 @@ System Config → User Config → CLI Args → Defaults
7982
- Immutable config pattern via AppConfiguration class
8083

8184
**Problem Areas:**
82-
- All 64 active options defined in single ~525-line yargs config block
85+
- All 65 active options defined in single ~530-line yargs config block
8386
- No programmatic grouping (only documentation grouping)
8487
- Mixed patterns (flat vs nested) without clear logic
8588

@@ -137,7 +140,7 @@ mqtt // Now documented in PR #1939
137140
// contextIsolation, sandbox - REMOVED from configuration
138141
```
139142

140-
**Total Active Options: 64** (including new customNotification system)
143+
**Total Active Options: 65** (including customNotification and graphApi systems)
141144

142145
### Problem Analysis
143146

@@ -278,7 +281,7 @@ customBackground: {
278281
- Removed `sandbox` option from app/config/index.js (was at lines 388-395)
279282
- Both options were never actually used in the code (verified via grep)
280283
- Users with these in their config.json will simply have them ignored (no breaking change)
281-
- Total configuration options: 64 (after adding customNotification system)
284+
- Total configuration options: 65 (after adding customNotification and graphApi systems)
282285

283286
**Original Issue** (now resolved):
284287
These options were deprecated with warnings but still accepted values, cluttering the configuration without providing any functionality. They have now been cleanly removed.
@@ -1180,7 +1183,7 @@ function migrateConfig(config, configPath) {
11801183
### Phase 1 Success Criteria
11811184
- [x] ~~MQTT configuration documented with examples~~**COMPLETED** in PR [#1939](https://github.com/IsmaelMartinez/teams-for-linux/pull/1939)
11821185
- [x] ~~Deprecated options removed~~**COMPLETED** (contextIsolation, sandbox removed)
1183-
- [ ] All 64 options organized into logical categories
1186+
- [ ] All 65 options organized into logical categories
11841187
- [ ] Zero breaking changes
11851188
- [ ] Documentation builds and deploys successfully
11861189

0 commit comments

Comments
 (0)