Skip to content

Releases: radityajay/notionctl

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:55
22584b0

Changelog

  • 22584b0 Merge pull request #31 from radityajay/feat/list-command
  • 23624e0 feat: notionctl list — show managed databases and IDs

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:51
98eb23b

Changelog

  • 98eb23b Merge pull request #30 from radityajay/feat/interactive-init
  • f491bba feat: interactive notionctl init with template selection

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:41
f018fd1

Changelog

  • f018fd1 Merge pull request #29 from radityajay/feat/fmt-command
  • 4ab8845 feat: notionctl fmt — auto-format config with consistent style

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:30
6661264

Changelog

  • 02d3e9c Merge pull request #27 from radityajay/docs/visibility
  • 6661264 Merge pull request #28 from radityajay/feat/env-substitution
  • 67a2b54 feat: environment variable substitution in YAML config

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:19
1927d03

Changelog

  • 1927d03 Merge pull request #26 from radityajay/feat/goreleaser
  • 1b37547 feat: add GoReleaser + Homebrew tap for cross-platform distribution

v1.0.0 — Stable Release

Choose a tag to compare

@radityajay radityajay released this 06 Oct 02:53
47c5e87

🎉 notionctl v1.0.0

Declarative Notion database management is now stable.

Commands

Command Description
notionctl init Generate starter config
notionctl import Import existing databases from Notion
notionctl plan Preview changes
notionctl apply Create/update/destroy databases
notionctl diff Detect drift from manual Notion edits
notionctl sync Pull Notion state back into YAML
notionctl validate Validate config offline (CI-friendly)

Highlights

  • 19 property types — 100% Notion API coverage
  • Symbolic relations — reference databases by name, not UUID
  • Destroy detection — databases removed from YAML are auto-detected and archived
  • Drift detection — compare remote Notion vs local config
  • Structured errors — user-friendly messages with retry for rate limits (429) and server errors (5xx)
  • 4 templates — CRM, inventory, project tracker, bug tracker
  • CI/CD ready — --auto-approve flag, validate command, example GitHub Actions workflows

Getting Started

go install github.com/radityajay/notionctl@v1.0.0
export NOTION_TOKEN="secret_..."
notionctl init
notionctl plan
notionctl apply

Full Changelog

v0.9.0...v1.0.0

v0.9.0 — Config Validation Command

Choose a tag to compare

@radityajay radityajay released this 06 Oct 02:46
ab6b1ae

What's New

New notionctl validate command — check your config without connecting to Notion.

Usage

$ notionctl validate
✓ notionctl.yaml is valid (3 database(s), 24 total properties)

$ notionctl validate -c templates/bug-tracker.yaml
✓ templates/bug-tracker.yaml is valid (3 database(s), 33 total properties)
  • No NOTION_TOKEN required
  • Exits 1 on invalid config — CI-friendly
  • Validates: syntax, property types, relation references, formula/rollup config

Full Changelog

v0.8.0...v0.9.0

v0.8.0 — Drift Detection with notionctl diff

Choose a tag to compare

@radityajay radityajay released this 06 Oct 01:55
897b5fb

What's New

New notionctl diff command — detect when someone edits your Notion databases directly and your config drifts out of sync.

Usage

notionctl diff

Example Output

✓ "Projects" — in sync

⚠ "Tasks" — drifted
    + property "NewCol" (checkbox): in config but not in Notion
    - property "OldCol" (rich_text): in Notion but not in config
    ~ property "Priority": options in config but not remote: [Low]

○ "Archive" — not deployed

What It Detects

  • Properties added/removed in Notion but not in config
  • Property type mismatches
  • Config drift: number format, select/multi_select/status options, formula expressions, unique_id prefix

Full Changelog

v0.7.0...v0.8.0

v0.7.0 — Destroy Databases Removed from Config

Choose a tag to compare

@radityajay radityajay released this 06 Oct 01:45
a6c96dd

What's New

Databases removed from your YAML config are now detected and can be archived from Notion.

Destroy Flow

  1. Remove a database from notionctl.yaml
  2. notionctl plan shows - destroy "DatabaseName"
  3. notionctl apply prompts for confirmation per database
  4. Database is archived in Notion (recoverable from trash) and removed from state

CI Support

notionctl apply --auto-approve

Skips all confirmation prompts — useful for automated pipelines.

Full Changelog

v0.6.0...v0.7.0

v0.6.0 — Structured Error Handling with Retry

Choose a tag to compare

@radityajay radityajay released this 06 Oct 01:37
46d1632

What's New

User-friendly error messages and automatic retry for transient failures.

Error Handling

Status Before After
401 Raw JSON dump check that NOTION_TOKEN is set and valid
403 Raw JSON dump share the page with your integration
404 Raw JSON dump verify the page/database ID exists
429 Immediate failure Auto-retry with backoff, then clear message
5xx Raw JSON dump Auto-retry, then Notion server error — try again

Retry Logic

  • Exponential backoff: 1s → 2s → 4s
  • Max 3 retries for 429 (rate limit) and 5xx (server errors)
  • Non-retryable errors (401, 403, 404) fail immediately with actionable hints

For Developers

New APIError type with helper functions:

if notion.IsRateLimit(err) { /* ... */ }
if notion.IsUnauthorized(err) { /* ... */ }
apiErr, ok := notion.IsAPIError(err)

Full Changelog

v0.5.0...v0.6.0