Commit log

a6f433e fix(cmd/t): show only tasks without goal header

Click to expand commit body
Implements: 87aeb06
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

78a9210 refactor(cmd): clarify batch operation output

Click to expand commit body
- Show full plan only when multiple tasks added; print &#39;Added&#39;
  for single task
- Recommend batch mode first in goal set help text
- Add guidance to check task list after sequential adds

Co-authored-by: Crush <crush@charm.land>
Implements: bug-8461b50

Amolith and Crush created

65355ec build(version): use extended tag when appropriate

Amolith created

9ff4395 docs: document batch task operations

Click to expand commit body
Updated README.md and AGENTS.md to document the new batch task
capabilities:
- Task addition: np t a -t 'one' -d 'desc' -t 'two' -d 'desc'
- Status updates: np t u -i id1 -s status1 -i id2 -s status2

Clarified both single and batch patterns in workflow descriptions.

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

4e03f31 feat(cmd/t): support batch status updates

Click to expand commit body
Modified cmd/t/u.go to accept StringArray for -i (id) and -s (status)
flags,
enabling batch status updates like:
np t u -i abc123 -s completed -i def456 -s in_progress

This reduces context window usage by printing the plan once instead of
multiple times when updating several tasks.

Updated all help text across cmd/{s,r,g/s,g/u,t/a,t/u}.go to show:
- Multi-task addition examples with multi-line descriptions
- Batch status update patterns (especially completed + in_progress)
- Both single and batch operation examples side-by-side

The implementation validates ID/status count matching, processes updates
in a single transaction, and provides appropriate feedback messages for
both single-task and batch operations.

Co-authored-by: Crush <crush@charm.land>
References: bug-b529dcf

Amolith and Crush created

2eb8292 fix(cmd): remove errant newline in plan output

Click to expand commit body
RenderPlan already returns string with trailing newline.
Changed Fprintln to Fprint in PrintPlan and runListTasks.

Implements: bug-ae16af8
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

4fb3d59 fix(db): move badger database into subdirectory

Click to expand commit body
The database directory ~/.config/nasin-pali now contains the badger
database at ~/.config/nasin-pali/data/ instead of being the database
itself. This provides cleaner separation and allows for potential
future configuration files in the parent directory.

Implements: bug-4b90e13
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

6bd3b20 docs(prompt): fix typo

Amolith created

b986545 docs: polish

Amolith created

403ee3a docs(installation): improve wording

Amolith created

550282e docs: reorganise so it's a bit clearer

Amolith created

6c3773b docs(usage): add

Amolith created

45ceda1 docs(installation): specify where to put prompt

Amolith created

2e0bae9 docs(typo): fix

Amolith created

99777b6 fix(cmd): ignore fmt errors in output

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

f61b9d3 chore: fumpt

Amolith created

d6716df build: migrate to taskfile

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

d72d8c0 docs(prompt): make np optional

Amolith created

1c51538 feat(cmd/t): prompt for archival on completion

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

6d6ca4b docs(installation): add

Amolith created

38988c6 feat(cmd/a): make archive idempotent

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

408543b feat(internal/session): add LatestArchivedByPath

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

cfc072e fix(internal/db): fix reverse prefix iteration

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

7481464 feat(cmd/r): implement session resumption

Click to expand commit body
Co-Authored-By: Crush <crush@charm.land>

Amolith and Crush created

cff54d7 refactor: remove init functions from command files

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

72896b1 docs(typo): correkshun

Amolith created

d66c8a5 feat(cmd/p): implement print plan command

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

d463be7 feat(cmd/a): implement archive session command

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

5d89ca6 feat(cmd/t): implement task commands

Click to expand commit body
Task commands form a cohesive feature set for managing session tasks.

- t: list tasks with optional status filter
- t a: add multiple tasks (validates title/description pairs)
- t u: update task status, title, or description (requires reason for
  content changes and cancel/fail)
- All commands print plan and provide contextual next steps

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

0c1bd58 feat(cmd/g): implement goal commands

Click to expand commit body
Goal commands form a cohesive feature set for managing session goals.

- g: show goal with full plan
- g s: set goal (requires title and description)
- g u: update goal (requires reason and at least one change)
- All commands print plan and provide contextual next steps

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

4a18082 feat(cmd/s): implement session start

Click to expand commit body
Start command is the entry point for creating directory-scoped sessions.

- Replace stub with full implementation
- Handle AlreadyActiveError with helpful message
- Print next steps after session creation

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

20f725f feat(cmd): wire root command lifecycle

Click to expand commit body
Root command bootstraps environment for all subcommands.

- Add PersistentPreRunE to open environment
- Add PersistentPostRunE to close environment
- Register all top-level commands
- Set SilenceUsage to avoid double error output

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

f5283dc feat(cli): add shared infrastructure

Click to expand commit body
All CLI commands need shared foundation for environment management, plan
rendering, and common helpers.

- Add Environment with DB and store wrappers
- Add plan rendering with status icons
- Add shared command helpers (Environment, ActiveSession, PrintPlan,
  CommandString)
- Add db_test.go for database tests

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

50a7d5c feat(session): add transaction support

Click to expand commit body
Session store now exposes transactional helpers for CLI commands to
coordinate updates across goal/task/event stores atomically.

- Add WithTxn() to create TxnStore
- Add TxnStore with Load() and TouchAt() methods
- Refactor internal loadDocument() helper for reuse
- Add TestTxnStoreTouchAt

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

35c9633 chore(build): add install task to justfile

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

4241039 feat(session): add session lifecycle management

Click to expand commit body
Implements Store with Start, Get, Archive, and ActiveByPath operations.
Sessions use ULID-based identifiers and track state transitions between
active and archived.

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

7ea0c8b docs(agents): update

Amolith created

4169dca chore(licensing): remove placeholder header

Amolith created

80f2431 feat(core): add data layer for sessions

Click to expand commit body
Introduces event, goal, and task storage subsystems built on Badger:

- event: append-only log with typed payloads for state changes
- goal: CRUD operations for session goals with event tracking
- task: full lifecycle management with status indexing
- testutil: helpers for deterministic test clocks and databases
- timeutil: clock abstraction for testability

All packages include comprehensive test coverage.

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

cec0cca build: correct bin name

Amolith created

59b1849 fix(db): fix View txn and improve defaults

Click to expand commit body
Fix View transaction to return nil on success instead of ctx.Err(),
which
caused spurious failures when a context deadline was set but the
operation
completed successfully before expiration.

Improve configuration defaults for CLI durability:
- Default SyncWrites to true to ensure planning state persists across
  crashes
- Use os.UserConfigDir() instead of custom platform logic for better
cross-platform config directory handling

Code cleanup:
- Remove redundant txn.Discard() after successful commit
- Rename suffixTasks to suffixTask for singular/plural consistency
- Fix KeyString doc to correctly state it allocates
- Remove unused ctx assignment in View

Signed-off-by: Crush <crush@charm.land>

Amolith created

7c0c9d0 fix(db): clean up db helpers

Click to expand commit body
Refine the Badger helpers.

Signed-off-by: Crush <crush@charm.land>

Amolith created

60d9c06 docs(schema): refine event payloads and keys

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

da6c09e docs: add pronounciation

Amolith created

176a9fa docs(schema): noodle about a schema

Click to expand commit body
Had a combo of Claude Code/Sonnet 4.5 and Amp/GPT-5 (Oracle) write one
schema each, then used CC and Crush/GPT-5 (high) to polish up CC's
version. Then I presented both schemas to CC and Crush/GPT-5 and asked
which they prefer. Both suggested copying some choice ideas from CC's
schema, but instead adopting Amp's schema overall.

Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

1c6203b chore: ignore binary

Amolith created

6102955 chore(agents): replace sqlite with badger

Amolith created

8e97b92 docs(badges): update repo path

Amolith created

91b2921 feat(cmd): scaffold the CLI

Click to expand commit body
Co-authored-by: Crush <crush@charm.land>

Amolith and Crush created

f5dc764 docs: mention m subcommand

Amolith created