Commit graph

5,666 commits

Author SHA1 Message Date
dependabot[bot]
1b2065afe0
chore(deps-dev): bump @biomejs/biome in /vrc-get-gui
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.15 to 2.4.16.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.16/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 01:32:23 +00:00
anatawa12
4634c42410
Merge pull request #2946 from vrc-get/dependabot/npm_and_yarn/vrc-get-gui/tanstack-router-116e156dcc
chore(deps): bump the tanstack-router group across 1 directory with 2 updates
2026-06-02 10:30:13 +09:00
dependabot[bot]
fd8b735ac9
chore(deps): bump the tanstack-router group across 1 directory with 2 updates
Bumps the tanstack-router group with 2 updates in the /vrc-get-gui directory: [@tanstack/react-router](https://github.com/TanStack/router/tree/HEAD/packages/react-router) and [@tanstack/router-plugin](https://github.com/TanStack/router/tree/HEAD/packages/router-plugin).


Updates `@tanstack/react-router` from 1.170.8 to 1.170.10
- [Release notes](https://github.com/TanStack/router/releases)
- [Changelog](https://github.com/TanStack/router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/TanStack/router/commits/@tanstack/react-router@1.170.10/packages/react-router)

Updates `@tanstack/router-plugin` from 1.168.11 to 1.168.13
- [Release notes](https://github.com/TanStack/router/releases)
- [Changelog](https://github.com/TanStack/router/blob/main/packages/router-plugin/CHANGELOG.md)
- [Commits](https://github.com/TanStack/router/commits/@tanstack/router-plugin@1.168.13/packages/router-plugin)

---
updated-dependencies:
- dependency-name: "@tanstack/react-router"
  dependency-version: 1.170.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: tanstack-router
- dependency-name: "@tanstack/router-plugin"
  dependency-version: 1.168.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tanstack-router
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 01:13:54 +00:00
anatawa12
580c8da047
Merge pull request #2948 from vrc-get/dependabot/npm_and_yarn/vrc-get-gui/rollup/pluginutils-5.4.0
chore(deps-dev): bump @rollup/pluginutils from 5.3.0 to 5.4.0 in /vrc-get-gui
2026-06-02 10:07:13 +09:00
anatawa12
87753ceffa
Merge pull request #2945 from vrc-get/dependabot/npm_and_yarn/vrc-get-gui/react-cd43639a56
chore(deps): bump the react group in /vrc-get-gui with 3 updates
2026-06-02 10:02:18 +09:00
anatawa12
0fa954cef0
Merge pull request #2944 from vrc-get/dependabot/cargo/uuid-1.23.2
chore(deps): bump uuid from 1.23.1 to 1.23.2
2026-06-02 10:00:32 +09:00
anatawa12
41e25d4e86
Merge pull request #2943 from vrc-get/dependabot/cargo/sysinfo-0.39.3
chore(deps): bump sysinfo from 0.39.2 to 0.39.3
2026-06-02 10:00:15 +09:00
anatawa12
3c499f9d6a
Merge pull request #2942 from vrc-get/dependabot/cargo/reqwest-0.13.4
chore(deps): bump reqwest from 0.13.3 to 0.13.4
2026-06-02 09:59:47 +09:00
dependabot[bot]
65e37ff7af
chore(deps-dev): bump @rollup/pluginutils in /vrc-get-gui
Bumps [@rollup/pluginutils](https://github.com/rollup/plugins/tree/HEAD/packages/pluginutils) from 5.3.0 to 5.4.0.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/pluginutils/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/pluginutils-v5.4.0/packages/pluginutils)

---
updated-dependencies:
- dependency-name: "@rollup/pluginutils"
  dependency-version: 5.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 00:15:03 +00:00
dependabot[bot]
48e1866ff3
chore(deps): bump the react group in /vrc-get-gui with 3 updates
Bumps the react group in /vrc-get-gui with 3 updates: [react](https://github.com/facebook/react/tree/HEAD/packages/react), [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom).


Updates `react` from 19.2.6 to 19.2.7
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react)

Updates `@types/react` from 19.2.15 to 19.2.16
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `react-dom` from 19.2.6 to 19.2.7
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react-dom)

Updates `@types/react` from 19.2.15 to 19.2.16
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: "@types/react"
  dependency-version: 19.2.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: react-dom
  dependency-version: 19.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: "@types/react"
  dependency-version: 19.2.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: react
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 00:14:30 +00:00
dependabot[bot]
968ae63a4c
chore(deps): bump uuid from 1.23.1 to 1.23.2
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.23.1 to 1.23.2.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.23.1...v1.23.2)

---
updated-dependencies:
- dependency-name: uuid
  dependency-version: 1.23.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 00:13:19 +00:00
dependabot[bot]
805be35ac6
chore(deps): bump sysinfo from 0.39.2 to 0.39.3
Bumps [sysinfo](https://github.com/GuillaumeGomez/sysinfo) from 0.39.2 to 0.39.3.
- [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/GuillaumeGomez/sysinfo/compare/v0.39.2...v0.39.3)

---
updated-dependencies:
- dependency-name: sysinfo
  dependency-version: 0.39.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 00:12:47 +00:00
dependabot[bot]
901368c9bf
chore(deps): bump reqwest from 0.13.3 to 0.13.4
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.13.3 to 0.13.4.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.13.3...v0.13.4)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-version: 0.13.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 00:12:33 +00:00
github-actions[bot]
09c8190634 v1.9.2-rc.0 vpm-v0.0.16-rc.0 v1.9.2-rc.0 2026-05-30 16:11:35 +00:00
anatawa12
5eed047fa4
Merge pull request #2940 from vrc-get/publish-workflow-crash
build: check-static-link for aarch64 linux is broken
2026-05-31 01:10:13 +09:00
anatawa12
056073834c
build: check-static-link for aarch64 linux is broken 2026-05-31 00:58:26 +09:00
anatawa12
c4117c7457
ci: allow dry-run for non-master branch 2026-05-31 00:37:37 +09:00
anatawa12
3bf6b96b93
ci: dry-run for cli build 2026-05-31 00:33:40 +09:00
anatawa12
00fb4d8546
ci: upload artifacts regardless build failure 2026-05-31 00:28:53 +09:00
github-actions[bot]
4d4c0c27d3 gui v1.1.6-rc.0 gui-v1.1.6-rc.0 2026-05-30 14:43:02 +00:00
anatawa12
a31c947c1a
Merge pull request #2935 from nekochanfood/feat/reorder-user-repos
feat: リポジトリ一覧で並び替えができるようにする
2026-05-30 21:48:44 +09:00
nekochanfood
f6e677909c fix(gui): reject remove/reorder when settings.json drifted externally
remove/reorder targeted userRepos entries by array position only. An
external write to settings.json (another ALCOM instance, VCC, vrc-get
CLI, manual edit) between the frontend's last fetch and the call
could silently delete or reorder the wrong repo.

The frontend already has the expected id (part of TauriUserRepository),
so send it alongside the index and have the backend verify the repo at
that index still has the expected id before mutating. On mismatch,
reject with an `unrecoverable_str` error; the frontend's existing
onError + onSettled refetch rolls back optimistic state and shows the
on-disk truth.

- environment_remove_repository takes (index, expected_id)
- environment_reorder_repositories takes Vec<TauriUserRepositoryRef>;
  all pairs verified up front, no partial reorder on mismatch
- verify_repo_at_index helper centralises the lookup + comparison
2026-05-30 20:50:24 +09:00
nekochanfood
8b58270235 chore: move the order of the change 2026-05-30 20:27:04 +09:00
nekochanfood
c1b297e02a chore: clean up changelog entries for reorder/remove repo changes 2026-05-30 20:21:02 +09:00
Kissa Ruokanen
a0ec779fab
Merge pull request #1 from nekochanfood/feat/improve-duplicate-repo-handling
Feat/improve duplicate repo handling
2026-05-30 14:56:51 +09:00
nekochanfood
800278a0c3 style(vpm): satisfy fmt and clippy on reorder_user_repos_by_indices
Auto-applied cargo fmt for the collect-chain split, then folded the
nested `if let` into a let-chain and replaced the manual `if let Some`
loop with `into_iter().flatten()`.
2026-05-30 14:55:43 +09:00
nekochanfood
334492e5c6 refactor: clean up issues found in branch review
- vpm: drop unused id-based reorder_user_repos; reorder_user_repos_by_indices is the only caller
- CHANGELOG: reflect the actual public API surface (reorder_user_repos_by_indices, remove_repo_at_index)
- gui: rollback optimistic delete on error in RemoveRepositoryDialog, matching setHideRepository
- gui: demote per-reorder log from info to debug to reduce noise
2026-05-30 14:45:42 +09:00
nekochanfood
1a947b7a6c fix(gui): preserve listId identity for duplicate repos across refetch
Repos with duplicate (id, url) pairs had their per-row React keys
regenerated as `crypto.randomUUID()` on every refetch, causing scroll
reset and remount on the entire list. Stabilizing by `${id} ${url}`
key with an iteration-order counter would normally fix this, but for
duplicate-keyed rows the counter assignment depends on iteration
order: when two such repos swap positions, their slot keys swap, and
the lookup returns each other's UUID — React reconciles by tearing
both rows down (visible as a flicker on the row the dragged row
crossed over).

- Stabilize listId across refetch via listIdMapRef keyed on slot key
- Extract computeSlotKey helper for reuse
- Pin listIds to the new optimistic order in reorderMutation.onMutate
  so the post-refetch augmentation lookup returns the same listIds
- Snapshot and restore the previous map in onError so a failed reorder
  rolls back cleanly
2026-05-30 14:45:13 +09:00
nekochanfood
514f52a419 Revert "fix(gui): fix DnD drop artifact and item displacement flicker"
This reverts commit 6dfdd9c5f3.
2026-05-30 12:53:59 +09:00
nekochanfood
3e42f0de4e Revert "fix(gui): fix double-row artifact and scroll reset on dnd drop"
This reverts commit 21a0e19722.
2026-05-30 12:53:54 +09:00
nekochanfood
6dfdd9c5f3 fix(gui): fix DnD drop artifact and item displacement flicker
Replaced sideEffects-based opacity hack (broken by React re-renders) with
a droppingListId state that keeps the source row hidden for the duration of
the drop animation via React's own style prop.

Removed the visualIndex estimate (rowIndex ± 1 based on transform.y) that
caused continuous className toggling during drag; rows now use their stable
rowIndex for stripe coloring, eliminating the flicker.
2026-05-30 12:50:06 +09:00
nekochanfood
21a0e19722 fix(gui): fix double-row artifact and scroll reset on dnd drop
Two regressions introduced by the listId/UUID change:

- Scroll reset: crypto.randomUUID() in useMemo regenerated all listIds
  on every re-fetch, causing React to unmount/remount all rows and lose
  scroll position. Fixed by using String(r.index) instead — index is
  stable across re-fetches for items that haven't moved, so React can
  reconcile rows in place.

- Double-row artifact: on drop, isDragging becomes false before the
  DragOverlay drop animation completes, making the real row visible at
  the destination while the overlay is still animating there. Fixed by
  using defaultDropAnimationSideEffects to force opacity:0 on the
  original element for the duration of the drop animation.
2026-05-30 12:12:24 +09:00
nekochanfood
6ab9c49c94 fix(gui): stabilize repo list against duplicate IDs in userRepos
Repositories with duplicate `id` values in settings.json caused the
frontend list to break: React keys were non-unique, dnd-kit's
SortableContext misbehaved, and the Map lookup silently discarded
duplicate entries.

- Add `index` field to `TauriUserRepository` (position in the
  userRepos array, never persisted) so operations can target a
  specific entry regardless of ID uniqueness
- Replace ID-based remove/reorder commands with index-based variants
  (`remove_repo_at_index`, `reorder_user_repos_by_indices`) in both
  vpm_settings and the Tauri command layer
- Augment each repo with a frontend-only `listId` (crypto.randomUUID)
  used exclusively as React key and dnd-kit sortable item ID
2026-05-30 11:37:11 +09:00
Kissa Ruokanen
04adf285b5 style(gui): fix CSS selector formatting to satisfy Biome formatter 2026-05-30 09:41:43 +09:00
anatawa12
665513d0fc
Merge branch 'master' into feat/reorder-user-repos 2026-05-30 01:12:28 +09:00
anatawa12
6f8cd53159
Merge pull request #2939 from vrc-get/fix-buildx-devtools-not-working
build: cargo xtask build-alcom --devtools not working
2026-05-30 01:12:17 +09:00
anatawa12
ec6454b0d4
fix: cargo xtask build-alcom --devtools not working 2026-05-30 01:04:29 +09:00
nekochanfood
533a40b1eb fix(gui): account for vertical scrollbar width in ScrollableCardTable
When the vertical scrollbar is visible, its overlay covers the rightmost
10px of the table content. Add pe-2.5 to the content wrapper via CSS
so all ScrollableCardTable instances reserve space for the scrollbar.
2026-05-29 22:19:31 +09:00
nekochanfood
90c7e249cd fix(gui): fix scroll stuttering when dragging repository list items
- Move guiAnimation query and setHideRepository mutation from each
  RepositoryRow to PageBody, passing them down as props. Because
  useSortable subscribes all rows to DnD context, every pointermove
  during drag re-rendered every row. With O(N) expensive hooks per row
  this blocked the main thread for ~130ms per event (~7fps).

- Disable dnd-kit's built-in autoScroll (autoScroll={false}) and replace
  it with a useDragAutoScroll hook. dnd-kit's AutoScroller caused jitter
  due to wrong scroll-container detection in Radix UI ScrollArea and
  double-smoothing from the viewport's scroll-behavior: smooth. The
  custom hook targets the viewport directly via viewportRef and uses
  behavior: instant to avoid CSS smooth-scroll interference.

- Suppress background-color transition on rows during active drag to
  reduce paint operations when rows shift position.

- Replace orderedIds.includes() with a Set lookup in collisionDetection.
2026-05-29 20:56:30 +09:00
Kissa Ruokanen
e057838795 docs(changelog-gui): add entry for drag-and-drop repository reordering 2026-05-29 16:04:20 +09:00
Kissa Ruokanen
437a63bcc6 fix: sort @dnd-kit/core imports to satisfy biome lint 2026-05-29 16:02:18 +09:00
Kissa Ruokanen
836bf82351
Merge branch 'master' into feat/reorder-user-repos 2026-05-29 15:47:06 +09:00
Kissa Ruokanen
316c73a6b6 feat: animate drag overlay row color based on current drop position
Track the hovered droppable via onDragOver and compute the overlay's
visual index so its background color updates in real-time as it moves
between rows, matching the same bg-secondary/30 / transition spec used
by the sortable rows.
2026-05-29 15:38:35 +09:00
Kissa Ruokanen
ec04492af8 Merge branch 'feat/reorder-user-repos' of https://github.com/nekochanfood/vrc-get into feat/reorder-user-repos 2026-05-29 15:26:38 +09:00
Kissa Ruokanen
ebd117afd2 feat: animate row colors during drag with O(k) re-renders
Replace useDndContext() + arrayMove approach with transform.y sign
detection to compute visual row index. Previously all n rows subscribed
to the dnd context and re-rendered on every collision change, each
doing an O(n) arrayMove+indexOf -- O(n^2) total.

Now only rows whose transform changes re-render, and each computes its
visual index in O(1) from the sign of transform.y from useSortable.
Total cost is O(k) where k is the number of displaced rows (typically 1-2).

Also adds background-color to the inline transition string so the
200ms color animation works correctly alongside the transform animation,
and removes guiAnimation prop drilling through RepositoryTableBody.
2026-05-29 15:26:29 +09:00
Kissa Ruokanen
253a0266e6 fix: vertically center checkboxes in repository list
Wrap checkbox in flex container to eliminate inline-block descender
space, which caused the button to align to the text baseline rather
than the vertical center of the cell.
2026-05-29 15:14:27 +09:00
Kissa Ruokanen
0cf635e892 fix: vertically center checkboxes in repository list
Add align-middle to CELL_CLASS so all table cells use vertical-align: middle.
2026-05-29 14:56:48 +09:00
anatawa12
f8923dce1b
Merge pull request #2936 from vrc-get/funding-yml
docs: add FUNDING.yml
2026-05-29 14:52:50 +09:00
anatawa12
9fc228eed0
docs: add FUNDING.yml 2026-05-29 14:46:45 +09:00
Kissa Ruokanen
54113144a8 refactor: clean up animation-related code in repository list
- Remove redundant isDragging state; derive from activeId !== null
- Move TABLE_HEAD and DRAG_OVERLAY_MODIFIERS to module level to avoid
  per-render allocations
- Remove unnecessary ?? true fallback on initialData: true query result
- Eliminate guiAnimation prop drilling through RepositoryTableBody;
  RepositoryRow now reads directly from the shared React Query cache
2026-05-29 14:37:10 +09:00