Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
ac556f2
fix: suppress spinner output in --json mode for interests create/upda…
cosmicallycooked Feb 22, 2026
5ecee15
fix: move ink-link to dependencies, bump to 0.1.3
1a35e1 Feb 22, 2026
2d090e7
feat: Setup Entire
1a35e1 Feb 22, 2026
c6d02f2
fix: add timeout detection and actionable error output to ingest comm…
cosmicallycooked Feb 23, 2026
e7f5ca0
fix: --from-prompt timeout handling with actionable error output (#4)
cosmicallycooked Feb 23, 2026
0318a46
feat(config data): add sqlite backup/restore/verify commands (#2)
cosmicallycooked Feb 23, 2026
0aca561
fix: actionable diagnostics when feed/inbox returns empty results (#5)
cosmicallycooked Feb 23, 2026
2a38154
chore: release 0.2.0 (#6)
cosmicallycooked Feb 23, 2026
d409c1d
fix: correct CLI command from 'sonar ingest monitor' to 'sonar monito…
cosmicallycooked Feb 25, 2026
a456521
feat: add `sonar quickstart` command (#7)
cosmicallycooked Mar 4, 2026
cb4ac4d
chore: Added release skill
1a35e1 Mar 4, 2026
24382e0
chore: release 0.2.1
1a35e1 Mar 4, 2026
ac403c1
feat: redesign CLI surface for interest monitoring workflow
1a35e1 Apr 5, 2026
4661e2b
fix: simplify refresh to single pipeline mutation
1a35e1 Apr 5, 2026
b61276c
feat: add sonar sync bookmarks command
1a35e1 Apr 5, 2026
e1a21b9
feat: update CLI for topics rename, drop keywords/topics fields
1a35e1 Apr 5, 2026
79555f9
feat: make interest name a positional arg — sonar interests add "AI a…
1a35e1 Apr 5, 2026
4d725cb
rename: sonar interests → sonar topics
1a35e1 Apr 5, 2026
b40cc70
fix: rename all Interest → Topic across CLI, fix user-facing strings
1a35e1 Apr 5, 2026
07c8cc4
feat: cleaner status UI — compact layout, embeddings in queue section
1a35e1 Apr 6, 2026
01c9341
fix: rename projects → topics in CLI GraphQL queries
1a35e1 Apr 6, 2026
e6c853c
docs: update CLI README with current commands and remove stale refere…
1a35e1 Apr 6, 2026
3e93684
fix: refresh with 3-day window instead of 1 day
1a35e1 Apr 6, 2026
d00e8cf
show re-auth URL when X authorization is required
1a35e1 Apr 6, 2026
6988b98
reduce refresh window back to 1 day
1a35e1 Apr 6, 2026
031d842
fix: align CLI data queries with current topics schema
1a35e1 Apr 6, 2026
eff1302
fix: make config nuke delete the real local database
1a35e1 Apr 6, 2026
edacb58
chore: align generated sonar skill with current CLI commands
1a35e1 Apr 6, 2026
8a1a1a9
chore: add drift prevention checks and CI gate
1a35e1 Apr 6, 2026
14b0845
show error for unknown commands instead of falling through silently
1a35e1 Apr 6, 2026
c11d3e1
improve topics list UI — truncate descriptions, cleaner layout
1a35e1 Apr 6, 2026
17cf3d0
cap topic description at 160 chars
1a35e1 Apr 6, 2026
9aa74c8
feat: topics view, delete commands + edit uses positional <id>
1a35e1 Apr 6, 2026
a5a7de8
add ASCII banner, update welcome + topics copy
1a35e1 Apr 6, 2026
27a7796
add ASCII banner to --help output
1a35e1 Apr 6, 2026
665b8f7
feat: press r to refresh from status --watch, q to quit
1a35e1 Apr 6, 2026
1b92557
feat: show deferred/pending jobs in status --watch
1a35e1 Apr 6, 2026
5a7597f
feat: show batch_id from refresh response
1a35e1 Apr 6, 2026
68c33da
show pipeline step progress instead of raw queue counts
1a35e1 Apr 6, 2026
5815c9f
paginate inbox with correct totals and auto-fetch next page
1a35e1 Apr 6, 2026
6551163
add spinner to current pipeline step
1a35e1 Apr 6, 2026
babf73c
feat: add feed command, topic suggestions, retry logic, and streaming…
1a35e1 Apr 8, 2026
5ec9ad4
chore: release 0.3.1
1a35e1 Apr 8, 2026
c261eba
chore: update command surface snapshot for feed and topics suggest
1a35e1 Apr 8, 2026
6a96b4f
fix: pin pnpm to v10 in CI workflows to match lockfile
1a35e1 Apr 8, 2026
461f75a
fix: checkout release target commitish in publish workflow
1a35e1 Apr 8, 2026
46ef975
chore: release 0.3.2
1a35e1 Apr 8, 2026
025874a
chore: release 0.3.3
1a35e1 Apr 8, 2026
be4cca2
chore: release 0.3.4
1a35e1 Apr 8, 2026
af2a86c
fix: readme typos and correct command syntax
1a35e1 Apr 8, 2026
36a7381
fix: add missing commands and correct sync syntax in README
1a35e1 Apr 8, 2026
11e4161
chore: release 0.3.5
1a35e1 Apr 8, 2026
fdf7c97
feat: use unicode-animations pulse spinner
1a35e1 Apr 8, 2026
5828afc
feat: add sonar account for multi-account management, help banner, pu…
1a35e1 Apr 8, 2026
0d96f33
refactor: remove SONAR_API_KEY env var, use sonar account for auth
1a35e1 Apr 8, 2026
04895bd
refactor: account add takes key as positional arg, --name optional wi…
1a35e1 Apr 8, 2026
c2c38e1
rename: --name to --alias on account add
1a35e1 Apr 8, 2026
de0549c
feat: add account rename command, show hint on random name
1a35e1 Apr 8, 2026
4163175
fix: detect expired X auth on pipeline failure, show re-auth guidance
1a35e1 Apr 8, 2026
9e5d28c
fix: show pipeline error message from backend on failure
1a35e1 Apr 8, 2026
c5b8319
feat: add sonar sync likes command
1a35e1 Apr 8, 2026
e606f81
feat: composable refresh flags — --bookmarks --likes --graph --tweets…
1a35e1 Apr 8, 2026
5ac1ffb
refactor: move config data commands to sonar data, rename sync to pul…
1a35e1 Apr 8, 2026
cebf6fc
refactor: replace better-sqlite3 with node-sqlite3-wasm, rename inter…
1a35e1 Apr 8, 2026
14a6f3f
chore: remove .nvmrc, not applicable to distributed CLI
1a35e1 Apr 8, 2026
dc62c3d
chore: release 0.4.0
1a35e1 Apr 8, 2026
bb81612
fix: add drift checks to publish workflow, update surface snapshot
1a35e1 Apr 8, 2026
c119560
fix: skill install checks for user modifications, requires --force to…
1a35e1 Apr 8, 2026
ccc0a38
chore: release 0.4.1
1a35e1 Apr 8, 2026
b0f1740
docs: add account, refresh flags, sync likes, data commands to README
1a35e1 Apr 8, 2026
110aa8b
refactor: remove sync namespace, use refresh --bookmarks/--likes instead
1a35e1 Apr 8, 2026
dea466c
chore: release 0.4.2
1a35e1 Apr 8, 2026
160dc63
feat: add --offset to feed for pagination
1a35e1 Apr 8, 2026
def51ab
feat: auto-generate skill.ts from Pastel/Zod command metadata
cosmicallycooked Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{
"hooks": {
"PostToolUse": [
{
"matcher": "Task",
"hooks": [
{
"type": "command",
"command": "entire hooks claude-code post-task"
}
]
},
{
"matcher": "TodoWrite",
"hooks": [
{
"type": "command",
"command": "entire hooks claude-code post-todo"
}
]
}
],
"PreToolUse": [
{
"matcher": "Task",
"hooks": [
{
"type": "command",
"command": "entire hooks claude-code pre-task"
}
]
}
],
"SessionEnd": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "entire hooks claude-code session-end"
}
]
}
],
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "entire hooks claude-code session-start"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "entire hooks claude-code stop"
}
]
}
],
"UserPromptSubmit": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "entire hooks claude-code user-prompt-submit"
}
]
}
]
},
"permissions": {
"deny": [
"Read(./.entire/metadata/**)"
]
}
}
97 changes: 97 additions & 0 deletions .claude/skills/release-cli/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
---
name: release-cli
description: Run the full CLI release workflow — version bump, changelog, build, commit, push, and GitHub release. npm publish happens via trusted publishing in CI.
user-invocable: true
allowed-tools: Bash, Read, Edit, Write, Glob, Grep
argument-hint: <patch|minor|major>
---

# Release CLI Workflow

Execute the full release pipeline for `@1a35e1/sonar-cli`. The user invokes this skill with a semver bump type: `patch`, `minor`, or `major`.

npm publishing uses **trusted publishing** via GitHub Actions OIDC — no OTP required. The `publish.yml` workflow triggers automatically when a GitHub release is created.

## Argument Validation

The argument MUST be one of: `patch`, `minor`, or `major`. If missing or invalid, print usage and stop:

```
Usage: /release-cli <patch|minor|major>
```

## Step 1: Pre-flight Checks

Run these checks sequentially. Abort on the first failure with a clear message.

1. **Clean working tree**: Run `git status --porcelain`. If output is non-empty, abort: "Working tree is not clean. Commit or stash changes first."
2. **On main branch**: Run `git branch --show-current`. If not `main`, abort: "Must be on the main branch to release."
3. **Build passes**: Run `pnpm build` (this runs `tsc`). If it fails, abort: "Build failed. Fix type errors before releasing."

## Step 2: Version Bump

1. Run `pnpm version <BUMP_TYPE> --no-git-tag-version` to bump the version in `package.json`.
2. Read `package.json` and extract the new `"version"` field. Store it as `NEW_VERSION` for use in later steps.
3. Print: "Version bumped to NEW_VERSION"

## Step 3: Update CHANGELOG

1. Collect commits since the last release. Run:
```
git log --oneline $(git log --all --grep='chore: release' --format='%H' -1)..HEAD
```
If no release commit is found, collect all commits with `git log --oneline`.

2. Generate a new changelog section following the existing Keep a Changelog format. Use today's date (YYYY-MM-DD). Categorize commits under `### Added`, `### Fixed`, `### Changed`, etc. based on conventional commit prefixes (`feat:` -> Added, `fix:` -> Fixed, `chore:`/`refactor:` -> Changed). Omit empty categories. Each entry should be a bullet starting with the commit message in bold, with a short description if the message is clear enough.

3. Insert the new section into `CHANGELOG.md` immediately after the header block (the `# Changelog` line and the two description lines). The new section goes BEFORE any existing `## [x.y.z]` sections.

Example format:
```markdown
## [0.3.0] - 2026-03-04

### Added

- **feat: add foo command** — Description of the change.

### Fixed

- **fix: bar edge case** — Description of the fix.
```

4. Print the generated changelog section for the user to review.

## Step 4: Build + Drift Checks

1. Run `pnpm build` to compile TypeScript to `dist/`. Abort if this fails.
2. Run `pnpm drift:surface:update` to update the command surface snapshot.
3. Run `pnpm drift:check` to verify all drift checks pass. Abort if any fail.

## Step 5: Git Commit

1. Stage exactly these files: `package.json`, `pnpm-lock.yaml`, `CHANGELOG.md`, `.drift/command-surface.snapshot.json`
2. Commit with message: `chore: release NEW_VERSION`
3. Print: "Committed: chore: release NEW_VERSION"

## Step 6: Push + GitHub Release (Confirmation Gate)

**ASK THE USER FOR CONFIRMATION** before proceeding:

> Ready to push to remote and create GitHub release v{NEW_VERSION}. This will trigger npm publish via trusted publishing in CI. Proceed?

If confirmed:
1. Run `git push`
2. Create a GitHub release using the changelog section from Step 3:
```
gh release create v<NEW_VERSION> --title "v<NEW_VERSION>" --notes "<changelog section from step 3>"
```
3. Print the GitHub release URL from the `gh` output.
4. Print: "npm publish will run automatically via GitHub Actions. Monitor at: https://github.com/1a35e1/sonar-cli/actions"

If denied, remind the user they can push and create the release manually later.

## Error Handling

- If any command fails, print the full error output and abort immediately.
- Do NOT continue past a failed step — each step depends on the previous one.
- If push or release creation fails, the commit is already made locally. Inform the user they can retry with `git push` and `gh release create` manually.
36 changes: 36 additions & 0 deletions .drift/command-surface.snapshot.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"source": "src/commands/**/*.tsx",
"commandCount": 30,
"commands": [
"sonar",
"sonar account",
"sonar account add",
"sonar account remove",
"sonar account rename",
"sonar account switch",
"sonar archive",
"sonar config",
"sonar config env",
"sonar config nuke",
"sonar config set",
"sonar config setup",
"sonar config skill",
"sonar data backup",
"sonar data path",
"sonar data pull",
"sonar data restore",
"sonar data sql",
"sonar data verify",
"sonar feed",
"sonar later",
"sonar refresh",
"sonar skip",
"sonar status",
"sonar topics",
"sonar topics add",
"sonar topics delete",
"sonar topics edit",
"sonar topics suggest",
"sonar topics view"
]
}
4 changes: 4 additions & 0 deletions .entire/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
tmp/
settings.local.json
metadata/
logs/
5 changes: 5 additions & 0 deletions .entire/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"strategy": "manual-commit",
"enabled": true,
"telemetry": true
}
40 changes: 40 additions & 0 deletions .github/workflows/drift-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Drift Checks

on:
pull_request:
push:
branches:
- main
- feat/**
- phase-**

jobs:
drift:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build
run: pnpm build

- name: Run drift checks
env:
CI: "true"
SONAR_API_URL: https://api.sonar.8640p.info/graphql
run: pnpm drift:check
47 changes: 47 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Publish to npm

on:
release:
types: [published]

jobs:
publish:
name: Publish
runs-on: ubuntu-latest

permissions:
contents: read
id-token: write

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.release.target_commitish }}

- uses: pnpm/action-setup@v4
with:
version: 10.19.0

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
registry-url: https://registry.npmjs.org

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build
run: pnpm build

- name: Drift checks
env:
CI: "true"
SONAR_API_URL: https://api.sonar.8640p.info/graphql
run: pnpm drift:check

- name: Publish
run: pnpm publish --access public --no-git-checks --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Loading
Loading