• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dcdpr / jp / 28132893375
69%

Build:
DEFAULT BRANCH: main
Ran 24 Jun 2026 10:13PM UTC
Jobs 1
Files 420
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Jun 2026 10:10PM UTC coverage: 66.868% (+0.005%) from 66.863%
28132893375

push

github

web-flow
feat(storage, workspace, cli): Durable storage with workspace projection (#743)

Every conversation now has a durable user-local copy stored under
`<user-data-dir>/workspace/<workspace-id>/`. Non-local conversations are
additionally *projected* into the workspace's `.jp/conversations/`
directory so they can be committed to version control alongside code.
Local-only conversations (`--local`) are kept exclusively in user-local
storage and never appear in the workspace directory.

The `local` indicator in `jp conversation ls` now shows three states:
`N` for projected, `Y` (blue) for user-local only, and `ext` (magenta)
for conversations present only in the workspace (committed by another
contributor but not yet imported locally). Archive and unarchive
operations now act on every storage root that holds the conversation,
keeping both copies consistent.

On first startup for a workspace, JP migrates any legacy `<name>-<id>`
user directories into the new workspace-ID layout (`<id>`) and imports
existing workspace conversations into user-local storage. Conversations
committed by other contributors after the one-time migration appear as
`ext` and are imported lazily on first write. When both roots hold a
conversation, metadata and stream are resolved independently by file
mtime, with ties broken in favour of the durable user-local copy.

The `Conversation::user` field is removed; storage locality is now
carried by `Projection` (the write intent on a lock) and derived at load
time from `StoragePresence`. `PersistBackend::write` gains a
`Projection` argument, and `LoadBackend::load_conversation_ids` is
replaced by `load_conversation_index` which returns
`ConversationIndexEntry` values pairing each ID with its presence.
`FsStorageBackend::with_user_storage` no longer accepts a `name`
parameter.

Closes: #733

---------

Signed-off-by: Jean Mertz <git@jeanmertz.com>

536 of 733 new or added lines in 20 files covered. (73.12%)

23 existing lines in 8 files now uncovered.

36256 of 54220 relevant lines covered (66.87%)

415.77 hits per line

Uncovered Changes

Lines Coverage ∆ File
65
5.83
1.99% crates/jp_cli/src/cmd/conversation/edit.rs
38
62.41
-2.08% crates/jp_storage/src/load.rs
32
27.37
1.22% crates/jp_cli/src/cmd/conversation/ls.rs
30
42.51
-0.93% crates/jp_cli/src/cmd/query.rs
8
95.37
3.49% crates/jp_storage/src/lib.rs
7
83.61
-4.36% crates/jp_workspace/src/conversation_lock.rs
6
81.54
-2.42% crates/jp_storage/src/backend/fs.rs
3
0.0
0.0% crates/jp_cli/src/cmd/conversation/show.rs
2
67.46
0.0% crates/jp_cli/src/cmd/conversation/use_.rs
2
41.84
0.0% crates/jp_cli/src/cmd/target.rs
2
0.0
0.0% crates/jp_cli/src/editor.rs
1
18.52
0.0% crates/jp_cli/src/cmd/conversation/rm.rs
1
37.06
-0.32% crates/jp_cli/src/lib.rs

Coverage Regressions

Lines Coverage ∆ File
12
62.41
-2.08% crates/jp_storage/src/load.rs
4
27.37
1.22% crates/jp_cli/src/cmd/conversation/ls.rs
2
42.51
-0.93% crates/jp_cli/src/cmd/query.rs
1
5.83
1.99% crates/jp_cli/src/cmd/conversation/edit.rs
1
68.42
1.75% crates/jp_cli/src/cmd/conversation/fork.rs
1
67.46
0.0% crates/jp_cli/src/cmd/conversation/use_.rs
1
63.16
4.33% crates/jp_storage/src/value.rs
1
94.0
0.82% crates/jp_workspace/src/lib.rs
Jobs
ID Job ID Ran Files Coverage
1 28132893375.1 24 Jun 2026 10:13PM UTC 420
66.87
GitHub Action Run
Source Files on build 28132893375
  • Tree
  • List 420
  • Changed 22
  • Source Changed 22
  • Coverage Changed 19
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28132893375
  • d78c0493 on github
  • Prev Build on main (#28132072622)
  • Next Build on main (#28154594752)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc