Skip to content

Commit 4f9f3c7

Browse files
committed
Replace all user-facing 'Node' terminology with 'Work Item'
Complete UI terminology standardization to align with WorkItem backend model. All user-visible references to "Node" have been replaced with "Work Item" throughout the application for consistency and clarity. Changes: - Landing page: "Create your first work item" messaging - All modals: Create, Edit, Delete, Connect, Disconnect - Form labels: "Work Item Type" instead of "Node Type" - Success/error notifications - Context menu tooltips - Empty states and placeholders - ID labels: "Work Item ID" instead of "Node ID" - Graph selector: "Total: X Graphs" format - Welcome graph: Removed emoji, updated statuses Technical notes: - Backend model already uses WorkItem - Internal code comments and utilities still use "node" (developer-facing) - No breaking changes to API or data model
1 parent ff4fb3e commit 4f9f3c7

18 files changed

Lines changed: 232 additions & 139 deletions

packages/web/src/components/ConnectNodeModal.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ export function DisconnectNodeModal({ isOpen, onClose, sourceNode, onAllConnecti
341341
</div>
342342
<div>
343343
<h3 className="text-xl font-bold bg-gradient-to-r from-red-200 to-orange-100 bg-clip-text text-transparent">
344-
Disconnect Node
344+
Disconnect Work Item
345345
</h3>
346346
<p className="text-sm text-gray-300 mt-1">
347347
Remove connections from "{sourceNode.title}"
@@ -1174,7 +1174,7 @@ export function ConnectNodeModal({ isOpen, onClose, sourceNode, initialTab = 'co
11741174
</div>
11751175
<div>
11761176
<h3 className="text-xl font-bold bg-gradient-to-r from-emerald-200 to-green-100 bg-clip-text text-transparent">
1177-
{activeTab === 'connect' ? 'Connect Node' : 'Disconnect Node'}
1177+
{activeTab === 'connect' ? 'Connect Work Item' : 'Disconnect Work Item'}
11781178
</h3>
11791179
<p className="text-sm text-gray-300 mt-1">
11801180
{activeTab === 'connect'
@@ -1747,8 +1747,8 @@ export function ConnectNodeModal({ isOpen, onClose, sourceNode, initialTab = 'co
17471747
<CheckCircle className="h-4 w-4 text-emerald-400" />
17481748
</div>
17491749
<div>
1750-
<h4 className="text-sm font-bold text-gray-100">Available Nodes</h4>
1751-
<p className="text-xs text-gray-400">Select nodes to create connections</p>
1750+
<h4 className="text-sm font-bold text-gray-100">Available Work Items</h4>
1751+
<p className="text-xs text-gray-400">Select work items to create connections</p>
17521752
</div>
17531753
</div>
17541754

packages/web/src/components/CreateNodeModal.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -290,12 +290,12 @@ export function CreateNodeModal({ isOpen, onClose, parentNodeId, position }: Cre
290290

291291
const relationshipLabel = getRelationshipConfig(selectedRelationType as RelationshipType).label;
292292
showSuccess(
293-
'Node Created and Connected Successfully!',
293+
'Work Item Created and Connected Successfully!',
294294
`"${createdNode.title}" has been created with a "${relationshipLabel}" relationship.`
295295
);
296296
} else {
297297
showSuccess(
298-
'Node Created Successfully!',
298+
'Work Item Created Successfully!',
299299
`"${createdNode.title}" has been added to your workspace and is now visible in all views.`
300300
);
301301
}
@@ -316,7 +316,7 @@ export function CreateNodeModal({ isOpen, onClose, parentNodeId, position }: Cre
316316
} catch (error) {
317317

318318
// Show more specific error message if available
319-
let errorMessage = 'There was an error creating the node. Please try again or contact support if the problem persists.';
319+
let errorMessage = 'There was an error creating the work item. Please try again or contact support if the problem persists.';
320320
if (error instanceof Error) {
321321
errorMessage = error.message;
322322
} else if (typeof error === 'object' && error !== null && 'message' in error) {
@@ -349,11 +349,11 @@ export function CreateNodeModal({ isOpen, onClose, parentNodeId, position }: Cre
349349
{parentNodeId ? 'Create & Connect Work Item' : 'Create New Work Item'}
350350
</h2>
351351
<p className="text-sm text-gray-300 mt-1">
352-
{parentNodeId
353-
? 'Add a new node with automatic connection'
352+
{parentNodeId
353+
? 'Add a new work item with automatic connection'
354354
: existingNodesData?.workItems?.length > 0
355-
? 'Add another node to expand your graph'
356-
: 'Add your first node to begin the journey'
355+
? 'Add another work item to expand your graph'
356+
: 'Add your first work item to begin the journey'
357357
}
358358
</p>
359359
</div>
@@ -376,7 +376,7 @@ export function CreateNodeModal({ isOpen, onClose, parentNodeId, position }: Cre
376376
<p className="text-sm font-semibold text-blue-200">Connection Setup</p>
377377
</div>
378378
<p className="text-sm text-blue-100 leading-relaxed">
379-
A new node will be created and automatically connected with your selected relationship type.
379+
A new work item will be created and automatically connected with your selected relationship type.
380380
</p>
381381
</div>
382382

@@ -433,12 +433,12 @@ export function CreateNodeModal({ isOpen, onClose, parentNodeId, position }: Cre
433433
? 'border-red-500 focus:ring-red-500/50 focus:border-red-400'
434434
: 'border-gray-600/50 focus:ring-emerald-500/50 focus:border-emerald-400/70'
435435
}`}
436-
placeholder="Enter a descriptive title for your node"
436+
placeholder="Enter a descriptive title for your work item"
437437
/>
438438
{isDuplicateName && formData.title.trim() && (
439439
<div className="mt-2 flex items-center space-x-2 text-red-400 text-sm">
440440
<div className="w-1 h-1 bg-red-400 rounded-full"></div>
441-
<span>A node with this name already exists. Please choose a different name.</span>
441+
<span>A work item with this name already exists. Please choose a different name.</span>
442442
</div>
443443
)}
444444
</div>
@@ -447,14 +447,14 @@ export function CreateNodeModal({ isOpen, onClose, parentNodeId, position }: Cre
447447
<div className="flex items-center space-x-2 mb-3">
448448
<div className="h-1.5 w-1.5 bg-purple-400 rounded-full"></div>
449449
<label className="text-sm font-bold text-gray-100 tracking-wide">
450-
Node Type
450+
Work Item Type
451451
</label>
452452
</div>
453453

454454
<NodeTypeSelector
455455
selectedType={formData.type}
456456
onTypeChange={(type) => setFormData(prev => ({ ...prev, type }))}
457-
placeholder="Select node type"
457+
placeholder="Select work item type"
458458
/>
459459
</div>
460460

@@ -543,7 +543,7 @@ export function CreateNodeModal({ isOpen, onClose, parentNodeId, position }: Cre
543543
value={formData.description}
544544
onChange={(e) => setFormData(prev => ({ ...prev, description: e.target.value }))}
545545
className="w-full border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-white rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
546-
placeholder="Describe the node"
546+
placeholder="Describe the work item"
547547
/>
548548
</div>
549549

packages/web/src/components/DisconnectNodeModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ export function DisconnectNodeModal({ isOpen, onClose, sourceNode }: DisconnectN
223223
</div>
224224
<div>
225225
<h3 className="text-xl font-bold bg-gradient-to-r from-red-200 to-orange-100 bg-clip-text text-transparent">
226-
Disconnect Node
226+
Disconnect Work Item
227227
</h3>
228228
<p className="text-sm text-gray-300 mt-1">
229229
Remove connections from "{sourceNode.title}"

packages/web/src/components/EditNodeModal.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export function EditNodeModal({ isOpen, onClose, node }: EditNodeModalProps) {
122122
e.preventDefault();
123123

124124
if (!formData.type) {
125-
showError('Validation Error', 'Please select a node type.');
125+
showError('Validation Error', 'Please select a work item type.');
126126
return;
127127
}
128128

@@ -172,15 +172,15 @@ export function EditNodeModal({ isOpen, onClose, node }: EditNodeModalProps) {
172172
const updatedNode = result.data.updateWorkItems.workItems[0];
173173

174174
showSuccess(
175-
'Node Updated Successfully!',
175+
'Work Item Updated Successfully!',
176176
`"${updatedNode.title}" has been updated and changes are now visible in all views.`
177177
);
178178

179179
onClose();
180180
} else {
181181
showError(
182182
'Update Failed',
183-
'The node update did not return valid data. Please try again.'
183+
'The work item update did not return valid data. Please try again.'
184184
);
185185
}
186186
} catch (error) {
@@ -189,15 +189,15 @@ export function EditNodeModal({ isOpen, onClose, node }: EditNodeModalProps) {
189189
}
190190

191191
// Show more specific error message if available
192-
let errorMessage = 'There was an error updating the node. Please try again or contact support if the problem persists.';
192+
let errorMessage = 'There was an error updating the work item. Please try again or contact support if the problem persists.';
193193
if (error instanceof Error) {
194194
errorMessage = error.message;
195195
} else if (typeof error === 'object' && error !== null && 'message' in error) {
196196
errorMessage = String(error.message);
197197
}
198198

199199
showError(
200-
'Failed to Update Node',
200+
'Failed to Update Work Item',
201201
errorMessage
202202
);
203203
}
@@ -241,19 +241,19 @@ export function EditNodeModal({ isOpen, onClose, node }: EditNodeModalProps) {
241241
value={formData.title}
242242
onChange={(e) => setFormData(prev => ({ ...prev, title: e.target.value }))}
243243
className="w-full border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-white rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
244-
placeholder="Enter node title..."
244+
placeholder="Enter work item title..."
245245
/>
246246
</div>
247247

248248
<div>
249249
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
250-
Node Type *
250+
Work Item Type *
251251
</label>
252252

253253
<NodeTypeSelector
254254
selectedType={formData.type}
255255
onTypeChange={(type) => setFormData(prev => ({ ...prev, type }))}
256-
placeholder="Select node type..."
256+
placeholder="Select work item type..."
257257
/>
258258
</div>
259259

@@ -339,7 +339,7 @@ export function EditNodeModal({ isOpen, onClose, node }: EditNodeModalProps) {
339339
value={formData.description}
340340
onChange={(e) => setFormData(prev => ({ ...prev, description: e.target.value }))}
341341
className="w-full border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-white rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
342-
placeholder="Describe the node..."
342+
placeholder="Describe the work item..."
343343
/>
344344
</div>
345345

@@ -566,7 +566,7 @@ export function EditNodeModal({ isOpen, onClose, node }: EditNodeModalProps) {
566566
}`}
567567
>
568568
<Save className="h-5 w-5" />
569-
<span>{updatingNode ? 'Updating' : 'Update Node'}</span>
569+
<span>{updatingNode ? 'Updating...' : 'Update Work Item'}</span>
570570
</button>
571571
</div>
572572
</form>

0 commit comments

Comments
 (0)