Skip to content

Commit c9fa1b4

Browse files
authored
fix(release): align metadata and docs (#26)
* fix(release): align metadata and docs * fix(release): address copilot review on PR #26 * fix(ci): restore required test check
1 parent d868897 commit c9fa1b4

9 files changed

Lines changed: 192 additions & 74 deletions

‎.github/dependabot.yml‎

Lines changed: 69 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,78 @@ updates:
44
directory: "/"
55
schedule:
66
interval: "weekly"
7-
open-pull-requests-limit: 2
87
groups:
9-
npm-version-updates:
10-
applies-to: version-updates
11-
patterns:
12-
- "*"
13-
npm-security-updates:
8+
security-updates:
149
applies-to: security-updates
1510
patterns:
1611
- "*"
12+
production-minor-patch:
13+
applies-to: version-updates
14+
dependency-type: "production"
15+
update-types:
16+
- "minor"
17+
- "patch"
18+
eslint-minor-patch:
19+
applies-to: version-updates
20+
dependency-type: "development"
21+
patterns:
22+
- "@eslint/*"
23+
- "eslint"
24+
- "eslint-*"
25+
- "typescript-eslint"
26+
update-types:
27+
- "minor"
28+
- "patch"
29+
typescript-minor-patch:
30+
applies-to: version-updates
31+
dependency-type: "development"
32+
patterns:
33+
- "@types/*"
34+
- "tsx"
35+
- "typescript"
36+
update-types:
37+
- "minor"
38+
- "patch"
39+
test-tooling-minor-patch:
40+
applies-to: version-updates
41+
dependency-type: "development"
42+
patterns:
43+
- "@jest/*"
44+
- "@vitest/*"
45+
- "jest"
46+
- "jest-*"
47+
- "ts-jest"
48+
- "vitest"
49+
update-types:
50+
- "minor"
51+
- "patch"
52+
development-minor-patch:
53+
applies-to: version-updates
54+
dependency-type: "development"
55+
exclude-patterns:
56+
- "@eslint/*"
57+
- "@jest/*"
58+
- "@types/*"
59+
- "@vitest/*"
60+
- "eslint"
61+
- "eslint-*"
62+
- "jest"
63+
- "jest-*"
64+
- "ts-jest"
65+
- "tsx"
66+
- "typescript"
67+
- "typescript-eslint"
68+
- "vitest"
69+
update-types:
70+
- "minor"
71+
- "patch"
72+
commit-message:
73+
prefix: "chore(deps)"
74+
open-pull-requests-limit: 10
75+
- package-ecosystem: "github-actions"
76+
directory: "/"
77+
schedule:
78+
interval: "weekly"
1779
commit-message:
1880
prefix: "chore(deps)"
81+
open-pull-requests-limit: 10

‎.github/workflows/ci.yml‎

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@ name: CI
22

33
on:
44
pull_request:
5+
branches: [main]
56
push:
67
branches: [main]
78

89
jobs:
9-
test:
10+
test-matrix:
11+
name: test (${{ matrix.node-version }})
1012
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
node-version: ["20", "22", "24"]
1116
steps:
1217
- uses: actions/checkout@v4
1318

1419
- uses: actions/setup-node@v4
1520
with:
16-
node-version: "20"
21+
node-version: ${{ matrix.node-version }}
1722
cache: "npm"
1823

1924
- name: Install dependencies
@@ -28,6 +33,9 @@ jobs:
2833
- name: Test
2934
run: npm test
3035

31-
- name: Test coverage
32-
run: npm run test:coverage
33-
continue-on-error: true
36+
test:
37+
name: test
38+
runs-on: ubuntu-latest
39+
needs: test-matrix
40+
steps:
41+
- run: echo "All matrix test jobs passed"

‎.github/workflows/dependabot-auto-merge.yml‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,5 @@ on:
77
jobs:
88
auto-merge:
99
if: github.actor == 'dependabot[bot]' && github.event.pull_request.user.login == 'dependabot[bot]'
10-
permissions:
11-
contents: write
12-
pull-requests: write
1310
uses: verygoodplugins/.github/.github/workflows/dependabot-auto-merge.yml@main
1411
secrets: inherit
Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,3 @@
1-
# Release Please - Automated versioning and npm publishing
2-
#
3-
# How it works:
4-
# 1. Every push to main with conventional commits updates a "Release PR"
5-
# 2. When you merge the Release PR, it:
6-
# - Updates version in package.json
7-
# - Updates CHANGELOG.md
8-
# - Creates a GitHub Release with tag
9-
# - Triggers the npm publish job below
10-
#
11-
# Commit message format:
12-
# feat: add new feature → minor version bump
13-
# fix: fix a bug → patch version bump
14-
# feat!: breaking change → major version bump
15-
# chore/docs: no version bump
16-
#
17-
# npm Publishing:
18-
# Uses Trusted Publishing (OIDC) - no secrets needed!
19-
# Configure at: https://www.npmjs.com/package/@verygoodplugins/mcp-{name}/access
20-
211
name: Release Please
222

233
on:
@@ -39,12 +19,15 @@ jobs:
3919
- uses: googleapis/release-please-action@v4
4020
id: release
4121
with:
42-
release-type: node
22+
manifest-file: ".release-please-manifest.json"
23+
config-file: "release-please-config.json"
24+
token: ${{ secrets.RELEASE_PLEASE_TOKEN || github.token }}
4325

4426
npm-publish:
4527
needs: release-please
4628
if: ${{ needs.release-please.outputs.release_created }}
4729
runs-on: ubuntu-latest
30+
environment: npm
4831
permissions:
4932
contents: read
5033
id-token: write
@@ -53,28 +36,10 @@ jobs:
5336

5437
- uses: actions/setup-node@v4
5538
with:
56-
node-version: "20"
39+
node-version: "24"
5740
registry-url: "https://registry.npmjs.org"
5841

5942
- run: npm ci
6043
- run: npm run build
6144
- run: npm test
62-
63-
# Trusted Publishing: No NPM_TOKEN needed!
64-
- run: npm publish --access public --provenance
65-
66-
announce:
67-
needs: [release-please, npm-publish]
68-
if: ${{ needs.release-please.outputs.release_created }}
69-
runs-on: ubuntu-latest
70-
steps:
71-
- name: Post to Slack
72-
if: ${{ vars.SLACK_WEBHOOK_URL }}
73-
uses: slackapi/slack-github-action@v1
74-
with:
75-
webhook-url: ${{ vars.SLACK_WEBHOOK_URL }}
76-
webhook-type: incoming-webhook
77-
payload: |
78-
{
79-
"text": "🚀 ${{ github.repository }} ${{ needs.release-please.outputs.tag_name }} released!\n\nhttps://github.com/${{ github.repository }}/releases/tag/${{ needs.release-please.outputs.tag_name }}"
80-
}
45+
- run: npm publish --provenance --access public

‎.github/workflows/security.yml‎

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Security
22

33
on:
44
schedule:
5-
- cron: "0 0 * * 0" # Weekly on Sunday
5+
- cron: "0 0 * * 0"
66
push:
77
branches: [main]
88
pull_request:
@@ -39,15 +39,11 @@ jobs:
3939

4040
- uses: actions/setup-node@v4
4141
with:
42-
node-version: "20"
42+
node-version: "22"
4343
cache: "npm"
4444

4545
- run: npm ci
4646

4747
- name: Audit dependencies
4848
run: npm audit --audit-level=high
49-
continue-on-error: true
50-
51-
- name: Check for known vulnerabilities
52-
run: npx better-npm-audit audit --level high
53-
continue-on-error: true
49+
continue-on-error: false

‎.release-please-manifest.json‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
".": "1.0.0"
3+
}

‎README.md‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ Edit `.mcp.json` in your project:
115115

116116
## Available Tools
117117

118+
### Authentication
119+
120+
#### `toggl_check_auth`
121+
Verify Toggl API connectivity and confirm your token can access available workspaces without exposing the token.
122+
118123
### Time Tracking
119124

120125
#### `toggl_get_time_entries`
@@ -175,6 +180,26 @@ Get total hours per project for a date range.
175180
#### `toggl_workspace_summary`
176181
Get total hours per workspace.
177182

183+
#### `toggl_get_timeline`
184+
Get Toggl Desktop activity timeline data with application usage summaries and optional raw events. Requires Toggl Track Desktop timeline sync to be enabled.
185+
186+
Privacy note: raw timeline events can include window titles that may contain document names, email subjects, chat text, URLs, OAuth pages, or database names. For privacy-conscious usage, request summary-only output:
187+
```json
188+
{
189+
"period": "today",
190+
"include_events": false
191+
}
192+
```
193+
194+
To return events while hiding window titles:
195+
```json
196+
{
197+
"period": "today",
198+
"redact_titles": true,
199+
"limit": 50
200+
}
201+
```
202+
178203
### Management
179204

180205
#### `toggl_list_workspaces`

‎release-please-config.json‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3+
"packages": {
4+
".": {
5+
"release-type": "node",
6+
"extra-files": [
7+
{
8+
"type": "json",
9+
"path": "server.json",
10+
"jsonpath": "$.version"
11+
},
12+
{
13+
"type": "json",
14+
"path": "server.json",
15+
"jsonpath": "$.packages[0].version"
16+
},
17+
"src/index.ts"
18+
]
19+
}
20+
}
21+
}

‎server.json‎

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,68 @@
1919
],
2020
"tools": [
2121
{
22-
"name": "toggl_get_current",
23-
"description": "Get currently running time entry"
22+
"name": "toggl_check_auth",
23+
"description": "Verify Toggl API connectivity and authentication"
2424
},
2525
{
26-
"name": "toggl_start",
27-
"description": "Start a new time entry"
26+
"name": "toggl_get_time_entries",
27+
"description": "Get time entries with optional date range filters"
2828
},
2929
{
30-
"name": "toggl_stop",
31-
"description": "Stop the current time entry"
30+
"name": "toggl_get_current_entry",
31+
"description": "Get the currently running time entry"
3232
},
3333
{
34-
"name": "toggl_get_entries",
35-
"description": "Get time entries for a date range"
34+
"name": "toggl_start_timer",
35+
"description": "Start a new time entry timer"
3636
},
3737
{
38-
"name": "toggl_get_projects",
39-
"description": "List all projects"
38+
"name": "toggl_stop_timer",
39+
"description": "Stop the currently running timer"
4040
},
4141
{
42-
"name": "toggl_report",
43-
"description": "Generate time reports"
42+
"name": "toggl_daily_report",
43+
"description": "Generate a daily report with project and workspace breakdowns"
44+
},
45+
{
46+
"name": "toggl_weekly_report",
47+
"description": "Generate a weekly report with daily and project breakdowns"
48+
},
49+
{
50+
"name": "toggl_project_summary",
51+
"description": "Get total hours per project for a date range"
52+
},
53+
{
54+
"name": "toggl_workspace_summary",
55+
"description": "Get total hours per workspace for a date range"
56+
},
57+
{
58+
"name": "toggl_list_workspaces",
59+
"description": "List all available workspaces"
60+
},
61+
{
62+
"name": "toggl_list_projects",
63+
"description": "List projects in a workspace"
64+
},
65+
{
66+
"name": "toggl_list_clients",
67+
"description": "List clients in a workspace"
68+
},
69+
{
70+
"name": "toggl_warm_cache",
71+
"description": "Pre-fetch workspace, project, and client data"
72+
},
73+
{
74+
"name": "toggl_cache_stats",
75+
"description": "Get cache statistics and performance metrics"
76+
},
77+
{
78+
"name": "toggl_clear_cache",
79+
"description": "Clear all cached data"
80+
},
81+
{
82+
"name": "toggl_get_timeline",
83+
"description": "Get Toggl Desktop activity timeline summaries and optional raw events"
4484
}
4585
]
4686
}

0 commit comments

Comments
 (0)