Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0e87184
feat(tracker): register Gantt view tab (placeholder UI)
MichaelUray May 15, 2026
4868b15
feat(tracker-resources): add Gantt lib types
MichaelUray May 15, 2026
5399bf6
test(tracker-resources): add failing Gantt time-scale tests
MichaelUray May 15, 2026
de2652e
feat(tracker-resources): implement Gantt time-scale lib
MichaelUray May 15, 2026
1ba2a15
test(tracker-resources): add failing Gantt layout tests
MichaelUray May 15, 2026
4ef672f
feat(tracker-resources): implement Gantt layout lib
MichaelUray May 15, 2026
e7e0472
feat(tracker-resources): add GanttHeader.svelte
MichaelUray May 15, 2026
2173ab4
feat(tracker-resources): add GanttBar.svelte (regular + summary claws)
MichaelUray May 15, 2026
af2d60a
feat(tracker-resources): add GanttTodayMarker.svelte
MichaelUray May 15, 2026
84355bd
feat(tracker-resources): add GanttMilestoneFlag.svelte
MichaelUray May 15, 2026
cc37678
feat(tracker-resources): add GanttCanvas.svelte
MichaelUray May 15, 2026
528eac4
feat(tracker-resources): add GanttSidebar.svelte
MichaelUray May 15, 2026
d257021
feat(tracker-resources): add GanttToolbar.svelte (zoom buttons)
MichaelUray May 15, 2026
1dfac46
feat(tracker-resources): GanttView wires Sidebar+Canvas+Toolbar with …
MichaelUray May 15, 2026
787f2ae
- layout.ts: orphan child issues (parent filtered out) now emit as roots
MichaelUray May 15, 2026
d100e2a
Toolbar (replaces previous floating zoom):
MichaelUray May 15, 2026
0f43f8f
- SVG horizontal-scroll bug: GanttHeader and GanttCanvas now render at
MichaelUray May 15, 2026
295d1bd
feat(tracker-resources): wire Gantt sidebar toggles into Customize-View
MichaelUray May 15, 2026
8cbe5a0
fix(tracker-resources): clip GanttSidebar inside its host
MichaelUray May 15, 2026
6eda168
fix(tracker-resources): unified Gantt scroll container (Plane-style s…
MichaelUray May 15, 2026
c307059
feat(tracker-resources): + New issue button in Gantt toolbar
MichaelUray May 15, 2026
2d8e4e6
chore(tracker): localize Gantt UI strings + minimize locale diffs
MichaelUray May 15, 2026
c5a65dc
feat(tracker-resources): blue plus-only NewIssueHeader
MichaelUray May 15, 2026
44b8797
fix(tracker-resources): resize handle no longer fights canvas pan
MichaelUray May 15, 2026
b2582fc
feat(tracker-resources): sticky-bottom horizontal scrollbar (Plane-st…
MichaelUray May 15, 2026
f1cd1a2
feat(tracker-resources): custom DOM scrollbar thumb (visible everywhere)
MichaelUray May 15, 2026
3d5ea84
feat(tracker-resources): hardened scrollbars + status colors + tight …
MichaelUray May 15, 2026
3bd0761
feat(tracker-resources): status badge column + ganttShowStatus toggle
MichaelUray May 15, 2026
fa36024
feat(tracker-resources): Tracker UI redesign polish v27
MichaelUray May 15, 2026
619b9a2
feat(tracker-resources): inline-add row in Gantt sidebar (PR2.1)
MichaelUray May 15, 2026
61c8df3
feat(model-tracker): register startDate + dueDate as Issue filters
MichaelUray May 15, 2026
27f29b5
fix(tracker-resources): hide Gantt h-scrollbar when there's no overflow
MichaelUray May 15, 2026
0911bb0
chore(tracker-resources): remove internal review markers from inline …
MichaelUray May 15, 2026
614929d
fix(tracker-resources): resolve eslint errors in gantt read-only comp…
MichaelUray Jul 3, 2026
6760882
chore(tracker-resources): apply prettier formatting after develop merge
MichaelUray Jul 3, 2026
3032588
fix(tracker): address read-only Gantt viewlet review feedback (#10853)
MichaelUray Jul 9, 2026
0922307
style(tracker): match CI prettier formatting for the Gantt hover handler
MichaelUray Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion models/tracker/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,9 @@ function defineFilters (builder: Builder): void {
key: 'milestone',
component: view.component.ObjectFilter,
showNested: false
}
},
'startDate',
'dueDate'
],
ignoreKeys: ['number', 'estimation', 'attachedTo'],
getVisibleFilters: tracker.function.GetVisibleFilters
Expand Down
78 changes: 78 additions & 0 deletions models/tracker/src/viewlets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,56 @@ export function issueConfig (
]
}

export function ganttViewOptions (): ViewOptionsModel {
// This read-only Gantt viewlet intentionally does not advertise group-by or
// show-colors — the canvas does not honour them yet. The two sidebar-column
// toggles below ARE wired up to GanttSidebar.
return {
groupBy: [],
orderBy: [
['startDate', SortingOrder.Ascending],
['rank', SortingOrder.Ascending],
['dueDate', SortingOrder.Ascending]
],
other: [
{
key: 'ganttShowIssueCode',
type: 'toggle',
defaultValue: false,
actionTarget: 'display',
label: tracker.string.GanttShowIssueCode
},
{
key: 'ganttShowTitle',
type: 'toggle',
defaultValue: true,
actionTarget: 'display',
label: tracker.string.GanttShowTitle
},
{
key: 'ganttShowStatus',
type: 'toggle',
defaultValue: true,
actionTarget: 'display',
label: tracker.string.GanttShowStatus
}
]
}
}

export function ganttConfig (): BuildModelKey[] {
// Minimal config — Gantt drives its own column layout.
return [
{
key: '',
presenter: tracker.component.PriorityEditor,
label: tracker.string.Priority,
props: { kind: 'list', size: 'small' }
},
{ key: '', presenter: tracker.component.IssuePresenter, label: tracker.string.Issue }
]
}

export function defineViewlets (builder: Builder): void {
builder.createDoc(
view.class.ViewletDescriptor,
Expand All @@ -224,6 +274,17 @@ export function defineViewlets (builder: Builder): void {
tracker.viewlet.Kanban
)

builder.createDoc(
view.class.ViewletDescriptor,
core.space.Model,
{
label: tracker.string.Gantt,
icon: tracker.icon.Gantt,
component: tracker.component.GanttView
},
tracker.viewlet.Gantt
)

builder.createDoc(
view.class.Viewlet,
core.space.Model,
Expand Down Expand Up @@ -501,6 +562,23 @@ export function defineViewlets (builder: Builder): void {
tracker.viewlet.IssueKanban
)

// Gantt is registered AFTER List + Kanban so List remains the default
// viewlet (ViewletSelector falls back to viewlets[0] when no preference
// is saved). Putting Gantt last avoids surprising users with an empty
// canvas on first visit.
builder.createDoc(
view.class.Viewlet,
core.space.Model,
{
attachTo: tracker.class.Issue,
descriptor: tracker.viewlet.Gantt,
viewOptions: ganttViewOptions(),
configOptions: { strict: true, hiddenKeys: ['title'] },
config: ganttConfig()
},
tracker.viewlet.IssueGantt
)

const componentListViewOptions: ViewOptionsModel = {
groupBy: ['lead', 'createdBy', 'modifiedBy'],
orderBy: [
Expand Down
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,26 @@
"UnsetParentIssue": "Odebrat nadřazený úkol",
"ForbidCreateProjectPermission": "Zakázat vytvoření projektu",
"ForbidCreateProjectPermissionDescription": "Zakazuje uživatelům vytvářet nové projekty",
"AllowCreatingIssues": "Povolit vytváření úkolů"
"AllowCreatingIssues": "Povolit vytváření úkolů",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"

},
"status": {}
}
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,26 @@
"UnsetParentIssue": "Übergeordnete Aufgabe entfernen",
"ForbidCreateProjectPermission": "Projekterstellung verbieten",
"ForbidCreateProjectPermissionDescription": "Verbietet Benutzern das Erstellen neuer Projekte",
"AllowCreatingIssues": "Erstellen von Aufgaben erlauben"
"AllowCreatingIssues": "Erstellen von Issues erlauben",
"Day": "Tag",
"Week": "Woche",
"Month": "Monat",
"Quarter": "Quartal",
"Gantt": "Gantt",
"GanttShowIssueCode": "Issue-Code anzeigen",
"GanttShowTitle": "Titel anzeigen",
"GanttShowStatus": "Status anzeigen",
"GanttToday": "Heute",
"GanttJumpToStart": "Zum Anfang springen",
"GanttJumpToEnd": "Zum Ende springen",
"GanttJumpToDate": "Zu Datum springen",
"GanttPreviousPeriod": "Vorheriger Zeitraum",
"GanttNextPeriod": "Nächster Zeitraum",
"GanttScrollLeftToBar": "Nach links zum Balken scrollen",
"GanttScrollRightToBar": "Nach rechts zum Balken scrollen",
"GanttExpand": "Ausklappen",
"GanttCollapse": "Einklappen"

},
"status": {}
}
20 changes: 19 additions & 1 deletion plugins/tracker-assets/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,25 @@
"UnsetParentIssue": "Unset parent issue",
"ForbidCreateProjectPermission": "Forbid create project",
"ForbidCreateProjectPermissionDescription": "Forbid users creating new projects",
"AllowCreatingIssues": "Allow creating issues"
"AllowCreatingIssues": "Allow creating issues",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"
},
"status": {}
}
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,26 @@
"UnsetParentIssue": "Unset parent issue",
"ForbidCreateProjectPermission": "Prohibir crear proyecto",
"ForbidCreateProjectPermissionDescription": "Prohíbe a los usuarios crear nuevos proyectos",
"AllowCreatingIssues": "Permitir crear incidencias"
"AllowCreatingIssues": "Permitir crear incidencias",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"

},
"status": {}
}
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,26 @@
"UnsetParentIssue": "Désélectionner l'issue parent",
"ForbidCreateProjectPermission": "Interdire la création de projet",
"ForbidCreateProjectPermissionDescription": "Interdit aux utilisateurs de créer de nouveaux projets",
"AllowCreatingIssues": "Autoriser la création d'issues"
"AllowCreatingIssues": "Autoriser la création d'issues",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"

},
"status": {}
}
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,26 @@
"UnsetParentIssue": "Annulla l'issue genitore",
"ForbidCreateProjectPermission": "Vieta creazione progetto",
"ForbidCreateProjectPermissionDescription": "Vieta agli utenti di creare nuovi progetti",
"AllowCreatingIssues": "Consenti la creazione di issue"
"AllowCreatingIssues": "Consenti la creazione di issue",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"

},
"status": {}
}
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,26 @@
"UnsetParentIssue": "親イシューの設定を解除",
"ForbidCreateProjectPermission": "プロジェクト作成禁止",
"ForbidCreateProjectPermissionDescription": "ユーザーが新しいプロジェクトを作成することを禁止します",
"AllowCreatingIssues": "イシューの作成を許可"
"AllowCreatingIssues": "イシューの作成を許可",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"

},
"status": {}
}
20 changes: 19 additions & 1 deletion plugins/tracker-assets/lang/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,25 @@
"UnsetParentIssue": "상위 이슈 설정 해제",
"ForbidCreateProjectPermission": "프로젝트 생성 금지",
"ForbidCreateProjectPermissionDescription": "사용자의 새 프로젝트 생성을 금지",
"AllowCreatingIssues": "이슈 생성 허용"
"AllowCreatingIssues": "이슈 생성 허용",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"
},
"status": {}
}
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/pt-br.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,26 @@
"UnsetParentIssue": "Desmarcar problema pai",
"ForbidCreateProjectPermission": "Proibir criação de projeto",
"ForbidCreateProjectPermissionDescription": "Proíbe os usuários de criar novos projetos",
"AllowCreatingIssues": "Permitir criar problemas"
"AllowCreatingIssues": "Permitir criar problemas",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"

},
"status": {}
}
21 changes: 20 additions & 1 deletion plugins/tracker-assets/lang/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,26 @@
"UnsetParentIssue": "Desmarcar problema pai",
"ForbidCreateProjectPermission": "Proibir criação de projeto",
"ForbidCreateProjectPermissionDescription": "Proíbe os usuários de criar novos projetos",
"AllowCreatingIssues": "Permitir criar problemas"
"AllowCreatingIssues": "Permitir criar problemas",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Quarter": "Quarter",
"Gantt": "Gantt",
"GanttShowIssueCode": "Show issue code",
"GanttShowTitle": "Show title",
"GanttShowStatus": "Show status",
"GanttToday": "Today",
"GanttJumpToStart": "Jump to start",
"GanttJumpToEnd": "Jump to end",
"GanttJumpToDate": "Jump to date",
"GanttPreviousPeriod": "Previous period",
"GanttNextPeriod": "Next period",
"GanttScrollLeftToBar": "Scroll left to bar",
"GanttScrollRightToBar": "Scroll right to bar",
"GanttExpand": "Expand",
"GanttCollapse": "Collapse"

},
"status": {}
}
Loading
Loading