Skip to content

Add Issue Form templates + capability parity diff for the Tabularis migration flow #56

Description

@aesslinger

Context

The main Tabularis app is building a builtin-to-plugin migration flow (moving users off the in-tree postgres driver onto this plugin ahead of the builtin's eventual removal, tentatively Oct 5 2026). Full design: TabularisDB/tabularis#685 (.github/planning/postgres-plugin-force-install.md in that PR).

Two parts of that design need work in this repo before it ships.

1. Issue Form templates

The migration flow drafts a GitHub issue in this repo for the user to review and submit themselves (no automated posting) in three situations: a failed migration, a builtin-only capability the plugin doesn't yet cover, and general bug reports from a standing "Report a plugin issue" link in the app's Settings.

Rather than GitHub's plain issues/new?title=&body= prefill (a single free-text field, no way to enforce required info, and broken outright on any repo with an issue-template chooser), the app targets GitHub Issue Forms — structured YAML templates with named, typed fields it can pre-fill via query params, e.g. ?template=migration-failure.yml&failure_mode=connection&error=.... Confirmed hands-on that GitHub's login redirect preserves these query params for a signed-out user, so nothing is lost if they need to log in first.

Draft YAML for all three below — ready to drop in as-is, or tweak first.

Ask

  • Add .github/ISSUE_TEMPLATE/migration-failure.yml:
name: Migration from builtin failed
description: >-
  Filed automatically by Tabularis when switching a connection from the
  builtin postgres driver to this plugin fails.
title: "Migration failed: "
labels: ["migration"]
body:
  - type: markdown
    attributes:
      value: |
        This form was pre-filled by Tabularis's builtin-to-plugin migration
        flow. Review the details below before submitting — nothing has been
        sent yet. No credentials or connection strings are included.
  - type: dropdown
    id: failure_mode
    attributes:
      label: Failure mode
      description: >-
        "Process" means the plugin itself never started (interpreter
        missing, crash). "Connection" means the plugin started fine but
        the specific database connection failed.
      options:
        - connection
        - process
    validations:
      required: true
  - type: input
    id: plugin_version
    attributes:
      label: Plugin version
    validations:
      required: true
  - type: input
    id: app_version
    attributes:
      label: Tabularis app version
    validations:
      required: true
  - type: input
    id: os
    attributes:
      label: Operating system
      placeholder: e.g. macOS 15.1, Windows 11, Ubuntu 24.04
    validations:
      required: true
  - type: input
    id: migrated_from_driver
    attributes:
      label: Migrated from
      placeholder: e.g. builtin postgres
    validations:
      required: false
  - type: textarea
    id: error
    attributes:
      label: Error message
      description: The exact error returned when the migration or connection failed.
      render: text
    validations:
      required: true
  - type: textarea
    id: additional_context
    attributes:
      label: Additional context
      description: Anything else that might help reproduce or diagnose this.
    validations:
      required: false
  • Add .github/ISSUE_TEMPLATE/capability-gap.yml:
name: Feature parity gap
description: >-
  Filed automatically by Tabularis when a connection uses a builtin-only
  feature this plugin doesn't yet support.
title: "Feature parity gap: "
labels: ["capability-gap"]
body:
  - type: markdown
    attributes:
      value: |
        This form was pre-filled by Tabularis's builtin-to-plugin migration
        flow, from a connection that uses a feature the plugin's declared
        capabilities don't yet cover. Review before submitting — nothing has
        been sent yet. No credentials or connection strings are included.
  - type: input
    id: feature
    attributes:
      label: Missing feature
      placeholder: e.g. SSH tunneling, IAM auth, Kubernetes port-forwarding
    validations:
      required: true
  - type: input
    id: plugin_version
    attributes:
      label: Plugin version
    validations:
      required: true
  - type: input
    id: app_version
    attributes:
      label: Tabularis app version
    validations:
      required: true
  - type: textarea
    id: additional_context
    attributes:
      label: Additional context
      description: Anything else that might help scope or reproduce this.
    validations:
      required: false
  • Add .github/ISSUE_TEMPLATE/bug_report.yml:
name: Bug report
description: Report a problem with the PostgreSQL plugin.
title: "Bug: "
labels: ["bug"]
body:
  - type: input
    id: plugin_version
    attributes:
      label: Plugin version
    validations:
      required: true
  - type: input
    id: app_version
    attributes:
      label: Tabularis app version
    validations:
      required: true
  - type: input
    id: os
    attributes:
      label: Operating system
      placeholder: e.g. macOS 15.1, Windows 11, Ubuntu 24.04
    validations:
      required: true
  - type: textarea
    id: description
    attributes:
      label: What happened?
      description: What did you expect, and what happened instead?
    validations:
      required: true
  - type: textarea
    id: repro_steps
    attributes:
      label: Steps to reproduce
    validations:
      required: false
  - type: textarea
    id: error
    attributes:
      label: Error message, if any
      render: text
    validations:
      required: false
  • Create the migration, capability-gap, and bug labels (each template's labels: frontmatter auto-applies them going forward, but they need to exist first).

Not blocking on the app side either way: this repo currently has no issue-template chooser configured, so the app's prefill links work against a plain form until these exist, and adding them is additive.

2. Builtin-vs-plugin capability diff

Since this plugin is maintained by the same team as the builtin driver, any gap between them is a bug to close, not a permanent difference — the app's migration flow treats it that way, excluding an affected connection from migration by default rather than pretending the gap doesn't exist.

This diff already runs as part of every plugin release, so no separate ask here — just flagging that gaps it turns up should get filed with the capability-gap template above, so the migration flow's exclusion list reflects real, tracked issues rather than an untracked known-gaps list.

Related

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions