Cristian Calina
90d · built 2026-09-08
Performance
What Cristian Calina shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
−0.5engineers
delivers like 0.5 (0.5x pre-AI)
Output (ETV)
3.0ETV
−68.4% vs 9.4 prior
Features share
29.4%
+0.6 pp vs prior window
Fixes share
5.7%
−10.1 pp vs prior window
Work mix
29.4% Features33.8% Maintenance16.2% Tests14.9% Docs5.7% Fixes
45 commits over 90 days, ending 2026-09-08.
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 0.3ETVci(ci): extract inline workflow scripts into .github/scripts Move ~500 lines of YAML-embedded JavaScript into 11 standalone .mjs modules so workflow steps are 2-3 line stubs and the logic is readable, reviewable, and testable: - lib/pr-comments.mjs: the marker-comment find/upsert/remove pattern, written once and shared by every workflow that owns a PR comment (preview deploys, visual diff, dependency license review, support branch scope) - preview-deploy/: init/update preview table, visual diff comment, derive-app-url (was a heredoc duplicated in two steps), summary counts - pr-size-labels.mjs: label set + sizing logic in one place; the prepare-config job existed only to ship that config between jobs as a JSON output and is gone - also extracted: find-size-baseline (pr-checks), registry matrix batches (apollo-vertex-registry-check) Comment lookups in dependency-review and support-branch-scope now paginate and filter by bot author like the rest (previously any user pasting the marker could hijack the comment slot), and dependency-review no longer interpolates runner.temp inside the script. Jobs that ran pure github-script gained a sparse .github/scripts checkout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>github.com-UiPath-apollo-ui · e046c44c · 2026-08-01
- 0.3ETVrefactor(apollo-react): rebuild NodePropertyTrigger on apollo-wind DropdownMenu Replaces the hand-rolled popover (portal, fixed positioning, outside-click/ Escape/scroll/resize listeners) with the same Radix-based DropdownMenu the canvas package already composes (CanvasDropdownMenu, NodeContextMenu), gaining arrow-key navigation, typeahead, and focus management. modal={false} for the React Flow foreignObject reason documented in CanvasDropdownMenu. Consumer extensibility: - `children` fully replace the built-in sections (the i18n/extension path). Exported design-matched subcomponents: NodePropertyTriggerCheckboxItem (keeps menu open by default, closeOnSelect opt-out), NodePropertyTriggerRadioItem, NodePropertyTriggerSectionLabel, NodePropertyTriggerSeparator — composable with any wind primitive. - Data props survive as the prefab (rendered when no children), built on the same subcomponents. - NodePropertyTriggerItem gains a stable `id`; onPanelToggle receives `id ?? label` so localized labels are never the toggle identity. - `showMenu={false}` renders a label-only pill for secondary triggers. - Controlled `open`/`onOpenChange`. - Empty sections collapse (heading + separator included); the presets empty-state stays while canSavePreset is true. Absorbs the NodePropertyTrigger refinements from PR #760 (uncontrolled defaults from options[0], delete-preset keeps the menu open); the scroll and role fixes there are obsolete under Radix. Preset delete buttons stop pointerdown/pointerup propagation so Radix's pointerup-select doesn't apply the preset and close the menu. Tests rewritten: 24 passing. Stories: the 200-line inline popover fake is replaced by the controlled `open` prop; adds Composed and LabelOnlyPill. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>github.com-UiPath-apollo-ui · d356d5f9 · 2026-06-11
- 0.3ETVfeat(apollo-ui-icons): ship the Apollo icon set as its own package [PLT-109649] Moves the icon set and its four build scripts out of apollo-core into @uipath/apollo-ui-icons. All 1322 SVGs are byte-identical moves; the only content edits are the script path constants and the usage comment in the generated index. This unblocks building apollo-core bundleless. Bundle mode there emitted a shared `rslib-runtime.js` whose `export { __webpack_require__ }` made consumers' production builds panic in rspack, and bundleless was impossible while the icons lived in the package: rslib skips the asset pipeline in that mode, which left every `icons/index.js` import unresolvable and `dist/static/svg/` empty. The name @uipath/apollo-icons was unavailable — apollo-design-system publishes it at 1.33.7 as a fantasticon webfont with 14 live consumers, so reusing it would mean two repos publishing one name and an entry point that changed kind. Hence apollo-ui-icons, after the repo it lives in. Two entries, each compiled separately by rslib: the root re-exports every icon, and ./types carries IconName and iconNames so consumers that only need the names never pull the SVG graph in. Registered in the release pipeline (tar, SBOM, provenance attestation), the publish monitor, the PR labeler, and the commitlint scope list. Lint stays scoped to src, matching what apollo-core linted before the move, so the pre-existing violations in the scripts are not in scope here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>github.com-UiPath-apollo-ui · 06812635 · 2026-08-20
- 0.2ETVfeat(apollo-react): add NodePropertyPanel canvas component Presentational docked properties panel: optional title bar, node identity row (icon/label/category + action slot), and a single MetadataForm rendered with stepVariant="tabs". The caller supplies schema + plugins, so real-time change handling and custom fields stay consumer-side; no Submit by default (live-edit surface). Tab and content padding plus the underline full-bleed derive from one contentInset prop. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>github.com-UiPath-apollo-ui · 80ddaa9b · 2026-06-18
- 0.2ETVdocs(repo): place apollo-ui-icons in the dependency graphs and guides [PLT-109649] Adds the package to the README mermaid graph, the apollo-docs dependency graph and installation tabs, the Storybook introduction, and the repository structure trees. apollo-core's own docs now describe tokens and fonts, with its two icon paths marked deprecated. The graphs show apollo-react depending on the icon package directly and apollo-core only re-exporting it, so the deprecation is visible where people look first. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>github.com-UiPath-apollo-ui · 10c52cad · 2026-08-20
- 0.2ETVfeat(apollo-wind): scrollable tabs, per-tab error badges, plain sections in MetadataForm Adapts the tabbed MetadataForm (properties-panel form) for narrow panels, surfaces validation state on the tab strip, and adds a borderless section treatment for hosts that frame the panel themselves. apollo-wind (metadata-form): - Scrollable tab strip: TabbedStepForm uses ScrollableTabsList, revealing prev/next chevrons and auto-scrolling the active tab into view when tabs overflow a narrow panel. A wide panel reads identically to a plain strip. - Per-tab error badges: each tab shows a live count of its errored fields (via useFormState), including fields on inactive tabs. Composite fields whose error is an array contribute one per issue. Conditionally-hidden sections AND individually-hidden fields are skipped so a badge never points at something the user cannot reach. The badge is exposed to assistive tech as "N issue(s)". - sectionVariant 'card' | 'plain': 'plain' drops the border, rounding, and horizontal padding so sections read as flush semibold headers over their content, separated by a full-width hairline divider between consecutive sections, for hosts (e.g. the canvas properties panel) that already frame the form. Applies to collapsible, non-collapsible, and titleless sections. - Adds a SectionVariants story with a live card/plain toggle, covering titled collapsible sections and sole untitled sections (the consumer's two shapes). apollo-react: - NodePropertyPanel forwards a sectionVariant prop through to MetadataForm. Tests: pnpm --filter @uipath/apollo-wind test, 987 pass (incl. inactive-tab badge and composite-array issue count). biome and tsc clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>github.com-UiPath-apollo-ui · d7a36ac8 · 2026-07-23
- 0.2ETVfeat(apollo-wind): add MetadataForm stepVariant="tabs" Render a multi-step FormSchema as a tab bar over a single form instance (values and validation shared across tabs), alongside the existing wizard presentation. Hides empty/conditioned-out steps, clamps the active tab to a still-visible step, and supports an optional full-bleed underline via the --mf-content-inset CSS var (default 0). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>github.com-UiPath-apollo-ui · 76635820 · 2026-06-18
- 0.1ETVci(workspace): sticky PR comment for per-package coverage Adds an auto-updating "Coverage by package" PR comment (scripts/coverage-pr-comment.cjs): per-package overall % (from coverage-summary.json) and new-line coverage (lcov intersected with the PR diff), scanning packages/* and web-packages/*. Posted by a PR-only, fork-guarded job that downloads the per-package coverage artifact. Adds json-summary + lcov coverage reporters to the four vitest configs so the comment has data; pr-checks.yml uploads per-package coverage as an artifact. Security: deny-all workflow-level permissions with per-job grants; the comment job runs no third-party install (only Node builtins) under contents:read + issues:write; the sticky comment only matches the bot's own author; no ${{ }} interpolation in run: scripts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>github.com-UiPath-apollo-ui · a5d5161c · 2026-06-16
- 0.1ETVfeat(apollo-wind): always-shown tabs with empty-state + controlled active tab - FormStep.emptyState: a tabbed step with no visible sections stays in the tab bar and renders the message instead of being hidden (e.g. an always-present Parameters tab reading "No available parameters"). - MetadataForm/TabbedStepForm: controlled activeStepId + onActiveStepChange so a host can persist the selected tab across remounts (keep the same tab when switching nodes); clamps to the first tab when the id isn't present. - NodePropertyPanel threads both props through to MetadataForm. - Plain-section divider: bump vertical spacing 12px -> 16px. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>github.com-UiPath-apollo-ui · a7bfe147 · 2026-07-23
- 0.1ETVchore(storybook): update IA + docs backgroundgithub.com-UiPath-apollo-ui · c3fcf17e · 2026-06-11