Merge remote-tracking branch 'origin/canary' into canary
Merge remote-tracking branch 'origin/canary' into canary
Inspect stored evidence paths
packages/fluxer_markdown/lib/src/renderers/fluxer_markdown_renderers.dart
Reading the persisted public view.
Datamining / findings
Evidence records derived from public code, builds, assets, APIs or schemas. A detection is not automatically a release, announcement or confirmed feature.
Classification overview
Merge remote-tracking branch 'origin/canary' into canary
packages/fluxer_markdown/lib/src/renderers/fluxer_markdown_renderers.dartfeat(chat): add double tap to react
lib/core/synced_preferences/engine/synced_field_registry.dartlib/core/synced_preferences/engine/synced_preference_field.dartlib/core/synced_preferences/fields/double_tap_reaction_synced_field.dartlib/core/synced_preferences/generated/fluxer/user/preferences/v1/preferences.pb.dartlib/core/synced_preferences/generated/fluxer/user/preferences/v1/preferences.pbjson.dartlib/core/synced_preferences/proto/fluxer/user/preferences/v1/preferences.protolib/features/chat/presentation/sheets/double_tap_reaction_picker_sheet.dartlib/features/chat/presentation/widgets/message_actions/double_tap_reaction_hint.dartlib/features/chat/presentation/widgets/message_actions/message_bottom_sheet.dartlib/features/chat/presentation/widgets/messages/message_item.dartlib/features/chat/utils/messages/double_tap_reaction.dartlib/features/settings/providers/double_tap_reaction_preferences_provider.dartlib/features/ui/emoji_picker/fluxer_emoji_picker_sheet.dartlib/l10n/fluxer_en.arblib/l10n/generated/fluxer_localizations.dartlib/l10n/generated/fluxer_localizations_ar.dartlib/l10n/generated/fluxer_localizations_bg.dartlib/l10n/generated/fluxer_localizations_cs.dartlib/l10n/generated/fluxer_localizations_da.dartlib/l10n/generated/fluxer_localizations_de.dartlib/l10n/generated/fluxer_localizations_el.dartlib/l10n/generated/fluxer_localizations_en.dartlib/l10n/generated/fluxer_localizations_es.dartlib/l10n/generated/fluxer_localizations_fi.dartlib/l10n/generated/fluxer_localizations_fr.dartlib/l10n/generated/fluxer_localizations_he.dartlib/l10n/generated/fluxer_localizations_hi.dartlib/l10n/generated/fluxer_localizations_hr.dartlib/l10n/generated/fluxer_localizations_hu.dartlib/l10n/generated/fluxer_localizations_id.dartlib/l10n/generated/fluxer_localizations_it.dartlib/l10n/generated/fluxer_localizations_ja.dartlib/l10n/generated/fluxer_localizations_ko.dartlib/l10n/generated/fluxer_localizations_lt.dartlib/l10n/generated/fluxer_localizations_nb.dartlib/l10n/generated/fluxer_localizations_nl.dartlib/l10n/generated/fluxer_localizations_pl.dartlib/l10n/generated/fluxer_localizations_pt.dartlib/l10n/generated/fluxer_localizations_ro.dartlib/l10n/generated/fluxer_localizations_ru.dartlib/l10n/generated/fluxer_localizations_sv.dartlib/l10n/generated/fluxer_localizations_th.dartlib/l10n/generated/fluxer_localizations_tr.dartlib/l10n/generated/fluxer_localizations_uk.dartlib/l10n/generated/fluxer_localizations_vi.dartlib/l10n/generated/fluxer_localizations_zh.darttest/core/synced_preferences/double_tap_reaction_synced_field_test.darttest/core/synced_preferences/synced_field_registry_test.darttest/features/chat/presentation/widgets/message_actions/double_tap_reaction_hint_test.darttest/features/chat/utils/messages/double_tap_reaction_test.dartMerge remote-tracking branch 'origin/canary' into canary
lib/core/synced_preferences/engine/synced_field_registry.dartlib/core/synced_preferences/engine/synced_preference_field.dartlib/core/synced_preferences/fields/double_tap_reaction_synced_field.dartlib/core/synced_preferences/generated/fluxer/user/preferences/v1/preferences.pb.dartlib/core/synced_preferences/generated/fluxer/user/preferences/v1/preferences.pbjson.dartlib/core/synced_preferences/proto/fluxer/user/preferences/v1/preferences.protolib/features/chat/presentation/sheets/double_tap_reaction_picker_sheet.dartlib/features/chat/presentation/widgets/message_actions/double_tap_reaction_hint.dartlib/features/chat/presentation/widgets/message_actions/message_bottom_sheet.dartlib/features/chat/presentation/widgets/messages/message_item.dartlib/features/chat/utils/messages/double_tap_reaction.dartlib/features/settings/providers/double_tap_reaction_preferences_provider.dartlib/features/ui/emoji_picker/fluxer_emoji_picker_sheet.dartlib/l10n/fluxer_en.arblib/l10n/generated/fluxer_localizations.dartlib/l10n/generated/fluxer_localizations_ar.dartlib/l10n/generated/fluxer_localizations_bg.dartlib/l10n/generated/fluxer_localizations_cs.dartlib/l10n/generated/fluxer_localizations_da.dartlib/l10n/generated/fluxer_localizations_de.dartlib/l10n/generated/fluxer_localizations_el.dartlib/l10n/generated/fluxer_localizations_en.dartlib/l10n/generated/fluxer_localizations_es.dartlib/l10n/generated/fluxer_localizations_fi.dartlib/l10n/generated/fluxer_localizations_fr.dartlib/l10n/generated/fluxer_localizations_he.dartlib/l10n/generated/fluxer_localizations_hi.dartlib/l10n/generated/fluxer_localizations_hr.dartlib/l10n/generated/fluxer_localizations_hu.dartlib/l10n/generated/fluxer_localizations_id.dartlib/l10n/generated/fluxer_localizations_it.dartlib/l10n/generated/fluxer_localizations_ja.dartlib/l10n/generated/fluxer_localizations_ko.dartlib/l10n/generated/fluxer_localizations_lt.dartlib/l10n/generated/fluxer_localizations_nb.dartlib/l10n/generated/fluxer_localizations_nl.dartlib/l10n/generated/fluxer_localizations_pl.dartlib/l10n/generated/fluxer_localizations_pt.dartlib/l10n/generated/fluxer_localizations_ro.dartlib/l10n/generated/fluxer_localizations_ru.dartlib/l10n/generated/fluxer_localizations_sv.dartlib/l10n/generated/fluxer_localizations_th.dartlib/l10n/generated/fluxer_localizations_tr.dartlib/l10n/generated/fluxer_localizations_uk.dartlib/l10n/generated/fluxer_localizations_vi.dartlib/l10n/generated/fluxer_localizations_zh.darttest/core/synced_preferences/double_tap_reaction_synced_field_test.darttest/core/synced_preferences/synced_field_registry_test.darttest/features/chat/presentation/widgets/message_actions/double_tap_reaction_hint_test.darttest/features/chat/utils/messages/double_tap_reaction_test.dartfix(app): back off image, reaction and settings retries on 429 (#2743)
fluxer_app/src/features/messaging/commands/ReactionCommands.tsxfluxer_app/src/features/messaging/utils/ImageCacheUtils.test.tsfluxer_app/src/features/messaging/utils/ImageCacheUtils.tsfluxer_app/src/features/ui/components/BaseAvatar.tsxfluxer_app/src/features/user/state/UserSettings.tsrefactor(api): drop Bunny for pluggable cache purge adapters (#2742)
fluxer_api/src/api/Config.tsfluxer_api/src/api/admin/tests/AdminSyntheticUserServiceGuards.test.tsfluxer_api/src/api/channel/services/AttachmentUploadService.tsfluxer_api/src/api/channel/services/ChannelDataService.tsfluxer_api/src/api/channel/services/ChannelService.tsfluxer_api/src/api/channel/services/MessageService.tsfluxer_api/src/api/channel/services/channel_data/ChannelUtilsService.tsfluxer_api/src/api/channel/services/message/MessageDeleteService.tsfluxer_api/src/api/channel/services/message/MessageHelpers.test.tsfluxer_api/src/api/channel/services/message/MessageHelpers.tsfluxer_api/src/api/channel/services/message/UserMessageDeletionService.tsfluxer_api/src/api/config/APIConfig.tsfluxer_api/src/api/csam/NcmecSubmissionService.tsfluxer_api/src/api/infrastructure/BunnyPurgeQueue.tsfluxer_api/src/api/infrastructure/CachePurgeAdapter.tsfluxer_api/src/api/infrastructure/CachePurgeQueue.tsfluxer_api/src/api/infrastructure/HttpCachePurgeAdapter.tsfluxer_api/src/api/infrastructure/NoneCachePurgeAdapter.tsfluxer_api/src/api/middleware/GuildStackServiceFactory.tsfluxer_api/src/api/middleware/ServiceSingletons.tsfluxer_api/src/api/test/msw/handlers/BunnyEdgeHandlers.tsfluxer_api/src/api/test/msw/server.tsfluxer_api/src/api/user/services/UserDeletionService.tsfluxer_api/src/api/utils/ExternalResponseLimits.tsfluxer_api/src/api/worker/WorkerDependencies.tsfluxer_api/src/api/worker/WorkerLaneConfig.tsfluxer_api/src/api/worker/WorkerMain.tsfluxer_api/src/api/worker/WorkerTaskRegistry.tsfluxer_api/src/api/worker/tasks/ProcessAssetDeletionQueue.tsfluxer_api/src/api/worker/tasks/ProcessBunnyPurgeQueue.tsfluxer_api/src/api/worker/tasks/ProcessCachePurgeQueue.tsfluxer_api/src/api/worker/tests/ProcessAssetDeletionQueue.test.tsfluxer_api/src/api/worker/tests/ProcessCachePurgeQueue.test.tsfluxer_docs/src/content/docs/operator/configuration.mdxfluxer_media_proxy/src/bunny_ip_gate.rsfluxer_media_proxy/src/config/mod.rsfluxer_media_proxy/src/config/parse.rsfluxer_media_proxy/src/config/tests/mod.rsfluxer_media_proxy/src/lib.rsfluxer_media_proxy/src/server/runtime.rsfluxer_media_proxy/src/storage/tests/mod.rspackages/config/src/ConfigLoader.tspackages/config/src/MasterConfig.tspackages/config/src/__tests__/ConfigLoader.test.tspackages/config/src/config_loader/EnvironmentOverrides.tsrefactor(imports): replace relative imports with path aliases (#2741)
fluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchAuditLogAdapter.tsfluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchGuildAdapter.tsfluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchGuildMemberAdapter.tsfluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchIndexAdapter.tsfluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchMessageAdapter.tsfluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchReportAdapter.tsfluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchUserAdapter.tsfluxer_api/pkgs/email/src/email_i18n/EmailI18nLocales.tsfluxer_api/pkgs/email/src/email_i18n/locales/ar.tsfluxer_api/pkgs/email/src/email_i18n/locales/bg.tsfluxer_api/pkgs/email/src/email_i18n/locales/cs.tsfluxer_api/pkgs/email/src/email_i18n/locales/da.tsfluxer_api/pkgs/email/src/email_i18n/locales/de.tsfluxer_api/pkgs/email/src/email_i18n/locales/el.tsfluxer_api/pkgs/email/src/email_i18n/locales/en-GB.tsfluxer_api/pkgs/email/src/email_i18n/locales/es-419.tsfluxer_api/pkgs/email/src/email_i18n/locales/es-ES.tsfluxer_api/pkgs/email/src/email_i18n/locales/fi.tsfluxer_api/pkgs/email/src/email_i18n/locales/fr.tsfluxer_api/pkgs/email/src/email_i18n/locales/he.tsfluxer_api/pkgs/email/src/email_i18n/locales/hi.tsfluxer_api/pkgs/email/src/email_i18n/locales/hr.tsfluxer_api/pkgs/email/src/email_i18n/locales/hu.tsfluxer_api/pkgs/email/src/email_i18n/locales/id.tsfluxer_api/pkgs/email/src/email_i18n/locales/it.tsfluxer_api/pkgs/email/src/email_i18n/locales/ja.tsfluxer_api/pkgs/email/src/email_i18n/locales/ko.tsfluxer_api/pkgs/email/src/email_i18n/locales/lt.tsfluxer_api/pkgs/email/src/email_i18n/locales/nl.tsfluxer_api/pkgs/email/src/email_i18n/locales/no.tsfluxer_api/pkgs/email/src/email_i18n/locales/pl.tsfluxer_api/pkgs/email/src/email_i18n/locales/pt-BR.tsfluxer_api/pkgs/email/src/email_i18n/locales/ro.tsfluxer_api/pkgs/email/src/email_i18n/locales/ru.tsfluxer_api/pkgs/email/src/email_i18n/locales/sv-SE.tsfluxer_api/pkgs/email/src/email_i18n/locales/th.tsfluxer_api/pkgs/email/src/email_i18n/locales/tr.tsfluxer_api/pkgs/email/src/email_i18n/locales/uk.tsfluxer_api/pkgs/email/src/email_i18n/locales/vi.tsfluxer_api/pkgs/email/src/email_i18n/locales/zh-CN.tsfluxer_api/pkgs/email/src/email_i18n/locales/zh-TW.tsfluxer_api/pkgs/geoip/src/ResolveClientGeoip.tsfluxer_api/scripts/build.mjsfluxer_api/src/api/ApiContext.tsfluxer_api/src/api/App.tsfluxer_api/src/api/Config.test.tsfluxer_api/src/api/Config.tsfluxer_api/src/api/CreateApiContext.tsfluxer_api/src/api/Logger.tsfluxer_api/src/api/RateLimitConfig.tsdocs(api): correct the synced preferences size limits (#2740)
fluxer_docs/src/content/docs/http-api/users.mdxfluxer_docs/src/content/docs/http-api/users/settings-protobuf.mdfluxer_docs/src/content/docs/http-api/users/settings.mdxchore: dart format
test/features/auth/presentation/widgets/instance_selector_test.dartMerge remote-tracking branch 'origin/canary' into canary
test/features/auth/presentation/widgets/instance_selector_test.dartfeat(schema): add double tap reaction to synced preferences (#2739)
fluxer_docs/src/content/docs/http-api/users/settings-protobuf.mdpackages/schema/proto/fluxer/user/preferences/v1/preferences.protopackages/schema/src/domains/tests/SyncedPreferencesCodec.test.tspackages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.tsfeat(auth): improvements to self-hosted messaging
lib/core/instance/instance_constants.dartlib/core/instance/instance_endpoint_normalizer.dartlib/features/auth/presentation/sheets/instance_selector_sheet.dartlib/features/auth/presentation/widgets/instance_selector.dartlib/features/auth/presentation/widgets/login_form.dartlib/features/auth/presentation/widgets/offline_account_switcher_link.dartlib/features/auth/providers/account_manager_provider.dartlib/features/auth/providers/instance_selector_provider.dartlib/features/shell/presentation/splash_screen.dartlib/l10n/fluxer_en.arblib/l10n/fluxer_en_US.arblib/l10n/generated/fluxer_localizations.dartlib/l10n/generated/fluxer_localizations_ar.dartlib/l10n/generated/fluxer_localizations_bg.dartlib/l10n/generated/fluxer_localizations_cs.dartlib/l10n/generated/fluxer_localizations_da.dartlib/l10n/generated/fluxer_localizations_de.dartlib/l10n/generated/fluxer_localizations_el.dartlib/l10n/generated/fluxer_localizations_en.dartlib/l10n/generated/fluxer_localizations_es.dartlib/l10n/generated/fluxer_localizations_fi.dartlib/l10n/generated/fluxer_localizations_fr.dartlib/l10n/generated/fluxer_localizations_he.dartlib/l10n/generated/fluxer_localizations_hi.dartlib/l10n/generated/fluxer_localizations_hr.dartlib/l10n/generated/fluxer_localizations_hu.dartlib/l10n/generated/fluxer_localizations_id.dartlib/l10n/generated/fluxer_localizations_it.dartlib/l10n/generated/fluxer_localizations_ja.dartlib/l10n/generated/fluxer_localizations_ko.dartlib/l10n/generated/fluxer_localizations_lt.dartlib/l10n/generated/fluxer_localizations_nb.dartlib/l10n/generated/fluxer_localizations_nl.dartlib/l10n/generated/fluxer_localizations_pl.dartlib/l10n/generated/fluxer_localizations_pt.dartlib/l10n/generated/fluxer_localizations_ro.dartlib/l10n/generated/fluxer_localizations_ru.dartlib/l10n/generated/fluxer_localizations_sv.dartlib/l10n/generated/fluxer_localizations_th.dartlib/l10n/generated/fluxer_localizations_tr.dartlib/l10n/generated/fluxer_localizations_uk.dartlib/l10n/generated/fluxer_localizations_vi.dartlib/l10n/generated/fluxer_localizations_zh.darttest/core/api/auth_fluxer_client_provider_test.darttest/core/instance/instance_discovery_service_test.darttest/core/instance/instance_endpoint_normalizer_test.darttest/features/auth/presentation/widgets/instance_selector_test.darttest/features/shell/presentation/splash_screen_test.dartUpdate translation files Updated by "Cleanup translation files" add-on in Weblate. Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origin/canary' into canary Merge remote-tracking branch 'origi…
lib/l10n/fluxer_ar.arblib/l10n/fluxer_bg.arblib/l10n/fluxer_cs.arblib/l10n/fluxer_da.arblib/l10n/fluxer_de.arblib/l10n/fluxer_el.arblib/l10n/fluxer_en_GB.arblib/l10n/fluxer_es.arblib/l10n/fluxer_es_419.arblib/l10n/fluxer_fi.arblib/l10n/fluxer_fr.arblib/l10n/fluxer_he.arblib/l10n/fluxer_hi.arblib/l10n/fluxer_hr.arblib/l10n/fluxer_hu.arblib/l10n/fluxer_id.arblib/l10n/fluxer_it.arblib/l10n/fluxer_ja.arblib/l10n/fluxer_ko.arblib/l10n/fluxer_lt.arblib/l10n/fluxer_nb.arblib/l10n/fluxer_nl.arblib/l10n/fluxer_pl.arblib/l10n/fluxer_pt.arblib/l10n/fluxer_pt_BR.arblib/l10n/fluxer_ro.arblib/l10n/fluxer_ru.arblib/l10n/fluxer_sv.arblib/l10n/fluxer_th.arblib/l10n/fluxer_tr.arblib/l10n/fluxer_uk.arblib/l10n/fluxer_vi.arblib/l10n/fluxer_zh.arblib/l10n/fluxer_zh_Hant.arbfix(ci): stop verifying published assets against the CDN (#2738)
tools/ci/src/app_proxy.rsfix(ci): stop verifying published assets against the CDN
tools/ci/src/app_proxy.rsdocs: simplify the reference and tighten the verifier (#2736)
fluxer_app/src/features/app/hooks/useTextOverflow.tsfluxer_app/src/features/channel/components/CompactMemberCustomStatus.tsxfluxer_app/src/features/connection/components/modals/AddConnectionModal.tsxfluxer_app/src/features/navigation/utils/MobileNavigation.tsfluxer_app/src/features/platform/utils/SharedResizeObserver.tsfluxer_app/src/features/ui/hooks/useTextOverflow.tsfluxer_app/src/features/user/components/modals/tabs/LanguageTab.tsxfluxer_docs/astro.config.tsfluxer_docs/package.jsonfluxer_docs/scripts/DocsRouteHeaders.tsfluxer_docs/scripts/DocsSource.tsfluxer_docs/scripts/DocsTableWidth.tsfluxer_docs/scripts/VerifyDocsCoverage.tsfluxer_docs/scripts/VerifyDocsSchemas.tsfluxer_docs/scripts/VerifyDocsStyle.tsfluxer_docs/src/content/docs/admin-api/api-keys.mdxfluxer_docs/src/content/docs/admin-api/applications.mdxfluxer_docs/src/content/docs/admin-api/archives.mdxfluxer_docs/src/content/docs/admin-api/blocklists.mdxfluxer_docs/src/content/docs/admin-api/bulk-jobs.mdxfluxer_docs/src/content/docs/admin-api/discovery.mdxfluxer_docs/src/content/docs/admin-api/gateway.mdxfluxer_docs/src/content/docs/admin-api/gift-codes.mdxfluxer_docs/src/content/docs/admin-api/guilds.mdxfluxer_docs/src/content/docs/admin-api/index.mdxfluxer_docs/src/content/docs/admin-api/instance.mdxfluxer_docs/src/content/docs/admin-api/jobs.mdxfluxer_docs/src/content/docs/admin-api/messages.mdxfluxer_docs/src/content/docs/admin-api/reports.mdxfluxer_docs/src/content/docs/admin-api/search-indexes.mdxfluxer_docs/src/content/docs/admin-api/system-dms.mdxfluxer_docs/src/content/docs/admin-api/users.mdxfluxer_docs/src/content/docs/admin-api/voice.mdxfluxer_docs/src/content/docs/authentication.mdfluxer_docs/src/content/docs/conventions.mdfluxer_docs/src/content/docs/gateway/commands.mdfluxer_docs/src/content/docs/gateway/event-filtering.mdfluxer_docs/src/content/docs/gateway/events.mdfluxer_docs/src/content/docs/gateway/limits-and-rate-limits.mdfluxer_docs/src/content/docs/gateway/opcodes-and-close-codes.mdfluxer_docs/src/content/docs/gateway/overview.mdfluxer_docs/src/content/docs/http-api/applications.mdxfluxer_docs/src/content/docs/http-api/authentication.mdxfluxer_docs/src/content/docs/http-api/billing.mdxfluxer_docs/src/content/docs/http-api/calls.mdxfluxer_docs/src/content/docs/http-api/channels.mdxfluxer_docs/src/content/docs/http-api/connections.mdxfluxer_docs/src/content/docs/http-api/deployment-availability.mdfluxer_docs/src/content/docs/http-api/discovery.mdxfluxer_docs/src/content/docs/http-api/donations.mdxrefactor(svc): tidy the rust services and build tooling (#2735)
Cargo.lockfluxer_app_proxy/Cargo.tomlfluxer_app_proxy/src/bootstrap.rsfluxer_app_proxy/src/config.rsfluxer_app_proxy/src/csp.rsfluxer_app_proxy/src/routes/android_association.rsfluxer_app_proxy/src/routes/apple_association.rsfluxer_app_proxy/src/routes/assets_proxy.rsfluxer_app_proxy/src/routes/mod.rsfluxer_app_proxy/src/routes/spa_index.rsfluxer_common/Cargo.tomlfluxer_common/src/config.rsfluxer_common/src/geoip.rsfluxer_snowflakes/src/generator.rsfluxer_snowflakes/src/router_impl.rsfluxer_svc/src/config.rsfluxer_svc/src/hash_ring.rsfluxer_svc/src/router.rsfluxer_svc/src/shard.rsfluxer_svc/src/transport.rsfluxer_users/Cargo.tomlfluxer_users/src/main.rsfluxer_users/src/router_impl.rsfluxer_users/src/shard_impl.rsfluxer_users/src/types.rsknip.jsonpackage.jsonpnpm-lock.yamlpnpm-workspace.yamlscripts/remote.mjsscripts/remote/hosts.example.jsontools/ci/src/app_proxy.rstools/ci/src/calver.rstools/ci/src/common.rstools/ci/src/functions.rstools/ci/src/release.rstools/ci/src/schema.rstools/dev/Cargo.tomltools/dev/cassandra_target_schema.jsontools/dev/src/paths.rstools/dev/src/proc.rsrefactor(admin): tidy the admin routes and templates (#2734)
fluxer_admin/build.rsfluxer_admin/src/api/audit.rsfluxer_admin/src/api/bans.rsfluxer_admin/src/api/client.rsfluxer_admin/src/api/codes.rsfluxer_admin/src/api/generated.rsfluxer_admin/src/api/guilds.rsfluxer_admin/src/api/jobs.rsfluxer_admin/src/api/reports.rsfluxer_admin/src/api/types/common.rsfluxer_admin/src/api/users.rsfluxer_admin/src/routes/admin.rsfluxer_admin/src/routes/bans.rsfluxer_admin/src/routes/bans_actions.rsfluxer_admin/src/routes/codes.rsfluxer_admin/src/routes/guild_tabs.rsfluxer_admin/src/routes/guilds.rsfluxer_admin/src/routes/jobs.rsfluxer_admin/src/routes/message_actions.rsfluxer_admin/src/routes/messages.rsfluxer_admin/src/routes/reports.rsfluxer_admin/src/routes/system.rsfluxer_admin/src/routes/user_actions.rsfluxer_admin/src/routes/user_tabs.rsfluxer_admin/src/routes/users.rsfluxer_admin/src/templates/components/archive.rsfluxer_admin/src/templates/components/audit_logs_for_target.rsfluxer_admin/src/templates/components/media.rsfluxer_admin/src/templates/components/message_list.rsfluxer_admin/src/templates/components/mod.rsfluxer_admin/src/templates/components/nsfw_indicators.rsfluxer_admin/src/templates/components/pagination.rsfluxer_admin/src/templates/components/resource_link.rsfluxer_admin/src/templates/pages/audit_logs.rsfluxer_admin/src/templates/pages/audit_logs_table.rsfluxer_admin/src/templates/pages/gift_codes.rsfluxer_admin/src/templates/pages/guild_detail_tabs/members.rsfluxer_admin/src/templates/pages/guild_detail_tabs/overview.rsfluxer_admin/src/templates/pages/guild_detail_tabs/reports.rsfluxer_admin/src/templates/pages/guilds_list.rsfluxer_admin/src/templates/pages/job_detail.rsfluxer_admin/src/templates/pages/jobs_list_helpers.rsfluxer_admin/src/templates/pages/reports_list.rsfluxer_admin/src/templates/pages/search_index.rsfluxer_admin/src/templates/pages/user_detail_tabs/moderation.rsfluxer_admin/src/templates/pages/user_detail_tabs/reports.rsfluxer_admin/src/templates/pages/users_list.rsfluxer_admin/src/utils/forms.rsrefactor(api): tidy the api and shared packages (#2733)
fluxer_api/package.jsonfluxer_api/pkgs/cache/src/CacheSerialization.tsfluxer_api/pkgs/cache/src/providers/InMemoryProvider.tsfluxer_api/pkgs/cache/src/providers/KVCacheProvider.tsfluxer_api/pkgs/captcha/src/providers/HttpCaptchaProvider.tsfluxer_api/pkgs/elasticsearch_search/src/adapters/ElasticsearchIndexAdapter.tsfluxer_api/pkgs/geoip/src/IpInfoService.tsfluxer_api/pkgs/http_client/package.jsonfluxer_api/pkgs/http_client/src/HttpClient.tsfluxer_api/pkgs/http_client/src/HttpClientDiagnostics.tsfluxer_api/pkgs/http_client/src/HttpClientRequestInternals.tsfluxer_api/pkgs/http_client/src/HttpClientTypes.tsfluxer_api/pkgs/http_client/src/PublicInternetRequestUrlPolicy.tsfluxer_api/pkgs/http_client/src/__tests__/HttpClient.test.tsfluxer_api/pkgs/initialization/package.jsonfluxer_api/pkgs/initialization/src/CreateServiceInstrumentation.tsfluxer_api/pkgs/initialization/src/Init.tsfluxer_api/pkgs/initialization/src/ServiceInitializationTypes.tsfluxer_api/pkgs/initialization/tsconfig.jsonfluxer_api/pkgs/kv_client/src/IKVProvider.tsfluxer_api/pkgs/kv_client/src/KVClient.tsfluxer_api/pkgs/kv_client/src/KVClientConfig.tsfluxer_api/pkgs/kv_client/src/KVClientError.tsfluxer_api/pkgs/kv_client/src/KVClusterConnection.tsfluxer_api/pkgs/kv_client/src/KVCommandArguments.tsfluxer_api/pkgs/kv_client/src/KVHashSlots.tsfluxer_api/pkgs/kv_client/src/KVPipeline.tsfluxer_api/pkgs/kv_client/src/KVSubscription.tsfluxer_api/pkgs/nats/src/NatsConnectionManager.tsfluxer_api/pkgs/nats/src/NatsConnectionOptions.tsfluxer_api/pkgs/postgres/src/Client.tsfluxer_api/pkgs/rate_limit/src/RateLimitService.tsfluxer_api/pkgs/sms/src/providers/TwilioSmsProvider.tsfluxer_api/pkgs/worker/src/contracts/WorkerTask.tsfluxer_api/pkgs/worker/src/providers/HttpWorkerQueue.tsfluxer_api/src/App.tsfluxer_api/src/AppEntrypoint.tsfluxer_api/src/Instrument.tsfluxer_api/src/WorkerEntrypoint.tsfluxer_api/src/api/Tables.tsfluxer_api/src/api/admin/controllers/InstanceConfigAdminController.tsfluxer_api/src/api/admin/controllers/LimitConfigAdminController.tsfluxer_api/src/api/admin/models/AdminArchiveModel.tsfluxer_api/src/api/admin/models/UserTypes.tsfluxer_api/src/api/admin/repositories/AdminApiKeyRepository.tsfluxer_api/src/api/admin/repositories/AdminArchiveRepository.tsfluxer_api/src/api/admin/services/AdminAuditService.tsfluxer_api/src/api/admin/services/AdminUserDeletionService.tsfluxer_api/src/api/admin/services/AdminUserProfileService.tsfluxer_api/src/api/admin/services/guild/AdminGuildUpdateService.tsfeat(core): add failed to load media placeholder
lib/features/chat/presentation/widgets/attachments/attachment_image.dartlib/features/chat/presentation/widgets/attachments/attachment_media_grid.dartlib/features/chat/presentation/widgets/embeds/embed_image.dartlib/features/chat/presentation/widgets/media/embed_animated_image.dartlib/features/chat/presentation/widgets/media/fluxer_animated_image.dartlib/features/chat/presentation/widgets/media/media_load_error_placeholder.dartlib/features/ui/media_viewer/attachment_media_viewer.dartlib/l10n/fluxer_en.arblib/l10n/fluxer_en_US.arblib/l10n/generated/fluxer_localizations.dartlib/l10n/generated/fluxer_localizations_ar.dartlib/l10n/generated/fluxer_localizations_bg.dartlib/l10n/generated/fluxer_localizations_cs.dartlib/l10n/generated/fluxer_localizations_da.dartlib/l10n/generated/fluxer_localizations_de.dartlib/l10n/generated/fluxer_localizations_el.dartlib/l10n/generated/fluxer_localizations_en.dartlib/l10n/generated/fluxer_localizations_es.dartlib/l10n/generated/fluxer_localizations_fi.dartlib/l10n/generated/fluxer_localizations_fr.dartlib/l10n/generated/fluxer_localizations_he.dartlib/l10n/generated/fluxer_localizations_hi.dartlib/l10n/generated/fluxer_localizations_hr.dartlib/l10n/generated/fluxer_localizations_hu.dartlib/l10n/generated/fluxer_localizations_id.dartlib/l10n/generated/fluxer_localizations_it.dartlib/l10n/generated/fluxer_localizations_ja.dartlib/l10n/generated/fluxer_localizations_ko.dartlib/l10n/generated/fluxer_localizations_lt.dartlib/l10n/generated/fluxer_localizations_nb.dartlib/l10n/generated/fluxer_localizations_nl.dartlib/l10n/generated/fluxer_localizations_pl.dartlib/l10n/generated/fluxer_localizations_pt.dartlib/l10n/generated/fluxer_localizations_ro.dartlib/l10n/generated/fluxer_localizations_ru.dartlib/l10n/generated/fluxer_localizations_sv.dartlib/l10n/generated/fluxer_localizations_th.dartlib/l10n/generated/fluxer_localizations_tr.dartlib/l10n/generated/fluxer_localizations_uk.dartlib/l10n/generated/fluxer_localizations_vi.dartlib/l10n/generated/fluxer_localizations_zh.darttest/features/chat/presentation/widgets/attachments/attachment_image_test.darttest/features/chat/presentation/widgets/media/media_load_error_placeholder_test.darttest/features/ui/media_viewer/attachment_media_viewer_test.dartMerge remote-tracking branch 'origin/canary' into canary
lib/features/chat/presentation/widgets/attachments/attachment_image.dartlib/features/chat/presentation/widgets/attachments/attachment_media_grid.dartlib/features/chat/presentation/widgets/embeds/embed_image.dartlib/features/chat/presentation/widgets/media/embed_animated_image.dartlib/features/chat/presentation/widgets/media/fluxer_animated_image.dartlib/features/chat/presentation/widgets/media/media_load_error_placeholder.dartlib/features/ui/media_viewer/attachment_media_viewer.dartlib/l10n/fluxer_en.arblib/l10n/fluxer_en_US.arblib/l10n/generated/fluxer_localizations.dartlib/l10n/generated/fluxer_localizations_ar.dartlib/l10n/generated/fluxer_localizations_bg.dartlib/l10n/generated/fluxer_localizations_cs.dartlib/l10n/generated/fluxer_localizations_da.dartlib/l10n/generated/fluxer_localizations_de.dartlib/l10n/generated/fluxer_localizations_el.dartlib/l10n/generated/fluxer_localizations_en.dartlib/l10n/generated/fluxer_localizations_es.dartlib/l10n/generated/fluxer_localizations_fi.dartlib/l10n/generated/fluxer_localizations_fr.dartlib/l10n/generated/fluxer_localizations_he.dartlib/l10n/generated/fluxer_localizations_hi.dartlib/l10n/generated/fluxer_localizations_hr.dartlib/l10n/generated/fluxer_localizations_hu.dartlib/l10n/generated/fluxer_localizations_id.dartlib/l10n/generated/fluxer_localizations_it.dartlib/l10n/generated/fluxer_localizations_ja.dartlib/l10n/generated/fluxer_localizations_ko.dartlib/l10n/generated/fluxer_localizations_lt.dartlib/l10n/generated/fluxer_localizations_nb.dartlib/l10n/generated/fluxer_localizations_nl.dartlib/l10n/generated/fluxer_localizations_pl.dartlib/l10n/generated/fluxer_localizations_pt.dartlib/l10n/generated/fluxer_localizations_ro.dartlib/l10n/generated/fluxer_localizations_ru.dartlib/l10n/generated/fluxer_localizations_sv.dartlib/l10n/generated/fluxer_localizations_th.dartlib/l10n/generated/fluxer_localizations_tr.dartlib/l10n/generated/fluxer_localizations_uk.dartlib/l10n/generated/fluxer_localizations_vi.dartlib/l10n/generated/fluxer_localizations_zh.darttest/features/chat/presentation/widgets/attachments/attachment_image_test.darttest/features/chat/presentation/widgets/media/media_load_error_placeholder_test.darttest/features/ui/media_viewer/attachment_media_viewer_test.dart