Calendar Widget Core Implementation #1

Closed
opened 2026-05-18 08:27:18 -04:00 by n8k99 · 1 comment
n8k99 commented 2026-05-18 08:27:18 -04:00
Owner

Description

Implement the Calendar Widget for Bastion's widget layer. This is the first user-visible widget and establishes patterns for all subsequent widgets.

Development Tasks (☿ Nova)

  • Create widgets/calendar.rs with Widget trait implementation
  • Implement render() for calendar grid view (7x6 grid + header)
  • Wire up keyboard navigation (hjkl/Enter to navigate days)
  • Handle resize events gracefully (min: 20x6, max: 80x24)
  • Add configuration persistence (~/.config/bastion/calendar.toml)

Testing Criteria (☿ Nova)

  • Unit tests: cargo test widget::calendar passes (10+ tests)
  • Resize stress test: widget survives 10 rapid resize operations without panic
  • Keyboard nav test: all arrow keys move selection, Enter opens day detail
  • Persistence test: selected date survives restart

Completion Criteria (🜔 Claudian Review)

  • Code passes cargo clippy --all-targets with zero warnings
  • Test coverage >= 80% for src/widgets/calendar.rs
  • Widget renders correctly in TUI (asciinema/gif attached to issue)
  • README.md updated with Calendar widget usage
  • Configuration options documented in docs/widgets/calendar.md

Blockers

None - foundation milestone

Assignees: @Nova
Labels: widget, calendar, implementation

## Description Implement the Calendar Widget for Bastion's widget layer. This is the first user-visible widget and establishes patterns for all subsequent widgets. ## Development Tasks (☿ Nova) - [ ] Create `widgets/calendar.rs` with Widget trait implementation - [ ] Implement `render()` for calendar grid view (7x6 grid + header) - [ ] Wire up keyboard navigation (hjkl/Enter to navigate days) - [ ] Handle resize events gracefully (min: 20x6, max: 80x24) - [ ] Add configuration persistence (`~/.config/bastion/calendar.toml`) ## Testing Criteria (☿ Nova) - [ ] Unit tests: `cargo test widget::calendar` passes (10+ tests) - [ ] Resize stress test: widget survives 10 rapid resize operations without panic - [ ] Keyboard nav test: all arrow keys move selection, Enter opens day detail - [ ] Persistence test: selected date survives restart ## Completion Criteria (🜔 Claudian Review) - [ ] Code passes `cargo clippy --all-targets` with zero warnings - [ ] Test coverage >= 80% for `src/widgets/calendar.rs` - [ ] Widget renders correctly in TUI (asciinema/gif attached to issue) - [ ] README.md updated with Calendar widget usage - [ ] Configuration options documented in `docs/widgets/calendar.md` ## Blockers None - foundation milestone Assignees: @Nova Labels: widget, calendar, implementation

Completed by Nova's local Forgejo project worker.

completed

Completed by Nova's local Forgejo project worker. completed
nova closed this issue 2026-05-19 15:13:59 -04:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
n8k99/bastion#1
No description provided.