Commit Graph

12739 Commits

Author SHA1 Message Date
kolaente
5630389ce0 test(plugins): verify yaegi plugin event listener registration
Init() succeeds without panics, meaning events.RegisterListener
accepted the interpreted Listener type across the yaegi boundary.
2026-01-29 21:00:50 +01:00
kolaente
d2e61cbe09 test(plugins): verify yaegi plugin routes serve HTTP
The interpreted plugin registers Echo routes and serves HTTP responses
correctly. The /plugins/status endpoint returns JSON with plugin info.
2026-01-29 21:00:02 +01:00
kolaente
febdf8fa3c feat(plugins): add typed factory functions for yaegi interface bridging
Yaegi wraps interpreted values per the declared return type, so
sub-interface type assertions (Plugin -> AuthenticatedRouterPlugin)
do not work. Work around this by having plugins export typed factory
functions (NewAuthenticatedRouterPlugin, NewUnauthenticatedRouterPlugin)
and loading them via LoadPluginFull.
2026-01-29 20:58:22 +01:00
kolaente
5dc8982c65 feat(plugins): implement yaegi plugin loader with basic test
Move yaegi_symbols to pkg/yaegi_symbols/ to avoid import cycle.
Create pkg/plugins/yaegi/ package with LoadPlugin function.
The basic Plugin interface assertion (Name, Version) passes.
2026-01-29 20:53:31 +01:00
kolaente
14c028d78e feat(plugins): extract third-party symbols for yaegi (echo, watermill) 2026-01-29 20:50:03 +01:00
kolaente
144112d8eb feat(plugins): extract vikunja package symbols for yaegi 2026-01-29 20:47:58 +01:00
kolaente
ee2dee0127 test(plugins): add yaegi smoke test 2026-01-29 17:49:45 +01:00
Frederick [Bot]
f7503c0bfe chore(i18n): update translations via Crowdin 2026-01-29 01:11:11 +00:00
kolaente
e4b99dd31f fix(nav): show shared sub-projects in sidebar when the parent is inaccessible (#2176)
Fixes #2175
2026-01-28 16:09:46 +00:00
kolaente
6087d7454c docs(agents): include go tips [skip ci] 2026-01-27 22:16:22 +01:00
kolaente
3ba5192b1b chore: v1.0.0 release preparations v1.0.0 2026-01-27 18:17:33 +01:00
kolaente
e5da54e58a fix(editor): prevent crash when exiting edit mode in tiptap
Use v-show instead of v-if for EditorToolbar and BubbleMenu to avoid
a race condition between Vue's DOM reconciliation and tiptap's internal
DOM manipulation during unmount. This fixes the "Cannot read properties
of null (reading 'insertBefore')" error that occurred when saving a
task description.

Adds regression test to verify the fix.

Upstream issue: https://github.com/ueberdosis/tiptap/issues/7342
Fixes: https://github.com/go-vikunja/vikunja/issues/1770
2026-01-27 14:03:02 +01:00
renovate[bot]
f216fea2b3 fix(deps): update tiptap to v3.17.0 2026-01-27 14:03:02 +01:00
XiangCany
d238385199 fix(files): make sure base directory exists when using local file system (#2166)
Resolves  #2162
2026-01-27 13:11:44 +01:00
kolaente
3aa1e90d7f feat: add vikunja doctor command for diagnostic checks (#2165)
Add a new `vikunja doctor` CLI command that performs diagnostic checks.

Checks performed:

- **System**: Version, Go version, OS/arch, running user, working
directory
- **Configuration**: Config file path, public URL, JWT secret, CORS
origins
- **Database**: Connection test, server version
(SQLite/MySQL/PostgreSQL)
- **Files**: Storage path, writability, disk space (Unix only)
- **Optional services** (when enabled):
  - Redis: Connection ping
  - Typesense: Health endpoint
  - Mailer: SMTP connection
  - LDAP: Bind authentication test
  - OpenID Connect: Discovery endpoint for each configured provider
2026-01-27 09:12:31 +00:00
kolaente
d61caab168 feat: add required checkbox to confirm issue search before submission
Adds a pre-submission checklist to both bug report and feature request
templates requiring users to confirm they have searched for existing
issues before opening a new one.
2026-01-27 08:54:22 +01:00
kolaente
28593e6460 fix: use dark shadows for email template in dark mode (#2155) 2026-01-26 15:46:44 +01:00
kolaente
72a928dcce chore: use correct repo and issue url 2026-01-26 12:21:24 +01:00
renovate[bot]
662f3a1ea8 chore(deps): update dev-dependencies (major) (#1375) 2026-01-25 21:54:47 +01:00
renovate[bot]
5b0960e5e7 fix(deps): update module github.com/redis/go-redis/v9 to v9.17.3 (#2153)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[github.com/redis/go-redis/v9](https://redirect.github.com/redis/go-redis)
| `v9.17.2` → `v9.17.3` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fredis%2fgo-redis%2fv9/v9.17.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fredis%2fgo-redis%2fv9/v9.17.2/v9.17.3?slim=true)
|

---

### Release Notes

<details>
<summary>redis/go-redis (github.com/redis/go-redis/v9)</summary>

###
[`v9.17.3`](https://redirect.github.com/redis/go-redis/releases/tag/v9.17.3):
9.17.3

[Compare
Source](https://redirect.github.com/redis/go-redis/compare/v9.17.2...v9.17.3)

#### 🐛 Bug Fixes

- **Connection Pool**: Fixed zombie `wantConn` elements accumulation in
`wantConnQueue` that could cause resource leaks in high concurrency
scenarios with dial failures
([#&#8203;3680](https://redirect.github.com/redis/go-redis/pull/3680))
by [@&#8203;cyningsun](https://redirect.github.com/cyningsun)
- **Stream Commands**: Fixed `XADD` and `XTRIM` commands to use exact
threshold (`=`) when `Approx` is false, ensuring precise stream trimming
behavior
([#&#8203;3684](https://redirect.github.com/redis/go-redis/pull/3684))
by [@&#8203;ndyakov](https://redirect.github.com/ndyakov)
- **Connection Pool**: Added `ConnMaxLifetimeJitter` configuration to
distribute connection expiration times and prevent the thundering herd
problem when many connections expire simultaneously
([#&#8203;3666](https://redirect.github.com/redis/go-redis/pull/3666))
by [@&#8203;cyningsun](https://redirect.github.com/cyningsun)
- **Client Options**: Added `DialerRetries` and `DialerRetryTimeout`
fields to `ClusterOptions`, `RingOptions`, and `FailoverOptions` to
allow configuring connection retry behavior for cluster, ring, and
sentinel clients
([#&#8203;3686](https://redirect.github.com/redis/go-redis/pull/3686))
by
[@&#8203;naveenchander30](https://redirect.github.com/naveenchander30)

#### Contributors

We'd like to thank all the contributors who worked on this release!

[@&#8203;cyningsun](https://redirect.github.com/cyningsun),
[@&#8203;naveenchander30](https://redirect.github.com/naveenchander30),
and [@&#8203;ndyakov](https://redirect.github.com/ndyakov)

***

**Full Changelog**:
<https://github.com/redis/go-redis/compare/v9.17.2...v9.17.3>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/go-vikunja/vikunja).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-25 15:41:10 +01:00
kolaente
b21c9acb0d fix(routes): restore SPA routing after Echo v5 upgrade
In Echo v5, the 404 error for unmatched routes implements the
HTTPStatusCoder interface but is not a *HTTPError. This caused
the static middleware to fail to catch 404s and serve index.html
for SPA routes, leading to reloading SPA routes returning 404.

Caused by regression introduced in 9a61453e8.

Fixes #2149
Fixes #2152
2026-01-25 11:07:48 +01:00
renovate[bot]
233908b30b chore(deps): update dependency sass-embedded to v1.97.3 (#2150)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [sass-embedded](https://redirect.github.com/sass/embedded-host-node) |
[`1.97.2` →
`1.97.3`](https://renovatebot.com/diffs/npm/sass-embedded/1.97.2/1.97.3)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/sass-embedded/1.97.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sass-embedded/1.97.2/1.97.3?slim=true)
|

---

### Release Notes

<details>
<summary>sass/embedded-host-node (sass-embedded)</summary>

###
[`v1.97.3`](https://redirect.github.com/sass/embedded-host-node/blob/HEAD/CHANGELOG.md#1973)

[Compare
Source](https://redirect.github.com/sass/embedded-host-node/compare/1.97.2...1.97.3)

- Fix a bug where nesting an at-rule within multiple style rules in
plain CSS
  could cause outer style rules to be omitted.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3
* * * ) (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/go-vikunja/vikunja).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-25 08:59:41 +01:00
kolaente
375eb37cf3 chore: v1.0.0-rc4 release preparations v1.0.0-rc4 2026-01-24 21:11:50 +01:00
kolaente
ee4b5a63f4 feat(dev): add mage command to release 2026-01-24 20:41:21 +01:00
renovate[bot]
9a61453e86 fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131)
Closes https://github.com/go-vikunja/vikunja/pull/2133

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: kolaente <k@knt.li>
2026-01-24 20:38:32 +01:00
renovate[bot]
83474b76d3 fix(deps): update dependency @sentry/vue to v10.36.0 (#2147)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[@sentry/vue](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/vue)
([source](https://redirect.github.com/getsentry/sentry-javascript)) |
[`10.35.0` →
`10.36.0`](https://renovatebot.com/diffs/npm/@sentry%2fvue/10.35.0/10.36.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2fvue/10.36.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2fvue/10.35.0/10.36.0?slim=true)
|

---

### Release Notes

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/vue)</summary>

###
[`v10.36.0`](https://redirect.github.com/getsentry/sentry-javascript/compare/10.35.0...10.36.0)

[Compare
Source](https://redirect.github.com/getsentry/sentry-javascript/compare/10.35.0...10.36.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/go-vikunja/vikunja).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-24 19:30:26 +01:00
kolaente
ff01f8e859 feat(api-tokens): support title and scopes query parameters (#2143)
This allows external integrations to link directly to the API token creation page with pre-selected title and permission scopes. URLs can now use `?title=Name&scopes=group:perm,group:perm` format to pre-populate the form.

Example URL:
```
/user/settings/api-tokens?title=My%20Integration&scopes=tasks:create,tasks:delete,projects:read_all
```
2026-01-24 18:08:23 +00:00
kolaente
1731b03c22 fix(editor): prevent file upload overlay when dragging text from editor (#2148)
Fixes the file upload overlay incorrectly appearing when dragging text from within the TipTap description editor to outside of it.

Fixes #1663
2026-01-24 18:41:42 +01:00
kolaente
5050cd7162 chore(dev): add prepare worktree command to mage 2026-01-24 18:32:23 +01:00
kolaente
4df8da549e fix(auth): scope query binding
Resolves https://github.com/go-vikunja/vikunja/issues/2146
2026-01-24 17:51:35 +01:00
kolaente
731b7c3001 fix: avoid mutating global http.DefaultClient in webhook proxy (#2145)
Fixes a bug where the webhook HTTP client was mutating `http.DefaultClient` (the global singleton), causing ALL HTTP requests in the application to use the webhook proxy. This broke OIDC authentication and other external HTTP calls when webhook proxy was configured.

Fixes #2144
2026-01-24 13:58:47 +01:00
kolaente
acbb06e337 feat(frontend): preserve Gantt date range when switching views (#2141)
Adds a `viewFilters` Pinia store that stores query params per view ID to sync Gantt filters to the store whenever they change. This persists the custom date ranges when switching between views.

Fixes #2124
2026-01-24 13:12:35 +01:00
renovate[bot]
47bfb6a424 chore(deps): update dev-dependencies 2026-01-24 13:01:45 +01:00
kolaente
0cd25f47e5 fix: populate complete entity data in deletion event webhooks (#2135)
Fixes webhook payloads for deletion events that were previously
containing incomplete or empty entity data. This occurred because
entities were being deleted from the database before the webhook event
was dispatched.

## Changes

This PR implements four targeted fixes to ensure complete entity data in
deletion event webhooks:

### 1. TaskAssignee Deletion (`pkg/models/listeners.go`)
- Extended `reloadEventData()` to fetch full assignee user data by ID
- Webhook payload now includes complete user object (username, email,
timestamps, etc.)

### 2. TaskComment Deletion (`pkg/models/task_comments.go`)
- Modified `Delete()` to call `ReadOne()` before deletion
- Ensures comment text, author, and timestamps are included in webhook
payload
- Follows the same pattern used by `Task.Delete()` and
`TaskAttachment.Delete()`

### 3. TaskAttachment Deletion (`pkg/models/task_attachment.go`)
- Extended `ReadOne()` to fetch the `CreatedBy` user
- Webhook payload now includes file creator information

### 4. TaskRelation Deletion (`pkg/models/task_relation.go`)
- Modified `Delete()` to fetch complete relation including `CreatedBy`
user before deletion
- Webhook payload now includes relation timestamps and creator
information

Fixes #2125
2026-01-24 12:50:18 +01:00
renovate[bot]
8e3ed45c85 chore(deps): update pnpm to v10.28.1 2026-01-24 00:01:17 +01:00
kolaente
131f78277d feat(quick add magic): add more test cases 2026-01-24 00:00:46 +01:00
kolaente
8419794b65 fix(quick-add-magic): prevent parsing partial keywords in words (#2140)
- Fixed date parser incorrectly extracting date components from within
words
- "Renovation - 2nd Floor Bath" no longer becomes "Reation - Floor Bath"
with a due date of November 2nd

## Changes
- `getMonthFromText` now requires word boundaries, preventing "nov" from
matching inside "Renovation" or "mar" inside "Remark"
- `getDayFromText` now only matches ordinals when followed by
end-of-string, time expressions, or month names, preventing "2nd Floor"
from being parsed as a date

Resolves
https://community.vikunja.io/t/quick-add-magic-unintended-date-parsing/4259
2026-01-23 22:23:42 +00:00
renovate[bot]
a86bbfa121 fix(deps): update module github.com/labstack/echo/v4 to v4.15.0 2026-01-23 17:21:54 +01:00
renovate[bot]
663e7ba3d4 fix(deps): update dependency @sentry/vue to v10.35.0 2026-01-23 17:21:45 +01:00
kolaente
c11ea4c87f fix(unsplash): add utm parameters to author links
Resolves https://github.com/go-vikunja/vikunja/issues/2127
2026-01-23 11:58:34 +01:00
renovate[bot]
06e90bc9c2 chore(deps): update dev-dependencies 2026-01-22 11:43:42 +01:00
renovate[bot]
89c0548e16 fix(deps): update module github.com/labstack/echo-jwt/v4 to v5 2026-01-22 11:30:56 +01:00
renovate[bot]
0e5e135e72 fix(deps): update module github.com/labstack/echo/v4 to v5 2026-01-22 11:02:04 +01:00
renovate[bot]
a64364fdc2 chore(deps): update crowdin/github-action digest to b4b468c 2026-01-22 11:01:30 +01:00
renovate[bot]
fa142308d2 fix(deps): update dependency vue to v3.5.27 2026-01-22 11:01:11 +01:00
renovate[bot]
34472d1358 fix(deps): update dependency ufo to v1.6.3 2026-01-18 17:37:50 +01:00
renovate[bot]
c09e63d7d8 chore(deps): update dependency happy-dom to v20.3.0 2026-01-18 17:37:43 +01:00
renovate[bot]
7aa6883e76 chore(deps): update actions/cache digest to 8b402f5 2026-01-17 21:59:34 +01:00
renovate[bot]
d91da07ce3 fix(deps): update module github.com/olekukonko/tablewriter to v1.1.3 2026-01-17 21:59:23 +01:00
renovate[bot]
2a74633e4f chore(deps): update dependency @types/node to v22.19.6 2026-01-17 21:59:09 +01:00