| Age | Commit message (Collapse) | Author |
|
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 <noreply@anthropic.com>
|
|
|
|
This change defers the loading of the org-roam package by 1 second.
This is a workaround to org-roam not loading soon enough after launch
to have created the necessary capture templates. I'll fix that in an
upcoming org-roam refactor session.
|
|
Enhance which-key integration by providing detailed descriptions for
new key bindings across multiple modules. This improves the
usability of custom keymaps by clarifying the purpose of each
keybinding, making it easier for users to navigate and understand
different menus and options available within the configuration.
This update ensures that all custom keymaps now display a
descriptive label in the which-key popup to explain their
functionality, aiding users in identifying keymap purposes promptly.
|
|
Introduce several utility functions for org-roam configuration,
including `cj/--generate-roam-slug`, `cj/--demote-org-subtree`, and
`cj/--format-roam-node`. These enhance title-to-slug conversion,
subtree demotion, and node file formatting.
Additionally, include comprehensive test cases for these functions
to ensure correctness and reliability in various scenarios.
|
|
Fixed and enhanced the org-roam hook that copies completed tasks to
daily notes:
- Fixed hook not triggering immediately after Emacs launch by moving it
outside the lazy-loaded use-package org-roam :config block and into
with-eval-after-load 'org
- Changed hook to trigger for ANY org-done-keyword (DONE, CANCELLED,
etc.) instead of just "DONE"
- Updated hook to only trigger on non-done → done transitions using
org-last-state, preventing duplicate copies when changing between
done states (e.g., DONE → CANCELLED)
- Added docstrings to org-roam helper functions to fix checkdoc linter
warnings
- Created comprehensive ERT test suite with 10 tests covering:
* Hook registration before org-roam loads (lazy-loading fix)
* Transitions to done states (nil→DONE, TODO→DONE, IN-PROGRESS→DONE,
WAITING→CANCELLED)
* Non-triggering cases (done→done, transitions to non-done states)
|
|
Remove redundant declarations and reorganize settings for clarity.
Centralize org-mode customizations and use `use-package` for
streamlined loading and configuration. Remove backward-compatible
safeguards and reduce inline comments for cleaner code. Optimize key
mappings and simplify the setup of org-related packages.
|
|
|
|
|