Sync with upstream#34
Merged
Merged
Conversation
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
…s components (#10957) Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
…itor to prevent rendering issues (#10958) Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
* Allow to export documents without children Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix tests Signed-off-by: Artem Savchenko <armisav@gmail.com> --------- Signed-off-by: Artem Savchenko <armisav@gmail.com>
* feat: Add ability to schedule notifications Signed-off-by: Artem Savchenko <armisav@gmail.com> * Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * Add docker file Signed-off-by: Artem Savchenko <armisav@gmail.com> * Rename pod Signed-off-by: Artem Savchenko <armisav@gmail.com> * Add debug logging Signed-off-by: Artem Savchenko <armisav@gmail.com> * Reminder fixes Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix reminders Signed-off-by: Artem Savchenko <armisav@gmail.com> * Support reminders for all events Signed-off-by: Artem Savchenko <armisav@gmail.com> * Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * Support for project todo Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix mismatched dependency Signed-off-by: Artem Savchenko <armisav@gmail.com> * Use base event class Signed-off-by: Artem Savchenko <armisav@gmail.com> --------- Signed-off-by: Artem Savchenko <armisav@gmail.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
…version bump (#10851) * feat(tracker): add Gantt scheduling schema (startDate + IssueRelation) 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> * test(model-tracker): add migrateAddStartDate jest tests 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> * feat(model-tracker): add migrateAddStartDate + wire into trackerOperation 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> * feat(tracker): expose Issue.startDate / Milestone.startDate in UI; tighten 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> * fix(tracker): set explicit @prop ranks for Milestone date fields 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> * fix(tracker-resources): EditMilestone renders Status/Start/Target in 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> * fix(fulltext): bump model version to 0.7.423 to match deployed workspaces 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> * chore: apply rush format after develop merge Resolves the failing formatting check requested by @ArtyomSavchenko in review of #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> * test(tracker): fix milestone page-object selectors after startDate field 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> * test(tracker): shift buttonEstimation index after startDate row addition 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> * chore: apply rush format (prettier compliance for CI) 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 86b1c19ee8) 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 #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> * fix(tests/tracker): use contains() for cell-label class to survive Svelte 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> --------- Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com> Co-authored-by: Michael Uray <michaeluray@users.noreply.github.com> Co-authored-by: Artyom Savchenko <armisav@gmail.com>
Sync with upstream
Update transitive dependencies flagged with critical severity CVEs to their patched versions across the Rush pnpm lockfiles and the stream Go module. npm (pnpm lockfiles): - handlebars 4.7.8 -> 4.7.9 — JavaScript Injection via AST Type Confusion (GHSA-2w6w-674q-4c4q, GHSA-3mfm-83xf-c92r, GHSA-xhpv-hc6g-r9c6) - protobufjs 7.5.4 -> 7.5.5 — Arbitrary code execution (GHSA-xq3m-2v4x-88gg) - shell-quote 1.8.3 -> 1.8.4 — command injection via unescaped newlines in object .op values (GHSA-w7jw-789q-3m8p) - fast-xml-parser 4.5.3 -> 4.5.4 and 5.2.5 -> 5.3.5 — entity encoding bypass via regex injection in DOCTYPE entity names (GHSA-m7jm-9gc2-mpf2); pulls strnum 2.1.1 -> 2.1.2 to satisfy the new range - basic-ftp 5.0.5 -> 5.2.0 — path traversal in downloadToDir (GHSA-5rq4-664w-9x2c) Go (foundations/stream): - google.golang.org/grpc 1.75.0 -> 1.79.3 — authorization bypass via missing leading slash in :path (GHSA-p77j-4mvh-x3m3) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CA7TL9tYGMdVVsgqVups1A
Cherry-picked (partial) from intabia-fusion/platform@87f1a2674 Original-Author: Andrey Sobolev <haiodo@users.noreply.github.com> Signed-off-by: Artem Savchenko <armisav@gmail.com>
Signed-off-by: Artem Savchenko <armisav@gmail.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
* Fix export Signed-off-by: Artyom Savchenko <armisav@gmail.com> * Fix copyright error Signed-off-by: Artyom Savchenko <armisav@gmail.com> * Potential fix for pull request finding 'CodeQL / Uncontrolled data used in path expression' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Artyom Savchenko <armisav@gmail.com> * Format fixes Signed-off-by: Artyom Savchenko <armisav@gmail.com> * Sanitize names Signed-off-by: Artyom Savchenko <armisav@gmail.com> * Fix file format Signed-off-by: Artyom Savchenko <armisav@gmail.com> * Update copyright year Signed-off-by: Artyom Savchenko <armisav@gmail.com> --------- Signed-off-by: Artyom Savchenko <armisav@gmail.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Port controlled document changes
…ency-vulns-g42qmn fix(security): bump dependencies with critical advisories
…nto sync-upstream
Sync with upstream
Signed-off-by: Artem Savchenko <armisav@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.