summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-03-03bump up version to 0.11.3v0.11.3Paul Buetow
Patch release: code quality improvements based on 100 Go Mistakes analysis. (Retried as 0.11.3 because 0.11.2 was already used in remote)
2026-03-03bump up version to 0.11.2Paul Buetow
Patch release: code quality improvements based on 100 Go Mistakes analysis. - Fixed race condition in global RNG - Optimized render performance by lazy-calling .View() - Improved map pre-allocation - Handled or explicitly silenced unchecked errors - Removed unused functions and fields - Updated deprecated library methods
2026-03-03chore: bump version to 0.11.2v0.11.2Paul Buetow
2026-03-03ui: complete help hotkey coveragePaul Buetow
2026-03-03ui: document B hotkey in help screenPaul Buetow
2026-02-28bump up version to 0.9.3v0.11.1Paul Buetow
Patch release: code-quality refactors (Model sub-structs, date format constant, debug config struct, large function decomposition) and one bug fix (View() double-render of expandedCellView). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28refactor(ui): break up large functions in ui packagePaul Buetow
Go/MEDIUM task (UUID d8b51046): several functions exceeded 50 lines. Extract logical sections into focused helpers: renderTaskDetail() (238→20 lines): delegates to detailStyles(), renderDetailFieldRows() + per-field helpers (Priority, Tags, Due, Project, Recur), renderDetailDescription(), renderDetailAnnotations(), renderDetailFooter(). handleDetailFieldEdit() (128→32 lines): uses switch + shared activation helpers (activatePriorityEdit, activateDueEdit, activateTagsEdit, activateProjectEdit, activateRecurEdit, handleDetailDynamicFields). handleEnterOrEdit() (120→42 lines): reuses the same shared helpers from handlers.go; adds a taskStr closure to remove repetitive nil-guards. View() (82→25 lines): extracts appendInlineInputOverlay() that iterates the active editing overlays and appends the focused widget to the layout. Also fix hardcoded Description blink index (was always 9); introduce detailDescriptionFieldIndex() which returns 9 or 10 depending on whether the task has a Recurrence field, matching the dynamic render position. Clarify that Annotations are read-only in the detail view. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28refactor(task): move debug state into debugConfig structPaul Buetow
DIP/MEDIUM task (UUID 2f64277a): the two bare package-level vars (debugWriter, debugFile) were mutable shared state that prevented concurrent test isolation. Introduce private debugConfig struct and a single package-level instance (dbg). SetDebugLog and run() are updated to use dbg.writer / dbg.file. The public API is unchanged so main.go needs no modification. Add TestSetDebugLog covering: invalid-path error (negative), enable, log write reaching the file, reconfiguration, and disable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28refactor(task): centralize Taskwarrior date format as task.DateFormatPaul Buetow
DRY/MEDIUM task (UUID 2c74960f): the format string "20060102T150405Z" was hardcoded in 5+ places across the task and ui packages. - Export task.DateFormat constant from internal/task/task.go - Replace hardcoded string in task.go and stats.go with DateFormat - Update internal/ui/helpers.go to alias the constant (taskDateFormat = task.DateFormat) rather than repeating the string literal - Replace all 6 raw string literals in table.go with task.DateFormat - Remove duplicate dueText() from table.go; its only call site now uses formatDueText() from helpers.go, which also normalises to midnight UTC for more accurate day-difference calculations Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28fix(ui): remove double-render of expandedCellView in View()Paul Buetow
Bugfix task (UUID d04dccbd): expandedCellView() was called once unconditionally in the base JoinVertical and again inside the cellExpanded guard, producing a duplicate expanded-cell line whenever the user toggled cell expansion. Fix: remove the unconditional call; expand only when cellExpanded is true. Also corrected updateTableHeight() which still reserved an extra row for the now-removed base expanded line (windowHeight-3 → windowHeight-2). Added regression test TestExpandedCellViewNoDoubleRender that verifies the expanded content is absent when cellExpanded is false and appears exactly once when true. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28refactor(ui): group Model fields into embedded sub-structs by concernPaul Buetow
SRP/HIGH task (UUID d2de999b): the Model struct had 50+ fields spanning blink animation, search, detail-view, and inline editing concerns. Group related state into four anonymous embedded sub-structs: blinkState – row blink animation (5 fields) searchState – task-table and help-screen search (10 fields) detailViewState – task detail overlay (11 fields) editState – inline field editing (20 fields) Uses Go anonymous embedding so all existing field-access syntax (m.blinkID, m.searching, …) is preserved — no other files changed. Each sub-struct has a comment explaining its purpose and design rationale, including why detailDescEditing lives in detailViewState rather than editState. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-04feat: add toggle for task completion blinking feedbackv0.11.0Paul Buetow
- Add 'B' hotkey to toggle blinking on/off when tasks are marked done - When disabled, tasks complete immediately without visual distraction - When enabled, provides visual feedback with blinking animation - Show status message indicating toggle state - Bump version to 0.11.0
2026-02-04add go best practicesPaul Buetow
2026-02-04add runtime debugging signals and convert to magev0.10.0Paul Buetow
- Add SIGUSR1 handler for goroutine stack dumps when app hangs - Add SIGUSR2 handler for full profiling (heap, cpu, block) - Add --debug-dir flag for configurable debug output location - Convert build system from go-task to mage - Update documentation with debugging workflow - Bump version to 0.10.0
2026-02-04rename to AGENTS.mdPaul Buetow
2025-11-02update readmePaul Buetow
2025-10-05add open for macosv0.9.3Paul Buetow
2025-07-12add vibe coding infoPaul Buetow
2025-07-08no realisticPaul Buetow
2025-07-02bump up versionv0.9.2Paul Buetow
2025-06-29as of now no TODOsPaul Buetow
2025-06-29feat: add random task jump hotkeys and document navigation keysPaul Buetow
- Add hotkey '1' to jump to a random pending task - Add hotkey '2' to jump to a random pending task without due date - Both hotkeys include visual feedback with blink animation - Document '0' key as synonym for 'g' and 'Home' in help screen - Update help screen navigation section with all new hotkeys 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-29fix: correct field count in task detail view to make description selectablePaul Buetow
The getDetailFieldCount() function was returning an incorrect base count of 9, forgetting to include the Project field. This made the description field unselectable in the detail view. Fixed by updating the base count to 10. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-29fix: resolve text wrapping and task ID issues in TaskSamuraiPaul Buetow
- Add word wrapping for long descriptions and annotations in detail view - Fix task ID showing as 0 after undo operation by improving task lookup - Ensure restored tasks are properly fetched from Taskwarrior with correct IDs 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28chore: add .gitignore and remove tracked binaryPaul Buetow
- Add comprehensive .gitignore file for Go projects - Remove tasksamurai binary from version control - Include common Go build artifacts, IDE files, and OS-specific files The binary should be built locally and not committed to the repository. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28refactor: rearrange table columns to place Project between Recur and TagsPaul Buetow
Move the Project column from its position after Age to between Recur and Tags columns for better logical grouping. This places project information alongside other task metadata fields. Updated all related code including: - Column definitions in newTable and applyColumns - Row data ordering in taskToRow and taskToRowSearch - Column indices in expandedCellView and handleEnterOrEdit - Search matching indices for correct column highlighting 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: add 'T' hotkey to convert first tag to projectPaul Buetow
Implement a new 'T' hotkey that automatically converts the first tag of a task into its project field. This provides a quick workflow for users who initially tag tasks and later want to organize them into projects. The operation: - Takes the first tag from the selected task - Sets it as the task's project - Removes the tag from the task's tag list This is useful for migrating from tag-based organization to project-based organization in Taskwarrior. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: add project field support to TaskSamuraiPaul Buetow
Add comprehensive project field support including: - Project column in table view with automatic width calculation - 'J' hotkey to edit project in both table and detail views - Project field in task detail view (between Start and Entry) - Search functionality includes project names - Enter key on project column allows inline editing The project field integrates seamlessly with Taskwarrior's native project support and follows the same UI patterns as other editable fields in the application. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28docs: add Taskwarrior filter usage examples to READMEPaul Buetow
- Document that tasksamurai accepts Taskwarrior filters as CLI arguments - Add examples showing various filter usage patterns - Clarify that any valid Taskwarrior filter can be passed 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28fix: enable scrolling in help screen viewportPaul Buetow
- Fixed viewport update handling in main Update function - Viewport now properly receives mouse and scroll events - Content is set immediately when help is toggled - Resolves issue where help screen couldn't scroll on small terminals 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: make help screen scrollable and theme-awarePaul Buetow
- Added viewport for help screen to enable scrolling on small terminals - Removed line spacing between help section headers and content for compactness - Updated help screen to follow current color theme - Added support for theme changes in help view (including disco mode) - Added keyboard navigation for help viewport (up/down, page up/down, home/end) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: add external editor support for description editing in detail viewv0.9.1Paul Buetow
- Enable editing task description using external editor ($EDITOR) - Create temporary file for editing and handle TUI editor properly - Show editing indicator while external editor is active - Add blinking feedback after successful description update - Increment version from 0.9.0 to 0.9.1 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: add editing and visual feedback to task detail viewPaul Buetow
- Enable in-place editing of Priority, Tags, Due, and Recurrence fields - Add blinking effect (bright yellow) after field changes - Change all status message timeouts from 3 to 2 seconds - Support disco mode in detail view (random theme on edit) - Add showLabel parameter to view functions to hide redundant labels - Temporarily clear input prompts in detail view for cleaner UI 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: add field navigation to task detail viewPaul Buetow
- Implement field-by-field navigation using arrow keys and vi-style keys (↑/k, ↓/j) - Add highlighting for the currently selected field with theme's selected background - Support Home/g and End/G keys to jump to first/last field - Dynamically calculate field count based on optional fields (recurrence, annotations) - Update instructions to show navigation help 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: implement detailed task view with improved readabilityPaul Buetow
- Add new task detail view accessible via Enter key - Show all task fields in vertical layout with full descriptions - Implement search functionality within task detail view - Use lighter text colors for better readability (252 for values, 250 for descriptions) - Add ESC/Q key handlers to return to table view - Keep 'i' key for original expand/edit functionality 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: add search functionality to help mode and improve help displayPaul Buetow
- Add search capability (/) within help dialog - Implement n/N navigation for search results - Add regex pattern matching for help text - Improve help text formatting and scrolling - Update README to simplify hotkey documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28fix: resolve test failures and improve code qualityPaul Buetow
- Fix file handle leak in SetDebugLog by tracking and closing previous files - Add stderr capture to all taskwarrior commands for better error messages - Fix timezone issues in date handling tests by normalizing to UTC - Change Update method to pointer receiver for consistency - Update all test type assertions to handle pointer receivers correctly - Remove unused imports and variables All tests now pass successfully. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-27fix unit testPaul Buetow
2025-06-27Fix multiple bugs and improve error handlingPaul Buetow
- Fix file handle leak in SetDebugLog by properly closing previous debug files - Capture and display stderr from all taskwarrior commands for better error messages - Handle browser launch errors with status bar notifications - Add validation for task IDs to prevent negative/zero IDs - Add mutual exclusion for editing modes to prevent UI state conflicts - Add bounds checking for array access in expandedCellView - Cache compiled regular expressions for search performance - Add CLAUDE.md file with project documentation for AI assistance 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24Merge pull request #92 from snonux/codex/add---disco-startup-flag-with-hotkeyPaul Bütow
Implement disco mode flag
2025-06-24Add disco mode with flag and hotkeyPaul Bütow
2025-06-24Merge pull request #91 from ↵Paul Bütow
snonux/codex/add-u-hotkey-for-url-extraction-and-open Add URL open hotkey
2025-06-24Rename URL open hotkeyPaul Bütow
2025-06-24Merge pull request #90 from snonux/codex/allow-navigation-during-task-blinkingPaul Bütow
Allow navigation during blinking
2025-06-24allow navigation during blinkingPaul Bütow
2025-06-22Merge pull request #88 from snonux/codex/add-space-hotkey-to-refresh-task-listPaul Bütow
Add space hotkey for refreshing tasks
2025-06-22Add space hotkey to refresh task listPaul Bütow
2025-06-22add realistic logoPaul Buetow
2025-06-22add realistic logoPaul Buetow
2025-06-22add realistic logoPaul Buetow