Skip to content

feat(ui): calendar view for frontmatter dates#29

Open
advancedresearcharray wants to merge 10 commits into
mainfrom
feat/calendar-view-427
Open

feat(ui): calendar view for frontmatter dates#29
advancedresearcharray wants to merge 10 commits into
mainfrom
feat/calendar-view-427

Conversation

@advancedresearcharray

Copy link
Copy Markdown
Owner

Summary

  • Adds a full-screen Calendar toolbar view that shows pages with date frontmatter on a monthly grid (week strip on mobile)
  • Configurable date field dropdown (probed via DQL COUNT WHERE <field> IS NOT NULL), prev/next month + month picker + Today navigation
  • Day cells show workflow/tag-colored dots; single page navigates directly, multiple pages open a Popover list with Card/Badge items
  • Feature flag [ui.features] calendar (default enabled), route /view/calendar, keybinding Mod+Shift+C

Upstream: kiwifs#427

Test plan

  • go test ./internal/config/... ./internal/keybindings/... ./internal/api/...
  • cd ui && npm test -- --run (204 passed)
  • Open Calendar from toolbar; verify pages appear on correct days
  • Switch date field dropdown; verify month data reloads
  • Click day with one page → navigates; multiple pages → popover list
  • Navigate with prev/next, month picker, Today
  • Visit /view/calendar directly; browser back closes view
  • Set [ui.features] calendar = false → toolbar button hidden

Made with Cursor

amelia751 and others added 9 commits June 29, 2026 15:49
kiwifs#446)

Standard markdown links like [text](file.md#section) now use the SPA
router with scroll-to-anchor, matching the behavior of [[wiki#heading]]
links. Same-page #anchor links also get smooth scrolling.

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve `..` and `.` segments in relative .md#anchor links so that
cross-directory links like `../00-foundations/_index.md#section` produce
clean paths (e.g. `00-foundations/_index.md`) instead of leaving `..`
in the URL and breadcrumb.

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
Use github.com/fvbommel/sortorder for natural (human/version) sort
so "2-arrays" comes before "10-graphs" without needing explicit
order fields in frontmatter or a tree-order.json sidecar.

- Remove `order` field from TreeEntry (Go + TypeScript)
- Remove PATCH /api/kiwi/tree/order endpoint
- Remove ReadTreeOrder / WriteTreeOrder from local storage
- Replace all order-based sort comparisons with natural sort
- Update all tests to verify natural sort behavior

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
Recursively collect problem pages under numbered chapter folders
so subfolders like hashing/ and search-on-answer/ appear in the
progress tracker. Show subfolder labels as section headers within
each chapter group.

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ifs#450)

The UI was calling /api/kiwi/local-state but the backend only
exposes /api/kiwi/me/state, causing progress tracking and other
local state to silently fail with 404.

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
Delete treeOrderPersistence module and its test, remove
persistSiblingOrder calls and destinationChildrenAfterMove helper
from KiwiTree, inline renumberOrderableSiblings identity function,
rename tree_order_test.go → tree_test.go.

Natural sort on filenames is the sole ordering mechanism now.

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ew sublabels, MatrixView triangular, GraphEdge labels (kiwifs#452)

- AnnotationBar: parse inline markdown (**bold**, *italic*, `code`) in step text
- ArrayView: add `sublabels` prop for secondary text per cell (e.g. ord values)
- MatrixView: add `centerRows` + `roundCells` props for triangular/staircase grids
- GraphView: render edge `label` when no `weight` is present

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
Protect the package-level branding config with an RWMutex so concurrent
server bootstrap in parallel tests no longer triggers the race detector.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Anh Lam <amelia751@users.noreply.github.com>
…se grids (kiwifs#454)

centerRows now accepts "start" | "center" | true (boolean true = "center").
"start" gives left-aligned ragged rows, which creates proper staircase visuals.

Co-authored-by: Lam Dao Que Anh <anhlam@Lams-MacBook-Air-9.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
@advancedresearcharray advancedresearcharray force-pushed the feat/calendar-view-427 branch 3 times, most recently from 6211c1c to d53604d Compare June 29, 2026 22:23
Add full-screen KiwiCalendar with monthly grid, date-field probing,
/view/calendar routing, Mod+Shift+C keybinding, and [ui.features] calendar flag.

Closes kiwifs#427

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants