Skip to content

Commit 864cda9

Browse files
committed
v1.0.1 Release
1 parent 1ec10c9 commit 864cda9

22 files changed

Lines changed: 475 additions & 249 deletions

.claude/commands/release-prep.md

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
You are preparing the **Smart Org Chart** SPFx web part for a public release. Work through each step below in order. Stop and report any blocking issues before continuing.
2+
3+
**Requested version:** $ARGUMENTS
4+
(If blank, read `config/package-solution.json` for the current version, then ask the user what the new version should be before proceeding with any changes.)
5+
6+
---
7+
8+
## Step 1 — TypeScript check
9+
10+
Run `.\node_modules\.bin\tsc.cmd --noEmit`. If there are errors, list them and stop. Do not continue until the user confirms they are resolved.
11+
12+
---
13+
14+
## Step 2 — Determine the current feature set
15+
16+
Read these files:
17+
- `src/webparts/smartOrgChart/SmartOrgChartWebPart.ts` — the property pane `getPropertyPaneConfiguration()` method lists every admin setting and feature toggle
18+
- `src/webparts/smartOrgChart/components/SmartOrgChart.tsx` — the `currentView` state and header bar reveal the available views and user-facing features
19+
20+
From these, produce a definitive list of all views, admin settings, and user-facing features. Do not assume — derive it from the code.
21+
22+
---
23+
24+
## Step 3 — Update `docs/USER_GUIDE.md`
25+
26+
Read `docs/USER_GUIDE.md` in full. Then update it:
27+
- Change the version number in the heading to the new version.
28+
- Update the Table of Contents to match the actual sections you will write.
29+
- Remove any sections that describe features no longer in the app (check against the feature list from Step 2).
30+
- Add or update sections for features that are present in the app but missing or out of date in the guide. Use clear, user-facing language — write for a non-technical SharePoint admin audience.
31+
- Keep accurate existing content unchanged.
32+
- Do not remove the screenshots section; update screenshot filenames only if they change.
33+
34+
Write the complete updated file.
35+
36+
---
37+
38+
## Step 4 — Update `README.md`
39+
40+
Read `README.md` in full. Then update it:
41+
- Update any version badge or version reference to the new version.
42+
- Update the features table to exactly match the current feature set (no removed features, no missing new ones).
43+
- Keep the prerequisites, installation, permissions, troubleshooting, and tech stack sections accurate.
44+
45+
Write the complete updated file.
46+
47+
---
48+
49+
## Step 5 — Update `CHANGELOG.md`
50+
51+
Run `git log --oneline $(git describe --tags --abbrev=0)..HEAD` to get commits since the last tag. If that fails (no prior tags), run `git log --oneline -20` instead.
52+
53+
Read `CHANGELOG.md` in full, then prepend a new entry for the new version following the existing format:
54+
- Use today's date.
55+
- Group changes under Added / Changed / Fixed / Removed headings as appropriate.
56+
- Base the entries on the git log and your knowledge of changes made in this session.
57+
58+
Write the complete updated file.
59+
60+
---
61+
62+
## Step 6 — Security check
63+
64+
Before bumping versions, verify the repo is safe for public release:
65+
66+
1. Check `config/serve.json``initialPage` must be the placeholder `https://YOURTENANT.sharepoint.com/sites/YOURSITE/_layouts/workbench.aspx`, not a real tenant URL. If it contains a real URL, replace it with the placeholder.
67+
2. Check `config/package-solution.json` — the `developer.name` field must not contain an internal organisation name. If it does, clear it to `""`.
68+
3. Grep `src/` and `config/` for any hardcoded tenant domains (e.g. `.sharepoint.com`, `.onmicrosoft.com`) or personal email addresses. Report any findings.
69+
70+
Fix any issues found before continuing.
71+
72+
---
73+
74+
## Step 7 — Bump version numbers
75+
76+
Update exactly these two fields:
77+
- `package.json``"version"`: set to the new version (e.g. `"1.2.0"`)
78+
- `config/package-solution.json``"solution"."version"`: set to four-part form (e.g. `"1.2.0.0"`)
79+
80+
---
81+
82+
## Step 8 — Regenerate UserGuide.docx
83+
84+
Run:
85+
```
86+
node docs/generate-word.js
87+
```
88+
89+
Report whether it succeeded or failed. If the script does not exist, note "N/A — no generate-word.js" in the checklist and continue to Step 9.
90+
91+
---
92+
93+
## Step 9 — Full release build
94+
95+
Run:
96+
```
97+
npm run package
98+
```
99+
100+
This bundles in production mode and produces `sharepoint/solution/smart-org-chart.sppkg`. This may take a minute or two — wait for it to complete. Report success or any build errors. If errors occur, stop and report them — do not print the checklist until they are resolved.
101+
102+
---
103+
104+
## Step 10 — Release readiness checklist
105+
106+
Replace X.X.X below with the actual version number, and update the ✅/❌ status of each automated item based on what actually happened above. Then print it:
107+
108+
```
109+
Release checklist for vX.X.X
110+
─────────────────────────────────────────────────────────
111+
Automated (completed by this command):
112+
✅ TypeScript compiles cleanly
113+
✅ docs/USER_GUIDE.md updated
114+
✅ README.md updated
115+
✅ CHANGELOG.md updated
116+
✅ Security check passed (no tenant URLs or org names exposed)
117+
✅ Version bumped in package.json and config/package-solution.json
118+
✅ UserGuide.docx regenerated (or ❌ N/A — no generate-word.js)
119+
✅ Release build complete — smart-org-chart.sppkg ready
120+
121+
Still needed (manual steps):
122+
[ ] Review all doc changes: git diff
123+
[ ] Commit everything: git add -A && git commit -m "vX.X.X Release"
124+
[ ] Tag the release: git tag vX.X.X && git push origin vX.X.X
125+
[ ] Push to main (triggers CI): git push origin main
126+
[ ] Verify GitHub Release: https://github.com/sregan1/SharePoint-Smart-Org-Chart/releases
127+
[ ] Upload .sppkg to SharePoint app catalog if distributing directly
128+
```

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Changelog
2+
3+
All notable changes to Smart Org Chart are documented here.
4+
5+
---
6+
7+
## [1.0.1] — 2026-05-30
8+
9+
### Added
10+
- **Room account exclusion by pattern** — new *Exclude room accounts by pattern* field in the property pane. Comma-separated patterns (e.g. `conf-, room-, mrm@`) hide matching mailboxes from all views regardless of their account-enabled status, covering room mailboxes that have sign-in enabled as well as disabled ones.
11+
- **Office location on org chart cards** — the office/location field now appears on node cards in the tree and drill-down views when enabled in User Preferences.
12+
- **Configurable data source** — choose between Graph API (live, no indexing delay), SharePoint Search (legacy), or Auto (Graph with SP Search fallback).
13+
- **List view in Employee Directory** — toggle between card grid and compact single-row list view.
14+
- **Admin user filters** — property pane options to hide Azure AD guest accounts, hide disabled accounts, restrict to tenant domain, and exclude accounts by name pattern.
15+
16+
### Changed
17+
- **Consistent accent color** — card borders, avatar backgrounds, job title text, and org chart connector lines now all follow the SharePoint site's color theme instead of using per-department hashed colors.
18+
- **Expand All loads the complete org** — clicking Expand All in tree modes now performs a full BFS load from Microsoft Graph, fetching every level of the hierarchy rather than only expanding the pre-loaded nodes.
19+
- **Horizontal tree layout** — the left-right tree now uses the same recursive layout as the top-down tree: each manager's reports appear in a column to their right, expanding outward as branches are opened.
20+
- **Direct report count** — the badge on the expand button always shows a person's own direct report count; it no longer changes as deeper nodes are expanded.
21+
- **Hide disabled accounts and hide guest accounts** now default to **On** for new web part instances.
22+
- **Profile photo sizes increased** for clearer display at larger card sizes.
23+
- Long job titles now wrap to two lines on org chart cards instead of truncating.
24+
25+
### Fixed
26+
- `hideDisabledAccounts` and `hideGuestUsers` filters were not being applied when the Graph API data source was active.
27+
- Horizontal and vertical tree layouts now maintain strict level alignment — all nodes at the same org depth appear in the same row/column.
28+
29+
### Removed
30+
- Multi-column wrapping for managers with 8+ direct reports has been removed. All direct reports now appear in a single row (vertical) or column (horizontal), consistent with a traditional org chart layout.
31+
32+
---
33+
34+
## [1.0.0] — 2025-12-01
35+
36+
### Added
37+
- Initial release.
38+
- Employee Directory with A–Z filter, real-time search, paginated card grid, three card sizes, and per-user field visibility toggles.
39+
- Org Chart with drill-down, vertical tree, and horizontal tree layouts.
40+
- Person profile card with presence status, manager chain, and action buttons (Chat, Email, Call, Focus).
41+
- Org chart toolbar: search, Find Me, layout picker, stats bar, department filter, user type filter, zoom controls.
42+
- Four themes: Modern, Minimal, Corporate, Dark.
43+
- PDF and PNG export.
44+
- Demo mode with 150 / 500 / 1,000 person mock datasets.
45+
- User preferences panel persisted to `localStorage`.
46+
- Graph API and SharePoint Search data sources with automatic fallback.
47+
- CI release workflow producing `smart-org-chart.sppkg`.

README.md

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
[![SPFx](https://img.shields.io/badge/SPFx-1.18.2-green.svg)](https://aka.ms/spfx)
55
[![Node](https://img.shields.io/badge/Node-18_LTS-brightgreen.svg)](https://nodejs.org)
66

7+
[![🌐 Product Website](https://img.shields.io/badge/🌐%20Product%20Website-sharepointsmartsolutions.com-0078d4?style=for-the-badge)](https://sharepointsmartsolutions.com/smart-org-chart)
8+
[![📖 User Guide](https://img.shields.io/badge/📖%20User%20Guide-Read%20the%20docs-6a4c93?style=for-the-badge)](docs/USER_GUIDE.md)
9+
710
A SharePoint Framework (SPFx) web part that provides a searchable **Employee Directory** and an interactive **Org Chart**, both powered by Microsoft Graph.
811

912
![Smart Org Chart overview](docs/screenshots/01-overview.png)
@@ -17,18 +20,20 @@ A SharePoint Framework (SPFx) web part that provides a searchable **Employee Dir
1720
| **Employee Directory** | Responsive card grid — photo, name, job title, department, office, email, phone |
1821
| **Real-time search** | Filters by name, title, email, or department as you type |
1922
| **Alphabet filter** | A–Z filter bar, switchable between first name or last name |
23+
| **List view** | Compact single-row list alternative to the card grid |
2024
| **Org Chart** | Hierarchical tree built from the Azure AD `manager` field |
2125
| **Three chart layouts** | Drill-down, vertical tree, and horizontal tree |
22-
| **Lazy expand** | Child nodes are fetched on demand when you expand them |
23-
| **Wide-org wrapping** | When a manager has 8+ direct reports the children automatically wrap into 2 rows/columns, keeping the chart readable without zooming |
26+
| **Full Expand All** | Loads and expands the complete organisation from Microsoft Graph in one click |
27+
| **Lazy expand** | Individual branches fetched on demand when expanded |
2428
| **Department & user filters** | Narrow the chart to specific departments or hide guests/members |
25-
| **User account filters** | Admin-controlled: hide disabled accounts, hide guests, restrict to tenant domain, exclude by name pattern |
26-
| **Statistics panel** | Headcount by department, overlaid on the chart |
29+
| **User account filters** | Admin-controlled: hide disabled accounts, hide guests, restrict to tenant domain, exclude by name pattern, exclude room mailboxes by pattern |
30+
| **Statistics panel** | Headcount, departments, avg reporting span, overlaid on the chart |
2731
| **User preferences** | Per-user settings saved to `localStorage` (card size, sort order, visible fields, compact mode, etc.) |
2832
| **Photo support** | Profile photos from Graph with base64 caching; initials avatar fallback |
33+
| **Presence badges** | Live availability status from Microsoft Teams, refreshed every 60 seconds |
2934
| **Export** | Download the current view as a PDF or PNG |
3035
| **Demo mode** | Built-in mock data (150 / 500 / 1,000 people) for testing without Graph permissions |
31-
| **Themes** | Modern, Minimal, Corporate, and Dark |
36+
| **Themes** | Modern, Minimal, Corporate, and Dark — accent colours follow your SharePoint site theme |
3237
| **Configurable data source** | Graph API (live, no indexing delay), SharePoint Search, or Auto (Graph with SP Search fallback) |
3338

3439
---
@@ -114,9 +119,9 @@ The web part requests two delegated Graph permissions. A Global or SharePoint Ad
114119
1. In SharePoint Admin Center go to **Advanced****API access**.
115120
2. Approve:
116121
- `Microsoft Graph — User.Read.All`
117-
- `Microsoft Graph — User.ReadBasic.All`
122+
- `Microsoft Graph — Presence.Read.All`
118123

119-
> Without these approvals the web part loads but cannot retrieve user data.
124+
> Without these approvals the web part loads but cannot retrieve user data or presence status.
120125
121126
### Add the web part to a page
122127

@@ -164,7 +169,7 @@ You can also run the demo server manually and open it in a browser (see `demo/`
164169

165170
| Setting | Description |
166171
|---|---|
167-
| Chart theme | Modern, Minimal, Corporate, or Dark |
172+
| Chart theme | Modern, Minimal, Corporate, or Dark — accent colours follow the SharePoint site theme |
168173
| Default layout | Drill-Down, Vertical, or Horizontal |
169174

170175
**Data Source**
@@ -181,10 +186,11 @@ You can also run the demo server manually and open it in a browser (see `demo/`
181186

182187
| Setting | Default | Description |
183188
|---|---|---|
184-
| Exclude accounts | _(empty)_ | Comma-separated words or patterns. Any user whose name, email, or UPN contains one of these is hidden everywhere (e.g. `conf-room, noreply, service`). |
189+
| Exclude accounts | _(empty)_ | Comma-separated words or patterns. Any user whose name, email, or UPN contains one of these is hidden everywhere (e.g. `noreply, svc-`). |
190+
| Exclude room accounts by pattern | _(empty)_ | Comma-separated patterns that identify meeting room mailboxes (e.g. `conf-, room-, mrm@`). Hidden regardless of account status. |
185191
| Only show tenant users | Off | Hides accounts whose email domain does not match your tenant (removes gmail.com, hotmail.com, etc.). |
186-
| Hide Azure AD guest accounts | On | Hides guest (B2B) accounts from all views. |
187-
| Hide disabled accounts | On | Hides accounts with blocked sign-in (former employees, service accounts). |
192+
| Hide Azure AD guest accounts | **On** | Hides guest (B2B) accounts from all views. |
193+
| Hide disabled accounts | **On** | Hides accounts with blocked sign-in (former employees, service accounts). |
188194

189195
**Org Chart**
190196

@@ -267,6 +273,8 @@ SharePointSmartOrgChart/
267273

268274
**Disabled / former employees still showing** — Open the property pane → User Filters and enable **Hide disabled accounts**. This requires the Graph API data source; SharePoint Search does not expose account status.
269275

276+
**Meeting rooms appearing in the directory** — Open the property pane → User Filters and add the naming pattern used for room mailboxes in your organisation to the **Exclude room accounts by pattern** field (e.g. `conf-, room-`). If your room accounts have blocked sign-in, enabling **Hide disabled accounts** will also remove them.
277+
270278
**Photos not loading** — User photos require the `User.Read.All` scope. Verify that profile photos are set in Microsoft 365.
271279

272280
**Build errors after `npm install`** — Ensure you are using Node.js 18. SPFx 1.18 is not compatible with Node 20+.

config/package-solution.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
"solution": {
44
"name": "SharePoint Smart Org Chart",
55
"id": "9804d69d-05f8-4ed2-970f-63e1db0613f6",
6-
"version": "1.0.0.0",
6+
"version": "1.0.1.0",
77
"includeClientSideAssets": true,
88
"skipFeatureDeployment": true,
99
"isDomainIsolated": false,
1010
"developer": {
11-
"name": "Vivity Consulting",
11+
"name": "",
1212
"websiteUrl": "",
1313
"privacyUrl": "",
1414
"termsOfUseUrl": "",

0 commit comments

Comments
 (0)