| Age | Commit message (Collapse) | Author |
|
All builds pass. Here's a summary of the changes I made:
**Omni/Task/Core.hs:** - Added `getActivitiesForTask` function to
query task_activity table for
**Omni/Jr/Web.hs:** - Added `Data.Time` import for timestamp formatting
- Updated `TaskDetailPage` type to include `[TaskCore.TaskActivity]` -
Updated `taskDetailHandler` to fetch activities for the task - Added
activity timeline rendering in `toHtml` instance for InProgress -
Added helper functions: `renderActivity`, `stageClass`, `stageIcon`, `
**Omni/Jr/Web/Style.hs:** - Added `activityTimelineStyles`
function with vertical timeline CSS - Added stage-specific colors
(claiming=blue, running=yellow, reviewing= - Added dark mode styles
for the activity timeline
Task-Id: t-148.3
|
|
Implementation complete. The task is done:
1. **Created `logActivity` helper** in `Omni/Task/Core.hs` that writes
t 2. **Integrated into Worker.hs** at all key points:
- `Claiming` - when claiming task - `Running` - when starting amp
- `Reviewing` - when amp completes successfully - `Retrying` -
on retry (includes attempt count in metadata) - `Completed` - on
success (includes result type in metadata) - `Failed` - on failure
(includes exit code or reason in metadata)
Task-Id: t-148.2
|
|
All components are in place: - `ActivityStage` enum with stages:
Claiming, Running, Reviewing, Retryi - `TaskActivity` data type with
all required fields - JSON instances (ToJSON/FromJSON) - SQLite
instances (FromField/ToField for ActivityStage, FromRow/ToRow f -
`task_activity` table in `initTaskDb`
Build passes with no errors.
Task-Id: t-148.1
|
|
The build and tests passed with no errors. The fix is complete -
calling
Task-Id: t-147
|
|
|
|
- FromHttpApiData instances return Left for empty strings (Servant
treats as missing param for QueryParam Maybe)
- getTasksDbPath now uses ~/.local/share/jr/jr.db via XDG - Remove
standalone task binary output - Add tests for parseQueryParam on
Priority/Status
Task-Id: t-145, t-146 Amp-Thread-ID:
https://ampcode.com/threads/T-2ad5310f-b7f5-451d-ad9b-35aa17c58774
Co-authored-by: Amp <amp@ampcode.com>
|
|
Toml files were marked as buildable but analyzeOne returned Nothing,
causing them to fail instead of being skipped with [_].
|
|
detectPythonImports now returns (srcs, transitiveDeps) where
transitiveDeps contains langdeps from all transitively imported local
modules. This fixes builds where a module imports another local module
that has language-level dependencies (e.g., pytest).
|
|
The multi-line UI now handles status display, so these warn messages
are redundant and clutter the output.
|
|
Implement STM-based pipeline that allows per-target progression
through build phases (analyze → wait for deps → build) with
concurrent workers.
Key changes: - TargetState enum tracks each target through pipeline
stages - Coordinator manages state, analyze queue, build queue
coordination - pipelineAnalysisWorker/pipelineBuildWorker pull from
queues concurrently - promoteWaiters unblocks targets when their
dependencies complete
UI improvements: - Multi-line mode reserves N lines for N targets,
updates in-place - Remove narrow terminal (<80 col) restriction for
multi-line mode - Add Skipped state with yellow [_] for non-buildable
files - Remove extra blank line at start of output
State symbols: [.] Pending, [+] Analyzing, [~] Building, [✓] Success
(green), [x] Failed (red), [_] Skipped (yellow)
|
|
- Create single LineManager in move() that spans both phases -
Reserve N lines upfront for N build targets - Status progression:
[.] pending -> [+] analyzing -> [~] building -> [✓]/[x] done -
Remove duplicate LineManager creation from analyzeAll and build -
Update both SingleLine and MultiLine modes with proper symbols
This fixes the issue where only one line was reserved during analysis
and status lines were being duplicated instead of overwritten.
|
|
Left over from merge conflict resolution.
|
|
The ellipsis character (…, code 8230) was causing xterm.js parsing
errors in the jr worker terminal. Replace with ASCII alternatives.
|
|
All tests pass. The solution was minimal - simply passing `True`
instead
1. For `analyzeAll`, the first parameter (`isPlanMode`) controls
whether
2. For `build`, the second parameter (`loud`) controls whether to
use si
The changes effectively use the existing "loud/plan mode"
infrastructure
Task-Id: t-134
|
|
- Remove trailing punctuation from subject line - Truncate to 72
chars max - Capitalize first letter
Task-Id: t-1o2g8gugkr1
|
|
The fix is complete. Here's a summary of the changes:
Fixed the bild status line output not overwriting properly by:
1. **Made `withLineManager` reentrant**
([Omni/Log/Concurrent.hs](file:/
2. **Added `linesInitialized` tracking**
([Omni/Log/Concurrent.hs](file:
3. **Added `lastOutputTransient` tracking**
([Omni/Log/Concurrent.hs](fi
4. **Wrapped analyze+build in single manager**
([Omni/Bild.hs](file:///h
Task-Id: t-l6kc73wk
|
|
All tests pass and lint is clean. The implementation adds Gerrit-style
c
1. **`gatherConflictContext`** - Creates rich context including:
- The commit info (SHA, subject, body) - Current HEAD state (what
branch moved to) - Per-file conflict details showing both your
changes and recent chan
2. **`getFileConflictInfo`** - For each conflicting file, shows:
- Your changes to that file (stat summary) - Recent changes by
others (last 3 commits touching the file)
3. The context is stored in `retryReason` and passed to the worker
via t
Task-Id: t-1o2g8gudqlx
|
|
All tests pass. The sequential task IDs feature for Jr is complete:
**Summary:** - Sequential task IDs are implemented in
`Omni/Task/Core.hs` using an SQ - IDs follow the format `t-1`,
`t-2`, `t-3`, etc. - Child tasks use dotted notation: `t-parent.1`,
`t-parent.2` - The `jr task` command uses this through `Omni.Task.main`
- Tests verify sequential IDs work correctly (lines 564-586 in Task.hs)
Task-Id: t-1o2g8gu9y2z
|
|
All tests pass. The sequential task ID feature for Jr is complete:
**Summary**: - Sequential task IDs are implemented in
`Omni/Task/Core.hs` using an SQ - IDs follow the format `t-1`,
`t-2`, `t-3`, etc. - Child tasks use dotted notation: `t-parent.1`,
`t-parent.2` - The `jr task` command uses this through `Omni.Task.main`
- A new test was added to verify sequential IDs work correctly
Task-Id: t-1o2g8gu9y2z
|
|
All tests pass and the feature is working correctly. The sequential
task
1. **Implementation**: Already present in `Omni/Task/Core.hs` with
`gene 2. **Integration**: `jr task` commands use `Omni/Task.main`
which levera 3. **Testing**: Added a new test `"generateId produces
sequential IDs"`
Task-Id: t-1o2g8gu9y2z
|
|
All tests pass. The implementation is complete:
**Summary of changes:** 1. Removed sqids dependency from
`Omni/Task/Core.hs`, `Omni/Task.hs`, an 2. Changed `generateId` in
`Omni/Task/Core.hs` to produce simple sequent 3. Removed the now-unused
`sqidsOptions` configuration and `Web.Sqids` i
Task-Id: t-1o2g8gu9y2z
|
|
All tests pass. The task is complete:
- ✅ `jr task list` works - ✅ `jr task create` works - ✅ `jr task
show` works - ✅ All Omni/Task commands accessible via `jr task` -
✅ Reuses Omni.Task logic - ✅ Added tests for task command parsing -
✅ `bild --test Omni/Jr.hs` passes
Task-Id: t-1o2egbj8o0n.2
|
|
All the necessary components are in place: 1. Route added to API type
(`GET /stats` with optional `?epic=` query pa 2. `StatsPage` data
type defined 3. `ToHtml` instance for `StatsPage` with all sections
(By Status, By Pr 4. `statsHandler` function to handle the route
5. Handler connected in `server` 6. Link to stats page added to the
dashboard 7. CSS styles for progress bars and stats sections added
(including dark
Task-Id: t-1o2g8gugkr1.10
|
|
All checks pass. The Style.hs file was already implemented from
a previo
- Mobile-first CSS with Clay - Status badges with colored pills
(Open=yellow, InProgress=blue, Review - Large touch targets (44px min
height) - Single column layout on narrow screens (<600px) - Card-style
sections with subtle shadows - Responsive navigation header - Dark
mode support - Served at GET /style.css
Task-Id: t-1o2g8gugkr1.9
|
|
- Document _/ directory structure in AGENTS.md - Change test database
path from .tasks/ to _/tmp/ - Update all references in tests and docs
|
|
|
|
Tests were polluting production database because TASK_DB_PATH
took precedence over TASK_TEST_MODE. Now test mode always uses
.tasks/tasks-test.db regardless of TASK_DB_PATH setting.
|
|
- More explicit prompt: MUST run bild --test, fix hlint issues -
Add workerQuiet flag to disable ANSI status bar in loop mode - Loop
mode uses simple putText, manual jr work keeps status bar
|
|
The build passes. Let me also verify that the filter functionality
is co
1. **API endpoint with query params** (lines 46-49): ✅ Already
has `Quer 2. **Handler** (lines 776-781): ✅ Already receives
and applies filters 3. **Filter form in HTML** (lines 295-330):
✅ Already has form with drop 4. **Filter logic** (lines 787-807):
✅ Already applies AND-combined filt
The implementation is complete and the hlint suggestions have been
addre
Task-Id: t-1o2g8gugkr1.8
|
|
The implementation is complete. The `/ready` route was already
partially
1. **Priority sorting**: Added `List.sortBy (compare `on`
TaskCore.taskP 2. **Heading format**: Changed from a badge-style
count to the specified
Task-Id: t-1o2g8gugkr1.7
|
|
All checks pass. The review interface implementation is complete:
1. **GET /tasks/:id/review** - Shows review interface with task details
2. **POST /tasks/:id/accept** - Marks task as Done and clears retry
cont 3. **POST /tasks/:id/reject** - Reopens task as Open with retry
context 4. Commit lookup by Task-Id using git log 5. Git diff display
in a pre/code block 6. Merge conflict detection using cherry-pick
check 7. "No commit found" message when applicable
The hlint warning about avoiding lambda was fixed by using `(<.)`
compos
Task-Id: t-1o2g8gugkr1.6
|
|
When amp completes but makes no changes, the task is already done.
Mark it Done directly instead of Review (which would fail to find
a commit).
|
|
|
|
- Reorder loop to check pending reviews before starting new work -
Loop no longer exits on missing commit (skips instead) - Add [loop],
[review], [worker] prefixes to all log messages - Worker leaves task
in InProgress on amp failure (avoids retry loop)
|
|
|
|
- Remove task sync from pre-commit hook - Remove task import from
post-merge and post-checkout hooks - Remove merge driver config from
post-checkout - Remove merge-driver command from jr - Update Task
README for SQLite storage - Delete outdated WORKER_AGENT_GUIDE.md
Amp-Thread-ID:
https://ampcode.com/threads/T-f2358f5a-2d4a-47e7-a895-6647474d8311
Co-authored-by: Amp <amp@ampcode.com>
|
|
Tasks are now stored in SQLite at ~/.cache/omni/tasks/tasks.db.
No need to sync to git anymore. Deleted 51 test cruft tasks.
|
|
Fixes gitlint failures by using the pre-validated task title as the
commit subject line, while preserving amp's output in the body for
review context. Body lines are truncated to 72 chars for compliance.
|
|
1. **POST /tasks/:id/status** endpoint accepting form data with
'status' field (line 35) 2. **Status parsing** from form via `FromForm
StatusForm` instance (lines 47-52) - handles Open, InProgress,
Review, Approved, Done 3. **Calls TaskCore.updateTaskStatus**
(line 337) 4. **Redirects** back to `/tasks/:id` with 303 status
using `PostRedirect` type (line 26, 335-338) 5. **Error handling**
for invalid status via `FromForm` returning `Left "Invalid status"`
(line 52) which Servant converts to a 400 error
Task-Id: t-1o2g8gugkr1.4
|
|
If commit fails (lint hooks, etc), save retry context and reopen task
for another attempt. After 3 failures, mark for human intervention.
Task-Id: t-1o2g8gugkr1
|
|
Task-Id: t-1o2g8gugkr1
|
|
Task-Id: t-1o2g8gugkr1.3 Amp-Thread-ID:
https://ampcode.com/threads/T-dc8aefa0-840e-412d-bc09-9c446be48117
Co-authored-by: Amp <amp@ampcode.com>
|
|
Task-Id: t-1o2g8gugkr1
|
|
Task-Id: t-1o2g8gugkr1.2
|
|
- Remove trailing punctuation from subject line - Truncate to 72
chars max - Capitalize first letter
Task-Id: t-1o2g8gugkr1
|
|
- Run ormolu --mode inplace on changed .hs files - Run hlint --refactor
to auto-fix lint issues - Use tryCommit that returns Either instead
of panicking - Prevents commit hook failures from hlint violations
Task-Id: t-1o2g8gugkr1
|
|
- jr review [<task-id>] [--auto]: auto-accepts if tests pass -
jr review (no args): picks first task in Review status - jr loop
[--delay=N]: runs work->review loop continuously - Auto-review runs
bild --test on task namespace
Task-Id: t-1o2g8gugkr1
|
|
Task-Id: t-1o2g8gugkr1.1
|
|
- Add RetryContext to track failed attempts (merge conflicts,
rejections) - jr review checks for clean cherry-pick before showing
diff - If conflict detected, kicks back to coder with context -
Worker prompt includes retry context (attempt count, conflict files,
reason) - After 3 failed attempts, marks task for human intervention
Task-Id: t-1o2g8gudqlx
|
|
Split amp output into subject/body with blank line separator.
Task-Id: t-1jbp4l5o Amp-Thread-ID:
https://ampcode.com/threads/T-7d88c849-530f-4703-9f90-cbc86d608e3c
Co-authored-by: Amp <amp@ampcode.com>
|