| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
Per claude-templates c36fd14. Claude tooling moves to hidden .ai/;
project-level docs/ reserved for real documentation.
|
| | |
|
| |
|
|
| |
refactor-for-testability, interactive/internal split
|
| | |
|
| |
|
|
|
|
| |
- New .claude/rules/commits.md: no AI attribution, conventional prefixes.
- settings.json: attribution.commit and attribution.pr empty strings.
- CLAUDE.md template refreshed to reference commits.md.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Installs the Elisp ruleset from the rulesets repo:
- CLAUDE.md (project instructions template)
- .claude/rules/ (testing, verification, elisp, elisp-testing)
- .claude/hooks/validate-el.sh (check-parens + byte-compile + run
matching tests on every .el edit via PostToolUse)
- .claude/settings.json (permission allowlist + hook wiring)
- githooks/pre-commit (secret scan + staged-file paren check)
core.hooksPath set to githooks/ so the pre-commit activates automatically.
Hooks use \$CLAUDE_PROJECT_DIR with a script-relative fallback, so a
fresh clone works without path edits.
.gitignore extended with personal-override entries (settings.local.json,
.cache/) and byte-compile artifacts (*.elc, *.eln).
|
| |
|
|
|
|
|
|
| |
Rewrote Quick Start to show minimal config (just chime-mode 1) with
defaults overview and modeline interaction guide. Expanded manual
install with git clone steps. Fixed TOC nav links, made tag filter
examples consistent, added custom predicate motivation, removed
redundant Basic Event subsection.
|
| |
|
|
|
|
|
| |
Add Douglas Adams epigraph, funny event names throughout, voice in
installation and history sections. Consolidate org-contacts into new
Integrations section with org-gcal guide. Trim verbose all-day events
interaction examples. Add severity, sound format, and icon docs.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Replaced stale 339-test/23-file doc with current state (645 tests,
53 files). Documents test-bootstrap.el, testutil libraries, Makefile
consolidation, and all convenience macros.
|
| |
|
|
|
| |
LICENSE and COPYING were identical. Keep LICENSE since README
links to it and GitHub recognizes it automatically.
|
| |
|
|
|
|
| |
Root Makefile now delegates to tests/Makefile. Fixed stale
UNIT_TESTS/INTEGRATION_TESTS definitions, added test-name target,
switched to per-file test execution for better isolation.
|
| |
|
|
|
| |
Verify the regex matches all default variable names, picks up
additional user-configured regexes, and handles empty additional list.
|
| |
|
|
|
|
|
|
|
| |
The 120-line diagnostic function is now a 30-line coordinator
calling four focused helpers:
- chime--debug-filter-check-timestamp
- chime--debug-filter-check-time-match
- chime--debug-filter-check-interval
- chime--debug-filter-check-pipeline
|
| |
|
|
| |
Defined and tested but never called from any production code.
|
| |
|
|
|
|
|
|
|
|
| |
When all-day event alert times trigger, multiple events (overdue tasks,
birthdays, holidays) previously fired individual notifications — one
sound and one popup each. With 8-10 events this was overwhelming.
Now multiple day-wide events are bundled into a single notification
with all messages joined by newlines. Single events still notify
normally without bundling.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove About section (merged into intro)
- Rename Credits to History, fold Migration under it
- Fold Manual Check and Known Limitations under Usage
- Fold Full Example Configuration under Configuration
- Add straight.el and quelpa install methods
- Move requirements into Installation with auto-deps note
- Add notification daemon check to troubleshooting
- Add Development subsection with clone/lint/issues info
- Add LICENSE file (GPL-3.0)
- Update nav bar to match new structure
- Fix startup integration test for new modeline error state
|
| |
|
|
|
| |
Replace vertical table of contents with horizontal section links
matching wttrin README style. Add Made for GNU Emacs badge.
|
| |
|
|
|
|
|
|
|
| |
Previously chime-modeline-string was nil until the first async check
completed (~10-15 seconds after startup). Now the icon appears
instantly with a "waiting for first event check" tooltip.
On validation or async failure, the icon stays visible and the
tooltip updates to show the error state instead of going blank.
|
| |
|
|
|
|
| |
The bell emoji lighter was redundant alongside the alarm clock
event display in global-mode-string. One icon is enough. Users
who want a separate mode indicator can set chime-modeline-lighter.
|
| |
|
|
|
|
|
|
|
|
| |
Bump chime-modeline-lookahead-minutes from 60 to 120 so events
within the next 2 hours show in the modeline. The old 60-minute
default hid events most users would expect to see.
Add (0 . high) to default chime-alert-intervals so users get a
notification at event time in addition to 10 minutes before.
The single-notification default meant a missed alert had no backup.
|
| |
|
|
|
|
|
|
| |
Remove promotional language (pleasant, extensive, comprehensive),
flatten rule-of-three constructions, replace "interplay" heading,
simplify tactical/strategic framing, drop redundant blacklist
justification. Fix "begain" typo in credits. Trim duplicated
Testing/Development pointers.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix stale content:
- Tooltip lookahead default: 8760 hours -> 168 (1 week)
- Test count: 505 -> 600+
- Emacs version: 26.1+ -> 27.1+ (matches Package-Requires)
- Troubleshooting: fix stale convert-contacts-to-file reference to
match current in-place conversion workflow
Add missing documentation:
- Custom predicate filtering with examples
- chime-max-consecutive-failures, chime-validation-max-retries
- chime-extra-alert-plist, chime-additional-environment-regexes
- chime-refresh-modeline command
- Debug mode section in Troubleshooting with all diagnostic commands
|
| |
|
|
|
|
|
|
| |
Clarify: dash cartesian product pipeline in chime--notifications,
butlast 2 dropping USEC/PSEC from time values, Emacs time type
guard, upcoming-events item structure, rx macroexpand for async
env injection, backquoted lambda subprocess boundary, and
org-end-of-meta-data nil argument meaning.
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove chime--agenda-buffer-name (unused variable) and
chime--extract-birthday-year (superseded by chime--parse-birthday).
Reduce chime-tooltip-lookahead-hours from 8760 (1 year) to 168
(1 week). The 1-year default caused org-agenda-list to scan a
365-day span every check cycle, which is slow for large org
collections. The tooltip only shows 5 events, so a week is
sufficient for most users.
|
| |
|
|
|
|
|
|
|
| |
Performance improvements with no behavioral change:
- chime--group-events-by-day: hoist decode-time calls before loop
- chime-event-has-any-passed-time: compute today-start once, not per timestamp
- chime-event-is-today: same pattern
- chime--build-upcoming-events-list: remove first sort (discarded by hash dedup)
- chime--process-notifications: use -mapcat instead of -map + -flatten
|
| |
|
|
|
| |
The timer variable was left pointing at a cancelled timer object.
Now set to nil so state accurately reflects no active timer.
|
| |
|
|
|
| |
New files created in 2026 should have Copyright (C) 2026, not 2024-2026.
Add standard copyright/license header to test-bootstrap.el.
|
| |
|
|
|
|
| |
Move the all-day timestamp date arithmetic into chime--days-until-event.
The notification text function now reads clearly as a cond dispatch
over today/advance-notice/fallback cases.
|
| |
|
|
|
|
| |
The validation/retry state machine was 30 lines embedded in chime-check.
Now chime--maybe-validate returns t if OK to proceed, nil to skip.
chime-check is reduced to 12 lines: validate, then fetch-and-process.
|
| |
|
|
|
|
| |
Move interactive display (message/display-warning calls) into
chime--display-validation-results. The validation function stays
focused on collecting issues; display is a separate concern.
|
| |
|
|
|
|
|
|
|
|
| |
All 50 test files that load chime.el repeated the same 8-line
initialization block (package-initialize, ert, dash, alert, async,
org-agenda, chime load). Replace with a single require of
test-bootstrap.el.
Also fix test-make-upcoming-item name collision between
test-chime-make-tooltip.el and test-chime--deduplicate-events-by-title.el.
|
| |
|
|
|
|
|
|
|
| |
Decompose the 72-line function into focused helpers:
- chime--extract-gcal-timestamps: org-gcal drawer extraction
- chime--extract-property-timestamps: SCHEDULED/DEADLINE properties
- chime--extract-plain-timestamps: plain body timestamps
chime--extract-time is now a 12-line dispatcher.
|
| |
|
|
|
|
|
|
|
|
| |
chime-org-contacts.el duplicated parse, format, and insert-after-drawer
functions from convert-org-contacts-birthdays.el. Remove the duplicates
and have chime-org-contacts require the convert module instead.
Removes ~35 lines of duplicated code. The finalize function now delegates
to chime--insert-birthday-timestamp-after-drawer with condition-case for
graceful handling of invalid birthday formats during capture.
|
| |
|
|
|
| |
Verifies disabling chime-mode removes chime-modeline-string from
global-mode-string and sets it to nil.
|
| |
|
|
|
| |
Verifies enabling chime-mode adds chime-modeline-string to
global-mode-string so events appear in the modeline.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
New test coverage for previously untested functions:
- filter-day-wide-events, time utilities, day-wide time matching
- make-tooltip, event-is-today, get-tags, done-keywords-predicate
- extract-title, propertize-modeline-string, warn-persistent-failures
- log-silently
Bug fixes discovered by new tests:
- Fix pluralization in no-events tooltip ("1 hours" -> "1 hour", etc.)
- Fix chime--get-tags returning ("") instead of nil for untagged headings
|
| |
|
|
|
|
| |
Add with-chime-config and with-org-event-file macros to testutil-events.el,
replacing the manual defvar/save/restore pattern with let-bindings that
auto-restore on exit. Migrate test-integration-startup.el as first adopter.
|
| |
|
|
|
|
| |
Tracks consecutive async check failures and displays a warning via
display-warning when the threshold is reached (default 5). Resets
on any successful check.
|
| |
|
|
|
| |
Adds locate-library as a fallback between load-file-name and
buffer-file-name for more robust path resolution in MELPA installs.
|
| | |
|
| |
|
|
|
|
|
| |
Add optional context parameter to chime--timestamp-parse and pass
the org heading title from chime--extract-time. Error messages now
show which event failed, e.g. "Failed to parse timestamp '...' in
'Team Meeting': ..."
|
| |
|
|
|
|
| |
The test checks that chime-modeline-string and chime--upcoming-events
are nil after early return, but previous tests could leave them set.
Reset these and chime--validation-retry-count at test start.
|
| |
|
|
|
|
| |
Use chime--jump-to-first-event instead of a closure capturing
soonest-event. Improves debuggability and removes unused parameter
from chime--propertize-modeline-string.
|
| | |
|
| |
|
|
|
| |
Declare chime-debug-enable-async-monitoring, chime--debug-log-async-error,
and chime--debug-log-async-complete to suppress byte-compiler warnings.
|
| |
|
|
|
|
|
| |
- chime-predicate-whitelist: (function) -> (repeat function)
- chime-predicate-blacklist: (function) -> (repeat function)
- chime-additional-environment-regexes: (string) -> (repeat string)
- chime-notification-icon: string -> choice of nil or file path
|
| |
|
|
|
|
| |
Package uses decoded-time-* accessors, time-equal-p (27.1+), and
subr-x functions (when-let*, hash-table-values, string-empty-p).
Remove stale "Emacs 26 compatibility" comments.
|
| | |
|