summaryrefslogtreecommitdiff
path: root/Omni
AgeCommit message (Collapse)Author
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-27Add logActivity helper and integrate into Worker.hsBen Sima
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
2025-11-27Add task_activity table schemaBen Sima
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
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-27Make Omni/Jr.hs executableBen Sima
2025-11-27jr: Fix empty query param parsing and use XDG for db pathBen Sima
- 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>
2025-11-26Bild: mark Toml as not buildableBen Sima
Toml files were marked as buildable but analyzeOne returned Nothing, causing them to fail instead of being skipped with [_].
2025-11-26Bild: collect transitive langdeps for Python buildsBen Sima
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).
2025-11-26Bild: remove spurious warn messagesBen Sima
The multi-line UI now handles status display, so these warn messages are redundant and clutter the output.
2025-11-26Bild: pipelined analyze→build architecture with multi-line UIBen Sima
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)
2025-11-26Unify LineManager for analyze and build phasesBen Sima
- 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.
2025-11-26Remove duplicate TaskListPage declarationBen Sima
Left over from merge conflict resolution.
2025-11-26Replace unicode ellipsis with ASCII to fix xterm parsingBen Sima
The ellipsis character (…, code 8230) was causing xterm.js parsing errors in the jr worker terminal. Replace with ASCII alternatives.
2025-11-26Add simple output mode for bild testsBen Sima
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
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-26Fix bild status line output not overwriting properlyBen Sima
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
2025-11-26Jr: Gerrit-style conflict handling - kick back to coder with contextBen Sima
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
2025-11-26Jr: Sequential task IDsBen Sima
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
2025-11-26Jr: Sequential task IDsBen Sima
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
2025-11-26Jr: Sequential task IDsBen Sima
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
2025-11-26Jr: Sequential task IDsBen Sima
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
2025-11-26Port task commands to jr taskBen Sima
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
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-26Move test database to _/tmp (cabdir)Ben Sima
- Document _/ directory structure in AGENTS.md - Change test database path from .tasks/ to _/tmp/ - Update all references in tests and docs
2025-11-26Add task delete commandBen Sima
2025-11-26Fix test database isolation: TASK_TEST_MODE takes precedenceBen Sima
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.
2025-11-26Improve worker prompt and fix output interleavingBen Sima
- 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
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-26Handle no-changes case: mark task Done instead of ReviewBen Sima
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).
2025-11-26Reset stuck Review tasks to Open when no commit foundBen Sima
2025-11-26Improve jr loop logging and fix review race conditionBen Sima
- 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)
2025-11-26Remove outdated git commit note from task updateBen Sima
2025-11-26Remove git-tracked task references from hooks and docsBen Sima
- 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>
2025-11-26Remove task sync command and git-tracked tasksBen Sima
Tasks are now stored in SQLite at ~/.cache/omni/tasks/tasks.db. No need to sync to git anymore. Deleted 51 test cruft tasks.
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-26Fix worker: only set Review after commit succeedsBen Sima
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
2025-11-26Fix auto-review to use full namespace pathBen Sima
Task-Id: t-1o2g8gugkr1
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-26Simplify worker to use lint --fixBen Sima
Task-Id: t-1o2g8gugkr1
2025-11-26Add task list view with mobile-friendly cardsBen Sima
Task-Id: t-1o2g8gugkr1.2