Skip to content

v0.6.0

Choose a tag to compare

@xescugc xescugc released this 22 Jun 21:15
· 7 commits to master since this release

Changed

  • Frontend migrated from BackboneJS to Preact + HTM. Replaces Backbone, jQuery, and Underscore (~100KB) with Preact, HTM, preact-router, and @preact/signals (~24KB). No build step, no bundler, same no-npm philosophy. Virtual DOM eliminates flickering from full re-renders. All existing features preserved with 70+ Selenium tests passing.
  • CI pipeline restructured: consolidated Go lint/test-mock/test-http into single go job, added new js job (node:20-slim) for JS linting and unit tests
  • Polling now pauses when the browser tab is hidden (Visibility API via usePolling hook), reducing wasted network requests by ~50%

Added

  • JavaScript unit tests: 102 tests covering utilities, state management, API layer, hooks, toast system, and component snapshots using Node.js built-in test runner (node --test)
  • JavaScript linting with oxlint (833 rules, single binary, no npm required)
  • make test-js and make lint-js Makefile targets
  • New Selenium tests for build log steps, resource pin/unpin, webhook panel, editor features (vars tab, blocks panel, fullscreen, error diagnostics, graph-node-to-block jump), users CRUD, workers page, pipeline pause/unpause, dark mode persistence, navigation edge cases, and public resource versions access control
  • HTTP API integration tests covering all endpoints with real in-memory DB, reorganized integration/ directory (integration/selenium/, integration/http/), and new Selenium tests for view switcher, gear/share/resources panels, and version scope banner (#545)
  • Version tracking: Track a specific resource version through the pipeline to see which jobs it passed through and their build status. Available from the resource versions page (Track button), the Resources panel (expandable version list with Track/Trigger/Pin), and a new version dropdown in the list view. When tracking, both graph and list views scope to only the version's path, a banner shows progress, and the URL is shareable via ?version=ID (#432)
  • New GetResourceVersionPath API endpoint (GET /teams/{tc}/pipelines/{pc}/resources/{rCan}/versions/{vID}/path) returns the ordered chain of jobs a version passes through, with build status for each job including retries. Follows version propagation through intermediate put/get resources (#432)
  • Pipeline graph image endpoint now accepts a version_id query parameter to filter the graph to only the tracked version's path with version-specific build colors (#432)
  • Resource version rows now show a colored status dot indicating the aggregate build status of all jobs that consumed that version (#534)
  • Pipeline show page now has a "Resources" button that opens a slide-out panel listing all pipeline resources with name, type, latest version, build status, last check time, and a "Check Now" button (#536)
  • Resource nodes in the pipeline graph view now show a native browser tooltip on hover with the latest version's key-value pairs and aggregate build status (#537)
  • Pipeline show page now has a List view with a [Graph] [Pipeline] [List] view switcher toolbar. The list view shows an execution chain scoped to a selected trigger resource, with jobs displayed in a tree layout reflecting the pipeline DAG. Parallel siblings are grouped under collapsible headers. Clicking a job shows its builds in the right panel (reusing the existing job builds view). A resource selector bar at the top lets you switch between trigger resources and trigger resource checks. View preference, selected resource/job, and collapsed groups persist across reloads (#538)
  • New ListPipelineJobs API endpoint (GET /teams/{tc}/pipelines/{pc}/jobs) returns all pipeline jobs enriched with latest build status, running state, build number, duration, and start time. Supports public pipeline fallback (#538)
  • Pipeline graph view now has a gear icon (⚙) with a "Hide intermediate resources" toggle that removes resource nodes between jobs and draws direct job-to-job edges, keeping only entry-point trigger resources (#548, #539, #431)
  • Gear panel now has a "Group parallel jobs" toggle that collapses jobs sharing identical upstream parents into a single compact node with a colored status dot per job and individually clickable rows (#540)
  • Pipeline graph view now has a share button that opens a panel with copyable SVG, PNG, and Markdown image URLs reflecting the current gear options. List view linear job chains no longer render nested — only parallel groups and fan-in structures create visual nesting (#517)

Fixed

  • "Group parallel jobs" now correctly groups root jobs (jobs with no passed constraints) that share the same trigger resource, such as parallel CI jobs triggered by the same git resource (#432)
  • List view: resource selector bar now polls for updates on the same interval as job data, keeping the status dot, latest version, and "checked X ago" timestamp fresh without manual refresh. Updates are applied in-place when the dropdown is open so it stays open (#558)
  • List view: fan-in jobs (jobs with multiple upstream parents in a parallel group) now render with a left-side bar grouping their parents and the fan-in job indented after the bar, clearly showing the dependency relationship (#551)
  • Resource versions page: status dots now update in real-time as builds progress, and new versions from "Trigger Resource" appear at the top in correct order with the "latest" badge (#560)
  • Pipeline toolbar: Resources button and gear icon are now right-aligned, and icon-to-text spacing in toolbar buttons is consistent (#563)
  • Retrying a build now reuses the resource versions from the original build instead of fetching the latest version (#552)
  • in_parallel sub-step durations now display as formatted time (HH:MM:SS) instead of raw nanoseconds (#526)
  • Webhook triggers now work correctly after the tags column was added to resources. FindByWebhookToken was missing the tags Scan destination, causing all webhook calls to return 400 (#544)
  • Version tracking banner now adapts to light/dark mode using CSS variables instead of hardcoded dark blue background
  • Resources panel close button now renders correctly (Bootstrap Icon instead of raw HTML entity)
  • Resources panel version list is now visible to public pipeline viewers (read-only, no trigger/pin buttons)
  • Resource panel version text is no longer invisible in light mode (white-on-white)