| Age | Commit message (Collapse) | Author |
|
The build and tests pass. The retry context display is already
implement
The implementation includes: - Current attempt number (e.g., "Attempt
3 of 3") at line 721 - Failure reason with `summarizeReason` at lines
696-697 - Original commit display at lines 699-703 - Conflict files
list at lines 705-710 - Warning banner when max retries exceeded at
lines 691-692 and 712-715
Task-Id: t-153.3
|
|
All the pieces are in place: 1. Route: `GET /tasks/:id/diff/:commit`
(line 65) 2. Data type: `TaskDiffPage` (line 119) 3. `ToHtml` instance
for rendering (line 759) 4. Handler: `taskDiffHandler` (line 1225)
5. Helper: `getDiffForCommit` (line 1301)
The implementation shows: - Full git diff output via `git show
<commit>` - Pre-formatted output (`<pre class="diff-block">`) - Link
back to task detail page - Proper error handling for invalid commits
Task-Id: t-153.2
|
|
All tests pass. The implementation is complete:
1. Added `GitCommit` data type with hash, short hash, summary,
author, r 2. Added `getCommitsForTask` function that queries `git
log --grep='Task 3. Updated `TaskDetailPage` to include commits
4. Updated `taskDetailHandler` to fetch commits for the task 5. Added
`renderCommit` helper to display each commit with links to `/ta
6. Added CSS styles for the commit list in both light and dark modes
Task-Id: t-153.1
|
|
All tests pass. Let me summarize what was implemented:
- Extended `TaskActivity` type with new fields:
- `activityAmpThreadUrl` - Link to amp thread - `activityStartedAt` -
Work start timestamp - `activityCompletedAt` - Work completion
timestamp - `activityCostCents` - API cost in cents -
`activityTokensUsed` - Token usage count
- Updated `SQL.FromRow` and `SQL.ToRow` instances for the new fields -
Updated schema to include new columns in `task_activity` table - Added
`logActivityWithMetrics` function to log activities with all met -
Added `updateActivityMetrics` function to update metrics on existing
a - Added `getLatestRunningActivity` helper function
- Captures execution timing (start/end timestamps) - Retrieves amp
thread URL from `AgentLog.getStatus` - Converts credits to cents
and logs to activity record - Uses `logActivityWithMetrics` and
`updateActivityMetrics` for tracking
- Added `getStatus` function to retrieve current status (thread
URL, cre
- Added `TaskMetricsPartial` type for HTMX auto-refresh - Extended
`TaskDetailPage` to include `RetryContext` - Added Execution Details
section on task detail page showing:
- Amp Thread URL (clickable link) - Duration (formatted as "Xm Ys")
- Cost (formatted as "$X.XX") - Retry Attempt count (if applicable)
- Last Activity timestamp
- Added `/partials/task/:id/metrics` endpoint for HTMX auto-refresh
- Auto-refresh enabled while task is InProgress (every 5s) - Added
`renderExecutionDetails` helper function
- Added `executionDetailsStyles` for metric rows and execution section
- Added dark mode support for execution details section
Task-Id: t-148.4
|
|
The build passes. The HTMX interactive forms for status updates
and filt
1. **Status update dropdown on task detail** (lines 176-197):
`statusBad
2. **Filter form on /tasks** (lines 322-378): The form has
`hx-get='/par
The only fix needed was changing `data TaskListPartial` to `newtype
Task
Task-Id: t-151.2
|
|
All handlers are wired in. The implementation is complete:
1. **HTMX script tag added** to `pageHead` (CDN at unpkg.com
with integr 2. **Partial routes created** in API type:
`/partials/recent-activity` a 3. **Handlers implemented** for both
partials 4. **HTMX attributes added** to the HomePage:
- Ready Queue count: `hx-get="/partials/ready-count"`
with `hx-trigge - Recent Activity div:
`hx-get="/partials/recent-activity"` with `hx-
Task-Id: t-151.1
|
|
The implementation is complete and passing. Here's a summary of
what was
**Changes made:**
1. **Added POST endpoint** for `/tasks/:id/description` - updates
the ta
2. **Added `DescriptionForm` type** with `FromForm` instance to
parse th
3. **Added `taskDescriptionHandler`** that:
- Receives the description text from the form - Treats
empty/whitespace-only descriptions as `Nothing` - Uses
`TaskCore.editTask` to update the task description
4. **Updated epic detail page** to include:
- A collapsible "Edit Design" section using `<details>` element -
A multiline `<textarea>` pre-populated with the current description
- A "Save Design" button that submits to the new endpoint - Shows
"No design document yet." when there's no description
5. **Added CSS styles** for the new elements:
- `.edit-description` - styling for the collapsible edit section -
`.description-textarea` - monospace font textarea for markdown
edit - `.form-actions` - container for the submit button - Dark
mode support for all new elements
Task-Id: t-150.2
|
|
Successfully implemented markdown rendering for epic descriptions
in the
1.
**[Omni/Jr/Web.hs](file:///home/ben/omni/Omni/Jr/Web.hs#L380-L391)**:
- "Design" header instead of "Description" - Markdown rendering via
`renderMarkdown` function - Full-width `.markdown-content` wrapper
2.
**[Omni/Jr/Web.hs](file:///home/ben/omni/Omni/Jr/Web.hs#L667-L779)**:
- Headers (`#`, `##`, `###`) - Lists (`-` or `*`) - Code blocks (`
``` `) - Inline code (`` ` ``) - Bold text (`**`)
3.
**[Omni/Jr/Web/Style.hs](file:///home/ben/omni/Omni/Jr/Web/Style.hs#L
- `.markdown-content` with good typography - Headers with
appropriate sizing/spacing - Code blocks and inline code - Lists
with proper indentation - Dark mode support
Task-Id: t-150.1
|
|
Build passes. The CSS has been updated with the denser, Gerrit-style
lay
- **Border-radius**: Reduced from 8px to 2px - **Padding**:
Reduced from 16px to 8px/10px - **Gaps**: Reduced from 8-12px to
2-6px - **Shadows**: Replaced with subtle 1px borders (`#d0d0d0`)
- **Line-height**: Tightened from 1.5em to 1.3em - **Font sizes**:
Reduced across the board (body 16→14px, headers smalle - **Button
heights**: Reduced from 44px to 32px - **List row heights**: Made
denser with smaller padding and gaps
Task-Id: t-149.7
|
|
The build passes with no errors. The implementation was already
in place
Task-Id: t-149.6
|
|
The build passes with no errors. The change adds `color "#374151"`
(dark
Task-Id: t-149.5
|
|
The build and tests pass. The task is complete:
1. Changed `renderTaskCard` to wrap the entire card in an `<a>`
element 2. Changed the inner task-id from an `<a>` to a `<span>`
since the whole 3. Added CSS styles for `.task-card-link` to ensure
proper display (bloc
Task-Id: t-149.4
|
|
The build and tests pass. The dashboard metric cards are now
clickable a
Task-Id: t-149.3
|
|
The implementation is complete:
1. **Created a shared `navbar` component** with Jr branding and
navigati 2. **Replaced all back links** (`← Back to Dashboard`,
`← Back to Tasks` 3. **Added navbar styling** in the Style.hs file,
including:
- Light mode styles - Dark mode styles - Mobile responsive styles
4. **Build passes** with `bild --test Omni/Jr.hs`
Task-Id: t-149.2
|
|
The build passes. The fix I implemented:
1. **Changed the API type** in `Omni/Jr/Web.hs` to use `QueryParam
"stat 2. **Added manual parsing** in `taskListHandler` with
`parseStatus` and 3. **Applied `emptyToNothing`** to both status and
priority params befor
This ensures that when "All" is selected (empty string), it's
treated as
I also fixed two pre-existing issues that were blocking the build:
- Type annotation for `show stage` in `Omni/Task/Core.hs` -
`AesonKey.fromText` conversion in `Omni/Agent/Worker.hs`
Task-Id: t-149.1
|
|
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
|
|
The build and tests passed with no errors. The fix is complete -
calling
Task-Id: t-147
|
|
Left over from merge conflict resolution.
|
|
- Remove trailing punctuation from subject line - Truncate to 72
chars max - Capitalize first letter
Task-Id: t-1o2g8gugkr1
|
|
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
|
|
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
|
|
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
|
|
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.2
|
|
Task-Id: t-1o2g8gugkr1.1
|