Planekeeper is currently in alpha development. Features and APIs may change. Feedback is welcome! Request early access to get started.

Changelog

Release notes and recent changes to Planekeeper.

All notable user-facing changes to Planekeeper. For the full roadmap, see Roadmap.


0.3.0-alpha

New Features

  • Dark mode: Toggle between Light, Dark, and System themes using the icon in the top navigation bar. Your preference is saved and persists across sessions. When set to System, the UI follows your operating system’s appearance setting.

  • Bulk actions: Select multiple items on list pages to perform bulk operations. Gather jobs, scrape jobs, notification channels, and notification rules support bulk delete. Alerts support bulk resolve. Use the checkbox in the table header to select all visible items.

  • Keyboard shortcuts: Press ? on any page to see available shortcuts. Use g d to jump to the Dashboard, g j for Gather Jobs, / to focus the search box, and more.

  • Slide-over detail panels: Click any job or alert row to see a quick detail panel that slides in from the right, without navigating away from the list page.

  • Auto-refresh: Dashboard and job pages now include a live countdown timer that automatically refreshes data. Pause, resume, or change the refresh interval from the dropdown.

  • Loading indicators: All form submit buttons and action buttons now show a spinner while processing, preventing accidental double-clicks.

Improvements

  • Styled confirmation dialogs: All destructive actions (delete, deactivate, resolve) now show a themed confirmation modal instead of the browser’s generic alert dialog.

  • Toast notifications: Success and error messages now appear as dismissible toast notifications in the bottom-right corner instead of inline banners.

  • Improved error messages: API errors from form submissions now surface detailed messages to help you understand what went wrong.

  • Better empty states: Pages with no data show helpful empty state messages instead of blank tables.

Bug Fixes

  • Fixed bulk delete showing “invalid id” error due to a route matching issue.
  • Fixed “Evaluate All” button on the Rules page showing “Invalid rule ID” instead of triggering evaluation.
  • Fixed inability to trigger global jobs from the admin interface.
  • Fixed the experimental releases-v2 page (now removed — the main releases page includes the grouped view).

Security

  • All confirmation dialogs now use a styled modal instead of the browser’s native confirm() dialog, which is more resistant to UI spoofing.

0.2.0-alpha

New Features

  • Maintenance mode and outage detection: Planekeeper now shows a maintenance page during planned downtime and automatically detects API outages. Advance warning banners can be scheduled ahead of time and appear as dismissible modals on all pages. Maintenance mode can be toggled at runtime without restarting services.

  • Global pool contributions: You can now suggest your organization’s gather jobs and helm sync jobs for inclusion in the global pool. Use the “Suggest for Global Pool” checkbox when creating or editing a job. An admin reviews and approves or rejects contributions.

  • Incremental GitHub sync: GitHub gather jobs now track sync progress and only fetch new releases after the first full sync, significantly reducing API calls and improving performance for repositories with many releases.

  • Alerts page redesign: The alerts page now includes a Status filter to switch between active and resolved alerts, inline Resolve buttons, and an improved alert detail page with a unified activity timeline showing all state changes and notification deliveries.

  • Multi-role member management: The Members page now supports assigning multiple roles to each member using checkboxes instead of a single-select dropdown. Users can hold multiple roles simultaneously, and the effective permissions are the union of all assigned roles.

  • EOL product management: End-of-life product tracking is now managed through a curated approval system. New products default to pending status and must be approved before they generate gather jobs, reducing noise from irrelevant upstream data.

  • Permissions reference documentation: New permissions reference guide documenting all available resources, actions, system roles, policy document JSON format, and custom role patterns.

Improvements

  • Correct summary counts: Dashboard, Gather Jobs, and Scrape Jobs summary cards now show accurate totals from dedicated count queries instead of being capped at the page size.

  • Release metadata display: Release detail views now render metadata with appropriate formatting – URLs are clickable links, booleans show Yes/No badges, dates use your local timezone, and container digests display in monospace.

  • Permission enforcement on create forms: Users without create permission can no longer see create forms by navigating directly to form URLs. The forms are hidden server-side based on your actual permissions.

  • Improved keyboard accessibility: Permission-gated UI elements now use the inert HTML attribute, which properly blocks keyboard navigation and screen reader interaction in addition to mouse clicks.

Bug Fixes

  • Fixed an issue where new users had no permissions after creating an organization. Permissions now take effect within 30 seconds of account setup.
  • Fixed agent task assignment so agents only process jobs belonging to their own organization.
  • Fixed an issue where organization users could trigger or modify global jobs they don’t own.
  • Fixed notification delivery errors being silently swallowed instead of shown to users.
  • Fixed invisible timestamps caused by a JavaScript formatting error.

Security

  • Updated dependencies to address known vulnerabilities in Fiber and go-git.
  • Improved tenant isolation so organization-scoped operations cannot affect other organizations’ data.
  • The superadmin platform role is no longer visible to regular organization users.

0.1.1-alpha

New Features

  • Manual scrape jobs: Enter deployed versions directly without needing an agent. Create a scrape job with the “Manual” parse type and set versions via the UI or API. Rule evaluation, alerts, and notifications work identically to agent-discovered versions.

  • Pre-seeded global gather jobs: New organizations get immediate access to upstream release data for ~173 common infrastructure projects across Kubernetes, databases, monitoring, CI/CD, security, languages, web servers, and more.

  • IAM-style permissions: Fine-grained role-based access control with five built-in roles (Owner, Administrator, Editor, Viewer, Operator). Create custom roles with AWS IAM-style policy documents supporting Allow/Deny statements and wildcard patterns.

  • Alert action audit trail: Complete history of all alert state changes (created, escalated, acknowledged, resolved) with actor details and timestamps on the alert detail page.

  • Job queued status: New “queued” status distinguishes jobs ready for agent pickup from jobs scheduled for later, with a 6-card status breakdown on the dashboard.

  • Maintenance and outage page: Automatic detection of API outages with a user-friendly maintenance page and advance warning banners.

  • Global pool contributions: Suggest your gather jobs for inclusion in the shared global pool.

Improvements

  • Alerts page redesign: Status filter (Active/Resolved), inline Resolve buttons, and unified activity timeline on alert detail.
  • Incremental GitHub sync: Faster gather runs that only fetch new releases after the initial sync.
  • Distroless containers: All runtime images switched to minimal containers with zero OS-level vulnerabilities.
  • UTC timestamp standardization: All timestamps stored and displayed consistently in UTC with local timezone conversion in the browser.
  • Webhook template customization: Per-event body templates for Discord, Slack, and other webhook integrations.

Bug Fixes

  • Fixed summary card counts being capped at page size.
  • Fixed new users having no permissions after onboarding.
  • Fixed agent cross-organization task claims.
  • Fixed invisible timestamps due to JavaScript formatting error.
  • Fixed notification delivery errors being silently hidden.

Previous Releases

Historical changes before changelog adoption are not individually documented.