ges
f5ffbb99dd
refactor: redesign CSS with flat dark-grey theme and unified token system
...
- Introduce :root color token block (--color-bg, --color-surface-1..4,
--color-border-*, --color-text-*, --color-accent-*, semantic danger/success/
warning/info tokens) — all hard-coded colors removed from both files
- Remove all decorative gradients and box-shadows; flat borders replace them
- Unify header classes: landing-header / settings-header / error-header share
one rule; dashboard-topbar and audit-topbar aligned to same padding and radius
- Add CSS for report page components, copyright report table/pagination/radio
controls, and broadcaster copyright-notices panel
- customAssets.css fully rewritten to use tokens (modal, code editor, marketplace)
2026-04-28 14:47:25 +02:00
ges
89ad58cb54
feat: show pending copyright notices panel on the broadcaster dashboard
...
Fetches NOTIFIED reports on page load and renders an amber warning panel above
the main content. Each notice shows the asset ID, optional resolution note,
date, a link to the admin console, and a dismiss button that transitions the
report to RESOLVED. Panel hides itself when all notices are cleared.
WebSocket subscription refreshes the list live on COPYRIGHT_WARNING messages.
2026-04-28 14:47:12 +02:00
ges
87367a6e35
feat: add copyright report UI (public report page, admin flag button, sysadmin review)
...
- /report: public three-step page to find a broadcaster, pick an asset, and
submit a DMCA-style claim; uses asset.url fallback for images without previews
- Admin console: flag button opens report modal for the selected asset
- Settings page: sysadmin copyright reports section with status/broadcaster
filters, paginated table, and review modal with action radio buttons
- Footer on index.html links to /report
2026-04-28 14:47:05 +02:00
ges
05a7c5d2b5
feat: implement copyright report service, API, and broadcaster notice endpoints
...
- CopyrightReportService: submit, list, get, review (DISMISS / REMOVE_ASSET /
NOTIFY_BROADCASTER / BAN_BROADCASTER); NOTIFY_BROADCASTER sets NOTIFIED
status so notices persist until broadcaster dismisses them
- BroadcasterCopyrightNoticeApiController: channel-admin-scoped list + dismiss
- CopyrightReportApiController: public submit, sysadmin list/get/review
- RateLimitInterceptor: 5 reports/IP/hour on the public submit endpoint
- Banned check added to asset upload path
2026-04-28 14:46:53 +02:00
ges
c17c1b469e
feat: add copyright_reports table and channel banned flag (V15, V16)
2026-04-28 14:46:43 +02:00
ges
9002fc60d7
refactor: migrate remaining Locale.ROOT toLowerCaseRoot calls to StringNormalizer in service layer
2026-04-24 16:28:21 +02:00
ges
0d3d679fff
test: add ChannelDirectoryServiceTest coverage for deleteAsset, reorderAssets, triggerPlayback, importMarketplaceScript
2026-04-24 16:24:36 +02:00
ges
b696f51663
refactor: extract ChannelScriptAssetApiController from ChannelApiController
2026-04-24 16:22:47 +02:00
ges
a1c9e471e0
refactor: replace inline Locale.ROOT calls with StringNormalizer in TwitchUserLookupService
2026-04-24 16:19:39 +02:00
ges
d8f492db2d
test: add AccountServiceTest (6 tests) covering deleteAccount behaviour
2026-04-24 16:16:40 +02:00
ges
7b72cbafc9
refactor: inline private normalize() wrappers; use StringNormalizer.toLowerCaseRoot() directly
...
Remove boilerplate private normalize(String) wrappers from:
- ChannelDirectoryService
- ChannelSettingsService
- AccountService
- AuditLogService (keepsg normalizeFilter() which adds null-if-blank semantics)
Add StringNormalizer import to AuditLogService; remove now-unused Locale import.
2026-04-24 16:13:27 +02:00
ges
41ba1e242e
refactor: add VisualAsset.shallowCopy() to eliminate 9-field manual entity copy in previewTransform
2026-04-23 11:16:44 +02:00
ges
4b5cb6023c
refactor+test: extend StringNormalizer, migrate SystemAdministratorService, add SystemAdministratorServiceTest
...
- Add StringNormalizer.normalize() (trim + toLowerCase ROOT) for username normalization
- Migrate SystemAdministratorService private normalize() to use StringNormalizer.normalize()
- Remove now-unused Locale import from SystemAdministratorService
- Add StringNormalizerTest coverage for new normalize() method
- Add SystemAdministratorServiceTest with 10 unit tests covering all public methods
2026-04-23 11:14:02 +02:00
ges
6dabdd5662
refactor: remove hand-rolled ObjectMapper singleton in MarketplaceScriptSeedLoader; replace TODO comments with Javadoc
...
- Replace JsonSupport inner class (AtomicReference lazy singleton) with simple static final ObjectMapper field
- Replace TODO code-smell comments in TwitchEmoteService, SevenTvEmoteService, and MarketplaceScriptSeedLoader with descriptive Javadoc
- Use normalize() consistently in ChannelDirectoryService.topicFor()
2026-04-23 11:10:37 +02:00
ges
8c04b9c755
test: add StringNormalizerTest and AssetCleanupService unit tests
2026-04-21 16:36:48 +02:00
ges
2e6ead0382
refactor: extract ChannelAdminApiController and clean up ChannelDirectoryService
...
- Extract admin endpoint group (add/remove/list admins, suggestions) into dedicated ChannelAdminApiController
- ChannelApiController reduced from 665 to 520 lines; removes 3 dependency injections
- ChannelDirectoryService: extract resolveOrderForSort() helper from bulk-reorder comparator lambda
- Remove TODO comment from ChannelApiController (partially addressed by this split)
2026-04-21 16:32:00 +02:00
ges
3511936a29
refactor: move SchemaMigration responsibilities to Flyway migrations V13 and V14
...
- V13: create oauth2_authorized_client table and SPRING_SESSION_ATTRIBUTES upsert trigger
- V14: normalize oauth2_authorized_client timestamp columns (one-time data migration)
- SchemaMigration now only retains legacy backward-compat code for pre-Flyway databases
- Remove normalizeAuthorizedClientTimestamps() and ensureSessionAttributeUpsertTrigger() from SchemaMigration
- Add clear comment explaining SchemaMigration is legacy code only
2026-04-21 16:20:48 +02:00
ges
1a2e2344da
refactor+test: add MarketplaceService and SettingsService unit tests; use StringNormalizer in AccountService
2026-04-21 16:15:25 +02:00
ges
b6ca67d96c
refactor: eliminate code duplication across AssetPatch, OAuthTokenCipher, upload guards, SecurityConfig, and normalize helpers
...
- Add AssetPatch.forOrder() and simplify AssetPatch.fromVisibility() factory
- Replace null-chain AssetPatch constructors in ChannelDirectoryService with forOrder()
- Extract OAuthTokenCipher.buildFromKeys() to deduplicate two fromEnvironment() overloads
- Replace inline upload-size guards in createAsset/createScriptAttachment with enforceUploadLimit()
- Make script attachment content endpoint public for all channels (not just hard-coded 'gasolinebased')
- Extract StringNormalizer.toLowerCaseRoot() utility and use it in ChannelDirectoryService/ChannelSettingsService
2026-04-21 16:12:31 +02:00
ges
f62d01c30a
refactor: standardize logger field name to LOG across all production classes
2026-04-21 16:05:20 +02:00
ges
c9c5dc6eab
fix: update test to use MarketplaceService.listScripts after method was moved
2026-04-21 16:03:07 +02:00
ges
009c8f21fb
Extract ChannelSettingsService for canvas and script-overlay settings; add ChannelSettingsServiceTest
2026-04-21 15:47:25 +02:00
ges
0dd1a7418d
Extract AllowedDomainNormalizer utility; remove @Autowired, dead constants, and inline VISUAL_ASSET_TYPES duplication
2026-04-21 15:28:54 +02:00
ges
b741fb176a
Add tests for VersionService, GithubReleaseService, AuditLogService, AuthorizationService, MarketplaceScriptSeedLoader; fix duplicate import in ChannelDirectoryService
2026-04-21 15:23:40 +02:00
ges
3bcd6d6747
Add volume limiter
2026-03-13 16:36:21 +01:00
ges
e7af8907b4
Add GitInfoService
2026-03-13 15:21:53 +01:00
ges
0975c039a0
Cleanup chanenls
2026-02-13 14:16:52 +01:00
ges
c4bed3f050
Add todos
2026-02-10 13:44:21 +01:00
ges
45fb1921da
Bump version
2026-02-09 17:15:45 +01:00
ges
ed5007538b
Add instant updates to assset transformations
2026-02-09 17:15:29 +01:00
ges
0f088dc83b
Bump version
2026-02-09 16:40:35 +01:00
ges
fe6fb68b53
Reduce repaints of asset list
2026-02-09 16:33:25 +01:00
ges
1c6d115181
Fix ordering
2026-02-09 16:28:05 +01:00
ges
1c118aab0c
Update AGENTS.md file
2026-02-09 16:27:59 +01:00
ges
d6271b1758
Deferred emote sync
2026-01-30 08:51:55 +01:00
ges
f9613c7c2f
Add emote sync
2026-01-29 16:56:20 +01:00
ges
1d48b7d5e7
Major refactor
2026-01-27 23:15:29 +01:00
ges
39bb599219
Refactor models
2026-01-27 15:40:55 +01:00
ges
9cf25a4351
New CI
2026-01-26 18:20:46 +01:00
ges
ebdd9e9f18
Add missing transactions
2026-01-26 18:05:23 +01:00
ges
b57420d727
Add domain allow-list for script assets
2026-01-25 14:01:53 +01:00
ges
b115e16f11
Add text rendering and ttf support
2026-01-25 11:51:37 +01:00
ges
d22a2ca93c
Add APNG support
2026-01-25 11:38:08 +01:00
ges
92a5578e06
Add keepalive
2026-01-25 11:06:26 +01:00
ges
c96918340a
Separate audit log db
2026-01-23 18:14:09 +01:00
ges
e578007115
Remove docs chip in logout
2026-01-23 17:05:00 +01:00
ges
8c8cd0f42d
Add docs link
2026-01-23 17:03:47 +01:00
ges
6ee91c8b0c
Add social embed
2026-01-23 17:03:06 +01:00
ges
d78db75aeb
Use int values for canvas size
2026-01-23 16:33:51 +01:00
ges
f881d73dcc
Remove redundant badge
2026-01-23 16:30:30 +01:00
ges
2da8b6b81e
Pagination on audit log
2026-01-23 13:59:32 +01:00
ges
5ac181fdf2
Clean up zindex
2026-01-23 00:53:04 +01:00
ges
dee1f577e8
Add lichess marketplace script logo
2026-01-23 00:39:39 +01:00
ges
445c96110a
Fix command invocation
2026-01-23 00:34:31 +01:00
ges
6925e3f560
Update source
2026-01-23 00:26:51 +01:00
ges
c25f7d9bc9
Add lichess marketplace script
2026-01-23 00:04:35 +01:00
ges
a7368d2172
Remove useless headers
2026-01-22 23:07:51 +01:00
ges
33263b685c
Normalize settings on save
2026-01-22 22:44:21 +01:00
ges
54bb2e6c49
Fix sysadmin delete
2026-01-22 22:19:39 +01:00
ges
14339bc018
Simplify settings
2026-01-22 22:12:55 +01:00
ges
5fe6f35f74
Remove dimension input
2026-01-22 22:11:19 +01:00
ges
118e94120a
Respect app settings in console
2026-01-22 22:07:09 +01:00
ges
10a7f5675d
Use ffmpeg
2026-01-22 21:53:36 +01:00
ges
a8c4c97294
Restructure dashboard
2026-01-22 21:43:51 +01:00
ges
a46091f8cc
Remove button box shadow
2026-01-19 17:58:55 +01:00
ges
dcf7ac8c67
Align marketplace tiles
2026-01-19 17:57:15 +01:00
ges
a682926104
Improve "heart" ui
2026-01-15 17:31:08 +01:00
ges
71f9e4ddaf
Add missing init() to marketplace scripts
2026-01-15 17:28:46 +01:00
ges
a0c007606b
Improve text overflow
2026-01-15 17:26:15 +01:00
ges
04800a0c09
Add fragile layering system
2026-01-15 17:16:55 +01:00
ges
266022e6f6
Add default staging env var
2026-01-15 17:10:36 +01:00
ges
18dff66373
Add audit log
2026-01-15 16:19:09 +01:00
ges
10507c070e
Openapi read oauth url from properties
2026-01-15 16:09:48 +01:00
ges
92c731a30f
Add account deletion
2026-01-15 15:35:19 +01:00
ges
8581c6a01f
Fix migration invalid syntax
2026-01-15 15:07:03 +01:00
ges
a2cae3f066
Add staging banner
2026-01-15 14:38:06 +01:00
ges
c481b105c5
Fix layering and add release ci
2026-01-15 14:36:45 +01:00
ges
d43bd985c6
Clean up dashboard ui and remove channels page
2026-01-14 17:34:26 +01:00
ges
09810706bb
fix multi-emote rendering for 7tv
2026-01-14 01:54:29 +01:00
ges
8b21334705
Sync jdk version
2026-01-14 01:39:25 +01:00
ges
9504066455
LFS
2026-01-14 01:28:34 +01:00
ges
827e6eed7a
Combo marketplace script
2026-01-14 01:26:13 +01:00
ges
5f8691e1af
Setup scheduler
2026-01-14 01:18:39 +01:00
ges
9147479b00
Add 7TV emote support
2026-01-14 01:01:16 +01:00
ges
c75ada41f9
fix migration order
2026-01-14 00:45:51 +01:00
ges
c3019a1c48
Gate twitch integration
2026-01-14 00:44:58 +01:00
ges
a267f9b5ec
Add hearts to marketplace assets
2026-01-13 23:46:09 +01:00
ges
e3580f950d
Emote cache
2026-01-13 23:45:27 +01:00
ges
f8e992029a
Update dashboard styling
2026-01-13 22:37:33 +01:00
ges
6fc0651a8f
Ignore changes to shell.nix in CI
2026-01-13 22:13:03 +01:00
ges
b78f97809e
Add git lfs to shell.nix
2026-01-13 22:12:41 +01:00
ges
c9aac6e4f1
Include twitch message metadata
2026-01-13 22:00:24 +01:00
ges
467977ddac
New sysadmin env var
2026-01-13 21:21:28 +01:00
ges
559199d4e5
Removed client dependencies from shell.nix
2026-01-13 21:11:47 +01:00
ges
8ddda451f3
Add fake frame for electron window
2026-01-13 18:41:22 +01:00
ges
8dc4cc72e8
Add kirov_reporting script asset tto marketplace
2026-01-13 18:09:52 +01:00
ges
4f1eb2fc82
Add twitch chat integration
2026-01-13 17:55:08 +01:00
ges
9abb5e88dc
Remove assets in favor of .github
2026-01-13 14:54:50 +01:00
ges
517b957c37
Add electron resize to server
2026-01-13 14:51:39 +01:00
ges
5b0ef9c606
Segregate script canvas context
2026-01-13 13:53:23 +01:00