- Show full plan only when multiple tasks added; print 'Added'
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
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>
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>
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>
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>
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>
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>
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>
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
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>
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>
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>
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>