Commit log

b68040c feat(translation): add

Amolith created

740fb56 feat(i18n): introduce internationalization support

Click to expand commit body
Add i18n system with localization support:

- New `internal/i18n/localizer.go` with TOML-based locale management
  (en, tok)
- New `internal/config/config.go` with locale preference storage
- Refactored all commands to use i18n strings instead of hardcoded text
- Updated CLI environment and plan generation for i18n
- Added comprehensive tests for config and localization

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

Amolith and Crush created

a302fa1 feat(agents): in-repo np interaction instructions

Click to expand commit body
Tell the agents how to interact with `np` when they're in this repo.
I've noticed they try to test dev changes with the installed version and
update their normal lists with the dev version. Hopefully this helps
resolve that.

Amolith created

6509e9e refactor(cmd/t/u): omit goal/desc from output

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

Amolith and Crush created

0e3e8f4 docs(cmd/r): update for new s instructions, polish

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

Amolith and Crush created

bc8b404 docs(cmd): improve agent prompts

Click to expand commit body
Refined guidance messages across session workflow commands:

- np s: expanded with detailed goal-setting instructions including title
length limits, description requirements, reference formatting, and
task management examples with multi-line syntax
- np g s: condensed to single actionable message focusing on study then
task planning
- np g u: simplified to one line about task alignment
- np r: added task creation examples with multi-line description syntax

Changes make prompts more prescriptive where needed (session start) and
more concise where appropriate (goal commands).

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

Amolith and Crush created

875258d refactor(cmd/t/u): simplify completion messages

Click to expand commit body
Remove redundant else branches and duplicate instructions when all tasks
are complete. The completion message now only advises escalating to
operator without repeating usage patterns already shown elsewhere.

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

Amolith and Crush created

a600f5a docs(cmd/s): add examples to np s error output

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

Amolith and Crush created

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