Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
b31c12f
refactor: Use only project id for permission check function
CrawlerCode May 29, 2025
49f6eb6
refactor: Improve create time entry modal
CrawlerCode May 29, 2025
bd55541
feat: Multiple timers & timer tab
CrawlerCode May 30, 2025
10d56e3
lang(lang): Declare react-intl types and fixed german translations
CrawlerCode May 30, 2025
60b9e43
refactor: Move to tanstack form + zod (removed formik + yup)
CrawlerCode Jun 3, 2025
aa42fbb
refactor: Upgrade tailwindcss to v4
CrawlerCode Jun 4, 2025
274e220
refactor(ui): Migrate to shadcn components (#48)
CrawlerCode Oct 22, 2025
a019c16
fix: Skip failed mutations for multi create time spend entires
CrawlerCode Oct 22, 2025
90933a9
fix(ui): Display deleted issues as strike-through text
CrawlerCode Oct 22, 2025
e2a5a98
feat: Enhance issue grouping (#38)
CrawlerCode Oct 25, 2025
899c21a
fix: Handle issue priorities when no default is specified
CrawlerCode Oct 25, 2025
acb8551
perf: Add react compiler and reduce unnecessary re-renders
CrawlerCode Oct 27, 2025
2d2bef8
feat: Display custom field values for info tooltips
CrawlerCode Oct 27, 2025
770fa4b
feat: Enhance search (#51)
CrawlerCode Dec 6, 2025
6b22f6b
perf: Improving data loading and increasing page loading speed (#52)
CrawlerCode Dec 14, 2025
a83bf30
build: Migrate to wxt framework (#53)
CrawlerCode Dec 18, 2025
c46486f
test: Fix all e2e tests
CrawlerCode Dec 18, 2025
4c2d534
fix: Display translated error message until redmine url is configured…
CrawlerCode Dec 18, 2025
f2a1c80
feat: Add project info tooltip
CrawlerCode Dec 30, 2025
bd1e7d0
fix: Update min browser versions to match current requirements
CrawlerCode Dec 30, 2025
df1d96c
ci: Add build number for canary version
CrawlerCode Dec 31, 2025
e7807e2
feat(filter): Add issue status filter
CrawlerCode Jan 2, 2026
d66aa6a
feat(timers): Group timers by project and sort them by newest first
CrawlerCode Jan 3, 2026
0b32d3e
refactor(timer): Refactor timer components and permission improvements
CrawlerCode Jan 7, 2026
946c4b6
fix: Fix default time entry activity selection
CrawlerCode Jan 7, 2026
37a0ebf
docs(license): Update license text for consistency
CrawlerCode Jan 7, 2026
a245275
fix: Fix eslint errors
CrawlerCode Jan 7, 2026
bff5fcf
fix: Save persistent comments per timer instead of issue
CrawlerCode Jan 10, 2026
840f48d
refactor: Run settings migration on extension update
CrawlerCode Jan 10, 2026
70994f0
refactor(ui): Move to shadcn base-ui components (#57)
CrawlerCode Jan 17, 2026
3a65610
refactor(settings): Redesign settings page and add testing redmine co…
CrawlerCode Jan 22, 2026
9e51a23
fix(timer): Close alert dialog on reset confirm
CrawlerCode Jan 22, 2026
2c0322b
feat: Allow to specify the rounding mode (#49)
CrawlerCode Jan 24, 2026
6121441
fix: Fix broken persistent comments behavior
CrawlerCode Jan 24, 2026
cd2f4d8
refactor: Use null as form default values and update zod to v4
CrawlerCode Jan 24, 2026
6c806b9
chore: Update npm dependencies
CrawlerCode Jan 24, 2026
1336e31
fix: Fix legacy settings migrations
CrawlerCode Jan 25, 2026
c2fd501
fix: Implement legacy data migrations for issues and timers
CrawlerCode Jan 25, 2026
4c3733c
refactor: Remove add notes settings option
CrawlerCode Jan 25, 2026
0319a42
fix(ui): Fix toaster styles inside shadow root
CrawlerCode Jan 25, 2026
2ca9621
ci: Add semantic release
CrawlerCode Jan 27, 2026
fade882
chore: Enforce next release version to v2.0.0
CrawlerCode Jan 27, 2026
b258127
chore(release): 2.0.0-beta.1 [skip ci]
semantic-release-bot Jan 27, 2026
9855905
ci: Publish production only for real releases not for pre-releases
CrawlerCode Jan 27, 2026
ac8f132
ci: Fix pre-release asset upload
CrawlerCode Jan 27, 2026
6f800bd
chore(deps): Update dependencies
CrawlerCode Jan 27, 2026
8011225
docs: Update README
CrawlerCode Jan 27, 2026
1d7d37c
fix: Enforce next release
CrawlerCode Jan 27, 2026
5428b51
chore(release): 2.0.0-beta.2 [skip ci]
semantic-release-bot Jan 27, 2026
cfc47f3
fix: Fix suspense settings provider (#60)
CrawlerCode Feb 14, 2026
30b9aeb
perf: Add query client restoring gate instead of restoring twice
CrawlerCode Feb 14, 2026
4a922ff
perf: Set NODE_ENV=production for release & pre-release builds
CrawlerCode Feb 14, 2026
bb79a02
chore: Add docker compose for dev setup
CrawlerCode Feb 14, 2026
2a3f1fb
chore(deps): Update dependencies
CrawlerCode Feb 14, 2026
9db6385
ci: Add super-linter for pull requests (#59)
CrawlerCode Feb 15, 2026
23f25f0
perf: Use react context for permissions management (#63)
CrawlerCode Feb 27, 2026
2f4c065
feat: Add full-screen project sidebar (experimental) (#64)
CrawlerCode Mar 2, 2026
f2f7fab
perf: Improve performance by moving stuff to dedicated components
CrawlerCode Mar 2, 2026
26e0f2f
refactor(timer): Remove the reset timer button
CrawlerCode Mar 6, 2026
66cbc7a
fix: Fix context menu dialog actions
CrawlerCode Mar 6, 2026
c095c5c
fix(ui): Polished various ui elements
CrawlerCode Mar 6, 2026
6642499
refactor: Refactor redmine api hooks
CrawlerCode Mar 8, 2026
3c97a80
chore: Add install buttons to github releases
CrawlerCode Mar 8, 2026
35af5e4
fix: Fix 0 value selection for select field
CrawlerCode Mar 8, 2026
7b15071
ci: Use pat for release creation to trigger publish pipeline
CrawlerCode Mar 8, 2026
891fd66
chore: Update dependencies
CrawlerCode Mar 8, 2026
0f316ae
fix: Fix default time entry activity
CrawlerCode Mar 8, 2026
74fe75d
ci: Fix wxt submit
CrawlerCode Mar 8, 2026
048f730
chore(release): 2.0.0-beta.3 [skip ci]
semantic-release-bot Mar 8, 2026
9a7adc1
fix: Cleanup local issue data on reset to default data
CrawlerCode Mar 9, 2026
f051446
fix: Fire toast after query reset
CrawlerCode Mar 9, 2026
6616c64
fix: Prevent empty issues fetch request (#65)
CrawlerCode Mar 9, 2026
8a506e3
chore(release): 2.0.0-beta.4 [skip ci]
semantic-release-bot Mar 9, 2026
dfcb7fb
test: Introduce snapshot-based e2e tests (#66)
CrawlerCode Mar 14, 2026
c34baa2
chore: Introduced script to automate chrome store screenshot generati…
CrawlerCode Mar 14, 2026
4f9bb88
chore: Update shadcn components
CrawlerCode Mar 14, 2026
e779018
fix(ui): Truncate field labels
CrawlerCode Mar 14, 2026
932d36d
fix(ui): Improve combobox clear button position
CrawlerCode Mar 14, 2026
1e0a7a2
test: Fix flaky tests
CrawlerCode Mar 14, 2026
6cef7e3
fix(ui): Fix layout inconsistencies depending on style settings
CrawlerCode Mar 15, 2026
2710d3b
refactor(ui): Refactor time entry week overview
CrawlerCode Mar 15, 2026
d89a901
fix(ui): Enhance skeleton components
CrawlerCode Mar 15, 2026
a925baa
fix: Fix autoFetchPages for redmine paginated queries
CrawlerCode Mar 15, 2026
8210cb5
chore: Upgrade to vite v8
CrawlerCode Mar 15, 2026
c4d9c84
refactor: Fix some warnings and errors from react-doctor
CrawlerCode Mar 16, 2026
e70f419
docs(github): Enhance issue and feature request templates (#68)
CrawlerCode Mar 19, 2026
a9bb249
chore: Update npm dependencies
CrawlerCode Mar 30, 2026
5e34a03
chore: Upgrade to typescript 6 and hardened ts config
CrawlerCode Mar 30, 2026
9ec1e07
chore: Fix eslint errors
CrawlerCode Mar 30, 2026
2c6a751
chore(release): 2.0.0-beta.5 [skip ci]
semantic-release-bot Mar 30, 2026
aed8cdc
build(deps-dev): bump vite from 8.0.3 to 8.0.5 (#70)
dependabot[bot] Apr 10, 2026
057ad2c
build(deps): bump axios from 1.14.0 to 1.15.0 (#72)
dependabot[bot] Apr 10, 2026
0d595c2
chore(security): Set pnpm minimum release age to 1 days
CrawlerCode Apr 10, 2026
e966f7e
chore(deps): Update npm dependencies
CrawlerCode Apr 10, 2026
ed42990
feat(timers): Add timer sessions (#69) (#71)
CrawlerCode Apr 11, 2026
dee98ec
fix(timer): Fix timer name cursor focus
CrawlerCode Apr 11, 2026
cd60ec7
docs: Update store screenshots
CrawlerCode Apr 11, 2026
dc7cb4a
chore(release): 2.0.0-beta.6 [skip ci]
semantic-release-bot Apr 12, 2026
6022751
feat(settings): Add option to show/hide timer sessions
CrawlerCode Apr 17, 2026
b0256f0
chore(deps): Update npm dependencies
CrawlerCode Apr 17, 2026
8b9b125
fix: Fix install listener registration
CrawlerCode Apr 17, 2026
3731d5d
feat: Add side panel entrypoint
CrawlerCode Apr 17, 2026
ba6b406
fix(ui): Fix dark mode for firefox options and sidepanel
CrawlerCode Apr 17, 2026
6c5e447
feat: Add issue status badge
CrawlerCode Apr 17, 2026
bc9b6c3
feat(settings): Add option to show/hide issue done ratio
CrawlerCode Apr 17, 2026
07604c3
chore(lint): Fix htmlhint errors
CrawlerCode Apr 18, 2026
cadd015
test: Fix flaky time drift tests
CrawlerCode Apr 18, 2026
702a2c4
docs: Update store screenshots
CrawlerCode Apr 18, 2026
0132802
chore(deps): Update npm dependencies
CrawlerCode Apr 19, 2026
a34ba16
chore(release): 2.0.0-beta.7 [skip ci]
semantic-release-bot Apr 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
39 changes: 32 additions & 7 deletions .github/DISCUSSION_TEMPLATE/feature-request-ideas.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
body:
- type: textarea
attributes:
label: Describe the feature you'd like
description: A clear and concise description of what you want to happen
validations:
required: true
---
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for sharing an idea 🙌
Clear context helps me evaluate and prioritize requests faster.
- type: textarea
id: problem
attributes:
label: "🤔 Problem to solve"
description: What problem or frustration are you trying to solve?
placeholder: I often need to...
validations:
required: true
- type: textarea
id: proposal
attributes:
label: "💡 Proposed solution"
description: What would you like to happen?
placeholder: Add an option to...
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: "📎 Additional context"
description: Add mockups, screenshots, links, or examples.
placeholder: Any extra context...
validations:
required: false
64 changes: 41 additions & 23 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,41 +1,58 @@
name: Report an issue
description: Create a report to help us improve
labels: ["bug"]
---
name: "🐞 Report a bug"
description: Help me fix bugs faster with a clear report
labels: ["bug", "status: needs-triage"]
body:
- type: checkboxes
- type: markdown
attributes:
label: Browser
description: In which browser(s) did you encounter the issue?
options:
- label: Chrome
- label: Firefox
value: |
Thanks for reporting this 🙌
Please share as much detail as you can so I can reproduce the issue and ship a fix quickly.
- type: input
id: operating-system
attributes:
label: "💻 Operating system"
description: Which operating system are you using?
placeholder: Windows 11
validations:
required: false
- type: input
id: browser
attributes:
label: "🌐 Browser and version"
description: Which browser and version are you using?
placeholder: Chrome 144.0.0.0
validations:
required: true
- type: input
id: extension-version
attributes:
label: Extension version
description: What version of the extension are you using?
placeholder: 1.0.0
label: "🧩 Extension version"
description: Which extension version are you currently using?
placeholder: 2.0.0
validations:
required: true
- type: input
id: redmine-version
attributes:
label: Redmine version
description: What version of Redmine are you using?
placeholder: 5.1.2.stable
label: "🧱 Redmine version"
description: If known, what Redmine version are you using?
placeholder: 6.0.0.stable
validations:
required: false
- type: textarea
id: bug-description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
placeholder: A clear and concise description of what the bug is
label: "🐛 Bug description"
description: What is going wrong?
placeholder: Briefly describe the issue and its impact
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: To Reproduce
description: Steps to reproduce the behavior.
label: "🧪 Steps to reproduce"
description: Share exact steps so I can reproduce it.
placeholder: |
1. Go to '...'
2. Click on '....'
Expand All @@ -44,9 +61,10 @@ body:
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional context / Screenshots
description: Add any other context about the problem here. If applicable, add screenshots to help explain your problem.
placeholder: Add other context here (e.g. screenshots, logs, etc.)
label: "📎 Additional context / screenshots"
description: Add anything else that may help (screenshots, logs, console errors, related links).
placeholder: Paste logs, screenshots, or extra details here
validations:
required: false
9 changes: 5 additions & 4 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
blank_issues_enabled: false
contact_links:
- name: Feature request / Ideas
- name: Feature request
url: https://github.com/CrawlerCode/redmine-time-tracking/discussions/new?category=feature-request-ideas
about: Share ideas for new features
- name: Ask a question
about: Discuss early ideas and product direction
- name: Ask a question
url: https://github.com/CrawlerCode/redmine-time-tracking/discussions/new?category=q-a
about: Ask questions
about: Ask usage questions and get help
2 changes: 2 additions & 0 deletions .github/linters/.codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[codespell]
skip = */src/lang/*.json,*/public/_locales/*/messages.json
25 changes: 25 additions & 0 deletions .github/linters/.htmlhintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"tagname-lowercase": true,
"attr-lowercase": true,
"attr-value-double-quotes": true,
"attr-value-not-empty": false,
"attr-no-duplication": true,
"doctype-first": true,
"tag-pair": true,
"tag-self-close": false,
"spec-char-escape": true,
"id-unique": true,
"src-not-empty": true,
"title-require": false,
"alt-require": true,
"doctype-html5": true,
"id-class-value": false,
"style-disabled": false,
"inline-style-disabled": false,
"inline-script-disabled": false,
"space-tab-mixed-disabled": "space",
"id-class-ad-disabled": false,
"href-abs-or-rel": false,
"attr-unsafe-chars": true,
"head-script-disabled": true
}
3 changes: 3 additions & 0 deletions .github/linters/.stylelintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": ["../../stylelint.config.mjs"]
}
3 changes: 3 additions & 0 deletions .github/linters/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import config from "../../eslint.config.mjs";

export default config;
6 changes: 6 additions & 0 deletions .github/linters/zizmor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
rules:
unpinned-uses:
config:
policies:
"*": ref-pin
42 changes: 42 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
name: Lint

on:
pull_request: null

permissions: {}

jobs:
lint:
name: Lint
runs-on: ubuntu-latest

permissions:
contents: read
statuses: write

steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
persist-credentials: false

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
with:
node-version: 24
cache: "pnpm"

- run: pnpm install --frozen-lockfile

- name: super-linter
uses: super-linter/super-linter/slim@v8.4.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
IGNORE_GITIGNORED_FILES: true
STRIP_DEFAULT_WORKSPACE_FOR_REGEX: true
FILTER_REGEX_EXCLUDE: ^(CHANGELOG\.md|pnpm-lock\.yaml)$
VALIDATE_BIOME_FORMAT: false # Prettier is used instead
VALIDATE_BIOME_LINT: false # Prettier is used instead
VALIDATE_JSCPD: false # TODO: Enable this linter in the future to detect code duplication
46 changes: 46 additions & 0 deletions .github/workflows/publish-pre-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
name: Publish Pre-Release

on:
release:
types:
- prereleased

permissions: {}

jobs:
publish-chrome-pre-release:
name: Publish Pre-Release to Chrome Web Store
runs-on: ubuntu-latest

permissions:
contents: write

steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
with:
node-version: 22

- run: pnpm install --frozen-lockfile

- run: pnpm run build:chrome:pre-release

- run: gh release upload "${RELEASE_TAG}" "$(ls .output/*-chrome.zip)"
env:
GITHUB_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ github.event.release.tag_name }}

- run: |
pnpm wxt submit \
--chrome-zip .output/*-chrome.zip
env:
CHROME_EXTENSION_ID: adgcdimdkkaddeopcabokepmaihfhklb
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}
Loading
Loading