Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 22 of 212 Next →
February 28, 2026
patch Notes

Add "Publish to Gist" to Notes plugin

Details

One-click publishing of Notes pages as GitHub Gists. Converts the page to

markdown using the existing export infrastructure, creates a secret gist via

the GitHub API, and copies the gist URL to the clipboard.

Accessible from:

  • Export dropdown in page toolbar (Export → GitHub Gist)
  • Right-click context menu on page tree (Publish to Gist)

Uses the existing GitHub connection (Notes already implements IConnectionConsumer

with repo scope). No new dependencies or schema changes needed.

New files:

  • GistPublishService.cs: lightweight HTTP client for POST /gists only
patch Snippets

Fix gist push to handle title/filename renames

Details

PushSnippetAsync now detects when the snippet title has changed (producing a

different filename via BuildFilename) and sends a rename payload to the GitHub

API: deletes the old filename (null) and creates the new filename with content.

UpdateGistAsync gains a rawFiles parameter (Dictionary<string, object?>) to

support null values for file deletion, which is how the GitHub API expresses

file renames.

patch Snippets

Auto-push to gist on save when bidirectional sync is enabled

Details

When a snippet is linked to a gist source with sync_direction="bidirectional",

saving the snippet now automatically pushes the changes to GitHub. If the push

fails, the local save still succeeds and the user is notified of the push failure.

patch TasksTasks.Headless

Push tasks to GitHub Projects on assignment

Details

Add bidirectional GitHub Projects v2 sync for project assignment:

when a task is assigned to a PrivStack project linked to a GitHub

Project, it now appears on the GitHub board. Unassigning removes it.

Two scenarios on assign:

  • If the task is already a GitHub issue, add it to the project via

the addProjectV2ItemById GraphQL mutation.

  • If the task is local-only, create a GitHub issue first (in a repo

matching the project's org/user from configured issue sources),

then add the new issue to the project.

On unassign: remove the item from the GitHub Project via the

deleteProjectV2Item mutation. The issue itself is not deleted.

Changes:

  • GitHubIssue model: add NodeId from REST API node_id field
  • GitHubIssueFieldMapper: persist github_node_id in custom fields

during issue sync for later use in project mutations

  • TaskItem: add GitHubNodeId convenience accessor
  • GitHubProjectApiClient: add AddItemToProjectAsync and

RemoveItemFromProjectAsync GraphQL mutations

  • GitHubProjectSyncService: add PushTaskToProjectAsync and

RemoveTaskFromProjectAsync with issue creation fallback and

node_id resolution; inject IGitHubIssueApiClient and

GitHubIssueSourceService for repo resolution

  • TasksViewModel.Projects: hook FireGitHubProjectSync into

AssignTaskToProject, BulkAssignToProject, and

ApplyProjectEditorResultAsync (fire-and-forget with error toast)

  • TasksPlugin: share GitHubIssueApiClient instance between issue

sync and project sync services

patch TasksTasks.Headless

Fix tasks showing Jan 1, 0001 for UpdatedAt timestamp

Details

API-created tasks (via IApiProvider) were missing updated_at in the

create payload because the caller (fix-bugs skill, external API)

doesn't include timestamps. The Rust backend auto-sets created_at

but not updated_at, leaving it as DateTimeOffset.MinValue.

  • HandleCreateTaskAsync: inject created_at and updated_at if missing
  • HandleUpdateTaskAsync: always set updated_at to now on PATCH
  • UtcToLocalConverter: return null for MinValue dates so the detail

panel shows blank instead of "Jan 1, 0001 12:00 AM"

← Prev Page 22 of 212 Next →

Get notified about new releases