Repository navigation
Conversation
- Add new packages/design-inspector package with Vue plugin - Update Storybook main.ts and preview.ts configuration - Add Overview.stories.ts story file - Add opencode.json config - Update app-frontend vite config and main.js - Update pnpm lockfile (vite resolution, storybook addon-docs, semver, vue-component-type-helpers)
- Add apps/core/: Rust/Axum Core server with layered architecture (domain/application/infrastructure/presentation) - Add 6 Core migrations (instances, mods, pairing flow) - Add apps/app/src/api/amberite/: pairing, ws-ticket, Core-passthrough endpoints - Add apps/app-frontend/src/pages/server/: Console, Content, Overview, Index pages - Add API mock, Core connection helpers, updated route registration - Add PROJECT.md, .plan docs, updated AGENTS.md - Enable vite-plugin-vue-devtools in frontend build
- New core-client package for App-to-Core communication - Backup service, scheduler, and UI components - File system service and Files page for server instances - Rewrite hosting plan documentation
- Remove api-mock.ts and its import from main.js - Switch Servers.vue to fetch instances from CoreApiClient - Add routing for 'synced' profile kind to new /synced pages - Use useModrinthServersConsole composable in server console - Add error handling UI when Core is unavailable - Update browse modpacks/content to pass source=core param
- Rename packages/core-client to packages/api-lib with full PlatformAdapter architecture - Desktop adapter uses tauriFetch (bypasses WebView CORS) + 3 Tauri invokes (token, URL, keychain) - Delete 7 Rust modules from amberite-lib (core_client, instances, modpacks, friends, groups, supabase_client, mod_sync) - Add microsoft-auth and provision-core-machine-account Supabase Edge Functions - Add core_registrations, core_messages, core_group_members tables with RLS policies - Supabase Realtime relay for Core/client communication with 2-phase acknowledgment - Add desktop.ts PlatformAdapter singleton and adapters/ directory - Add AGENTS.md documentation across packages and apps
- New `@amberite/tari-devtools` package with MCP tools: status, console, JS errors, network, performance, page info, Vue warnings - Enable CDP remote debugging (`--remote-debugging-port=9222`) automatically in debug Tauri builds - OpenCode plugin registered to surface DevTools tools in AI-assisted sessions - Remove `VueScanPlugin` (unused render tracker dependency) - Make `getDesktopAdapter` synchronous (removed unnecessary async) - Fix async listener cleanup pattern in Instance, QuickInstanceSwitcher, server/Index, instance/Index, Mods pages (move listeners inside conditional, guard `onUnmounted` null-safety) - Move Tauri window config from `tauri.conf.json` to `main.rs` - Add retry backoff to design-inspector's autocomplete fetch
Move desktop sessions to the OS keychain, replace the broken local Core token path with Convex-backed setup/pairing flows, and remove stale Supabase/Deno runtime code.
Core: add repair_instance and change_version services (refuse while running, reinstall via shared spawn_jar_install), update_version store method, and recursive data-dir storage_bytes in StatsResponse. Wire POST /instances/:id/repair and /change-version routes. amberite-api: add repair() and changeVersion() client methods, CoreChangeVersionBody type, CoreStats.storage_bytes, and endpoint policies for the new lifecycle routes. app-frontend: wire repairServer/changeVersion through the Core server runtime and providers, surface installing/broken install state on the hosting server view, and map real storage usage into stats.
Expose ProfileInstallStage via app-lib api::data and handle install_stage in EditProfile/profile_edit. Navigate to the new instance after server creation, add a loading spinner to ServerIndex, and allow the desktop HTTP/CSP allowlists to reach localhost:16662. Includes regenerated locale and AGENTS metadata from the i18n pass.
Replace the uploadFiles no-op with a real .jar file picker that uploads to Core via uploadModFile, and surface the installed modpack manifest (with unlink support) in the server content manager.
Add structured jvm_args/server_args overrides plus memory bounds that the launch builder consumes (resolve_launch applies overrides; default_launch_args renders the override-free baseline). PATCH /instances/:id now accepts memory, jvm_args, and server_args (null clears an override). New GET /startup returns current settings with rendered default/effective command strings. Adds migration 013 (jvm_args, server_args columns) and a networking/remote-access design doc.
Extend CorePatchInstanceBody with memory/jvm_args/server_args, add CoreStartupSettings type, and expose updateMemory/updateStartup/getStartup on CoreApiClient. Register the core.startup.get endpoint policy/route. Adds integration tests covering getStartup, updateMemory, and set/clear of jvm_args/server_args (20/20 integration tests pass).
Add Core-native ServerStats.vue + server-stats-chart.ts (no packages/ui Archon dependency) and use it in ServerOverview. Register content/backups child routes, fix the 3-dot overflow menu hitbox in ServerIndex, and tidy the recent-instance divider/listener lifecycle in QuickInstanceSwitcher.
Add a Core-native settings modal (own controller + NewModal shell, no packages/ui Archon dependency) wired into the server header gear button and provideServerSettingsModal.openServerSettings. Tabs: - General: rename, memory bounds, Java version - Installation: change game version/loader + repair - Network: primary server port - Properties: full server.properties editor with search - Advanced: jvm_args/server_args + effective launch-command preview All tabs talk directly to Amberite Core via the amberite-api client.
The shared ServerManageHeader hardcodes a .modrinth.gg suffix on the address. Fork a lean Core-native header that shows the raw address (127.0.0.1:port), dropping Medal/Nuxt/project-linking branches, and use it in ServerIndex.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
feat: pair a Core to your account with a code
An instance is one more pack source: the App uploads its export through the existing modpack upload route with an 'instance' field (id and name). - Upload links on first use and updates afterwards. A linked server accepts an upload while running; it stays pending and applies on the next stop. - POST content/modpack/update applies the newest pushed version now, restarting a running server. A stopped server stays stopped. - The content list reports the linked pack and from-pack flags, honors from_modpack, and lists client-only pack content with installed=false. Pack content cannot be deleted or toggled on the server. - Unlink goes through the engine. DELETE /local/servers/:id deletes a server. - Server list rows carry linked_instance and power_state. Simpler choices made here: a pushed version is the archive's hash, so every different upload is a new version. The shared-instance adapter that fetched from the sharing backend is removed (the backend is never involved), along with the unused modpack manifest store. Restaging no longer deletes the uploaded archive it stages from. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Until the first pushed pack applies, the server has no game version, which the hosting API read as 'needs setup'. It now reports installing, and the content list reports the pack's install or failure. Project and version ids are read from Modrinth CDN urls, so an exported pack lists by name. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Upload an instance to a Core server, apply a pushed update now, delete a server, and the linked-instance fields Core adds to servers and content. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Server setup gets a 'From instance' option, and a modal opens the same setup at its last step for one instance. - Push buttons: 'Push and restart' and 'Push update' update every server linked to the instance, asking first when players are online. A shared instance still publishes to friends through the existing review; the Share page and the unshared-changes banner now use these same buttons. Simpler choices: the export includes mods and config; the pack is read back through the existing file_read_dragged_file command, so app-lib is untouched; the friends review only opens when the instance is stale. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Instance > Worlds lists linked servers with a Linked tag, their state and Manage, and 'Add server' is one button with a menu. - The server Content page shows the instance's content read-only in the modpack card, titled with the instance's name, with 'Update from instance' and Unlink in the card's menu. - Server settings > General can delete a self-hosted server. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
'From instance' in server setup now opens a step that lists the user's instances with search and a Select button, in the style of the list used when adding a mod to an instance, instead of expanding a list inline. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The option was shown whenever a Core address was configured. Core only answers its owner, so it now depends on the server list having loaded. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Installation settings for a server linked to an instance talk about the instance: 'Linked instance', 'Unlink instance', and its own description. 'Change version' and 'Re-install modpack' are hidden there, since both would replace the instance with an uploaded pack file. - The Content card no longer shows 'Update from instance' all the time. It shows 'Restart to apply' while a pushed update waits for a stop, and 'Retry update' after a failed one. Nothing when the server is up to date. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tton - The review always opens and only allows a push when something changed. With linked servers it offers 'Push and restart' and 'Push update'; otherwise just 'Push update'. When friends are already up to date it lists what the server is missing instead. - One 'Push update' button on the Share page and the unshared-changes banner, as before. The push buttons are gone from the Worlds toolbar. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A linked server is now an ordinary Worlds row: same size, ping, MOTD and Play button as any other server, with the link chip next to its name. Clicking the row opens the server; 'Manage server' is also in its menu. While an update is in progress, waiting for a stop, or failed, that replaces the MOTD. The custom row and its Manage button are removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Search sits inside the same edge-to-edge panel, with the same rows and icons. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…he server The exported pack only marks a mod client-only from its version's environment, which many mods leave empty. Core now also checks the project's server support, the same rule as adding a mod by hand. If Modrinth can't be reached the pack's own env is used. Also makes the instance picker's search field full width. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…urvive a failed upload Servers page: New server opens the setup modal and only creates the server on confirm. Premade states replace raw errors: Core offline, Core owned by someone else, no servers, no search results, and static ghost rows while loading. A gear opens Core settings (the Cores tab does not exist yet, so it opens settings). A server created from an instance is linked on the Core as it is created, before the pack uploads. If the upload fails the server stays and the instance shows a banner with Push update. Simpler option taken: the banner reuses the existing push review. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…button Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The server list is checked in the background from app start, without retries, so the Servers page opens on the list or on Core offline with no wait. Offline needs two failed checks once the Core has answered, and one success brings the list back, so the page does not flash. Ghost rows only cover a cold start with no answer after 300ms. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Follows main's Core pairing: a new server goes on a paired Core (asked only when there are several), and the Servers page shows Pair a Core when the account has none. The Cores settings button now opens the Cores tab. Paired Cores are also looked up from app start so the page opens on the right state. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
feat: servers created from an instance that keep following it
Drop the native ads plugin, the Modrinth Hosting and Modrinth+ promos, and the ad consent UI. Move news into a collapsible panel pinned to the bottom of the sidebar, make Getting started dismissible, neutralize the modal backdrop tint, and replace the frog in the logs empty state with a dimmed terminal placeholder. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Author
|
Opened against the wrong repository by mistake. Sorry for the noise. |
Contributor
Pull request changelogAppAddedChangedDeprecatedRemovedFixedSecurityWebsiteAddedChangedDeprecatedRemovedFixedSecurityHostingAddedChangedDeprecatedRemovedFixedSecurity |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The App still shipped Modrinth's ad surface (the native ads window, the Modrinth Hosting promo, the "Upgrade to Modrinth+" links and the ad consent UI), plus leftover Modrinth green: green Play buttons and "New instance" tags on Home, a green tint behind every modal, and a green ASCII frog in the empty logs view. News also took most of the right sidebar, leaving little room for friends.
Solution
adsplugin (Rust, occlusion helpers, consent scripts, capability),helpers/ads.js,PromotionWrapper, the ad consent popup and the consent block in Privacy settings, the Modrinth+ links, and every ads-window hold around modals, fullscreen, the image editor and the survey popup.Verification
eslintandprettieron the touched frontend files: clean.rustfmt --checkon the touched Rust files: clean. No Rust build was run locally, so CI is the first compile of the plugin removal.vue-tsconapps/app-frontendalready fails onmainin files this PR does not touch; no new errors come from the changed files.Made by Claude Opus 5.5 in T3 Code (Claude Code harness).
🤖 Generated with Claude Code