Skip to content

feat(tracker): Gantt scheduling schema (startDate + IssueRelation) + version bump#10851

Merged
ArtyomSavchenko merged 16 commits into
hcengineering:developfrom
MichaelUray:feat/gantt-upstream-pr1-schema
Jul 9, 2026
Merged

feat(tracker): Gantt scheduling schema (startDate + IssueRelation) + version bump#10851
ArtyomSavchenko merged 16 commits into
hcengineering:developfrom
MichaelUray:feat/gantt-upstream-pr1-schema

Conversation

@MichaelUray

@MichaelUray MichaelUray commented May 18, 2026

Copy link
Copy Markdown
Contributor

Stack overview

This PR is the foundation of a 10-PR Gantt-chart feature series for Tracker. The full stack is opened as Drafts to give visibility into the planned scope; this PR (#10851) is the only one currently ready for maintainer review / merge. Each follow-up rebases onto develop once its predecessor merges.

graph TD
  D[develop @ hcengineering/platform]:::base
  D --> P1["#10851 — Scheduling schema foundation"]:::ready
  P1 --> P2["#10853 — Read-only Gantt viewlet"]:::draft
  P2 --> P3a["#10854 — Editable bars (drag / resize / dnd)"]:::draft
  P3a --> P3b["#10855 — Dependencies, cascade scheduling, critical path"]:::draft
  P3b --> P4["#10856 — Visual + UX polish"]:::draft
  P4 --> P5["#10857 — Power-user features (undo, saved views, bulk, auto-schedule)"]:::draft
  P5 --> P6["#10858 — Y-axis virtualization for large projects"]:::draft
  P6 --> P7["#10859 — Mobile + tree-view + predecessor column + shift notifications"]:::draft
  P7 --> P9["#10872 — Inline filter chips + advanced search bar"]:::draft
  P9 --> P10["#10873 — Bar coloring (6 modes) + past-due/blocked overlays + sub-issue progress"]:::draft

  M[main @ hcengineering/huly-docs]:::base
  M --> Docs["huly-docs #70 — Full reference (15 pages, 33 screenshots)"]:::ready

  P10 -.documents.-> Docs

  classDef base fill:#e7e7e7,stroke:#555,color:#222
  classDef ready fill:#d4edda,stroke:#28a745,color:#155724
  classDef draft fill:#fff3cd,stroke:#ffc107,color:#856404
Loading

Legend: 🟢 ready-for-review · 🟡 draft (depends on predecessor) · ⚪ upstream base branch

ℹ️ Screenshots below reflect the integrated feature stack (snapshot 2026-05-21 from a staging deployment running the tip of all 10 branches together). They do not match the visual state of any individual PR taken in isolation — earlier PRs in the chain render simpler UI than what is shown. Each screenshot is intended as a feature reference, not a per-PR regression baseline.

Suggested merge order

  1. This PR (feat(tracker): Gantt scheduling schema (startDate + IssueRelation) + version bump #10851) — pure schema, safe foundation
  2. feat(tracker): Gantt — #2 read-only viewlet #10853feat(tracker): Gantt — #7 tier-4 (mobile, tree-view, predecessor column, visual deps, shift notify) #10859 in order — visual stack, each rebases onto develop after the previous merges
  3. feat(tracker): Gantt — #9 inline filter chips + advanced search + view-option toggles #10872feat(tracker): Gantt — #10 bar coloring + overlays + sub-issue progress #10873 — currently draft visibility PRs; they should be rebased / marked ready after feat(tracker): Gantt — #7 tier-4 (mobile, tree-view, predecessor column, visual deps, shift notify) #10859 merges
  4. huly-docs#70 — independent of code merge timing, can merge anytime after the relevant PRs are in

Local verification has passed for the branches touched in the latest update. Some GitHub Actions on draft / fork PRs may still require maintainer approval before they run. Every commit is Signed-off-by. All PRs have maintainer_can_modify=true — feel free to push fixes or rebase directly.

What each follow-up PR does (expand for details + screenshots)

Visual stack (PR2 → PR7)

  • #10853 — Read-only Gantt viewlet
    New view type next to List and Board. Each issue is rendered as a horizontal bar spanning from its startDate (left edge) to dueDate (right edge) on a time axis. Zoom levels: Day, Week, Month, Quarter. Read-only — bars cannot be dragged yet.

    Read-only Gantt overview

  • #10854 — Editable bars (drag / resize / dnd)
    Drag a bar horizontally to reschedule (start + due move together). Resize either edge to change duration. Drag-and-drop rows to reorder issues. Mouse + touch.

  • #10855 — Dependencies, cascade scheduling, critical path
    Visible directional arrows between dependent issues. When you drag a predecessor, its dependents shift forward automatically (cascade). The longest dependency chain is highlighted in red as the critical path.

    Dependency arrows + critical path

  • #10856 — Visual + UX polish
    Typography alignment, focus states, hover feedback, dark/light theme parity, keyboard navigation refinements across the viewlet.

  • #10857 — Power-user features
    Four independent additions:

    • Undo/redo for drag, resize, dnd, dependency-create actions
    • Saved views — capture current filter + grouping + zoom + time window as a named view, personal or shared with project members
    • Bulk select — Cmd-click or Shift-click to select multiple bars and drag them together
    • Auto-scheduling — optional mode that nudges pinned bars out of the way when a manual drag creates a collision

    Saved views dropdown

  • #10858 — Y-axis virtualization
    Performance improvement for large projects. Only visible rows are rendered to the DOM; scrolling stays smooth on projects with thousands of issues.

  • #10859 — Mobile + tree-view + predecessor column + shift notifications
    Five smaller additions that round out the feature:

    • Mobile — responsive layout, pinch-zoom, touch-friendly drag handles
    • Tree-view — parent → sub-issue hierarchy in the sidebar
    • Predecessor column in the issue list (shows dependency IDs)
    • Visual dependency arrows on hover even outside the active issue
    • Shift notifications — Telegram / inbox notify when a cascade shift moves an issue you own

    Mobile view

Companion track (PR9 + PR10, stacked on PR7)

  • #10872 — Inline filter chips + advanced search bar
    Reusable across List, Board, and Gantt viewlets:

    • Inline filter chips — All / Active / Backlog quick-filter row directly on the toolbar
    • Advanced search — field-prefix syntax (title:loader, id:HULY-, comments:fixed); Lucene-reserved chars escaped properly so title:C++ and title:POC: design don't crash the parser
    • Customize-View popoverSearch in... scope dropdown (Title / Title+Description / Title+Description+Comments), highlight-search-matches toggle, quick-filter visibility toggle
    • Empty-state card — friendly zero-results screen with reset actions

    Inline filter chips + active search

  • #10873 — Bar coloring + overlays + sub-issue progress
    Six color modes selectable from a toolbar Color by dropdown:

    • Status (default) — issue lifecycle stage
    • Priority — Urgent / High / Medium / Low / No-priority
    • Assignee — distinct hue per person
    • Component — uses a new optional color field on Component
    • Milestone — same pattern with Milestone color
    • Uniform — single color for all bars (for screenshots / printing)

    Plus an overlay layer that works on top of any color mode:

    • Past-due bars get a red left-stripe
    • Blocked bars (finish-to-start predecessor not Done) get a diagonal hatch
    • Sub-issue progress fill (Status mode only) shows how much of the parent's work is Done

    All toolbar state persists in saved views.

    Color by Status

    Past-due + blocked overlays

Documentation

  • huly-docs#70 — Full Gantt-chart reference (open for review, independent of code)
    15 mdx pages under tracker/gantt/ covering overview, bar coloring, dependencies, cascade scheduling, critical path, working-days awareness, filtering & grouping, advanced search, no-search-results state, saved views, bulk operations, auto vs manual scheduling, keyboard shortcuts, export, mobile/tablet. 33 light-theme screenshots all taken from a live deployment of the feature stack.

This PR — Scheduling schema foundation

Adds the schema foundation a Gantt-style scheduling view needs: an Issue.startDate field alongside the existing dueDate, an IssueRelation Mixin describing typed predecessor/successor links between issues, and a Milestone.startDate so milestones become real ranges instead of single points. The migration backfills startDate for existing issues (modifiedOn-fallback) and bumps the fulltext model version so deployed workspaces accept the new schema fields.

This is the first of the 10-PR series shown above. Each follow-up PR builds linearly on this one. Happy to discuss the broader feature plan before continuing — I can hold the follow-ups in draft or split / merge them differently if that fits the roadmap better.

What's in this PR (7 commits)

  • feat(tracker) add Gantt scheduling schema (startDate + IssueRelation)
  • feat(model-tracker) migrateAddStartDate operation + Jest tests
  • feat(tracker) expose Issue.startDate / Milestone.startDate in the UI; tighten typing
  • fix(tracker) explicit @Prop ranks for Milestone date fields
  • fix(tracker-resources) EditMilestone renders Status / Start / Target in chronological order
  • fix(fulltext) bump model version to 0.7.423 to match deployed workspaces (otherwise the fulltext pod silently rejects Tx events that mention the new fields)

How to review

Cumulative diff against develop. PR1 contains 7 commits across 31 files (+336 / −11). The schema change itself is the single largest semantic step; the rest are migration + UI plumbing that follow directly from it.

Testing

  • Jest tests on migrateAddStartDate cover the backfill behaviour for issues with / without dueDate.
  • Validated on a production-style deployment on 2026-05-18: schema migration runs cleanly on a workspace that pre-existed at model version 0.7.422, fulltext pod accepts the new fields, no rejected Tx events.

DCO

All 7 commits are Signed-off-by.

Schema-only foundation for the upcoming Gantt-chart view in tracker.
No UI in this PR.

Changes:
- Issue.startDate: Timestamp | null (interface + IssueDraft + @prop with @Index)
- Milestone.startDate: Timestamp | null (interface + @prop, reusing the
  existing tracker.string.StartDate IntlString)
- New DependencyKind type ('finish-to-start' | 'start-to-start' |
  'finish-to-finish' | 'start-to-finish')
- New IssueRelation AttachedDoc class with kind: DependencyKind, signed
  lag: number — registered in models/tracker via TIssueRelation
- 7 new IntlString keys: IssueStartDate, GanttDependency,
  GanttDependency{FinishToStart,StartToStart,FinishToFinish,StartToFinish},
  GanttLag — all 13 locales updated
- Cross-plugin literal updates in importer + github sync to satisfy the new
  required Issue.startDate / Milestone.startDate fields:
  - packages/importer/src/importer/importer.ts: AttachedData<Issue> literal
  - services/github/pod-github/src/sync/issueBase.ts: 'startDate' added to
    GithubIssueData Omit list (github sync does not own scheduling)
  - services/github/pod-github/src/sync/issues.ts + pullrequests.ts:
    AttachedData<Issue|GithubPullRequest> literals

Out of scope (deferred to follow-up PRs):
- UI for Gantt view, drag/resize, dependency editor, critical path
- blockedBy → IssueRelation migration (ships atomically with the writer
  redirect in the dependency-UI PR)
- LinkIssues permission (tracker uses forbid-style permissions; needs
  maintainer discussion)
- Activity-feed wiring for IssueRelation (needs a producer to test against)
- IssueTemplate.startDate (template propagation semantics undecided)

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
3 tests covering migrateAddStartDate:
- writes startDate=null to Issues in DOMAIN_TASK with the right filter
- writes startDate=null to Milestones in DOMAIN_TRACKER with the right filter
- issues exactly two update calls (one per class)

Follows the MigrationClient mock pattern from
models/chat/src/__tests__/migration.test.ts.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
…tion

Backfills startDate=null on existing Issues (DOMAIN_TASK) and Milestones
(DOMAIN_TRACKER) so the new schema field has a defined value on every
pre-existing document. Idempotent via the standard tryMigrate state-key
mechanism (state: 'gantt-add-startdate').

Verified domain choices against existing migration helpers:
- migrateIdentifiers / passIdentifierToParentInfo use DOMAIN_TASK for
  Issues (lines 145, 161 in this file).
- TMilestone @model decorator confirms DOMAIN_TRACKER for Milestones
  (models/tracker/src/types.ts:372).

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
…ghten typing

UI changes (so the new schema fields are actually editable, in chronological
order Start → Due/Target):

- New StartDateEditor.svelte (mirrors DueDateEditor.svelte for startDate)
- ControlPanel: render Start Date row above Due Date row in the issue
  side panel; both always-visible (no `!== null` guard) so users can set
  them on issues that don't have a date yet
- NewMilestone form: Start Date input above Target Date input
- Milestone list view: Start Date column before Target Date column

- TIssueRelation: tighten interface to `extends AttachedDoc<Issue, 'relations'>`
  so attachedTo + collection are statically typed. The model class
  re-declares `collection: 'relations'` to match the narrower base.
- Drop 4 unused Dependency-kind IntlString keys (FinishToFinish,
  FinishToStart, StartToFinish, StartToStart) — they had no consumer
  in PR 1; will be re-introduced in PR 4 (dependency editor).
- Simplify migration.ts comments — drop ageing line-references.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
The DocAttributeBar side panel sorts attributes by attr.rank ?? toRank(_id)
(see plugins/view-resources/src/components/ClassAttributeBar.svelte:42-47),
so without explicit ranks the visible order on a Milestone was hash-based
(startDate before Status, breaking the chronological flow the user expects).

Set ranks so the side panel renders Status → Start date → Target date.
Comments and attachments stay where they are (they're collections, filtered
out of the attribute panel by categorizeFields).

Issues are unaffected — the Issue side panel is the custom ControlPanel.svelte
which renders Start date / Due date in explicit slots (see PR 1's UI commit).

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
…body in chronological order

The right-side DocAttributeBar sorts attributes by attr.rank ?? toRank(_id),
giving startDate before status (toRank('startDate') < toRank('status')
lexicographically). Setting an explicit rank via @prop's third arg did not
propagate through the workspace upgrade for existing Attribute documents
in the model TX log — the rank made it into the bundled txes but the
existing Attribute creation TXes are not replaced on upgrade-workspace.

Pivot: render Status, Start date, Target date in the EditMilestone body
in explicit chronological order, and add 'status', 'startDate', 'targetDate'
to ignoreKeys so they don't appear duplicated in the side panel. This
mirrors how Issue's ControlPanel.svelte handles its date fields.

Reverts the no-op @prop rank attempt.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
…aces

The fulltext-pod's compiled model version (baked into bundle/model.json via
common/scripts/version.txt at build time) lags whenever the workspaces have
been migrated to a newer patch but the pod was not rebuilt. In that state the
indexer rejects every incoming Tx with a `wrong version` warning, new issues
silently fail to land in Elasticsearch, and search returns empty results for
any document created after the migration.

Bumping `version.txt` aligns the compiled model with the workspaces. All
future builds (front, transactor, workspace, tool, fulltext) will emit
0.7.423, the indexer accepts the Tx stream again, and the deferred backlog
gets consumed automatically — no manual reindex needed.

This commit is the build-side companion to the schema migration in this
same PR. Without it the fulltext-pod cannot consume the migrated workspace's
Tx events.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
@huly-github-staging

Copy link
Copy Markdown

Connected to Huly®: UBERF-16441

@BykhovDenis

Copy link
Copy Markdown
Member

Hello @MichaelUray Thank you for your contribution. We would happy to review your PRs, but we need some time for it

@MichaelUray

Copy link
Copy Markdown
Contributor Author

Update to the original stack overview — two new PRs opened on the side of the original 7-PR series, both companion to this Gantt feature work:

Companion docs PR (covers both this PR1-PR7 series plus the bar-coloring follow-up): huly-docs#70 — now 15 mdx pages + 33 screenshots.

@MichaelUray

Copy link
Copy Markdown
Contributor Author

Stack overview update — PR10 is now also open as Draft: #10873 (Gantt bar coloring + overlays + sub-issue progress + saved-view bar-color snapshot). It is stacked on top of #10872 PR9. Companion docs page bar-coloring.mdx already in huly-docs#70.

@MichaelUray

Copy link
Copy Markdown
Contributor Author

We would happy to review your PRs, but we need some time for it

Sure, there a quite a few lines of code involved.
Any feedback is welcome.

@ArtyomSavchenko

Copy link
Copy Markdown
Member

Hi @MichaelUray
Thank you for the contribution.
Could you please take a look into failed CI jobs?
Looks like failed UI tests are related to the changes:

  5 failed
    [Platform] › tests/tracker/issues.spec.ts:49:7 › Tracker issue tests › Edit an issue ───────────
    [Platform] › tests/tracker/milestone.spec.ts:24:7 › Tracker milestone tests › Create a Milestone 
    [Platform] › tests/tracker/milestone.spec.ts:37:7 › Tracker milestone tests › Edit a Milestone ─
    [Platform] › tests/tracker/milestone.spec.ts:56:7 › Tracker milestone tests › Delete a Milestone 
    [Platform] › tests/tracker/subissues.spec.ts:52:7 › Tracker sub-issues tests › Edit a sub-issue 

Formatting check is failed as well, you can run 'rush format' to format code in the whole repository.

Resolves the failing formatting check requested by @ArtyomSavchenko in
review of hcengineering#10851 after the develop branch merge.

Affects three files in our PR scope:
- models/tracker/src/migration.ts: collapse short multi-line client.update call
- plugins/tracker/src/index.ts: inline DependencyKind union + IssueRelation comment
- plugins/tracker-resources/src/components/milestones/EditMilestone.svelte:
  reformat inline arrow handlers, move QueryIssuesList block ahead of <style>

No logic changes; deterministic prettier output.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
@ArtyomSavchenko

Copy link
Copy Markdown
Member

@MichaelUray Could you also verify failed UI tests?

  5 failed
    [Platform] › tests/tracker/issues.spec.ts:49:7 › Tracker issue tests › Edit an issue ───────────
    [Platform] › tests/tracker/milestone.spec.ts:24:7 › Tracker milestone tests › Create a Milestone 
    [Platform] › tests/tracker/milestone.spec.ts:37:7 › Tracker milestone tests › Edit a Milestone ─
    [Platform] › tests/tracker/milestone.spec.ts:56:7 › Tracker milestone tests › Delete a Milestone 
    [Platform] › tests/tracker/subissues.spec.ts:52:7 › Tracker sub-issues tests › Edit a sub-issue 

I assume some elements cannot be found by locators due to layout change:

 Retry #1 ───────────────────────────────────────────────────────────────────────────────────────

    Error: expect(locator).toHaveText(expected) failed

    Locator: locator('//span[text()="Status"]/following-sibling::div[1]/button')
    Expected: "Canceled"
    Timeout: 15000ms
    Error: element(s) not found

    Call log:
      - Expect "toHaveText" with timeout 15000ms
      - waiting for locator('//span[text()="Status"]/following-sibling::div[1]/button')


       at model/tracker/milestones-details-page.ts:22

      20 |     }
      21 |     if (data.status != null) {
    > 22 |       await expect(this.buttonStatus()).toHaveText(data.status)

…eld addition

The Gantt schema PR added Milestone.startDate, which:

1. Adds a second datetime-button to the NewMilestone form pool. The
   existing 'div.antiCard-pool button.datetime-button' locator matched
   both buttons and tripped Playwright's strict-mode check. Scope the
   target-date locator to .last() and add a sibling .first() helper for
   the start-date button.

2. Moves Status / Start date / Target date editors from the
   auto-generated side panel into EditMilestone's body
   (div.dates-row > div.date-cell > span.cell-label + <button>) in
   chronological order. The label span no longer has a sibling <div>
   wrapping the button — the button is a direct sibling. Switch the
   buttonStatus/buttonTargetDate XPath to following-sibling::button[1]
   and match the new class="cell-label" span. Add a buttonStartDate
   helper for the new editor row.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
ControlPanel.svelte (issue side panel) now renders the Start date and
Due date rows unconditionally — pre-PR the Due date row was conditional
on issue.dueDate !== null and the Start date row didn't exist at all.
Both new rows emit a <div><button> pair via DueDatePresenter, which the
existing (//span[text()='Estimation']/../div/button)[3] XPath counts as
extra matches and pushes the Estimation button from the 3rd to the 5th
direct div/button under the popupPanel-body__aside-grid.

Direct div/button order under the grid (document order):
  1. CreatedBy (EmployeeBox > UserBox div > Button)
  2. Assignee  (AssigneeEditor div > Button)
  3. Start date (NEW — StartDateEditor > DueDatePresenter div > button.datetime-button)
  4. Due date   (NEW — DueDateEditor   > DueDatePresenter div > button.datetime-button)
  5. Estimation (AttributeBarEditor div > Button)

buttonAssignee at [2] is unchanged. textEstimation uses 'following-sibling::div[1]'
(first sibling), which is unaffected by additions earlier in the grid.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
CI's rush fast-format --branch develop step flagged
tests/sanity/tests/model/tracker/milestones-details-page.ts for a
missing blank line between the buttonTargetDate locator (introduced in
86b1c19) and the next field. Apply the local 'rush format' result.

The two other files CI flagged
(plugins/process-resources/src/components/settings/BindingsEditor.svelte
and ImportSlotsPopup.svelte) were actually upstream changes from PR
hcengineering#10921 (Fix add tag) that landed after our last develop merge — the
preceding merge of upstream/develop into this branch resolves those
diffs.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
…elte CSS scoping

The Svelte 4 compiler appends a scoped `svelte-<hash>` class to every
element matched by a component-local CSS selector. EditMilestone.svelte
styles `.cell-label` locally, so each label span ends up as
`<span class="cell-label svelte-XXXXX">` at runtime, not the bare
`<span class="cell-label">` shipped in source. The previous XPath
locator used strict `@class="cell-label"` and never matched.

Switch buttonStatus / buttonStartDate / buttonTargetDate to the standard
`contains(concat(' ', normalize-space(@Class), ' '), ' cell-label ')`
class-match idiom so the locators tolerate the added scoped class.

Verified against the playwright accessibility snapshot from the failed
run (artifact playwright-results, hash 07a8f36b...md): the Status row
renders as a generic with text 'Status' immediately followed by a
button 'In progress' as the next direct sibling, matching the rest of
the XPath.

Fixes 5 milestone.spec.ts failures observed in run 27816114236:
- Create a Milestone (locator timeout on checkIssue → buttonStatus)
- Edit a Milestone   (locator timeout on editIssue  → buttonStatus.click)
- Delete a Milestone (locator timeout on checkIssue → buttonStatus)
plus their two retries each.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
@MichaelUray

Copy link
Copy Markdown
Contributor Author

@ArtyomSavchenko Thanks for the heads-up. Three new commits pushed on top of acfca69211:

  • ea35288c — merge upstream/develop. The two process-resources svelte files prettier flagged were actually code changes from Fix add tag #10921 (Fix add tag) that landed after this branch's last develop merge, not local prettier debt.
  • 70c6be2drush format; only added a single blank line in milestones-details-page.ts.
  • ccd17c51 — fixes the 5 milestone-spec failures. Root cause was my own previous locator: @class="cell-label" is strict equality, but EditMilestone.svelte has a component-local .cell-label style, so Svelte 4 appends a svelte-<hash> to the runtime class. Switched to contains(concat(' ', normalize-space(@class), ' '), ' cell-label '). Verified against the failed-run playwright snapshot — the DOM structure was correct, only the XPath was wrong.

tests/tracker/issues.spec.ts:49 and tests/tracker/subissues.spec.ts:52 from your earlier note both passed already in run 27816114236, so no further locator fixes needed there.

There's also a non-blocking upstream warning in the workspace bootstrap (TypeError: Cannot convert undefined or null to object in checkIndexcreateUpdateIndexes, bundle.js:15200) — the indexes still get created on the recovery path right after, but if you're seeing the same trace on plain develop it might be worth a separate look.

…eam-pr1-schema

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
@MichaelUray

Copy link
Copy Markdown
Contributor Author

@ArtyomSavchenko Thanks for approving the workflow run. The formatting failure came from files that changed on develop after this branch's last merge — the CI format step reformats them on the merge commit, which makes the post-format diff check fail even though this PR doesn't touch those files.

I've merged the current develop into the branch (0c6c5a4e46) and verified locally that the repo format sequence now produces an empty diff. All other jobs (build, svelte-check, test, uitest, uitest-pg, uitest-qms, uitest-workspaces, docker-build) were already green on the previous run.

The branch needs one more workflow approval when you get a chance — it should come back fully green.

MichaelUray added a commit to MichaelUray/huly-platform that referenced this pull request Jul 4, 2026
Der Add-Sub-Issue-Button oeffnet seit bc2414a (unified hierarchy add
chooser) nicht mehr direkt das CreateIssue-Formular, sondern zuerst den
HierarchyAddPopup mit den Optionen 'Create new sub-issue' /
'Link existing as sub-issue'. Die Playwright-page-objects clicken den
Zwischenschritt jetzt mit, bevor das Formular gefuellt wird:

 - IssuesPage.clickOnSubIssues        (subissues.spec 'create sub-issue')
 - IssuesDetailsPage.clickButtonAddSubIssue
   (subissues.spec 'Edit a sub-issue' / 'Delete a sub-issue')

Keine Assertion abgeschwaecht, kein Timeout erhoeht — nur der neue
UI-Pfad wird durchlaufen (analog zur milestone-page-object-Anpassung in

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
hcengineering#10851).
@ArtyomSavchenko

ArtyomSavchenko commented Jul 6, 2026

Copy link
Copy Markdown
Member

Hi @MichaelUray
Thanks for your contributions to the project! We'd like to invite you to join our new GitHub organization: https://github.com/Platform-Collective
We’re building a more open community around the product’s development there, and it will also be the home for new releases going forward. As a member, you'll be able to:

  • Take part in discussions about plans and the roadmap
  • Open PRs that trigger CI automatically, without waiting for a maintainer's approval
  • Stay close to where new releases are published

We'd be glad to have you on board. Just let us know and we'll send the invite

…eam-pr1-schema

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
@MichaelUray

Copy link
Copy Markdown
Contributor Author

Hi @MichaelUray Thanks for your contributions to the project! We'd like to invite you to join our new GitHub organization: https://github.com/Platform-Collective
We'd be glad to have you on board. Just let us know and we'll send the invite

Hi @ArtyomSavchenko, thank you - I would be glad to join.

@ArtyomSavchenko ArtyomSavchenko merged commit abe0cb9 into hcengineering:develop Jul 9, 2026
13 checks passed
@ArtyomSavchenko

ArtyomSavchenko commented Jul 9, 2026

Copy link
Copy Markdown
Member

Hi @MichaelUray
Thanks for your contribution.
Is this the next PR in line #10853 ?

MichaelUray added a commit to MichaelUray/huly-platform that referenced this pull request Jul 9, 2026
Der Add-Sub-Issue-Button oeffnet seit bc2414a (unified hierarchy add
chooser) nicht mehr direkt das CreateIssue-Formular, sondern zuerst den
HierarchyAddPopup mit den Optionen 'Create new sub-issue' /
'Link existing as sub-issue'. Die Playwright-page-objects clicken den
Zwischenschritt jetzt mit, bevor das Formular gefuellt wird:

 - IssuesPage.clickOnSubIssues        (subissues.spec 'create sub-issue')
 - IssuesDetailsPage.clickButtonAddSubIssue
   (subissues.spec 'Edit a sub-issue' / 'Delete a sub-issue')

Keine Assertion abgeschwaecht, kein Timeout erhoeht — nur der neue
UI-Pfad wird durchlaufen (analog zur milestone-page-object-Anpassung in

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
hcengineering#10851).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants