Windshift 0.8.8
Windshift 0.8.8 makes API v2 the primary public interface for integrations,
adds a supported backup and restore workflow for Docker deployments, ships
French and Russian, and hides completed work by default so your views focus
on what is still open. Notification and email delivery were rebuilt to
survive restarts, and a release-long hardening pass fixes dozens of smaller
rough edges across boards, imports, mobile, and the terminal UI.
Upgrading
- If you are running 0.8.5 or newer, you can upgrade directly. This release
requires the schema checkpoint that 0.8.5 records the first time it
starts, so installations on 0.8.4 or older must first upgrade to 0.8.5 or
0.8.5-2, let it start once, and then move to 0.8.8. As always, back up
your database before upgrading. - Building Windshift from source requires Go 1.27.0, unchanged from 0.8.7.
API v2 is now the primary public API
API v2 has been growing under the hood for several releases; in 0.8.8 it
graduates. Windshift's own frontend now runs on v2, and GitHub issue
synchronization goes through the same item services the app itself uses,
so the API your integrations use is the same one the product uses every
day. Items can be fetched directly by their key (such as
WI-123), editing endpoints accept merge-patch requests, pagination
behaves consistently across endpoints, and the generated reference now also
documents the operational endpoints.
The in-product API reference opens on v2 and groups operations by domain.
API v1 remains available for existing integrations, but the reference now
marks it deprecated.
The command line meets v2 halfway: a new ws api command sends
authenticated requests straight to API v2 for anything the CLI does not
cover yet, and ws task ls gained pagination (--page, --limit, --all)
plus status filters that accept workspace status names such as
-s "In Progress"
(@Optic00). The Windshift
TRMNL plugins now talk to API v2 as well.
Back up and restore Docker deployments
Docker Compose deployments get a documented backup and restore workflow,
contributed by @Optic00.
A single script creates timestamped backups of the entire data directory
and, for the supported PostgreSQL setup, a logical database dump, with
checksums and a manifest. Restores run preflight checks and take a rollback
snapshot before touching your data. See deploy/backup-restore.md for the
supported configurations and the exact commands.
French, Russian, and localizable object names
Windshift speaks two more languages: French
(@Sinago87) and Russian
(@oshuej198). The
dashboard (@Optic00) and
the Pomodoro timer settings
(@Optic00) are translated
as well.
Administrators can additionally give built-in objects translated names per
language: statuses, item types, link types, and similar names accept
localized values while the canonical names remain as fallback.
Views that focus on open work
Completed work items are now hidden by default in list, tree, map, roadmap,
and backlog views. A toggle brings them back, and each view remembers your
choice per workspace or collection. Boards are unchanged and keep using
their own configuration for completed columns.
The tree view also keeps every hierarchy whole: when the completed toggle or
a page boundary would otherwise show items detached from their parents, the
missing ancestor chains are loaded so children always render nested under
their root instead of as stray top-level rows.
Every page now carries persistent workspace breadcrumbs: a workspace
picker, a link back to the current workspace, and a highlight of where you
are in the navigation. The main and workspace sidebars scroll, collapse,
resize, and restore avatars more steadily
(@oshuej198 among several
fixes).
Boards got their own pass: the board auto-scrolls while you drag a card,
default column ordering is fixed, background refreshes no longer drop rows
you had loaded with "load more", and switching from a board to another view
no longer leaks the board's completed-status filter into that view.
The test management screens were reorganized end to end, with correct
test-case and step counts and clearer create controls.
A long list of smaller annoyances is also fixed: Markdown list markers
render again (@codekoala)
and the empty-list caret stays aligned
(@codekoala); workspace
creation is reachable from the quick-access menu
(@Optic00); milestone
pickers cancel their requests when you navigate away; collection views
discard responses that arrive after you have moved on; asset configuration
forms can no longer submit overlapping saves or apply responses from a set
you just switched away from; asset queries offer autocomplete; burndown
charts can use story points; category forms, customer management headers,
license page scrolling, the custom-field type picker, and action editor
layouts are restored; new AI chats start with a fresh context instead of
inheriting the previous conversation; date pickers stay open while you edit;
and items without a due date are no longer worded as if they were overdue.
When an item is deleted, everyone viewing it is now notified and the view
navigates away cleanly instead of silently going stale
(@Optic00).
Notification and email delivery, rebuilt
Notifications and their emails are now processed from durable queues:
deliveries survive restarts, older messages no longer starve behind a
stream of newer ones, and a crash mid-delivery can no longer lose a
message. Notification emails render their subjects and plain text without
HTML-escaping artifacts, threaded email replies reliably attach to the
right comment, deactivated users stop receiving notifications and emails
entirely, and the in-app inbox no longer stops at the first page of
results.
For self-hosters, outgoing email channels can now use an unencrypted SMTP
relay for trusted internal relays that offer neither TLS nor
authentication. The option is clearly marked as plaintext in the channel
settings.
Signing in with SSO
SSO providers can now pass through their own email_verified attribute for
OIDC and SAML
(@danielraab). The
accompanying trust setting was reworked into a clearer contract: trusting
provider-managed email addresses skips Windshift's own verification email
when your provider does not report verification status, while addresses a
provider explicitly reports as unverified must still verify. Risky
combinations, such as self-registration with untrusted email, now carry an
explicit warning, and provider configuration errors appear inside the
provider dialog instead of failing silently.
Jira import
Imports that hit problems now finish with a distinct "completed with
errors" outcome that reports how many projects, issue links, and test cases
failed, instead of a deceptively successful summary. Jira custom-field
values that cannot be mapped are preserved raw on the imported item rather
than dropped, story points map correctly, and Xray tests are counted
accurately. Deleting an import is thorough and safe: it removes everything
the import created, including statuses, item types, screens, custom fields,
and attachments, while sparing shared objects that other work still
references, and a partially failed cleanup can simply be retried.
Mobile and the terminal
The mobile PWA installs with richer metadata, recovers to cached content
when the server is unreachable, no longer hangs indefinitely on slow
networks, applies updates more cleanly, and keeps the create dialog above
the navigation bar.
The SSH terminal UI handles disconnects, cancellation, and terminal
lifecycle transitions more reliably, and your theme choice is no longer
overwritten by the server's saved preferences.
Security and privacy
- Revoking access now takes effect everywhere it should. Workspace-derived
content is reauthorized before reuse, item reads enforce collection
visibility, live item streams are rechecked after items move to another
workspace, project worklog listings redact details of items you can no
longer see, and comment editing and deletion enforce current workspace
access. - v2 asset responses no longer expose the creator's email address
(@Optic00). - Dependency updates close known advisories in
golang.org/x/crypto, gRPC,
and the demo application.
Diagnostics and reliability
The diagnostics page gains two new sections for administrators: SCM
connection health, with persisted failure history for scheduled repository
syncs and pull-request refreshes, and domain event consumer health, so
stuck or failing background consumers are visible at a glance. Behind them,
domain events, action executions, and their consumers are recorded
durably, so background work survives restarts without duplicate delivery.
Authorization cache invalidation is fixed, so membership and permission
changes take effect promptly. The server shuts down cleanly without
lingering cache workers
(@Optic00). Worklog
handling is more dependable: times and reports derive from an explicit
timezone, an item's time tab no longer truncates totals at fifty entries,
and editing only a worklog's description no longer disturbs its
timestamps.
Thank you
Thank you to Ben (@Optic00), Nikita
(@oshuej198), Josh
(@codekoala), Daniel
(@danielraab), and
@Sinago87 for contributing to this release,
and to everyone who took the time to report issues.