mirror of
https://github.com/punkyard/obsidian-lindar.git
synced 2026-07-22 07:45:03 +00:00
- Add EventCategory interface + categories CRUD in settings - Dynamic datalist + auto-color on category match in event modal - Full cell today highlight, rename TYPE to CATEGORY - Consistent frontmatter: title → type → uid → color → event → allDay → start → end → participants - Accept lindar-event as event marker alias - Wednesdays toggle above weekends in settings Co-authored-by: nmn <punkyard@users.noreply.github.com>
5.5 KiB
5.5 KiB
Roadmap
Upcoming
v0.2 — List & Unscheduled tabs
- List tab: flat chronological events, month-grouped, filter, click-to-open
- Unscheduled tab: tagged-but-undated notes with inline date picker
v0.3 — Tag-based discovery
#eventtag as first-class discovery (alongside folder)event: trueoptional in tag mode
v0.4 — CalDAV sync (exploratory)
- Two-way sync with remote calendars
- iCal feed import
Completed phases
Phase 1 — scaffold
- Start from the official Obsidian sample plugin structure
- Create
manifest.json,package.json,tsconfig.json,esbuild.config.mjs,versions.json - Add
LICENSE - Create plugin entry point in
src/main.ts, settings model, shared types - Keep
main.tsminimal and move feature logic into focused modules undersrc/ - Add strict TypeScript settings and Obsidian typings
- Implement settings persistence with
loadData()andsaveData() - Register a custom Obsidian view for the calendar
- Add a ribbon icon and command to open Linear Calendar
- Run
npm installand confirmnpm run devrebuilds successfully - Test the plugin inside a separate development vault
Phase 2 — base calendar view
- Render the yearly view with 12 month rows
- Add correct day offsets for every month
- Align weekday headers with the date grid
- Make the month column sticky on the left
- Make the header sticky on top
- Apply the 96vh layout, add horizontal scrolling
- Highlight today
- Add light/dark theme styling
- Add year navigation controls, display customizable motto
Phase 3 — event creation and storage
- Open a popup when the user clicks a date cell
- Add title, start date, end date, color, and notes fields
- Use the native color input when supported by the OS
- Save events as Markdown notes with YAML frontmatter
- Load saved events back into the calendar view
- Render single-day and multi-day events as colored event bars
- Edit and delete existing events from the calendar
- Improve event bar spacing, contrast, and overflow behavior
Phase 4 — multi-day events and layout
- Render multi-day events as continuous bars
- Support events spanning weeks and months
- Handle overlapping events with sensible lane stacking
- Finalize month event lane scroll interaction
- Add adaptive lane height / month-specific scrolling
- Fix empty-event-list tail area wheel propagation
Polish backlog
Phase 5 — open category system
- Add
EventCategoryinterface andcategoriesfield to settings - Dynamic category CRUD in settings UI
- Replace hardcoded type suggestions with user-defined categories
- Auto-fill color picker when category name matches
- Document category system in
docs/categories.md
Phase 6 — polish
- Add hover details / tooltip behavior
- Improve spacing, typography, borders, and color balance
- Auto-scroll the view so today is visible when useful
- Handle leap years and edge cases gracefully
- Verify manual install works with
main.js,manifest.json, and optionalstyles.css - Test reload/unload cleanup and command stability
- Self-review against Obsidian developer policies and plugin guidelines
- Test on macOS, Windows, and Linux where possible
Phase 7 — release and submission
- Bump
manifest.jsonversion using SemVer - Update
versions.jsonto map plugin version to minimum app version - Ensure
manifest.jsonincludes stableid,name,version,author,description,minAppVersion, andisDesktopOnly - Build release artifacts and verify
main.jsis bundled correctly - Create a GitHub release whose tag exactly matches
manifest.jsonversion, with novprefix - Upload
main.js,manifest.json, and optionalstyles.cssas individual release assets - Confirm the repository includes
README.mdandLICENSE - Fork
obsidianmd/obsidian-releases - Add the plugin entry to
community-plugins.json - Ensure the submitted description matches
manifest.jsonexactly - Open the community plugin PR using the plugin submission template
- Complete the release checklist and respond to validation feedback
Release readiness checklist
README.mdclearly explains what the plugin does and how to use itLICENSEis present and matches MITmanifest.jsoncontains the correctid,name,version,author,description,minAppVersion, andisDesktopOnlyversions.jsonexists and includes an entry for the current release versionmain.jsis built and committed for release artifactsstyles.cssis included if custom styling is requiredpackage.jsonscripts supportnpm run devandnpm run build- The plugin builds cleanly with
npm run build - The plugin has been validated manually in a dev vault
- Release tag matches
manifest.jsonversion exactly and uses novprefix - GitHub release assets include
main.js,manifest.json, and optionalstyles.css - Community submission PR is prepared with a matching description and metadata
community-plugins.jsonentry uses the exact same pluginid- Submitted description matches
manifest.jsondescription exactly - PR is opened against
obsidianmd/obsidian-releaseswith the plugin template - Submission checklist is fully completed
- Any validation failures are fixed by pushing another commit to the PR branch