| Age | Commit message (Collapse) | Author |
|
The implementation is complete. Here's a summary of what was
implemented
**Changes to [Omni/Jr.hs](file:///home/ben/omni/Omni/Jr.hs):**
1. **`autoReview`** - Now adds a review comment with:
- Commit SHA (short) - Test target (namespace) - Result
(PASSED/FAILED) - Test output (truncated to 1000 chars) when
tests fail
2. **`interactiveReview`** - Now adds a human review comment with:
- Commit SHA (short) - Result (ACCEPTED/REJECTED) - Rejection reason
(when rejected)
3. **`handleConflict`** - Now adds a merge conflict comment with:
- Commit SHA (short) - Attempt number - List of conflicting files
4. **Helper functions added:**
- `buildReviewComment` - Formats auto-review results -
`buildHumanReviewComment` - Formats human review results -
`buildConflictComment` - Formats merge conflict info -
`truncateOutput` - Truncates long test output
Task-Id: t-193.4
|
|
Build and tests pass. The change has been successfully implemented
- Dra
Task-Id: t-192
|
|
Build and tests pass. The dark mode styles for the retry/failure banner
Task-Id: t-191
|
|
The build and tests pass. The dark mode styles for KB fact detail
page f
Task-Id: t-190
|
|
All tests pass. The implementation is complete:
**Summary of changes:**
1. **Omni/Task/Core.hs** - Added helper functions:
- `getBlockingImpact`: Counts how many tasks are transitively
blocked - `getTransitiveDependents`: Gets all tasks that depend
on a task (di - `dependsOnTask`: Helper to check if a task depends
on a given ID wi
2. **Omni/Jr/Web.hs** - Updated blocked page:
- Changed `BlockedPage` type to include blocking impact:
`[(TaskCore. - Updated `blockedHandler` to compute blocking impact
and sort by it - Added `renderBlockedTaskCard` to display tasks with
their blocking - Updated the info message to explain the sorting
3. **Omni/Jr/Web/Style.hs** - Added CSS:
- `.blocking-impact` badge style (light mode) - `.blocking-impact`
dark mode style
Task-Id: t-189
|
|
The AGENTS.md file has been updated correctly. The "Common Commands"
sec
Task-Id: t-188
|
|
Build and tests pass. The fix is complete - task descriptions now
render
Task-Id: t-187
|
|
All checks pass. The implementation is complete:
1. Added imports for `Data.List` and `Omni.Fact` 2. Added
`getRelevantFacts` function that retrieves facts for the task's
3. Added `formatFacts` and `formatFact` functions to format facts
for in 4. Updated `runAmp` to call `getRelevantFacts`, format them,
and append
Task-Id: t-186
|
|
Build and lint both pass. The implementation:
1. Updated `formatTask` in
[Omni/Agent/Worker.hs](file:///home/ben/omni/ 2. Extracted deps
formatting to a separate `formatDeps` helper for consi 3. Added
`formatComments` and `formatComment` helpers that show timestam
Task-Id: t-184
|
|
The build passes. The comments UI is already fully implemented in
the co
1. **Route**: `/tasks/:id/comment` with POST handler (line 226)
2. **Handler**: `taskCommentHandler` (lines 763-766) calls
`TaskCore.add 3. **Form type**: `CommentForm` (lines 374-379)
4. **Display section**: renders in `TaskDetailPage` (lines 1484-1490)
sh
- Comment count in header - Empty message if no comments - Each
comment with text and relative timestamp
5. **Comment form**: textarea with "Post Comment" button (lines
1553-156 6. **Helper function**: `renderComment` (lines 1547-1551)
7. **CSS**: Full styling in `Style.hs` including dark mode (lines
552-58
The implementation is complete and the build passes.
Task-Id: t-183
|
|
The build passes successfully. Let me provide a summary of the
changes m
I implemented the clickable priority dropdown on task detail pages,
mirr
1. **Added new API route** for priority updates:
```haskell "tasks" :> Capture "id" Text :> "priority" :> ReqBody
'[FormUrlEncode ```
2. **Added new types**:
- `PriorityBadgePartial` - partial response for HTMX updates -
`PriorityForm` - form data for priority changes with `FromForm` ins
3. **Added handler** `taskPriorityHandler` that updates task
priority vi
4. **Added priority dropdown components**:
- `priorityBadgeWithForm` - container with clickable badge and
dropdo - `clickablePriorityBadge` - the clickable badge showing
current prio - `priorityDropdownOptions` - dropdown menu with
P0-P4 options - `priorityOption` - individual priority option with
HTMX form
5. **Added JavaScript** `priorityDropdownJs` for dropdown toggle/close
b
6. **Updated task detail page** to use `priorityBadgeWithForm`
instead o
7. **Added `ToHtml` instance** for `PriorityBadgePartial`
1. **Added priority badge styles** for P0-P4 with appropriate colors
2. **Added priority dropdown styles** (mirroring status dropdown)
3. **Added dark mode styles** for priority badges and dropdown
Task-Id: t-182
|
|
The implementation is complete and all tests pass. Here's a summary
of w
1. Added `SortOrder` data type with 5 options: `SortNewest`,
`SortOldest 2. Added helper functions: `parseSortOrder`,
`sortOrderToParam`, `sortOr 3. Updated API routes to include `?sort=`
query param for `/ready`, `/bl 4. Updated page data types to include
`SortOrder` 5. Updated all list handlers to parse sort param and apply
sorting 6. Added `sortDropdown` component that renders a dropdown
with all sort 7. Added `sortOption` helper to render individual sort
options with acti 8. Updated all `ToHtml` instances for list pages
to render the sort drop
1. Added `sortDropdownStyles` for the page header row and sort dropdown
2. Added dark mode styles for the sort dropdown
Task-Id: t-181
|
|
The build and tests pass with no errors. The time range filter
feature f
**Implementation summary:** - Route accepts
`?range=today|week|month|all` query param - `TimeRange` type with
`Today`, `Week`, `Month`, `AllTime` variants - `homeHandler` filters
both tasks and activities by time range - Toggle buttons rendered
with `timeFilterBtn` helper - Full CSS styling in `timeFilterStyles`
with dark mode support - Default selection: "All Time"
Task-Id: t-180
|
|
The implementation is complete. The build passed with `bild --test
Omni/
**Summary of changes:**
1. **Omni/Task/Core.hs**: Added `getGlobalAggregatedMetrics ::
IO Aggreg
2. **Omni/Jr/Web.hs**:
- Updated `HomePage` data type to include `AggregatedMetrics`
paramet - Updated `homeHandler` to fetch global metrics via
`getGlobalAggrega - Updated `ToHtml HomePage` instance to add
two new cards: "Cost" (fo - Added helper functions `metricCard`,
`formatCost`, and `formatDurat
3. **Omni/Jr/Web/Style.hs**: Added `badge-neutral` CSS styling
(gray bor
Task-Id: t-179
|
|
The fix is complete:
1. Changed the Cancel element from `<a href="#">` to `<button
type="butt 2. Added button reset styling (transparent background,
no border, underl
The `<button>` element works better with HTMX because it doesn't
have th
Task-Id: t-178
|
|
Build and tests pass. I've removed the background and border from
`.brea
Task-Id: t-177
|
|
The implementation is complete. Here's a summary of the changes:
**Omni/Jr/Web.hs:** 1. Added new API routes for
`/tasks/:id/description/view` and `/tasks/:i 2. Added
`DescriptionViewPartial` and `DescriptionEditPartial` data
type 3. Added `ToHtml` instances for both partials with HTMX
attributes for v 4. Added handlers: `descriptionViewHandler`,
`descriptionEditHandler`, ` 5. Updated the TaskDetailPage render to
use the view partial instead of
**Omni/Jr/Web/Style.hs:** 1. Added `.description-block` container
styles 2. Added `.description-header` flex styles for header with
title and edi 3. Added `.edit-link` and `.cancel-link` styles (12px
font, blue for edi 4. Added dark mode overrides for the links
Task-Id: t-175
|
|
Build and tests passed with no errors.
Task-Id: t-174
|
|
The build passed with no errors. The implementation adds:
1. JavaScript click-toggle handler for navbar dropdowns (closes
all, the 2. Click-outside-to-close behavior 3. CSS rule for
`.navbar-dropdown.open` state to show dropdown content
Task-Id: t-173
|
|
The implementation is complete. Here's a summary of the changes made:
1. Added `Breadcrumb` data type and `Breadcrumbs` type alias
2. Added `pageBodyWithCrumbs` function that renders the page with
breadc 3. Added `renderBreadcrumbs` function to render the breadcrumb
navigatio 4. Added `getAncestors` helper to traverse task parent chain
5. Added `taskBreadcrumbs` helper to build breadcrumbs including parent
Updated all page ToHtml instances to use breadcrumbs: -
`ReadyQueuePage`: Jr > Ready Queue - `BlockedPage`: Jr > Blocked -
`InterventionPage`: Jr > Needs Intervention - `KBPage`: Jr > Knowledge
Base - `FactDetailPage`: Jr > Knowledge Base > Fact #N - `EpicsPage`:
Jr > Epics - `TaskListPage`: Jr > Tasks - `TaskDetailPage`: Jr >
Tasks > (parent chain) > task-id - `TaskReviewPage`: Jr > Tasks >
task-id > Review - `TaskDiffPage`: Jr > Tasks > task-id > Diff (short
hash) - `StatsPage`: Jr > Stats - `HomePage`: Uses regular `pageBody`
(no breadcrumbs)
Added `breadcrumbStyles` function with CSS for: -
`.breadcrumb-container`: Light gray background, subtle bottom border -
`.breadcrumb-list`: Flex layout with wrapping - `.breadcrumb-item`:
Flex items with gap - `.breadcrumb-sep`: Gray separator ">" -
`.breadcrumb-current`: Current page label (no link) - Link styling
for breadcrumb links
Added dark mode overrides for breadcrumbs in `darkModeStyles`.
Task-Id: t-172
|
|
The implementation is complete. Here's a summary of changes:
**Omni/Jr/Web.hs:** - Added `metaSep` helper function for the `·`
separator - Added top-level `priorityDesc` function mapping priority
levels to hum - Replaced the vertical `detail-row` layout with compact
inline `task-me
- Primary line: ID · Type · Status · Priority · Namespace
(optional) - Secondary line: Parent (optional) · Created · Updated
- Removed the shadowing local `priorityDesc` from the `where` clause
**Omni/Jr/Web/Style.hs:** - Added `taskMetaStyles` function with
styles for `.task-meta`, `.task-m - Added dark mode overrides for the
new task-meta classes - Registered `taskMetaStyles` in the stylesheet
Task-Id: t-171
|
|
The fix is complete. The build and tests pass. The change adds `color
"#
Task-Id: t-170
|
|
Build and tests pass. The implementation is complete:
**Summary of changes to
[Omni/Jr/Web.hs](file:///home/ben/omni/Omni/Jr/W
1. Added `Data.Time.Clock.POSIX` import for `posixSecondsToUTCTime` and
2. Replaced `RecentActivityPartial` with two new types:
- `RecentActivityNewPartial` - for auto-refresh (prepends new items)
- `RecentActivityMorePartial` - for "Load More" pagination
3. Updated API routes:
- `/partials/recent-activity-new?since=<unix-ts>` - returns new
items - `/partials/recent-activity-more?offset=<n>` - returns
paginated old
4. Updated `HomePage` render with proper HTMX attributes:
- Added `#recent-activity` ID and `data-newest-ts` attribute
- Added `#activity-list` ID for the list container - Added
`#activity-load-more` ID for the button - Updated hx-targets and
hx-swap attributes
5. Added `taskToUnixTs` helper function
6. Created two new ToHtml instances with OOB updates for button
replacem
Task-Id: t-169
|
|
|
|
The build and tests pass. The `hx-boost="true"` is already
implemented o
```haskell pageBody content =
Lucid.body_ [Lucid.makeAttribute "hx-boost" "true"] <| do
navbar content
```
This means: - All anchor tags (`<a>`) and forms within the body
will automatically u - Page content will be swapped via AJAX without
full page reloads - Scroll position is preserved, making navigation
feel snappier
The task appears to have already been implemented correctly. The
build p
Task-Id: t-151.5
|
|
The build and tests pass. The implementation adds a description
edit for
1. An expandable `<details>` section similar to the existing Epic
design 2. A textarea for editing the description 3. HTMX `hx-post`
for seamless update (with `hx-swap="none"` since the e 4. Also shows
"No description yet." message when description is empty (p
Task-Id: t-168
|
|
All tests pass. Here's a summary of the changes I made:
1. **Added `Comment` data type** in `Omni/Task/Core.hs` with
`commentTex 2. **Added `taskComments` field** to the `Task` type
to store a list of 3. **Updated database schema** with a `comments
TEXT` column (stored as 4. **Added SQL instances** for `[Comment]`
to serialize/deserialize 5. **Added `addComment` function** to
add timestamped comments to tasks 6. **Added CLI command** `task
comment <id> <message> [--json]` 7. **Updated `showTaskDetailed`**
to display comments in the detailed vi 8. **Added unit tests**
for comments functionality 9. **Added CLI tests** for the comment
command 10. **Fixed dependent files** (`Omni/Agent/Worker.hs` and
`Omni/Jr/Web.h
Task-Id: t-167
|
|
All tests pass. The changes are complete:
**Summary of changes:** 1. **Omni/Task/Core.hs**: Changed
`taskDescription` from `Maybe Text` to 2. **Omni/Task.hs**:
Made `--description` required on CLI `create` (pani
3. **Omni/Task/RaceTest.hs**: Updated test to provide descriptions
Task-Id: t-165
|
|
Done. I've updated the nixos-unstable hash in
[Sources.json](/home/ben/o
Task-Id: t-163
|
|
The fix is complete. Changed `python311.withPackages` to
`unstable.pytho
1. `python312` has the proper `llm` override defined in
Python.nix 2. `python311` only overrides `llm-ollama` and
`llm-sentence-transformer 3. Using `unstable` is consistent with
other AI tools in the same sectio
Task-Id: t-163
|
|
The build passed. The task was to update nixpkgs hash in Biz/Bild.nix,
b
Task-Id: t-163
|
|
The build and tests pass. The change is complete - the task title
in com
Task-Id: t-159
|
|
The build and tests pass. The "Jr Dashboard" header has been removed
fro
Task-Id: t-154.6
|
|
The implementation is complete. Here's a summary:
**Changes made:** 1. **API**: Added `QueryParam "offset" Int` to the
`/partials/recent-act 2. **Data types**:
- Updated `HomePage` to include a `Bool` for whether there are
more t - Updated `RecentActivityPartial` to include `nextOffset ::
Int` and
3. **Homepage rendering**: Shows a "Load More" button when there
are mor 4. **Partial rendering**: The `RecentActivityPartial` now
shows a "Load 5. **Handler**: `recentActivityHandler` now supports
pagination with off 6. **Styling**: Added CSS for `.load-more-btn`
and `.btn-secondary` clas
The HTMX integration uses: - `hx-get` to fetch the next page with
offset - `hx-target="closest .recent-activity"` to target the parent
container - `hx-swap="beforeend"` to append new items (including
another Load More
Task-Id: t-151.4
|
|
The build passes with no errors. The AGENTS.md update adds the
instructi
Task-Id: t-158.8
|
|
All tests pass. The create fact form has been added to the web
UI. Here'
1. **Added `FactCreateForm` data type** - New form type to handle the
cr 2. **Added API route** - `POST /kb/create` endpoint that accepts
the for 3. **Added handler** - `factCreateHandler` that creates a
new fact using 4. **Added form UI** - A collapsible form on the KB
page with fields for
- Project (required) - Fact Content (required textarea) - Related
Files (optional, comma-separated) - Confidence level (0.0-1.0,
default 0.8)
5. **Added CSS styles** - Styling for the create fact section in
both li
Task-Id: t-158.6
|
|
All tests pass with no warnings. The implementation is complete:
1. **Added new routes** (`/kb/:id`, `/kb/:id/edit`, `/kb/:id/delete`)
to 2. **Created `FactDetailPage` data type** with `FactDetailFound`
and `Fa 3. **Created `FactEditForm`** data type for handling
form submissions 4. **Added handlers** (`factDetailHandler`,
`factEditHandler`, `factDele 5. **Added `ToHtml` instance for
`FactDetailPage`** with:
- Detail view showing project, confidence, created date - Editable
content textarea - Related files input - Confidence slider -
Source task link - Danger zone with delete button
6. **Updated KB listing** to make facts clickable links to their
detail 7. **Added CSS styles** for form elements, buttons, danger zone,
and err
Task-Id: t-158.5
|
|
The implementation is complete. The `/kb` web page now:
1. Fetches all facts from the database via `Fact.getAllFacts`
2. Displays each fact in a card showing:
- Fact ID - Confidence score as a colored badge (green ≥80%,
yellow ≥50%, red < - Project name - Fact content - Related files
(if any) - Source task link (if any)
Task-Id: t-158.4
|
|
The build and tests pass. The hlint suggestions have been fixed:
1. Changed `Text.pack <$>` to `Text.pack </` on line 528 2. Replaced
the case expression with `maybe Fact.getAllFacts Fact.getFac 3. Changed
`Text.pack <$>` to `Text.pack </` on line 555
Task-Id: t-158.3
|
|
All task management commands should go through the jr CLI wrapper.
|
|
The build passes now. The task was to add `Omni/Fact.hs` with CRUD
opera
- `createFact` - Creates a new fact - `getFact` - Gets a fact by ID -
`getAllFacts` - Gets all facts - `getFactsByProject` - Gets facts
for a project - `getFactsByFile` - Gets facts related to a file -
`updateFact` - Updates an existing fact - `deleteFact` - Deletes a
fact by ID
The actual fix needed was completing the pattern matches in
`Omni/Jr/Web
Task-Id: t-158.2
|
|
This allows Servant's QueryParam Maybe to treat Left as "parameter not
provided", so the 'All' filter option (which sends empty string value)
now works correctly instead of causing an "Invalid priority" error.
Task-Id: t-146
|
|
All changes are in place. The build and tests pass. The implementation
i
1. **Added `Draft` to Status enum** - First in sequence: `Draft |
Open | 2. **Excluded Draft from getReadyTasks** - Uses `taskStatus
t `elem` [Op 3. **CLI support** - `task update <id> draft` works,
`task list --status 4. **Display coloring** - Draft shows in gray
with `[.]` indicator in tr 5. **TaskStats** - Added `draftTasks`
field and display in stats output 6. **Tests** - Added unit test for
draft exclusion from ready tasks and
Task-Id: t-166
|
|
The Omni/Fact.hs module is complete with CRUD operations:
- **createFact**: Create a new fact with project, content, related
files - **getFact**: Retrieve a fact by ID - **getAllFacts**: Get all
facts from the database - **getFactsByProject**: Get facts filtered by
project - **getFactsByFile**: Get facts related to a specific file -
**updateFact**: Update an existing fact's content, related files,
and - **deleteFact**: Delete a fact by ID
The module properly re-exports the `Fact` data type from
`Omni.Task.Core
Task-Id: t-158.2
|
|
Tasks that have failed 3 or more times need human intervention and
should not appear in the ready queue. This prevents infinite retry
loops.
Task-Id: t-164 Amp-Thread-ID:
https://ampcode.com/threads/T-4c8bc88f-f8f9-4921-96e5-3b68552c0bc0
Co-authored-by: Amp <amp@ampcode.com>
|
|
The implementation is complete. Here's a summary of the keyboard
accessi
**Changes to Omni/Jr/Web.hs:** 1. Added `statusDropdownJs` - JavaScript
functions for keyboard handling
- `toggleStatusDropdown()` - Opens/closes dropdown, updates
aria-expa - `closeStatusDropdown()` - Closes dropdown, returns focus
to trigger - `handleStatusKeydown()` - Handles Enter/Space (toggle),
Escape (clo - `handleMenuItemKeydown()` - Handles ArrowUp/ArrowDown
(navigate), E - Click-outside handler to close open dropdowns
2. Updated `clickableBadge`:
- Added `tabindex="0"` for keyboard focusability - Added
`role="button"` for screen readers - Added `aria-haspopup="true"`
and `aria-expanded="false"` - Changed onclick to use
`toggleStatusDropdown()` function - Added `onkeydown` handler
3. Updated `statusDropdownOptions`:
- Added `role="menu"` and `aria-label` for accessibility
4. Updated `statusOption`:
- Added `role="none"` on form wrapper - Added `role="menuitem"`
on button - Added `tabindex="-1"` (focus managed by JS) - Added
`onkeydown` handler
**Changes to Omni/Jr/Web/Style.hs:** - Added focus styles
for `.status-dropdown-option:focus` - Added focus styles for
`.status-badge-clickable:focus`
Task-Id: t-157.3
|
|
The implementation is complete. The changes I made:
1. **Web.hs** - Replaced the `statusBadgeWithForm` function from a
`<sel
- `statusBadgeWithForm` now creates a container div with the
clickabl - `clickableBadge` renders a badge that, when clicked,
toggles the "o - `statusDropdownOptions` renders all the status
options as badge-sty - `statusOption` renders each status option
as an HTMX form that upda
2. **Style.hs** - Added CSS styles for the new dropdown component:
- `.status-badge-dropdown` - Container with relative positioning
- `.status-badge-clickable` - Clickable badge styling with
cursor poi - `.dropdown-arrow` - Arrow indicator styling -
`.status-dropdown-menu` - Hidden dropdown that appears when parent -
`.status-option-form` and `.status-dropdown-option` - Styling for
o - Dark mode support for the dropdown menu
Task-Id: t-157.2
|
|
The build and tests pass. The changes merge the status badge display
and
Task-Id: t-157.1
|
|
The changes are in place. The build passes with no errors. Summary
of ch
1. **`.actions`** - Added explicit `flexDirection row` to ensure
horizon 2. **`.review-actions`** - Added `display flex`, `flexDirection
row`, `f 3. **`.form-actions`** - Added same flex row layout for
consistency
Task-Id: t-156.6
|
|
The changes are complete. The filter buttons are now styled to
be horizo
1. Changed `.filter-group` from `flexDirection column` to
`flexDirection 2. Added `whiteSpace nowrap` to labels to prevent
wrapping 3. Updated responsive styles for mobile to maintain horizontal
layout wi
Task-Id: t-156.5
|