Skip to content

Windshift v0.8.6

Choose a tag to compare

@stefan-ernst stefan-ernst released this 21 Aug 13:18
· 23 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.8.6
c50c37f

Windshift 0.8.6

Windshift 0.8.6 is a reliability release focused on consistent date and time
handling, dependable CQL-backed reporting, and safer item creation and listing.

Correct dates, trustworthy analytics, and more resilient work-item operations

Upgrade and compatibility

  • Installations older than 0.8.5 must upgrade to 0.8.5 or 0.8.5-2 before
    moving to 0.8.6.
    Back up the database, upgrade to one of those releases,
    and allow Windshift to start successfully and record the 0.8.5 schema
    checkpoint before installing 0.8.6.
  • Installations already running 0.8.5 or 0.8.5-2 can upgrade directly. This
    release removes the legacy migration path and requires the recorded 0.8.5
    checkpoint; direct upgrades from 0.8.4 or earlier are not supported.

Dates, time, and recurring work

  • Windshift now applies one temporal contract across authenticated views,
    public portal views, worklogs, recurring work, and scheduling. Instants use
    the authenticated user's validated timezone, date-only values retain their
    calendar date, and public surfaces use an explicit UTC default. Invalid
    legacy timezone values safely fall back to UTC. (WI-999, WI-1006, WI-1007,
    WI-1008, WI-1012)
  • REST v1 and MCP worklogs now use the acting user's timezone when none is
    supplied. Worklog editing and timesheet grouping preserve the selected date,
    and duration-only worklogs have the same start-time semantics across cookie,
    REST, and MCP APIs. (WI-1004, WI-1005, WI-1013)
  • Recurring work validates requested IANA timezones and no longer accepts the
    server-local Local zone. Stored schedule timezones retain a safe fallback
    for older data. (WI-1011)
  • Date filters cover complete civil days, including the final fractional
    second returned by CQL endofday(). Additional date displays, worklog
    ranges, scheduler boundaries, and server-clock comparisons now use the same
    shared rules. (WI-1014, WI-1032)

CQL, analytics, and reporting

  • Workspace statistics, milestone progress, and analytics now support CQL and
    saved-collection filters that reference joined fields such as status,
    priority, item type, iteration, project, completion state, workspace, and
    user names. These filters return the correct dataset instead of zeroed
    statistics or an HTTP 500 response. (WI-1026, WI-1027)
  • Workspace statistics now fail explicitly with INTERNAL_ERROR when a core
    aggregation cannot be computed, instead of returning a successful but
    misleading empty or partial result. (WI-1031)
  • CQL item-type names are case-insensitive for equality, inequality, and IN
    filters. The type alias is retained and follows the same behavior as
    itemtypename, including bare and quoted names; numeric item-type IDs remain
    numeric comparisons. (WI-1028, WI-1030)
  • Concurrent asset CQL evaluation no longer mutates shared SQL-generator
    state. (WI-1033)

Work-item reliability and performance

  • Item creation now retries fractional-rank, workspace item-number, and
    PostgreSQL serialization conflicts at the transaction boundary. Standard
    creation, copying, recurrence generation, SCM sync, and template cloning use
    the same collision-safe behavior. (WI-955)
  • Creating an item with an inactive or unknown assignee is rejected
    consistently across the application API, REST v1, and MCP before anything is
    persisted. (WI-1029)
  • Default-ranked item lists can use the workspace rank index efficiently on
    SQLite, avoiding a scan whose cost grew with the total number of items on the
    instance. (WI-954)
  • Item-list totals are invalidated only after committed count-changing
    operations and are scoped to the affected workspaces. Concurrent readers no
    longer inherit another request's cancellation, and workspace moves update
    source and destination totals immediately. (WI-946, WI-956)

APIs and integrations

  • Partial collection updates preserve an omitted description. Public
    collection updates also validate slug requirements consistently and report
    duplicate slugs as conflicts. (WI-1009, WI-1014)
  • GitHub status synchronization continues after the initiating HTTP request
    completes, so updates made through item edit and item-type change paths reach
    GitHub reliably. (WI-1010)
  • Jira readiness and analysis queries now escape project keys, shutdown
    requests cannot block on an already-full channel, and remaining low-severity
    temporal and scheduling issues identified during the release review have
    been corrected. (WI-1014)