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
15 changes: 8 additions & 7 deletions .github/DISCUSSION_TEMPLATE/feature-request-ideas.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
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
---
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
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
name: Report an issue
description: Create a report to help us improve
labels: ["bug"]
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
blank_issues_enabled: false
contact_links:
- name: Feature request / Ideas
Expand Down
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
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
83 changes: 45 additions & 38 deletions .github/workflows/publish-pre-release.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,45 @@
name: Publish Pre-Release

on:
release:
types:
- prereleased

permissions:
contents: write

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

steps:
- uses: actions/checkout@v4

- 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 ${{ github.event.release.tag_name }} $(ls .output/*-chrome.zip)
env:
GITHUB_TOKEN: ${{ github.TOKEN }}

- 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 }}
---
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 }}
142 changes: 78 additions & 64 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,64 +1,78 @@
name: Publish

on:
release:
types:
- released

permissions:
contents: write

jobs:
publish-chrome:
name: Publish to Chrome Web Store
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4

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

- run: pnpm install --frozen-lockfile

- run: pnpm run build:chrome:release

- run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-chrome.zip)
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
- run: pnpm wxt submit --chrome-zip .output/*-chrome.zip
env:
CHROME_EXTENSION_ID: ldcanhhkffokndenejhafhlkapflgcjg
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}

publish-firefox:
name: Publish to Firefox Addon Store
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4

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

- run: pnpm install --frozen-lockfile

- run: pnpm run build:firefox:release

- run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-firefox.zip)
env:
GITHUB_TOKEN: ${{ github.TOKEN }}

- run: pnpm wxt submit --firefox-zip .output/*-firefox.zip --firefox-sources-zip .output/*-sources.zip
env:
FIREFOX_EXTENSION_ID: "{ea2ad5bc-e458-414d-8565-5cfe9f7cf0c2}"
FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }}
FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }}
---
name: Publish

on:
release:
types:
- released

permissions: {}

jobs:
publish-chrome:
name: Publish 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: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: ldcanhhkffokndenejhafhlkapflgcjg
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}

publish-firefox:
name: Publish to Firefox Addon 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:firefox:release

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

- run: pnpm wxt submit \
--firefox-zip .output/*-firefox.zip \
--firefox-sources-zip .output/*-sources.zip
env:
FIREFOX_EXTENSION_ID: "{ea2ad5bc-e458-414d-8565-5cfe9f7cf0c2}"
FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }}
FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }}
5 changes: 3 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
name: Release

on:
Expand All @@ -6,8 +7,7 @@ on:
- main
workflow_dispatch:

permissions:
contents: read
permissions: {}

jobs:
release:
Expand All @@ -23,6 +23,7 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false

- uses: pnpm/action-setup@v4

Expand Down
2 changes: 2 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
CHANGELOG.md
pnpm-lock.yaml
src/routeTree.gen.ts
19 changes: 9 additions & 10 deletions .redmine/README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
## Redmine dev setup
# Redmine dev setup

This folder provides local Redmine instances for manual testing against multiple Redmine versions.

### Start a version
## Start a version

Run from this directory:
Run from this directory (`.redmine`):

```bash
cd .redmine
docker compose up -d redmine-v6
```

Available services and ports:

- Redmine 6: http://localhost:3006 (service `redmine-v6`)
- Redmine 5: http://localhost:3005 (service `redmine-v5`)
- Redmine 4: http://localhost:3004 (service `redmine-v4`)
- Redmine 3: http://localhost:3003 (service `redmine-v3`)
- Redmine 2: http://localhost:3002 (service `redmine-v2`)
- Redmine 6: [http://localhost:3006](http://localhost:3006) (service `redmine-v6`)
- Redmine 5: [http://localhost:3005](http://localhost:3005) (service `redmine-v5`)
- Redmine 4: [http://localhost:3004](http://localhost:3004) (service `redmine-v4`)
- Redmine 3: [http://localhost:3003](http://localhost:3003) (service `redmine-v3`)
- Redmine 2: [http://localhost:3002](http://localhost:3002) (service `redmine-v2`)

### Notes
## Notes

- [Default credentials](https://hub.docker.com/_/redmine#accessing-the-application): `admin`/`admin`
- [Themes](https://www.redmine.org/projects/redmine/wiki/theme_list) are mounted from `.redmine/themes`
Loading