<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/data/gcal.org, branch v0.7.2</title>
<subtitle>my Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2</id>
<link rel='self' href='https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/'/>
<updated>2026-01-27T14:22:42+00:00</updated>
<entry>
<title>chore: untrack calendar sync generated data</title>
<updated>2026-01-27T14:22:42+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-27T14:22:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=deff0a3df2bed6cae5c89626a3db2676358a4a0f'/>
<id>urn:sha1:deff0a3df2bed6cae5c89626a3db2676358a4a0f</id>
<content type='text'>
These files change every sync and don't belong in version control.
</content>
</entry>
<entry>
<title>chore(data): update calendar sync state and history</title>
<updated>2026-01-13T14:13:17+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-13T14:13:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=66d0a22d5341c2c4ff146c9f5158883cd840744f'/>
<id>urn:sha1:66d0a22d5341c2c4ff146c9f5158883cd840744f</id>
<content type='text'>
Updated calendar sync state after auto-sync.
</content>
</entry>
<entry>
<title>feat(dirvish): add project shortcuts and remove scratch font override</title>
<updated>2026-01-10T05:36:35+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-10T05:36:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=13311fe3e440e59e466d104ac507a0c2c7a1f4b1'/>
<id>urn:sha1:13311fe3e440e59e466d104ac507a0c2c7a1f4b1</id>
<content type='text'>
Added dirvish quick-access shortcuts for homelab, kit, and nextjob projects.
Removed 16pt font size override from scratch buffer startup hook.
</content>
</entry>
<entry>
<title>feat(calendar-sync): multi-calendar support with property tests</title>
<updated>2025-12-02T13:55:21+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-12-02T13:55:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=fac78a8fc92b27c37e678ee70824eb5f70ceee8b'/>
<id>urn:sha1:fac78a8fc92b27c37e678ee70824eb5f70ceee8b</id>
<content type='text'>
Added multi-URL calendar sync supporting Google and Proton calendars.
Each calendar syncs to separate file with per-calendar state tracking.
Added 13 property-based tests for RRULE expansion. Total: 150 tests passing.
</content>
</entry>
<entry>
<title>session: Add session notes and org-noter TODO</title>
<updated>2025-11-24T13:59:42+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-24T13:59:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=031b55dc59717dc437c9e46376c56344848c863f'/>
<id>urn:sha1:031b55dc59717dc437c9e46376c56344848c863f</id>
<content type='text'>
Added session notes for 2025-11-24 DWIM shell command work.
Added detailed TODO for org-noter workflow continuation with known issues and testing requirements.
Added TODO for dwim-shell-command status dashboard with implementation approaches.
</content>
</entry>
<entry>
<title>session: Update calendar sync state and command history</title>
<updated>2025-11-18T18:54:43+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-18T18:54:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=cde19ae8c3a0da8623e4154789d2482468765e48'/>
<id>urn:sha1:cde19ae8c3a0da8623e4154789d2482468765e48</id>
<content type='text'>
- Updated gcal.org with 377 events from successful RRULE expansion
- Updated sync state with latest sync timestamp
- Updated command history

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: add org keymap under C-; O with cache clear binding</title>
<updated>2025-11-17T22:06:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-17T22:06:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=342e7df14b688ca995c831a68531550ad59e2cc2'/>
<id>urn:sha1:342e7df14b688ca995c831a68531550ad59e2cc2</id>
<content type='text'>
Created general org operations keymap at C-; O separate from specialized
org-table and org-drill keymaps. Added C-; O c binding for clearing
org-element cache to fix org-todo state change errors.
</content>
</entry>
<entry>
<title>fix: increase calendar-sync curl timeout from 10 to 30 seconds</title>
<updated>2025-11-17T20:11:22+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-17T20:11:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=a300da21ef7d4481b3b573fdc843463aef6000b0'/>
<id>urn:sha1:a300da21ef7d4481b3b573fdc843463aef6000b0</id>
<content type='text'>
10-second timeout was too aggressive for slower networks or delayed
Google servers. Increased to 30 seconds to prevent timeout errors
while still preventing indefinite hangs.
</content>
</entry>
<entry>
<title>session: async calendar sync implementation and testing</title>
<updated>2025-11-17T15:27:16+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-17T15:27:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=c8bc780d9f6d7d9ca94be3ed6992454ed5b4ecc2'/>
<id>urn:sha1:c8bc780d9f6d7d9ca94be3ed6992454ed5b4ecc2</id>
<content type='text'>
Implemented async calendar fetching to prevent UI freezes. Tested sync
functionality and confirmed improved responsiveness. Updated calendar
state and data files from sync testing.
</content>
</entry>
<entry>
<title>feat(calendar-sync): Add automatic timezone detection and chronological sorting</title>
<updated>2025-11-17T00:09:17+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-17T00:09:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=da0bd6883a4032054aef4b59c338f60796a0fd99'/>
<id>urn:sha1:da0bd6883a4032054aef4b59c338f60796a0fd99</id>
<content type='text'>
Implemented calendar-sync.el as a complete replacement for org-gcal, featuring:

**Core Functionality:**
- One-way sync from Google Calendar to Org (via .ics URL)
- UTC to local timezone conversion for all event timestamps
- Chronological event sorting (past → present → future)
- Non-blocking sync using curl (works reliably in daemon mode)

**Automatic Timezone Detection:**
- Detects timezone changes when traveling between timezones
- Tracks timezone offset in seconds (-21600 for CST, -28800 for PST, etc.)
- Triggers automatic re-sync when timezone changes detected
- Shows informative messages: "Timezone change detected (UTC-6 → UTC-8)"

**State Persistence:**
- Saves sync state to ~/.emacs.d/data/calendar-sync-state.el
- Persists timezone and last sync time across Emacs sessions
- Enables detection even after closing Emacs before traveling

**User Features:**
- Interactive commands: calendar-sync-now, calendar-sync-start/stop
- Keybindings: C-; g s (sync), C-; g a (start auto-sync), C-; g x (stop)
- Optional auto-sync every 15 minutes (disabled by default)
- Clear status messages for all operations

**Code Quality:**
- Comprehensive test coverage: 51 ERT tests (100% passing)
- Refactored UTC conversion into separate function
- Clean separation of concerns (parsing, conversion, formatting, sorting)
- Well-documented with timezone behavior guide and changelog

**Migration:**
- Removed org-gcal-config.el (archived in modules/archived/)
- Updated init.el to use calendar-sync
- Moved gcal.org to .emacs.d/data/ for machine-independent syncing
- Removed org-gcal appointment capture template

Files modified: modules/calendar-sync.el:442, tests/test-calendar-sync.el:577
Files created: data/calendar-sync-state.el, tests/testutil-calendar-sync.el
Documentation: docs/calendar-sync-timezones.md, docs/calendar-sync-changelog.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
