Thomas Camlong
84db5ccfe7
Rename layout gutter migrations
2026-08-09 08:12:46 +02:00
Thomas Camlong
3246dc4c91
style: format dnd migration metadata
2026-08-08 22:16:16 +02:00
Thomas Camlong
93276abc8c
merge: stack v2 into dnd-kit grid
2026-08-08 20:16:04 +02:00
Thomas Camlong
dd63d5600b
merge dev into v2
2026-08-08 19:54:57 +02:00
Thomas
b32ad82850
perf: cut cold route compilation and unblock preview images ( #6441 )
2026-08-07 20:24:26 +02:00
Thomas Camlong
d94cadd3e7
feat: rebuild board grid with dnd-kit
2026-08-01 22:30:40 +02:00
Thomas Camlong
5cc2df19ed
fix: satisfy database namespace lint
2026-08-01 00:43:36 +02:00
ajnart
25c9955cc6
feat: rebuild board grid experience
2026-08-01 00:43:28 +02:00
Thomas
557ebe0a2f
fix: harden v2 custom widgets and Workshop ( #6480 )
2026-07-31 13:28:53 +02:00
Thomas
df967751f6
fix(custom-widgets): address v2 merge review ( #6446 )
2026-07-23 01:55:15 +02:00
Thomas
6aceb2fd1f
feat(custom-widgets): complete Custom JSX v2 ( #6390 )
2026-07-22 20:47:19 +02:00
Thomas Camlong
1e9d3e0656
fix(db): increase mysql migration test timeout to 120s
2026-07-20 15:18:50 +02:00
Thomas
60cbd7bb7a
Merge branch 'dev' into v2
2026-07-18 23:00:30 +02:00
Thomas
5e39c8813a
feat(preferences): add enableRightClickOnWidgets user preference ( #6298 )
2026-07-17 14:42:19 +02:00
ajnart
51d8a3cc53
style: auto-fix lint and format
2026-07-15 13:54:18 +00:00
Thomas Camlong
a11583feb1
Revert "style: format all files and remove coverage report step"
...
This reverts commit 446931bc0a .
2026-07-15 15:44:49 +02:00
Thomas Camlong
446931bc0a
style: format all files and remove coverage report step
2026-07-15 15:42:13 +02:00
Thomas
3b2fc2527e
feat(custom-widgets): Full Mantine v9 + SubFetch support for custom JSX ( #6304 )
2026-07-15 14:06:02 +02:00
Thomas
def3ede3bc
fix(db): restore widget_secret migration journal entries accidentally removed by #6206 ( #6288 )
2026-07-11 15:40:06 +02:00
Nerdy Technician and Thomas
9864fed775
feat: Add Traefik Integration with dedicated widget and Add optional Icons for Gotify/Notifcation Widget (ONLY GOTIFY) ( #6206 )
...
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-07-10 16:49:24 +02:00
Thomas
885be1b9a1
fix(widget-secrets): add missing widget_secret migration and add error notifications ( #6192 )
...
* fix(widget-secrets): add missing widget_secret migration and add error notifications
The widget_secret table was defined in all three Drizzle schema files but
no SQL migration was ever generated to create it, causing setSecret to
fail with 'no such table: widget_secret' in production (drizzle-kit push
in development hid the problem).
- Add migration SQL for sqlite (0040), mysql (0042), postgresql (0008)
- Update journal entries for all three dialects
- Add onError handlers to setSecret/deleteSecret mutations so errors
are shown as red notifications instead of silently swallowed
Fixes #6186
* fix(widget-secrets): add missing drizzle snapshots for merge-url and widget_secret migrations
The merge_custom_widget_url migration (0039/0041/0007) was committed
without a corresponding snapshot, breaking drizzle-kit generate for
all future migrations. This adds:
- 0039/0041/0007 snapshots reflecting the merge-url changes
(base_url+endpoint -> url, add enabled column)
- 0040/0042/0008 snapshots reflecting the widget_secret table
All snapshot chains now match journal entries (41/43/9 entries each).
2026-07-04 17:57:40 +02:00
Thomas Camlong
77884a3179
feat: add per-widget secret storage for release provider authentication
...
Adds encrypted token storage per release widget so users can authenticate
with GitHub, GitLab, Docker Hub, etc. without needing full integration setup.
- New `widget_secret` table (all 3 DB drivers) keyed by (itemId, kind)
- tRPC router with setSecret/deleteSecret/getConfiguredKinds (board modify access required)
- Releases router injects decrypted tokens into provider requests (board view access required)
- Tokens only used for repos matching widget's stored configuration (prevents proxy abuse)
- Provider auth: GitHub (Octokit auth), GitLab (PRIVATE-TOKEN), Docker Hub (Bearer),
GHCR (registry token), npm (Bearer), Codeberg (token header)
- UI: "Provider Tokens" section in widget editor with PasswordInput per provider
2026-06-27 10:57:13 +02:00
Thomas Camlong
c892731479
fix: address PR review findings for widget-only integration refactor
...
- Fix npm scoped package support (filter time metadata keys, make
description optional, exclude falsy releases from version selection)
- Fix timetable date formatting (use Intl.DateTimeFormat for stable
MM/DD/YYYY output) and named zod import
- Guard migration 0000 against unknown provider keys
- Fix migration 0003 to delete integration links by integrationId
- Reset immich album carousel index when photo list changes
- Add bounded limit to timetable router input
- Remove stale misspelled noProviderSeleceted translation key
- Fix provider name visibility in release widget settings
- Update docs: add ArchiveTeam Warrior note, fix typos, correct
showPhotoInfo default
2026-06-27 10:57:13 +02:00
Thomas Camlong
8a5ad5861b
fix: restore ArchiveTeam Warrior as a proper integration
...
The widget-only integrations refactor incorrectly removed the
ArchiveTeam Warrior integration entirely. It only needed to be
excluded from auto-seeding (by removing defaultUrl), not deleted.
This restores the integration class, reverts the widget/router/handler
to use integration middleware, and removes archiveTeamWarrior from the
widget-only-integrations migration.
2026-06-27 10:57:13 +02:00
Thomas Camlong
fb348044fb
refactor widget-only integrations
2026-06-27 10:57:12 +02:00
Thomas
f1ee76c99c
fix(db): crash on MySQL — replace onConflictDoNothing with dialect-neutral pre-filter ( #5995 )
2026-06-18 12:45:02 +02:00
Thomas
93c008ff4f
docs: add varied improvements ( #5942 )
2026-06-12 15:50:41 +02:00
Thomas Camlong
f26007a29a
fix(db): inline custom widget seed data to fix CJS migration crash
...
`import.meta.url` is undefined when esbuild bundles migrate.ts into
migrate.cjs, causing a TypeError at startup. Inline the seed JSON
data directly instead of reading from disk, which also fixes the
Docker image missing the seed files (not copied by Dockerfile).
2026-06-10 19:32:59 +02:00
Thomas
aecbca2b81
feat: custom widgets ( #5889 )
2026-06-10 18:58:14 +02:00
Thomas
a4db9cf0dc
feat(beszel): add Beszel integration with system monitoring widgets ( #5900 )
2026-06-10 18:27:05 +02:00
Thomas Camlong
efd37dca93
fix(db): log when UNSAFE_ENABLE_MOCK_INTEGRATION is enabled during seeding
...
Warn on startup seed when mock integration env flag is set, matching demo mode visibility.
2026-06-05 18:43:33 +02:00
Thomas
0b663a7fc6
feat(onboarding): guided management and board tours ( #5756 )
2026-06-05 16:54:50 +02:00
Thomas
dd7a4908a3
feat(onboarding): enhance integration setup with Docker discovery and URL templating ( #5607 )
2026-06-05 16:50:35 +02:00
Thomas
0a6467979a
feat: add comprehensive demo mode with mock integrations ( #5870 )
2026-06-05 16:36:45 +02:00
Meier Lukas
650f761325
ci(format): fails to apply format due to conflict between --write and --check ( #5815 )
2026-05-29 11:07:48 +02:00
605af19cd8
refactor: replace ESLint + Prettier with OXC (oxlint + oxfmt) ( #5741 )
...
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
Co-authored-by: Meierschlumpf <63781622+Meierschlumpf@users.noreply.github.com >
2026-05-27 09:37:44 +02:00
Thomas and Manuel
dade477b32
feat(seed): add demo mode with pre-seeded user ( #5739 )
...
Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com >
2026-05-21 16:08:46 +02:00
Thomas and Meier Lukas
b5c316b825
feat(spotlight): rework !bang search UX ( #4813 )
...
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2026-05-07 18:38:40 +02:00
43cc68bdd4
feat: add Umami Analytics integration and widget ( #5362 )
...
Co-authored-by: Josh G <febrile42@users.noreply.github.com >
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-05-07 17:50:58 +02:00
Meier Lukas
ed6680ba6a
perf(icons): updater takes 10 seconds to run with high cpu usage ( #5608 )
2026-05-01 16:21:22 +02:00
Meier Lukas
72d636c0f0
refactor(deps): migrate to pnpm catalog ( #5464 )
2026-04-13 22:45:24 +02:00
homarr-renovate[bot]
1057b478c3
fix(deps): update testcontainers-node monorepo to ^11.14.0 ( #5498 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 14:43:08 +00:00
homarr-renovate[bot]
845f11526e
fix(deps): update dependency dotenv to ^17.4.1 ( #5462 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-10 19:22:28 +00:00
Meier Lukas
2454cac7be
fix(security): remove salt from database ( #5412 )
2026-04-10 20:48:20 +02:00
homarr-renovate[bot]
37d7c8535f
chore(deps): update dependency esbuild to ^0.28.0 ( #5435 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 18:14:39 +02:00
homarr-renovate[bot]
50bf7cdf19
fix(deps): update dependency dotenv to ^17.4.0 ( #5427 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-07 14:24:59 +00:00
homarr-renovate[bot]
e2410f143c
chore(deps): update dependency esbuild to ^0.27.5 ( #5428 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-07 16:18:19 +02:00
homarr-renovate[bot]
0a78e3f12a
fix(deps): update dependency drizzle-orm to ^0.45.2 ( #5388 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-01 19:02:54 +00:00
homarr-renovate[bot] and Meier Lukas
46db8b6ab3
fix(deps): update dependency better-sqlite3 to ^12.8.0 ( #5266 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2026-03-31 18:43:59 +02:00
homarr-renovate[bot]
bbd42600aa
chore(deps): update dependency @types/pg to ^8.20.0 ( #5331 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:05:32 +00:00