Skip to content

feat: split remote calendar events into a separate column#843

Closed
johnyoonh wants to merge 1 commit intoivan-lednev:mainfrom
johnyoonh:feature/separate-remote-calendar-column
Closed

feat: split remote calendar events into a separate column#843
johnyoonh wants to merge 1 commit intoivan-lednev:mainfrom
johnyoonh:feature/separate-remote-calendar-column

Conversation

@johnyoonh
Copy link
Copy Markdown

Summary

  • Add a setting to render timed remote calendar events in a separate timeline column from local planner tasks.
  • Split local planner tasks and remote calendar events before horizontal overlap placement so each column gets independent block widths.
  • Add semantic planner-left-column and planner-right-column classes to timeline columns.

Test plan

  • ReadLints reports no diagnostics for changed files in Cursor.
  • npm run typescript could not complete in this checkout because dependencies are not installed (@tsconfig/svelte and Svelte type definitions missing).

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
Copilot AI review requested due to automatic review settings May 2, 2026 23:48
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an option to render timed remote calendar events in their own timeline column, keeping horizontal overlap placement independent between local planner tasks and remote calendar events.

Changes:

  • Introduces showRemoteCalendarEventsInSeparateColumn setting (default false) and exposes it in the settings UI.
  • Updates timeline task derivation to split timed tasks into withTime (planner/local) and remoteCalendarWithTime (remote) before horizontal placing.
  • Updates timeline/multi-day UI to render an additional column when enabled and adjusts internal column counting.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/settings.ts Adds the new setting to the settings interface and defaults.
src/ui/settings-tab.ts Adds a toggle to control rendering remote events in a separate column.
src/ui/hooks/use-edit/use-edit-context.ts Splits timed tasks into planner vs remote lists and runs overlap placement independently.
src/ui/components/timeline.svelte Renders the optional remote-events column and adds left/right column classes.
src/ui/components/multi-day/multi-day-grid.svelte Adjusts computed internal column count to account for the optional remote column.
src/ui/components/column.svelte Adds support for passing a class to the Column wrapper.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +133 to 159
{#if settingsSignal.current.showRemoteCalendarEventsInSeparateColumn}
<Column
class="planner-right-column"
visibleHours={getVisibleHours($settings)}
>
{#if $isToday(day)}
<Needle autoScrollBlocked={isUnderCursor} />
{/if}

<div class="tasks absolute-stretch-x">
{#each $displayedTasksForTimeline.remoteCalendarWithTime as task (getRenderKey(task))}
<PositionedTimeBlock {task}>
<UnscheduledTimeBlock {task}>
{#snippet bottomDecoration()}
{getBlockProps(task, settingsSignal.current)}
{/snippet}
</UnscheduledTimeBlock>
</PositionedTimeBlock>
{/each}
</div>
</Column>
{/if}
{/if}

{#if $settings.timelineColumns.timeTracker}
<Column visibleHours={getVisibleHours($settings)}>
<Column class="planner-right-column" visibleHours={getVisibleHours($settings)}>
{#if $isToday(day)}
Comment on lines +192 to +210
const uniqueWithTime = uniqBy(t.getRenderKey)(
tasksForDay.withTime,
) as Array<WithTime<Task>>;
const separateRemoteCalendars =
$settings.showRemoteCalendarEventsInSeparateColumn;
const remoteCalendarWithTime = separateRemoteCalendars
? addHorizontalPlacing(uniqueWithTime.filter(isRemote))
: [];
const plannerWithTime = separateRemoteCalendars
? uniqueWithTime.filter((task) => !isRemote(task))
: uniqueWithTime;
const withTime: Array<WithPlacing<WithTime<Task>>> =
addHorizontalPlacing(plannerWithTime);

return {
...tasksForDay,
withTime,
remoteCalendarWithTime,
};
@johnyoonh
Copy link
Copy Markdown
Author

Superseded by smaller PRs: #844 for semantic timeline column classes and #845 for the separate remote calendar event column setting.

@johnyoonh johnyoonh closed this May 2, 2026
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