epiq 0.3.1 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +36 -36
- package/dist/mcp.js +31 -31
- package/package.json +2 -2
- package/readme.md +44 -6
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# Epiq
|
|
4
4
|
|
|
5
|
+
_Distributed CLI based issue tracker TUI_ backed by git.
|
|
6
|
+
|
|
5
7
|
Issue tracking is a part of the development lifecycle, but it often becomes a painful context switching exercise with poor ergonomics. `Epiq` provides issue tracking as a portable, integrated part of the development environment, with access to all the powerful tooling developers are used to. Epiq is a **CLI-native issue tracker** — powered by Git in which you can manage all your projects directly via the command line in a visual kanban board and edit content in your favorite, personalized editor.
|
|
6
8
|
|
|
7
9
|
With great attention to user ergonomics, epiq intends to make project management painless and friction free again, and has developer satisfaction as its primary target.
|
|
@@ -22,8 +24,8 @@ Epiq is a vim-inspired issue tracker fully integrated in the terminal that bring
|
|
|
22
24
|
|
|
23
25
|
Epiq renders your issue board directly in the terminal using ASCII and stores its state as an event log, versioned and synchronized through Git.
|
|
24
26
|
|
|
25
|
-

|
|
28
|
+

|
|
27
29
|
|
|
28
30
|
## Features
|
|
29
31
|
|
|
@@ -157,9 +159,6 @@ Clear all filters with `:filter clear`
|
|
|
157
159
|
|
|
158
160
|
- Pro tip: just like in any terminal - if you need to do repeating tasks over and over again, you can just put yourself in the command mode, and then press arrow up, in order to access the last executed command. This helps a lot when you create tasks with similar names, or add the same tag to many tickets and so on.
|
|
159
161
|
|
|
160
|
-
Starting the application will launch a wizard that sets you up in 20 seconds.
|
|
161
|
-
It will result in settings persisted at `~/.epicrc`
|
|
162
|
-
|
|
163
162
|
---
|
|
164
163
|
|
|
165
164
|
## How epiq is synchronized
|
|
@@ -171,7 +170,46 @@ Epiq uses Git in the background to synchronize state between clients. No manual
|
|
|
171
170
|
|
|
172
171
|
The `.epiq/` folder is non-authoritative and used for caching and local tracking. It can optionally be committed if you want your board state versioned alongside your code.
|
|
173
172
|
|
|
174
|
-
|
|
173
|
+
## Conflict Avoidance & Data Integrity
|
|
174
|
+
|
|
175
|
+
Epiq is designed to provide robustness in a distributed, Git-backed environment where multiple users may update state concurrently. Instead of mutating shared files, Epiq uses an event-sourced model to minimize merge conflicts and make concurrent changes predictable.
|
|
176
|
+
|
|
177
|
+
### Event-sourced state
|
|
178
|
+
|
|
179
|
+
All changes are stored as **append-only events** in user-scoped files, rather than modifying a shared state file. This avoids in-place edits to the same lines and significantly reduces the likelihood of Git conflicts.
|
|
180
|
+
|
|
181
|
+
State is reconstructed in-memory by replaying a merge of all user logs.
|
|
182
|
+
|
|
183
|
+
### Deterministic materialization
|
|
184
|
+
|
|
185
|
+
The current state is derived by replaying events in a deterministic order.
|
|
186
|
+
|
|
187
|
+
Events use a composite of time-sortable IDs (ULIDs) and a reference to the last known event ("edge"). On creation, events are appended relative to the last known event. If multiple events share the same reference point, their relative order is resolved using their time-based IDs.
|
|
188
|
+
|
|
189
|
+
This approach:
|
|
190
|
+
|
|
191
|
+
- Provides stable and reproducible ordering across machines
|
|
192
|
+
- Limits the impact of potential clock drift to small local ordering differences
|
|
193
|
+
- Ensures that concurrent updates converge to the same state
|
|
194
|
+
|
|
195
|
+
### Conflict handling model
|
|
196
|
+
|
|
197
|
+
Epiq resolves concurrent changes at the event level:
|
|
198
|
+
|
|
199
|
+
- Events are designed to be **idempotent** where possible
|
|
200
|
+
- Later events take precedence when conflicts occur
|
|
201
|
+
|
|
202
|
+
Because events are append-only and scoped to 1 file per user, Git merges become trivial combinations of changes in independent files.
|
|
203
|
+
|
|
204
|
+
### Local-first with eventual consistency
|
|
205
|
+
|
|
206
|
+
Epiq follows a **local-first** model:
|
|
207
|
+
|
|
208
|
+
- All operations apply instantly on the local machine
|
|
209
|
+
- Synchronization happens explicitly (`:sync`) or automatically
|
|
210
|
+
- When histories diverge, merging event logs and replaying them leads to a consistent state
|
|
211
|
+
|
|
212
|
+
> Frequent synchronization reduces divergence and keeps the system predictable
|
|
175
213
|
|
|
176
214
|
---
|
|
177
215
|
|