Update BranchSetupManager subtitle to reference dynamic branch type label
Lock user-level fields to self-only, gate member-level edits to self or MANAGE_MEMBER_SECURITY
Replace MANAGE_USERS gate with MANAGE_MEMBER_SECURITY in member settings redirect
Rename Branch Setup tab to dynamic {branchLabel} Types and update URL to branch-types
Use {{logoUrl}} placeholders so sent emails match preview
serializeFullEmailHtml now stores **************** placeholders in bodyHtml instead of resolved local paths. EmailTemplateService already injects absolute logo ...
Add permission gates for user-level fields and password change section in MyAccountTab
Unify preview and editor into a single coherent system
- Extract system template content via DOMParser targeting the content <td> cell, preventing double-wrapping when EmailFrame re-serializes the blocks - Replace...
Add access gate and MANAGE_MEMBER_SECURITY tab guard to member settings page
Enforce org+member rights across settings, home, and calculator
- Add 11 new rights (MANAGE_CRM_SETTINGS, VIEW_TASKS, **************** to RoleRightType.ts - Add CALCULATOR to ServiceType.ts, AppType.ts, and Organization.ts (...
Fix center scroll and system template block loading
- Remove height:100% from EmailFrame so content grows naturally and scroll works - Extract <body> content from full HTML system templates into editable block
Extract inner content from canonical HTML when loading in block editor
When bodyBlocks is null and bodyHtml starts with <!DOCTYPE, extract the main content <td> as an initial HTML block so users see the existing content instead of ...
Add Gmail Personal and Outlook Personal provider cards and config components
Extract AliasesTab, SharedMailboxTab; make EmailMailboxManager a thin router
Enforce member rights on all nav items
Every nav item now requires both org feature flag AND member right. 7 new access rights added: ACCESS_COMMERCE, VIEW_CALENDAR, ACCESS_CHAT, ACCESS_MAIL, ACCESS_...
Prevent double-wrapping of full-document bodyHtml in block designer
When bodyBlocks is null and bodyHtml is a full <!DOCTYPE html> document (e.g. canonical seeded templates), importing it as a single block caused serializeFullEm...
Serialize full email HTML with outer frame on template save
- serializeFullEmailHtml wraps inner blocks in the branded outer frame (header logo, title/subtitle, content area, footer logo + org name) using absolute UR...
Compact editor header — remove large title/tabs, move actions to nav row
Removes the sticky header card (title, subtitle, Save/Cancel/Preview buttons, Edit/Preview tab bar) from EmailTemplateEdit to reclaim ~200px of vertical space a...
Add account settings pages for phone + security questions (SP3)
Adds **************** with API wiring to SecurityService /api/account/*. Syncs nav across all 3 locations.
Route preview through Browser's backend-rendered modal (part of SP2)
The EmailTemplateBrowser now owns the Preview modal directly, so the Manager no longer needs to intercept row-level preview requests and redirect to edit mode.
Wire EmailTemplateEdit to real API
Hydrates from templateApi.get, saves via templateApi.update. Category dropdown is API-driven with inline category-create affordance. Variables picker reads from...
Wire EmailTemplateBrowser to real API + add System Defaults tab
Replaces ~140 lines of mock data with templateApi.list() calls. Conditional fifth tab 'System Defaults' appears only for top-level-org admins and renders from r...
Add EmailTemplatePreview modal
Opens on row-action Preview. Backend-rendered via templateApi.preview(); result displayed in a sandboxed iframe for style isolation. Matches the exact code path...
Delete unused EmailGeneralManager.tsx (~560 lines of dead code)
Component was never imported anywhere. Its toggles (bounce handling, unsubscribe, delivery tracking, default from email) had no backend and were purely cosmetic...
Add templateApi + categoryApi + variableContracts client modules
Wraps SP1's /api/email/templates/* and **************** endpoints with typed TypeScript helpers. variableContracts mirrors SP1's TemplateKeys Javadoc so the edi...
Add analytics icon to navtop with OTK-authenticated iframe
Adds a BarChart icon to NavTop gated to Team Members of the top-level org (no parent). Clicking navigates to /analytics which generates an OTK and loads analyti...
Replace separate call/text icons in navtop with unified VoipButton dropdown
Show TXT domain ownership record in DNS setup UI
- DomainData/DnsStatus: add verificationToken, ownershipVerified, type fields - AliasStatusTable: show TxtOwnershipCard above CNAME table with copy button, in...
Sticky header, updated aliases, always-visible plain-English DNS guide
Populate DNS statuses when already confirmed; show org name prominently throughout
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.