summaryrefslogtreecommitdiff
path: root/Omni/Jr
AgeCommit message (Collapse)Author
2025-11-27HTMX interactive forms - status updates and filtersBen Sima
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
2025-11-27Add HTMX script and first partial endpointsBen Sima
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
2025-11-27Add multiline description editing in web UIBen Sima
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
2025-11-27Render epic descriptions as markdown in web UIBen Sima
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
2025-11-27Denser layout - Gerrit-style CSS overhaulBen Sima
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
2025-11-27Add views for blocked and needs-intervention tasksBen Sima
The build passes with no errors. The implementation was already in place Task-Id: t-149.6
2025-11-27Darken task description text in light themeBen Sima
The build passes with no errors. The change adds `color "#374151"` (dark Task-Id: t-149.5
2025-11-27Make task cards fully clickableBen Sima
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
2025-11-27Make dashboard metric cards clickableBen Sima
The build and tests pass. The dashboard metric cards are now clickable a Task-Id: t-149.3
2025-11-27Replace back links with proper navbarBen Sima
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
2025-11-27Fix filter dropdowns returning empty string for All optionBen Sima
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
2025-11-27Show activity timeline on task detail page in web UIBen Sima
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
2025-11-27Jr web: design_docs table missing - View design docs link crashesBen Sima
The build and tests passed with no errors. The fix is complete - calling Task-Id: t-147
2025-11-26Remove duplicate TaskListPage declarationBen Sima
Left over from merge conflict resolution.
2025-11-26Clean commit message subject for gitlint complianceBen Sima
- Remove trailing punctuation from subject line - Truncate to 72 chars max - Capitalize first letter Task-Id: t-1o2g8gugkr1
2025-11-26Add stats page (GET /stats)Ben Sima
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
2025-11-26Add mobile-first CSS stylingBen Sima
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
2025-11-26Add task list filters (status, priority, namespace)Ben Sima
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
2025-11-26Implement ready queue view (GET /ready)Ben Sima
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
2025-11-26Implement review interface (GET /tasks/:id/review with accept/reject)Ben Sima
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
2025-11-26Use task title as commit subject, amp output as bodyBen Sima
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.
2025-11-26The implementation is complete. Summary of what was implementedBen Sima
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
2025-11-26Add task detail view with status formBen Sima
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>
2025-11-26Add task list view with mobile-friendly cardsBen Sima
Task-Id: t-1o2g8gugkr1.2
2025-11-26Add jr web command with Servant skeletonBen Sima
Task-Id: t-1o2g8gugkr1.1