Recurrence module
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- typescript
调研方向
Start with parent issue #25 and the blocked module API issue #28, then trace how the kernel's read and write pipelines and the Calendar product factory register modules. Review the RecurrenceRule model and the occurrence projection; identify how the listed acceptance criteria fit together before estimating the work. Done means the module meets the recurrence, editing, navigation, and tree-shaking criteria while keeping occurrences ephemeral.
由索引模型根据 Issue 内容生成。
描述
Parent
https://github.com/TanStack/time/issues/25
What to build
Extract recurrence expansion and editing into a proper module that plugs into the kernel's read and write pipelines. When registered, the module expands Master Events into ephemeral Occurrences within the current viewport and handles all recurrence-specific writes (edit-this, edit-this-and-following, delete-this, delete-all).
Also extend the `RecurrenceRule` model to cover the full UI-builder subset: add `byMonthDay` (supports negative values, e.g. `-1` = last day of month) and ordinal weekdays (e.g. `{ weekday: 2, nth: 2 }` = 2nd Tuesday, `{ weekday: 5, nth: -1 }` = last Friday).
Occurrences are ephemeral — derived in the projection, never stored. The Master Event carries the rule; Overrides and Exceptions live on the master's rule.
Acceptance criteria
- `RecurrenceModule` plugs into the kernel via the module API (#28) and is listed as a registered module in the Calendar product factory
- A Master Event with a `RecurrenceRule` produces the correct Occurrences for the current viewport
- Editing a single Occurrence creates an Override keyed by original start (RECURRENCE-ID); other occurrences are unaffected
- Editing "this and following" splits the master at the occurrence boundary, producing a new master for the remainder
- Deleting a single Occurrence adds it to `exDates` (Exception); the series continues
- `byMonthDay` (including negative values) generates the correct occurrences for monthly/yearly rules
- Ordinal weekday (`{ weekday, nth }`) generates the correct occurrences (e.g. 2nd Tuesday, last Friday)
- `goToNextOccurrence` / `goToPreviousOccurrence` navigate correctly across the series
- Removing the `RecurrenceModule` from the module list causes recurrence-related code to tree-shake out of the bundle
Blocked by
- 主要语言
- TypeScript
- 星标
- 620
- 派生
- 6
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
TanStack/time 的其他 Issue
-
难度 5/5 一周以上 新手友好度 5/100
-
enhancement
难度 5/5 一周以上 新手友好度 25/100
-
enhancement
难度 5/5 一周以上 新手友好度 32/100
-
enhancement
难度 4/5 3-5 天 新手友好度 35/100
-
enhancement
难度 5/5 一周以上 新手友好度 35/100
相似的 Issue
-
test: claim-conflict drop leaves both facts active and is never re-proposed (untested review cell)未关闭
难度 2/5 1-3 小时 新手友好度 83/100
维护者通常 1 天内回复
-
[Feature]: Usage page should show API-equivalent cost and say when a connected plan shows info only未关闭enhancement from-x
难度 2/5 1-3 小时 新手友好度 66/100
nightly-labs/openbot#4867 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
egonSchiele/agency-lang#1377 ·
维护者通常 1 天内回复
-
normalizePath removes the Windows device namespace prefix可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
caprover/caprover-frontend#273 ·
维护者通常 1 天内回复