Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Write operations depend on TimeTree web authentication and CSRF handling. Keep e
- `scripts/build-mcpb.mjs` - Bundles the server and all dependencies into one file and packs `build/timetree-mcp-<version>.mcpb`.
- `scripts/mcpb-packer/` - The MCPB packer locked with its own `package-lock.json`, installed only when building the extension. It is kept out of the main `package.json` so its dev-only advisories do not fail the server's `npm audit`. Update it on purpose, not through the main lockfile.
- `.github/workflows/release.yml` - On a `v*` tag, tests, builds the `.mcpb`, and creates the GitHub release.
- `docs/assets/` - Icon, README demo image, and GitHub social preview (SVG sources plus rendered PNGs).
- `docs/assets/` - Icon and GitHub social preview (SVG sources plus rendered PNGs), and the README demo GIFs (`demo-en.gif`, `demo-ko.gif`, `demo-ja.gif`).

Prefer small changes that follow these boundaries instead of adding new layers or dependencies.

Expand Down Expand Up @@ -117,7 +117,7 @@ When testing manually with a real account, keep credentials only in the shell or
- Keep client setup details in `docs/MCP_CLIENTS.md` and update the installer output when setup instructions change.
- README first screen order: title and one-line value, badges, language links, short unofficial notice, example prompts, demo image, then "What it does" in user terms. Implementation details (rate limiting, logging, CSRF) belong in "How it works", not in the feature list.
- Write user-facing copy plainly: no emoji section markers, no hype words, and only claims the project can back up. Example prompts and the demo image use made-up data.
- Edit images as SVG in `docs/assets/` and re-render the PNGs (`rsvg-convert`). `mcpb/icon.png` is rendered from `docs/assets/icon.svg` at 512x512.
- Edit images as SVG in `docs/assets/` and re-render the PNGs (`rsvg-convert`). The demo GIFs are screen recordings of Claude Desktop against a test calendar with made-up events; remove personal names from every frame (cover them, do not blur) and keep each GIF under a few MB. `mcpb/icon.png` is rendered from `docs/assets/icon.svg` at 512x512.
- Keep shell script output in English unless maintainers decide otherwise.
- Use generic placeholders such as `your-email@example.com`, `your-password`, and `/absolute/path/to/...`.
- Avoid contributor-facing text that depends on a maintainer's local environment.
Expand Down Expand Up @@ -157,6 +157,7 @@ This is primarily a project guide, not a full contribution handbook. For contrib
- Do not add dependencies unless the benefit is clear and documented.
- Make privacy-preserving behavior the default.
- When uncertain about upstream behavior, document the observation method without storing sensitive captures.
- After opening a pull request, wait for the Codex review (`chatgpt-codex-connector`), which usually lands within a few minutes. Address or answer each finding, then comment `@codex review` after pushing fixes and check the new review before asking for a merge.

## Code Review Rules

Expand Down
2 changes: 1 addition & 1 deletion README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ AI アシスタントに次のように聞くだけです。
- 「今日カレンダーを変更したのは誰?何を変えた?」

<p align="center">
<img src="docs/assets/demo.svg" alt="アシスタントが TimeTree MCP で今週の予定を読み、土曜日の予定の重なりを指摘する例" width="760">
<img src="docs/assets/demo-ja.gif" alt="Claude Desktop が TimeTree カレンダーの1週間の予定をまとめて重なりを指摘し、予定の移動と追加を行う例" width="760">
</p>

## できること
Expand Down
2 changes: 1 addition & 1 deletion README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ AI 어시스턴트에게 이렇게 물어보면 됩니다.
- "오늘 누가 캘린더에서 뭘 바꿨어?"

<p align="center">
<img src="docs/assets/demo.svg" alt="어시스턴트가 TimeTree MCP로 이번 주 일정을 읽고 토요일 일정 충돌을 알려주는 예시" width="760">
<img src="docs/assets/demo-ko.gif" alt="Claude Desktop이 TimeTree 캘린더의 한 주 일정을 정리하고 겹치는 일정을 알려준 뒤, 일정을 옮기고 새 일정을 추가하는 예시" width="760">
</p>

## 할 수 있는 일
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Ask your AI assistant things like:
- "Who changed the calendar today, and what did they change?"

<p align="center">
<img src="docs/assets/demo.svg" alt="An assistant reads this week's events through TimeTree MCP and points out a Saturday conflict" width="760">
<img src="docs/assets/demo-en.gif" alt="Claude Desktop summarizes a week on a TimeTree calendar, flags a conflict, then moves an event and adds a new one" width="760">

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Remove the account name from the demo captures

The first frame of each new GIF contains the signed-in account's display-name area and merely blurs it. This still commits pixels derived from personal information instead of keeping the name out of frame as required; re-record the demos with a synthetic account, crop the greeting, or replace the name region with an opaque synthetic label before publishing.

AGENTS.md reference: AGENTS.md:L120-L120

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Fixed in e2b7d6a. The greeting line is now covered with a copy of the blank area above it in every frame before the first message is sent, so no pixels derived from the name remain. CLAUDE.md now says to cover names rather than blur them.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Provide a way to stop the autoplaying demos

Each referenced GIF is 27–31 seconds long and encodes a loop count of zero, so opening any README starts an endlessly repeating animation with no pause or stop control. Users who need reduced motion cannot disable the motion while reading the page; use a static poster linked to a user-controlled recording, or otherwise keep the animation paused until it is explicitly started.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Keeping the GIFs. GitHub shows a pause control on animated images, and it respects both the "Autoplay animated images" accessibility setting and the OS reduced-motion preference, which stops the animation for users who need that. An inline GIF also shows readers the flow without a click, which a static poster would not.

</p>

## What it does
Expand Down
Binary file added docs/assets/demo-en.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/demo-ja.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/demo-ko.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 0 additions & 22 deletions docs/assets/demo.svg

This file was deleted.

Loading