Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
451 commits
Select commit Hold shift + click to select a range
3b6af2e
Merge pull request #1895 from Silo-Server/feat/home-rows-collection-r…
Quick104 Oct 4, 2026
e1efe6e
Merge remote-tracking branch 'origin/feat/api-personal-sync-schedule'…
Quick104 Oct 4, 2026
d58313a
test(web): look up library checkboxes by label in the 100-page tests
Quick104 Oct 4, 2026
0b4d94f
fix(web): keep the page save bar clear of the playback bar and in lin…
Quick104 Oct 4, 2026
69f83ba
Merge remote-tracking branch 'origin/feat/api-collection-row-referenc…
Quick104 Oct 4, 2026
155a407
Merge pull request #1897 from Silo-Server/feat/home-rows-library-copies
Quick104 Oct 4, 2026
7267ec9
chore(api): drop the #1615 breaking-change approvals now that they me…
Quick104 Oct 4, 2026
3c3b0eb
Merge remote-tracking branch 'origin/fix/sections-missing-collection-…
Quick104 Oct 4, 2026
4df5286
Merge pull request #1898 from Silo-Server/feat/home-rows-profile-rule…
Quick104 Oct 4, 2026
2fda3e2
feat(collections): edit a collection from where you browse it
Quick104 Oct 4, 2026
d9711ae
fix(collections): read a collection fresh when its editor opens
Quick104 Oct 4, 2026
51d3805
fix(api): advertise create descriptions only where the store keeps them
Quick104 Oct 4, 2026
50a2bd6
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
e5c15e0
chore(api): drop breaking-change approvals consumed by #1615
Quick104 Oct 4, 2026
60969be
Merge pull request #1888 from Silo-Server/feat/api-personal-create-de…
Quick104 Oct 4, 2026
c22af4f
Merge feat/collections-revamp into feat/api-personal-preview-posters
Quick104 Oct 4, 2026
6989b56
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
5782ce2
Merge pull request #1892 from Silo-Server/feat/api-personal-preview-p…
Quick104 Oct 4, 2026
d23fecc
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
8b20315
Merge fix/home-rows-review-followups into integrate/collections-web-base
Quick104 Oct 4, 2026
2de1c46
Merge feat/api-collections-contains-item into integrate/collections-w…
Quick104 Oct 4, 2026
8eafa18
fix(web): import collection type helpers from their new module
Quick104 Oct 4, 2026
ec8dca9
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
8fc2934
feat(api): advertise template summaries in admin collection capabilities
Quick104 Oct 4, 2026
26ed81c
Merge pull request #1900 from Silo-Server/feat/api-profile-section-de…
Quick104 Oct 4, 2026
99bb457
Merge remote-tracking branch 'origin/feat/collections-revamp' into re…
Quick104 Oct 4, 2026
2f7810e
refactor(web): share the Home rows list, menu and dialog parts
Quick104 Oct 4, 2026
21fb32f
Merge pull request #1901 from Silo-Server/refactor/home-screen-save-hook
Quick104 Oct 4, 2026
25ee3d3
Merge pull request #1905 from Silo-Server/feat/home-screen-home-rows
Quick104 Oct 4, 2026
49d503e
fix(web): read a confirm's list and warning with its description
Quick104 Oct 4, 2026
92d310a
Merge remote-tracking branch 'origin/feat/collections-revamp' into ch…
Quick104 Oct 4, 2026
24d051a
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
df4145d
Merge pull request #1894 from Silo-Server/feat/api-bundle-template-su…
Quick104 Oct 4, 2026
a3706af
chore(contracts): mark the recipe candidates route unused in the v2 l…
Quick104 Oct 4, 2026
43f76c0
Merge pull request #1908 from Silo-Server/chore/home-rows-cleanup
Quick104 Oct 4, 2026
3978091
Merge pull request #1909 from Silo-Server/test/catalog-page-tests
Quick104 Oct 4, 2026
bd893c1
fix(web): pick copy targets for book rows by the row's own kind
Quick104 Oct 4, 2026
651c909
fix(web): drop a switched-away profile's queued rows from the next save
Quick104 Oct 4, 2026
fc9e3b0
Merge origin/feat/collections-revamp into feat/api-collection-capabil…
Quick104 Oct 4, 2026
5359bd3
fix(collections): reject cron time zone prefixes and accept TZ= in tests
Quick104 Oct 4, 2026
66bc982
Merge pull request #1913 from Silo-Server/fix/home-rows-review-followups
Quick104 Oct 4, 2026
9bbd642
Merge pull request #1912 from Silo-Server/test/collections-editor-gol…
Quick104 Oct 4, 2026
68455a9
Merge remote-tracking branch 'origin/feat/collections-revamp' into re…
Quick104 Oct 4, 2026
90e42e3
fix(web): import collection type helpers from their new home in home …
Quick104 Oct 4, 2026
0c3b29a
feat(collections): one collection editor page, starting with Manual
Quick104 Oct 4, 2026
aa318a5
Merge pull request #1914 from Silo-Server/refactor/collection-scope-a…
Quick104 Oct 4, 2026
3c52ab3
fix(collections): run stored zone-prefixed schedules on the local clock
Quick104 Oct 4, 2026
5d99dc2
fix(collections): stay in create mode until a new collection is read …
Quick104 Oct 4, 2026
73d0214
fix(collections): keep the Titles heading's name to the word Titles
Quick104 Oct 4, 2026
4515e11
fix(collections): use one sharing switch and one wording everywhere
Quick104 Oct 4, 2026
8518481
fix(collections): load each scope's editors only, and title the page
Quick104 Oct 4, 2026
a66c01e
test(collections): pin Undo's position, read-back failure, titles and…
Quick104 Oct 4, 2026
6f5e613
Merge pull request #1917 from Silo-Server/fix/personal-collection-tab…
Quick104 Oct 4, 2026
803d15c
Merge remote-tracking branch 'origin/feat/collections-revamp' into fi…
Quick104 Oct 4, 2026
a29f5f1
fix(web): start the synced-list editor from the saved collection afte…
Quick104 Oct 4, 2026
4ba698e
fix(web): name the libraries in the rule sentence
Quick104 Oct 4, 2026
adf0345
Merge pull request #1896 from Silo-Server/feat/api-collection-capabil…
Quick104 Oct 4, 2026
9f30cfc
fix(web): break the rule sentence like the mockup and keep "All libra…
Quick104 Oct 4, 2026
faa3ae3
Merge pull request #1918 from Silo-Server/fix/personal-poster-removal…
Quick104 Oct 4, 2026
2a9d54b
feat(collections): Starter packs replace template bundles
Quick104 Oct 4, 2026
a38136e
feat(collections): one card style on the Collections page
Quick104 Oct 4, 2026
e4d4117
Merge commit 'faa3ae388c678a3e8e6e79fa49661ff87c1acbbc' into feat/api…
Quick104 Oct 4, 2026
1f7843e
fix(collections): settle Starter packs after a run and tie the rail t…
Quick104 Oct 4, 2026
c362e55
Merge pull request #1919 from Silo-Server/refactor/shared-save-bar
Quick104 Oct 4, 2026
23edcc6
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
af2e2e5
fix(collections): keep card drags from opening or reordering by mistake
Quick104 Oct 4, 2026
6eec0e5
fix(collections): offer Sync now only when the collection's storage c…
Quick104 Oct 4, 2026
1ab773d
fix(collections): run a due synced list on one node and return what w…
Quick104 Oct 4, 2026
610e4ff
feat(collections): one Smart page for create and edit, with a live po…
Quick104 Oct 4, 2026
6658812
test(api): pin which templates the admin template list offers
Quick104 Oct 4, 2026
b635196
feat(api): offer only creatable admin templates
Quick104 Oct 4, 2026
8e786a1
docs(collections): say why in page comments instead of citing working…
Quick104 Oct 4, 2026
26db612
chore(web): raise the launch bundle budget for the shared collection …
Quick104 Oct 4, 2026
45857da
fix(collections): block saving a server collection with no libraries
Quick104 Oct 4, 2026
d02bf36
refactor(web): import the user collection link from catalogSearchParams
Quick104 Oct 4, 2026
1d340f8
docs(api): name the sources the admin template list keeps
Quick104 Oct 4, 2026
2d6c3bf
Merge pull request #1920 from Silo-Server/feat/collection-edit-entry-…
Quick104 Oct 4, 2026
55cd117
Merge pull request #1899 from Silo-Server/feat/api-personal-sync-sche…
Quick104 Oct 4, 2026
cec3698
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
5a30172
chore(api): drop the #1615 breaking-change approvals now that they me…
Quick104 Oct 4, 2026
55bb105
feat(collections): admin List view for server collections
Quick104 Oct 4, 2026
c4a4685
fix(collections): free each List row after its own change or sync fin…
Quick104 Oct 4, 2026
e4e2d90
fix(collections): return Smart and Synced list editors to the List vi…
Quick104 Oct 4, 2026
c21ac87
refactor(collections): drop the unused admin editor path builder
Quick104 Oct 4, 2026
7ab364e
Merge pull request #1902 from Silo-Server/feat/api-collection-row-ref…
Quick104 Oct 4, 2026
2fd00a4
Merge pull request #1904 from Silo-Server/fix/sections-missing-collec…
Quick104 Oct 4, 2026
acaaddb
test(collections): pin an Add to collection that never dead-ends
Quick104 Oct 4, 2026
29a009b
feat(collections): Add to collection never dead-ends
Quick104 Oct 4, 2026
ab10dc0
test(collections): pin Add to collection's load error, saving focus a…
Quick104 Oct 4, 2026
77dd554
fix(collections): keep Add to collection honest on errors and keyboar…
Quick104 Oct 4, 2026
745470c
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
3131f36
fix(collections): keep the membership read through the notification s…
Quick104 Oct 4, 2026
8023cf3
feat(collections): create Synced lists from one source panel
Quick104 Oct 4, 2026
43f9fea
docs(collections): describe the Synced list step and where templates …
Quick104 Oct 4, 2026
4c5e668
feat(collections): Arrange shelves for one library
Quick104 Oct 4, 2026
b736508
fix(collections): create a server Synced list hidden when its switch …
Quick104 Oct 4, 2026
8e38dd1
fix(collections): show Searching… for a new MDBList term
Quick104 Oct 4, 2026
1533740
fix(collections): take one Create for a new Synced list
Quick104 Oct 4, 2026
9b3dbce
refactor(collections): drop the unused isPicked helper
Quick104 Oct 4, 2026
e60016c
Merge pull request #1907 from Silo-Server/feat/api-collections-contai…
Quick104 Oct 4, 2026
160bf6c
fix(collections): keep honoring time zone prefixes on cron schedules
Quick104 Oct 4, 2026
959dab5
Merge feat/collections-revamp into refactor/calm-kit
Quick104 Oct 4, 2026
88b0b9f
fix(collections): sort name-ordered shelves the way the server does
Quick104 Oct 4, 2026
92b7469
fix(collections): keep Arrange moves off orders someone else changed
Quick104 Oct 4, 2026
7abfa91
Merge pull request #1926 from Silo-Server/refactor/calm-kit
Quick104 Oct 4, 2026
b9faa5c
Merge origin/feat/collections-revamp into feat/collection-editor-manual
Quick104 Oct 4, 2026
dcc5276
Merge pull request #1949 from Silo-Server/fix/collection-schedule-zon…
Quick104 Oct 4, 2026
3d43d97
feat(collections): pin a collection to the start of its shelf
Quick104 Oct 4, 2026
ede66ab
Merge pull request #1939 from Silo-Server/feat/collection-editor-manual
Quick104 Oct 4, 2026
043db10
fix(web): count unnamed libraries in the rule sentence
Quick104 Oct 4, 2026
f6ac770
fix(collections): keep a press on a card's ⋯ button from dragging the…
Quick104 Oct 4, 2026
ec1af4b
feat(collections): edit Synced lists in the same editor, with sync st…
Quick104 Oct 4, 2026
d94825e
docs(collections): describe editing a Synced list
Quick104 Oct 4, 2026
751f63c
fix(collections): say Pin reaches every library, and let pinned drags…
Quick104 Oct 4, 2026
831cda4
Merge pull request #1941 from Silo-Server/feat/collection-starter-packs
Quick104 Oct 4, 2026
9f592bd
fix(web): read one unnamed library as "1 library"
Quick104 Oct 4, 2026
b812941
fix(collections): open a multi-library server collection across all i…
Quick104 Oct 4, 2026
bac6ead
fix(collections): tighten Synced list editing after review
Quick104 Oct 4, 2026
4711819
docs(collections): note what a saved Synced list sends after review f…
Quick104 Oct 4, 2026
93a4765
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
b5a3b9f
Merge pull request #1940 from Silo-Server/fix/rule-sentence-libraries
Quick104 Oct 4, 2026
85b4101
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
e0d98ed
Merge pull request #1942 from Silo-Server/feat/collections-user-page
Quick104 Oct 4, 2026
56f405a
feat(collections): select several server collections, and move page a…
Quick104 Oct 4, 2026
8188398
Merge origin/feat/collections-revamp into feat/collections-admin-list
Quick104 Oct 4, 2026
18f2e99
fix(collections): leave select mode when the list has nothing to pick
Quick104 Oct 4, 2026
6e031cf
Merge pull request #1944 from Silo-Server/feat/api-admin-creatable-te…
Quick104 Oct 4, 2026
f304e43
test(collections): wait for Starter packs to open after More closes
Quick104 Oct 4, 2026
882701c
feat(collections): one New collection button with a type picker
Quick104 Oct 4, 2026
907be7c
docs(collections): describe the New collection picker
Quick104 Oct 4, 2026
b5b0e2d
fix(collections): show a hidden row's own poster while the change is …
Quick104 Oct 4, 2026
6c2a84d
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
ff9ad44
fix(web): keep the max-titles limit when a decimal is typed
Quick104 Oct 4, 2026
80b1e3f
fix(collections): return focus to the page when a dialog swaps for an…
Quick104 Oct 4, 2026
57d9f06
Merge pull request #1945 from Silo-Server/feat/collections-admin-list
Quick104 Oct 4, 2026
629daf6
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 4, 2026
293c95d
Merge branch 'feat/add-to-collection-inline' into integrate/collectio…
Quick104 Oct 4, 2026
1acdc2a
Merge pull request #1943 from Silo-Server/feat/collection-editor-smart
Quick104 Oct 5, 2026
cf95687
Merge branch 'feat/collections-admin-select' into integrate/collectio…
Quick104 Oct 5, 2026
a5e7826
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
26f6ec3
Merge origin/feat/collections-revamp into feat/collections-admin-arrange
Quick104 Oct 5, 2026
2772459
fix(collections): reset Add to collection ticks when the title changes
Quick104 Oct 5, 2026
80376cd
Merge origin/feat/collections-revamp into feat/collection-synced-create
Quick104 Oct 5, 2026
7069f39
fix(collections): reject MDBList links with credentials or an odd port
Quick104 Oct 5, 2026
e8590b4
test(collections): wait for Starter packs to open after More closes
Quick104 Oct 5, 2026
840db30
Merge pull request #1952 from Silo-Server/feat/collections-admin-arrange
Quick104 Oct 5, 2026
5381dd3
Merge pull request #1947 from Silo-Server/feat/add-to-collection-inline
Quick104 Oct 5, 2026
27aca68
fix(collections): turn Pin off where Arrange can't change shelves
Quick104 Oct 5, 2026
0bdb031
feat(web): open Home rows on a new collection row or an existing row …
Quick104 Oct 5, 2026
82ead9b
docs(collections): describe the links into Home rows
Quick104 Oct 5, 2026
231567d
fix(web): keep profile collection options loading until the libraries…
Quick104 Oct 5, 2026
28434e9
fix(web): hand the new row back to the collection after a Home rows link
Quick104 Oct 5, 2026
db13569
Merge pull request #1950 from Silo-Server/feat/collection-synced-create
Quick104 Oct 5, 2026
665c3ba
Merge origin/feat/collections-revamp into feat/collection-synced-edit
Quick104 Oct 5, 2026
be7dd13
fix(web): finish the revamp merge for the Synced list editor
Quick104 Oct 5, 2026
58048ec
Merge pull request #1960 from Silo-Server/feat/collections-pin-to-shelf
Quick104 Oct 5, 2026
e590d55
Merge origin/feat/collections-revamp into feat/collections-admin-select
Quick104 Oct 5, 2026
a49d854
fix(collections): keep a blocked selected delete open, and drop the l…
Quick104 Oct 5, 2026
a17ebea
fix(collections): read a Synced list again until an outside sync ends
Quick104 Oct 5, 2026
eb4579c
fix(collections): read a Synced list again after a failed Sync now
Quick104 Oct 5, 2026
1e6042e
fix(collections): read row use afresh for bulk delete, report sync wa…
Quick104 Oct 5, 2026
df7b655
fix(collections): send no libraries when saving a personal Trakt list
Quick104 Oct 5, 2026
2f477b1
fix(collections): read row use afresh before a bulk hide, and hold sw…
Quick104 Oct 5, 2026
e57e2cf
fix(collections): drop a Sync now's skipped count once another sync runs
Quick104 Oct 5, 2026
6dc6b90
fix(collections): say "Leo loses it" when one other profile loses a c…
Quick104 Oct 5, 2026
87b416e
fix(collections): drag a card by touch only from its handle
Quick104 Oct 5, 2026
b15bcd6
fix(collections): keep the name in a confirm dialog's title while it …
Quick104 Oct 5, 2026
09f0745
Merge origin/feat/collections-revamp into feat/collections-user-page
Quick104 Oct 5, 2026
2f313df
fix(collections): lock Starter packs while adding and explain failure…
Quick104 Oct 5, 2026
a7410f8
fix(collections): stop a bulk hide when row use can't be read, and wa…
Quick104 Oct 5, 2026
9c02c57
fix(collections): keep Starter packs' dry run out of collection refre…
Quick104 Oct 5, 2026
790d7e0
docs(collections): note Starter packs' lock and refresh ownership
Quick104 Oct 5, 2026
bbe551d
fix(collections): stop polling the editor for a sync it can't see
Quick104 Oct 5, 2026
726f373
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
f60177b
test(collections): drop the deleted synced list forms from the Pin wo…
Quick104 Oct 5, 2026
48c8a8f
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
0d65e7e
feat(collections): say what a Synced list decides and what you decide
Quick104 Oct 5, 2026
6ec72d5
Merge pull request #1963 from Silo-Server/feat/collections-admin-select
Quick104 Oct 5, 2026
99c727b
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
7d8910a
fix(collections): offer Sync on the Collections admin page only when …
Quick104 Oct 5, 2026
fc21dbd
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
1d5dca5
Merge feat/collection-synced-edit into feat/collection-new-picker
Quick104 Oct 5, 2026
ff05994
docs(collections): say the picker sends the server editor back to the…
Quick104 Oct 5, 2026
a94000c
Merge branch 'feat/collections-admin-select' into tmp/w2-fresh
Quick104 Oct 5, 2026
26fe197
Merge the earlier integrate/collections-w2-lanes round into the refre…
Quick104 Oct 5, 2026
5bde6f9
fix(web): wait for refreshed collections before a Home rows add link …
Quick104 Oct 5, 2026
1cee9bf
fix(web): go back from Settings > Home Screen only after the new row …
Quick104 Oct 5, 2026
c701749
docs(collections): note when Home rows links wait for refreshes and s…
Quick104 Oct 5, 2026
c00d691
Merge integrate/collections-w2-lanes into feat/home-rows-links
Quick104 Oct 5, 2026
248beb5
feat(collections): Where it shows for server collections
Quick104 Oct 5, 2026
50c22b0
docs(collections): describe Where it shows for server collections
Quick104 Oct 5, 2026
ba44d83
fix(collections): keep Where it shows from deleting re-pointed rows o…
Quick104 Oct 5, 2026
df309c7
docs(collections): note the Where it shows safeguards
Quick104 Oct 5, 2026
9023780
fix(collections): number rows by page order and keep delete usable wh…
Quick104 Oct 5, 2026
4e7a364
docs(collections): describe row numbering and delete when rows fail t…
Quick104 Oct 5, 2026
e71d9e3
docs(collections): restore two collection editor doc lines a formatte…
Quick104 Oct 5, 2026
9186687
feat(collections): Where it shows for personal collections
Quick104 Oct 5, 2026
1c572ed
fix(collections): read personal rows only after hidden libraries are …
Quick104 Oct 5, 2026
1740a3b
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
05cb79c
Merge pull request #1968 from Silo-Server/feat/collections-user-page
Quick104 Oct 5, 2026
d0b8ac1
Merge pull request #1970 from Silo-Server/feat/collections-admin-select
Quick104 Oct 5, 2026
2935ef6
fix(collections): keep the active Starter packs tab inert while adding
Quick104 Oct 5, 2026
e8ded23
fix(collections): count a partly added starter pack as added before t…
Quick104 Oct 5, 2026
f0f04ea
fix(collections): hold Sync now until changes to the list are saved
Quick104 Oct 5, 2026
e1a4efd
Merge pull request #1969 from Silo-Server/feat/collection-starter-packs
Quick104 Oct 5, 2026
dfc3e16
fix(collections): offer Sync now in the editor only when the server i…
Quick104 Oct 5, 2026
606350c
fix(collections): keep Sync now and Delete waiting for the read after…
Quick104 Oct 5, 2026
ec70791
fix(collections): drop the skipped count when a Sync now fails
Quick104 Oct 5, 2026
4ad9d24
fix(collections): close a custom schedule on Discard in a Synced list
Quick104 Oct 5, 2026
d3e67de
fix(collections): hide the skipped count while what the sync read is …
Quick104 Oct 5, 2026
d843ccd
fix(collections): read the list again when Delete in the editor gets …
Quick104 Oct 5, 2026
a2f30aa
Merge pull request #1962 from Silo-Server/feat/collection-synced-edit
Quick104 Oct 5, 2026
1ada117
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
164399d
Merge pull request #1964 from Silo-Server/feat/collection-new-picker
Quick104 Oct 5, 2026
f98ce59
Merge remote-tracking branch 'origin/feat/collections-revamp' into fe…
Quick104 Oct 5, 2026
3546f74
fix(web): follow Home rows links that land while the page changes
Quick104 Oct 5, 2026
4840d20
fix(web): refuse a Home rows add link when the collections refresh fails
Quick104 Oct 5, 2026
72fbb20
Merge pull request #1965 from Silo-Server/feat/home-rows-links
Quick104 Oct 5, 2026
4f50d61
Merge origin/feat/collections-revamp into feat/collection-where-it-sh…
Quick104 Oct 5, 2026
9a23234
fix(collections): read rows again after a failed Delete only when the…
Quick104 Oct 5, 2026
03b7c47
fix(collections): hold Save and continue on conflicts, and check the …
Quick104 Oct 5, 2026
8a34e68
fix(collections): check the token before the List deletes a collectio…
Quick104 Oct 5, 2026
81f587c
Merge pull request #1971 from Silo-Server/feat/collection-where-it-sh…
Quick104 Oct 5, 2026
8799bed
Merge origin/feat/collections-revamp into feat/collection-where-it-sh…
Quick104 Oct 5, 2026
3945816
fix(collections): list personal rows on every library page you see
Quick104 Oct 5, 2026
a2339ff
fix(collections): hold Add to my library page links until hidden libr…
Quick104 Oct 5, 2026
8e6f62b
Merge pull request #1972 from Silo-Server/feat/collection-where-it-sh…
Quick104 Oct 5, 2026
a3db898
feat(collections): pick rule values from your libraries and simplify …
Quick104 Oct 5, 2026
53a7603
perf(collections): speed up collection lists and collection pages (#1…
Quick104 Oct 6, 2026
c1030fc
Merge origin/main into feat/collections-revamp
Quick104 Oct 6, 2026
a7eb37a
fix(web): restore the screen import and rebase the bundle budget afte…
Quick104 Oct 6, 2026
52a457c
test(web): stub the shuffle hook in the Catalog collection page tests
Quick104 Oct 6, 2026
502105c
chore(api): restore the #1615 breaking-change approvals for the merge…
Quick104 Oct 6, 2026
88e9a9a
fix(collections): keep collage thumbhashes out of the editor ETag and…
Quick104 Oct 6, 2026
9a4572f
fix(collections): keep editor state through Create, quick adds, faile…
Quick104 Oct 6, 2026
7f08cde
fix(web): fix Home rows dialog, holiday names, ebook sorts, and peeks…
Quick104 Oct 6, 2026
c8514c0
fix(web): restore Add to collection ticks, honor Advanced sorts, and …
Quick104 Oct 6, 2026
cca184d
refactor(collections): remove obsolete tests and unused code
Quick104 Oct 6, 2026
3dfc62f
Merge origin/main into feat/collections-revamp
Quick104 Oct 8, 2026
71b91f4
fix(web): treat a server collection's 409 delete as in use
Quick104 Oct 8, 2026
50ffbd8
fix(web): read collection titles a catalog page of 100 at a time
Quick104 Oct 8, 2026
d62c333
fix(web): clear a personal collection's Show only filter
Quick104 Oct 8, 2026
aa6006a
fix(collections): accept a null group_id when updating a collection
Quick104 Oct 8, 2026
2f9cf28
chore(web): remove the unused collection groups helpers
Quick104 Oct 8, 2026
e716be9
fix(userdb): finish stores the revamp branch left at schema v30
Quick104 Oct 8, 2026
0d3a309
test(web): sign the Home rows route tests in on a profile
Quick104 Oct 8, 2026
2316cb1
fix(web): keep one catalog page size through a cursor
Quick104 Oct 8, 2026
2762dba
Merge origin/main into feat/collections-revamp
Quick104 Oct 8, 2026
839f62b
fix(collections): free the collage queue slot after an empty smart re…
Quick104 Oct 8, 2026
a40299f
Merge branch 'main' into feat/collections-revamp
Quick104 Oct 8, 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
  •  
  •  
  •  
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,7 @@ lint-changed:
# an entry along with its fix, and never extend it to land a change. The Go
# suite has no equivalent — a Go test that cannot pass yet carries a t.Skip and
# its reason in the source, where whoever reads the test finds it.
WEBTEST_KNOWN_FAILURES := \
--exclude src/pages/Catalog.test.tsx
WEBTEST_KNOWN_FAILURES :=

# The Go binary embeds the built frontend, so every Go build and test needs
# web/dist to exist. Tests never serve it, so a placeholder is enough; `make
Expand Down
17 changes: 16 additions & 1 deletion cmd/silo/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2786,8 +2786,23 @@ func main() {
deps.TrendingRefresher = trendingRefresher

if deps.UserStoreProvider != nil {
userSync := usercollections.NewService(deps.UserStoreProvider, collItemRepo, libraryItemRepo, nil, slog.Default())
// Imports fill their item limit with titles their owner profile
// can access. Scheduled syncs start with the task manager below,
// so the owner resolver is wired here, not in the router.
var ownerScopes scopeResolver
if policySystem != nil {
ownerScopes = policy.NewViewerResolver(auth.NewUserRepository(deps.DB), deps.UserStoreProvider, nil, policySystem.PDP(), accessGroupStore).WithUnratedContentPolicy(unratedContent)
} else {
// Legacy resolver: proxy/test wiring without a policy system. Production integrated/api modes always take the policy path. Removed with the legacy cleanup phase.
ownerScopes = access.NewResolver(auth.NewUserRepository(deps.DB), deps.UserStoreProvider, nil, accessGroupStore).WithUnratedContentPolicy(unratedContent)
}
userSync := usercollections.NewService(deps.UserStoreProvider, collItemRepo, libraryItemRepo, usercollections.NewOwnerAccess(ownerScopes), nil, slog.Default())
userSync.TMDBCollections = collectionService.TMDBCollections
// Syncs refresh collages and start with the task manager below,
// before the router exists, so the collage service is shared from
// here; the router gives it its generator.
deps.PersonalCollectionCollages = catalog.NewPersonalCollectionCollages(deps.DB, nil)
userSync.Collages = deps.PersonalCollectionCollages
// Trakt fetchers are wired in router.go (they need settingsRepo);
// router.go propagates them onto userSync once configured.
userCollectionScheduler = usercollections.NewScheduler(deps.DB, userSync, slog.Default())
Expand Down
94 changes: 93 additions & 1 deletion contracts/api/v2/breaking-approvals.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,95 @@
{
"approvals": []
"approvals": [
{
"operation_id": "createCollection",
"change_id": "request-property-removed",
"fingerprint": "4335d9d8cd09082a7556eea7d88a42e7a7b1ec90397226c3e0eb6a5e8ccbc7e4",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer accepted. The web client stops sending it in the same change; silo-apple never sends it and silo-android only declares it with a null default that its JSON configuration omits (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "createCollection",
"change_id": "response-required-property-removed",
"fingerprint": "3527c887f3821ec21b6e91fcc4921192a600b72362d1cee5e58d6da6609eb7a7",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "getCollection",
"change_id": "response-required-property-removed",
"fingerprint": "1615cc847ecf3620a4adb10ed9a31d3025a2f58b7fe938e713342513fb2dc99c",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "importMDBListCollection",
"change_id": "response-required-property-removed",
"fingerprint": "7c2166381b851377739abd919a33b6f0d4915a8f4b9e0d4dc0d61f4fc01d3d19",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "importTMDBCollection",
"change_id": "response-required-property-removed",
"fingerprint": "eb9653c04f0ef88685667b075ab1939dbb8bf5a39398612aeb949f34dbd6a9e6",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "importTMDBListCollection",
"change_id": "response-required-property-removed",
"fingerprint": "602971b18d7e48319e2afae8557893940d9e03c1b883066b15a8a1e7f2ac0e2f",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "importTraktCollection",
"change_id": "response-required-property-removed",
"fingerprint": "9aa5634209e0dc004f47d2876cfd1e9cd96d53bb351205e32e5559eb99ad8cd2",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "listCollections",
"change_id": "response-required-property-removed",
"fingerprint": "faaa77f5e6c57ca17a6218625fbc09278b33af9c4eeb2380295be18d69ecf5a1",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "updateCollection",
"change_id": "request-property-removed",
"fingerprint": "039bb432c950e06d7c4fc0aea5f767808015a81e44b632e06c1ca75b69f37751",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer accepted. The web client stops sending it in the same change; silo-apple never sends it and silo-android only declares it with a null default that its JSON configuration omits (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "updateCollection",
"change_id": "response-required-property-removed",
"fingerprint": "827e1959e5752120f5e54debb3e05a0f346884a1afd64730889d68bc221a50c9",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "uploadCollectionPoster",
"change_id": "response-required-property-removed",
"fingerprint": "074bdfeef759bb891ab58ff4b3ca50bcd310dfb42d5cbb675d2bc12449e318ca",
"reason": "Pre-lock removal for #1615: personal collection sharing is one switch (is_shared shows a collection to every profile on the login), so the per-profile allow list is no longer reported. The web client stops reading it in the same change; silo-apple does not decode it and silo-android defaults it to an empty list (follow-ups silo-apple#534, silo-android#406).",
"approved_in": "#1615"
},
{
"operation_id": "getAdminSectionSettings",
"change_id": "api-path-removed-without-deprecation",
"fingerprint": "c84f2053ffc9feaf140d1efe483b1a890e53caffbae740a5088c76804635638e",
"reason": "Pre-lock removal, owner decision: the Let profiles add rule rows setting is gone and profiles may always add rule rows, so there is nothing left to read. getProfileSectionFlags keeps allow_profile_custom_sections, always true and deprecated. The web admin stops calling this operation in the same change; silo-apple and silo-android never called it. The frozen /api/v1 route keeps answering, always true.",
"approved_in": "#1991"
},
{
"operation_id": "updateAdminSectionSettings",
"change_id": "api-path-removed-without-deprecation",
"fingerprint": "53d640609cee613e839b55131e2dd2d5ca929c38a80b33c685a35c44a5e8a767",
"reason": "Pre-lock removal, owner decision: the Let profiles add rule rows setting is gone and profiles may always add rule rows, so there is nothing left to change. The web admin's More menu switch, the only caller, is removed in the same change; silo-apple and silo-android never called it. The frozen /api/v1 route still accepts a write and changes nothing.",
"approved_in": "#1991"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"id": "s-continue",
"section_type": "continue_watching",
"title": "Continue Watching",
"default_title": "Continue Watching",
"featured": false,
"item_limit": 20,
"hidden": true,
Expand All @@ -15,6 +16,7 @@
"id": "u-gems",
"section_type": "hidden_gems",
"title": "Hidden gems",
"default_title": "",
"featured": false,
"item_limit": 12,
"hidden": false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
"title": "Permission denied",
"status": 403,
"detail": "Admin access required",
"instance": "urn:silo:request:0000000000000000000002dd"
"instance": "urn:silo:request:0000000000000000000002e6"
}
7 changes: 0 additions & 7 deletions contracts/api/v2/fixtures/collection_group_stale.json

This file was deleted.

7 changes: 7 additions & 0 deletions contracts/api/v2/fixtures/collection_group_unsupported.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "https://siloserver.org/docs/api/v2/problems/capability_unsupported",
"title": "Capability unsupported",
"status": 501,
"detail": "The acting account does not support collection groups",
"instance": "urn:silo:request:00000000000000000000010c"
}
14 changes: 14 additions & 0 deletions contracts/api/v2/fixtures/collection_order_foreign_id.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"type": "https://siloserver.org/docs/api/v2/problems/validation_failed",
"title": "Validation failed",
"status": 422,
"detail": "The request did not pass validation; see errors.",
"instance": "urn:silo:request:0000000000000000000002d8",
"errors": [
{
"location": "body.ordered_ids",
"code": "invalid",
"detail": "ordered_ids must name each of your own collections exactly once"
}
]
}
3 changes: 2 additions & 1 deletion contracts/api/v2/fixtures/create_collection_ok.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
"description": "",
"collection_type": "manual",
"is_shared": false,
"allowed_profile_ids": [],
"query_definition": {},
"sort_config": {},
"sort_order": 0,
"group_id": null,
"source_url": "",
"sync_schedule": "",
"sync_cadence": "",
"next_sync_at": null,
"last_sync_at": null,
"last_sync_status": "",
Expand All @@ -21,6 +21,7 @@
"include_in_server_collections": false,
"poster_url": "",
"poster_thumbhash": "",
"poster_is_collage": false,
"created_at": "2026-01-02T03:04:05.678Z",
"updated_at": "2026-01-02T03:04:05.678Z"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"id": "c1",
"profile_id": "p-owner",
"creator_profile_id": "p-owner",
"name": "Rainy days",
"description": "For wet afternoons",
"collection_type": "manual",
"is_shared": false,
"query_definition": {},
"sort_config": {},
"sort_order": 0,
"group_id": null,
"source_url": "",
"sync_schedule": "",
"sync_cadence": "",
"next_sync_at": null,
"last_sync_at": null,
"last_sync_status": "",
"last_sync_message": "",
"item_count": 4,
"include_in_server_collections": false,
"poster_url": "",
"poster_thumbhash": "",
"poster_is_collage": false,
"created_at": "2026-01-02T03:04:05.678Z",
"updated_at": "2026-01-02T03:04:05.678Z"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"revision": "f9622d80ff66956bdd64fcc3445fe57706ac2ce1c8b02df9e470959604c20337",
"state": "available",
"allowed": true,
"groups": true,
"imports": true,
"import_sources": [
"mdblist",
"tmdb",
"tmdb_list"
],
"artwork": true,
"item_reorder": true,
"template_summaries": true,
"mdblist_search": true,
"schedule_time_zone": {
"utc_offset": "-05:00",
"abbreviation": "CDT",
"name": "America/Chicago"
},
"section_references": true
}
1 change: 1 addition & 0 deletions contracts/api/v2/fixtures/get_admin_collection_ok.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"featured": false,
"poster_url": "",
"backdrop_url": "",
"poster_is_collage": false,
"source_url": "",
"query_definition": {},
"sort_config": {},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"revision": "ec966ce0e901578a98aa51e9daae0db0ee834c5b59dd7845b80ecc81bcae7203",
"revision": "3e1c28b18db74bb3167f7331d3387693ae45f5305fe9749d7580c44022885a22",
"state": "available",
"allowed": true,
"people_media_scope": true,
"facet_value_search": true,
"person_prefetch": true,
"video_with_episodes_scope": true,
"provider": "meilisearch",
Expand Down
47 changes: 47 additions & 0 deletions contracts/api/v2/fixtures/get_collection_capabilities_ok.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"revision": "6a87601d9e894507e052de99b434f0e5ab0aac86724c3801b517fef58c4d5aa2",
"state": "available",
"allowed": true,
"groups": false,
"login_sharing": true,
"imports": false,
"import_sources": [],
"artwork": false,
"item_reorder": false,
"display_filter_fields": [
"type",
"watched"
],
"display_filter_presets": {
"watched": [
"all",
"watched",
"unwatched"
],
"media": [
"all",
"movie",
"series"
]
},
"collection_default_sort": true,
"collection_sort_preferences": true,
"effective_collection_sort": true,
"sort_preference_kinds": [
"library",
"user",
"watchlist",
"favorites"
],
"create_description": true,
"mdblist_search": true,
"schedule_time_zone": {
"utc_offset": "-05:00",
"abbreviation": "CDT",
"name": "America/Chicago"
},
"sync_schedule_editable": false,
"contains_item": true,
"preview_posters": true,
"poster_collages": false
}
3 changes: 2 additions & 1 deletion contracts/api/v2/fixtures/get_collection_ok.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
"description": "",
"collection_type": "manual",
"is_shared": false,
"allowed_profile_ids": [],
"query_definition": {},
"sort_config": {},
"sort_order": 0,
"group_id": null,
"source_url": "",
"sync_schedule": "",
"sync_cadence": "",
"next_sync_at": null,
"last_sync_at": null,
"last_sync_status": "",
Expand All @@ -21,6 +21,7 @@
"include_in_server_collections": false,
"poster_url": "",
"poster_thumbhash": "",
"poster_is_collage": false,
"created_at": "2026-01-02T03:04:05.678Z",
"updated_at": "2026-01-02T03:04:05.678Z"
}
9 changes: 6 additions & 3 deletions contracts/api/v2/fixtures/get_library_collections_ok.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@
"last_sync_message": "",
"item_count": 12,
"created_at": "2026-01-02T03:04:05.000Z",
"updated_at": "2026-01-02T03:04:05.000Z"
"updated_at": "2026-01-02T03:04:05.000Z",
"poster_is_collage": false
}
],
"groups": [
Expand All @@ -46,7 +47,8 @@
"title": "Rainy days",
"poster_url": "",
"item_count": 4,
"creator_profile_id": "p-owner"
"creator_profile_id": "p-owner",
"poster_is_collage": false
}
]
}
Expand All @@ -59,7 +61,8 @@
"title": "Oscar Winners",
"poster_url": "",
"item_count": 12,
"featured": true
"featured": true,
"poster_is_collage": false
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
{
"id": "s-continue",
"section_type": "continue_watching",
"title": "Continue Watching",
"title": "Keep watching",
"default_title": "Continue Watching",
"featured": false,
"item_limit": 20,
"hidden": true,
Expand All @@ -15,6 +16,7 @@
"id": "u-gems",
"section_type": "hidden_gems",
"title": "Hidden gems",
"default_title": "",
"featured": false,
"item_limit": 12,
"hidden": false,
Expand Down
Loading
Loading