Skip to content

Releases: Femtoce11/cor3-helper

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 01:20
v1.7.0

COR3 Helper — Release Notes

v1.7.0 — esbuild Bundling, Dynamic Server Mapping, Fixes And More

Modular Rewrite — esbuild Bundling

The entire codebase was converted from monolithic single-file scripts to a modular src/ architecture bundled with esbuild.

What Changed

  • Before: 13 large standalone JS files at root level (e.g., popup.js — 334 KB, auto-job-solver.js — 201 KB, content-early.js — 180 KB, content.js — 114 KB, auto-valuable-seller.js — 106 KB, background.js — 54 KB, devtools-panel.js — 61 KB, etc.) loaded directly by manifest.json. All logic for each layer lived in a single file with no code sharing.
  • After: 12 module directories under src/ containing ~98 focused files using ES module import/export. esbuild bundles each entry point into a single output file under dist/, preserving the same flat file structure the manifest expects.

Module Breakdown

Old Monolith New Modules (src/)
popup.js (334 KB) popup/ — 27 files (index, UI sections, state, helpers, storage listeners, etc.)
auto-job-solver.js (201 KB) auto-job-solver/ — 6 files (index, main-loop, steps, solvers, helpers, state)
content-early.js (180 KB) content-early/ — 11 files (index, ws-proxy, ws-send, ws-message-handler, message-listener, market-requests, expeditions, http-intercept, initial-fetch, state, ws-commands)
content.js (114 KB) content/ — 13 files (index, ws-relay, message-listener, engine-relay, solvers, alarms, auto-send, auto-refresh, auto-choose, auto-update-markets, dom-tweaks, helpers, log-writers)
auto-valuable-seller.js (106 KB) auto-valuable-seller/ — 8 files (index, server-access, seller-mode, search-mode, loadout, maintenance, operations, state)
background.js (54 KB) background/ — 4 files (index, auto-finish-jobs, auto-choose, helpers)
devtools-panel.js (61 KB) devtools-panel/ — 2 files (index, idb-access)
devtools-log-viewer.js (41 KB) devtools-log-viewer/ — 1 file (index)
popup.html (153 KB) html/popup.html (63 KB) + html/popup.css (97 KB) — CSS extracted into separate file

Shared Code & Libraries

  • src/shared/ (10 files) — Cross-module utilities: server-map.js, server-constants.js, hack-utils.js, loadout-resolver.js, error-map.js, ws-utils.js, and devtools helpers. Imported by multiple entry points; esbuild inlines them into each bundle.
  • src/libs/ (5 files) — Runtime libraries that cannot be bundled (console-logger.js, errors.js, ws-messages.js, msgpack-codec.js, notepack.min.js). Copied as-is to dist/ and loaded via content_scripts or importScripts.
  • src/standalone/ (5 files) — Scripts injected at runtime into the page MAIN world (decrypt-solver.js, ice-wall-solver.js, simple-decrypt-solver.js, daily-hack-solver.js, ws-interceptor.js). Cannot be bundled; copied as-is.

Build System

  • build.js: Custom esbuild script. Cleans dist/, copies static files (HTML, CSS, icons, libs, standalone scripts), then bundles 8 entry points as IIFE. Watch mode (npm run watch) supported.
  • package.json: Added esbuild dev dependency, build/watch/clean scripts, and canonical version field.
  • Manifest version sync: build.js reads version from package.json and writes it into dist/manifest.json, keeping a single source of truth. Also strips _version_note.
  • Background service worker: Uses banner option to prepend importScripts('console-logger.js') and importScripts('errors.js') since service workers don't support ES modules.

What Stayed The Same

  • Output structure: dist/ contains the same flat set of files the manifest always referenced — no changes to manifest.json script paths.
  • Runtime behavior: Zero functional changes. The bundled output is functionally identical to the old monoliths.

New Features And Enhancements To Existing Features:

Dynamic Server Map Management

  • Always Up-to-date Server Map: Uses get.map map data for generating a dynamic map which doesn't rely on static servers, but relies on the fresh map data instead. This makes the extension backward compatible for users that are late on the progression of unlocking all servers.
  • Dynamic Server Pathing: Instead of the old method of using one static path to a server, it generates all available paths from HOME server to target server. After that it filters out maintenance-blocked ones. Then it tries the remaining paths by using "path-through" hacking.
  • ServerMap.findBestReachablePath(): Returns the first non-maintenance-blocked path from all discovered paths (sorted by length). Falls back to null if all paths are blocked.
  • ServerMap.getMaintenanceFingerprint(): Generates a deterministic string from current server maintenance states for cache-comparison. Used to detect when server states change between map fetches.
  • fetchMapData(forceRefresh): Now accepts a forceRefresh parameter. When true, always sends get.map regardless of cache. Listens for COR3_WS_MAP_DATA to update the ServerMap instance. Compares maintenance fingerprints before/after to log state changes.
  • Pre-start maintenance check: main-loop.js now uses serverMap.checkPathMaintenance() (dynamic) instead of iterating static SERVER_PATH_MAP. Fetches fresh map data with forceRefresh: true before checking.
  • Alternate path-through in stepSetEndpoint: When a server is unreachable, tries all paths from serverMap.findAllPaths(). If an intermediate server on one path fails (unreachable or login error), moves to the next path instead of throwing immediately. Reports which path number is being attempted.
  • Maintenance-Aware Path Filtering (wide-range): ServerMap.findAllPaths() skips intermediate servers in maintenance during DFS path discovery. Target server is still allowed so callers can detect "all paths blocked" vs "no paths exist". Default: skipMaintenance=true; callers can opt out with {skipMaintenance: false}.
  • Cache key includes maintenance fingerprint: Path cache invalidates automatically when server maintenance states change, preventing stale cached paths from being used.
  • checkPathMaintenance(): Uses filtered paths first; falls back to unfiltered paths only to identify the blocker server name for error reporting.

Dynamic Server Map - Fallback Scenario

  • Fallback case: The only time it tries to use static server data (paths to servers, server names, IPs, etc.) is if something goes wrong with dynamic server map and it falls into FALLBACK_PATH_MAP scenario, mainly for market servers.
  • Shared findMaintenanceBlocker helper: Added to shared/server-map.js. Checks serverMaintenanceMap against each market's FALLBACK_PATH_MAP to find blocking servers along the path to a market.
  • Markets fallback: When per-market availability flags (darkMarketAvailable, etc.) haven't arrived yet, the popup now checks serverMaintenanceMap to show maintenance banners with correct blocker server name and estimated time remaining.
  • Auto Job Solver tabs fallback: renderAutoJobsTabs uses findMaintenanceBlocker as fallback for each market's maintenance params when dedicated availability flags are absent.
  • Mercenaries fallback: loadMercenaries uses findMaintenanceBlocker for USOL maintenance detection as fallback.
  • Storage listeners: Markets, Auto Jobs tabs, and Mercenaries now react to serverMaintenanceMap storage changes to update maintenance banners in real-time.

SKIPPED Badge Timer

  • Dynamic SKIPPED/maintenance badge tooltips: The SKIPPED and maintenance badge tooltips in the Debug Console Jobs tab now compute the remaining time from lockExpiresAt/maintenanceEndsAt at render time, so each popup reopen shows the current remaining minutes instead of the stale value from the original error message.

Markets And Related Features

  • Dynamic market path-through (replaces static paths): Replaced all three per-market path-through functions (__cor3DarkMarketPathThroughRetry, __cor3SoyuzMarketPathThroughRetry, __cor3UsolMarketPathThroughRetry) with a single unified __cor3MarketPathThroughRetry(marketType). Instead of using hardcoded static server lists (DARK_PATH_THROUGH_SERVERS, SOYUZ_PATH_THROUGH_SERVERS, USOL_PATH_THROUGH_SERVERS), the new function dynamically fetches the live network map via get.map, discovers all paths from Home to the target server using DFS, filters out maintenance-blocked intermediates, and tries each viable path in shortest-first order. If one path fails mid-way (server in maintenance or access failure), it falls back to the next path. Static path constants and full-path arrays removed from state.js. Maintenance blocker detection (__cor3PostUnreachable) also uses dynamic BFS on the live map instead of static path arrays.

Auto-Send Mercenary: Quest Location Handling

  • Default location selection: Expedition config parsing now selects known default locations (Skylift Remains, Koute Mining and Reprocessing Outpost) instead of always picking locations[0], which could be a quest location requiring an elite mercenary.
  • Elite mercenary error retry: When a launch fails with "This location requires an elite mercenary", the extension now automatically retries with the correct default location after a short delay.

Auto Send Mercenary: Path-through Hacking

  • USOL mercenary path-through: expeditions.js __cor3RequestUsolMercenaries now attempts dynamic path-through hacking when the USOL endpoint is unreachable, instead of silently giving up. Uses the same __cor3FetchMapData / __cor3FindPathsToServer / __cor3EnsureServerAccess helpers exported from market-requests.js.

Auto Send Mercenary: Market Unreachable Banner

  • Mercenaries maintenance banner: ...
Read more

v1.6.1

Choose a tag to compare

@Femtoce11 Femtoce11 released this 10 Aug 14:53
v1.6.1

COR3 Helper — Release Notes

v1.6.1 — Stash Grace State, Force-Maintenance Fix, Auto-Jobs Error Handling and More

Enhancements:

Specialist Temporary Stash Expansion — Grace State UI

  • IN_GRACE state detection — When the rented stash expansion service expires and enters the grace period, the "Rented: N" tag turns red to visually indicate the service has expired.
  • Grace info box — A "THE RENT HAS ENDED" info box appears inside the stash expansion card during grace state, matching the in-game UI. Shows three rows: "Items to lose" (count of items exceeding base capacity), "Expired slots" (rented slot count), and "Left time" (grace period countdown). Replaces the old expiry/grace timer rows during grace state.
  • Extend button — An "Extend" button is available in both normal and grace states. Sends a purchase request via WebSocket to renew the temporary stash expansion. Shows credits-only price and auto-refreshes specialist data after purchase.

Force-Maintenance — Immediate Status Update

  • IN MAINTENANCE tag on completion — When batch force maintenance successfully triggers maintenance on a server, its status tag now immediately updates to "IN MAINTENANCE" (green) instead of staying on "FORCING..." until the entire batch completes. Each server's tag updates individually as soon as its maintenance is confirmed.

Fixes:

Auto Job Solver

  • Internal server error handling — When a job fails with "Internal server error" (internal-error), the solver now delays the entire process for 5 minutes (with countdown logging) before retrying the same job, instead of marking it as failed. The delay respects user abort — if the user stops auto-jobs during the wait, it cancels immediately.

Improvements to UI

  • Hardware Selection — Added a new border around the hardware selection list to make it appear separately than the rest of the equipped hardware.

Known Issues:

  • Helper-Only Mode — When trying to restore saved states of all toggles and functionalities, it has problems while restoring some of them.
  • New Server Support — With the game web-version "v1.20.57", there are more server which added to the game recently. Those will be supported with upcoming dynamic server routing feature.

See the "Installation" section in the main README for install instructions.

v1.6.0

Choose a tag to compare

@Femtoce11 Femtoce11 released this 02 Aug 10:02
v1.6.0

COR3 Helper — Release Notes

v1.6.0 — Anti-AFK Clicker, Force-Maintenance, Merc Cost Limiter, Enhancements, Fixes And More

New Features And Enhancements To Existing Features:

Anti-AFK Clicker

  • Toggle — New "Anti-AFK Clicker" toggle in the Toggles section (below Auto Simple Decrypt Hacking). Simulates a click on the DesktopWrapperBorder element every 3 minutes to prevent the anti-AFK screen locker from appearing.
  • Immediate click — Performs one click immediately when enabled, then starts the 3-minute interval.
  • Auto-enable — Automatically enabled when any automation feature starts (Auto Job Solver, Auto Valuable Seller, Auto Daily Hacking, Decrypt/ICE-Wall/Simple-Decrypt solvers, Auto Clear Generated IPs path-through hacking). This prevents screen locker from blocking automated hacking minigames.
  • Persistent — State saved to sync storage and restored on page reload.

Force-Maintenance (Auto Valuable Seller Enhancement)

  • Maintenance Tracker tab — New "🔧 Maintenance" tab in the Auto Valuable Seller UI showing servers with upcoming or active maintenance. Displays live countdown timers. Data is fetched via get.map at the end of both "Start Valuable Search" and "Start Valuable Seller" operations.
  • Force! button — Servers with upcoming maintenance (timeUntilMaintenance) show a "Force!" button that triggers maintenance by repeatedly sending file.search-valuable until the server enters maintenance. Other Force buttons are disabled during processing. After completion, the map is re-fetched and UI updated with the new maintenanceEndsAt timer.
  • Force-maintenance path-through hacking — When force-maintenance encounters sai-access-denied and cannot re-set endpoint due to no-path-to-server, the tool now uses the full path-through hacking flow (hack intermediate servers) instead of failing silently. If a server on the path is in maintenance, the Force! button is disabled with a tooltip showing which server blocks the path and how long until its maintenance ends.
  • Batch force maintenance — New "Force selected!" button in the Maintenance tab. Select multiple upcoming-maintenance servers via checkboxes, then click "Force selected!" to trigger maintenance on all of them sequentially. Servers are automatically sorted furthest-to-closest (by network path length) with a 2-second delay between each. All selected server status tags show "QUEUED" initially and switch to "FORCING..." when actively being processed. Individual Force! buttons and checkboxes are disabled during batch operation. Includes full error handling for blocked paths, unreachable servers, and access-denied scenarios.
  • Loadout fetch timeout — forceMaintenance() was not setting running = true, causing waitForEvent() to immediately reject with 'Stopped' (since it checks !running). The loadout WS request was sent but the response was never awaited. Fixed by setting running = true at the start and running = false at all exit points of forceMaintenance().
  • Force maintenance button persistence — Button state (In-progress / Force! / Blocked) is now stored in chrome.storage.local and restored when popup is reopened. Duplicate force-maintenance runs are prevented via storage check.

Merc Cost Limiter (Mercenaries Section Enhancement)

  • Apply Merc Cost Limiter — New toggle and editable "Maximum merc cost limit" input (default 15,000). When enabled, mercenaries with costs above the limit are excluded from auto-choose selection. Cost limiter now applies during both popup UI auto-choose and background auto-send. Value is persisted to sync storage and included in helper-only mode.

Get Rid Of Vets (Decisions Section Enhancement)

  • Get rid of Veterans — New toggle in the Decisions section. When enabled, overrides loot/risk modifiers with loot=1 and risk=10 for expeditions with veteran mercenaries. This makes auto-choose favor high-risk options to increase the chance of getting rid of veteran mercs. Scores display a "🎖️" prefix when the override is active. Persisted in decisionModifiers storage and included in helper-only mode.
  • Default loot/risk values — Updated default loot and risk values to (+1) and (-5) to keep non-vet mercs alive.

Specialist Temporary Stash Expansion Timer (Inventory Section Enhancement)

  • New specialist timer in Inventory section — Shows active temporary stash expansion timer with bonus slots count, expiry countdown, and grace period countdown. Displayed above inventory items only when an active temporary expansion exists.
  • UI placement — It displays the "Veran" specialist avatar image on the left, an orange-bordered "Rented: N" tag (matching the in-game style), and expiry/grace period countdown timers below.
  • Auto-updates — Timer refreshes on inventory refresh and live-updates from server data. Fetched during initial page load alongside inventory data.

Faction Name and Completion Time Display (Active Expedition, Mercenaries and Archived Expeditions Enhancement)

  • Faction Name — Active expedition section, mercenary lists and archived expedition cards now show faction name of the mercenary, alongside other information.
  • Completion time display — Archived expedition cards now show "🕐 Completed Xd Xh ago" based on the completedAt timestamp.

Refresh Before Execution (Auto Daily Hacking Enhancement)

  • Data refresh before claim check — Auto daily hacking now fetches fresh daily ops data before checking whether today's task is already claimed. Previously, stale cached data could show "Claimed: yes" even after the daily reset, causing the solver to cancel immediately.

Fixes To Existing Features:

Auto Valuable Seller

  • Downloads folder tag filter — Files without tags are now excluded from the Downloads Folder tab and seller processing. Previously, files marked as isValuable but with empty tags array were shown and could be selected, even though they cannot be sold.
  • Total earnings summary — At the end of "Start Valuable Seller", a summary line shows total items sold, credits earned, and reputation gained across all markets.
  • sai-access-denied detection — When the server enters maintenance during force-maintenance spam, the file.search-valuable response returns sai-access-denied instead of a maintenance event. The loop now detects this error, fetches fresh map data via get.map to confirm maintenance started. If confirmed, it treats it as success. If not (e.g., user changed endpoint), it re-sets the endpoint and continues spamming.

Auto Job Solver

  • File-already-decrypted handling in retry loops — Both File Decryption and Decrypt & Extract retry loops now use a race listener (minigame start vs desktop error) instead of only waiting for minigame start. When file-already-decrypted is received, the retry skips directly to job completion instead of waiting for a minigame that will never start.
  • Job-not-found error handling — When stepCompleteJob receives a "not found" error (stale job ID), it now throws job-not-found which both decrypt retry loops catch to immediately skip the job instead of retrying forever.
  • Stop/restart stuck fix — Wrapped processQueue() body in try/finally to guarantee signalDone() always runs, setting running = false. Previously, if abort caused an unhandled rejection in post-loop code (delay, market refresh), running stayed true permanently, blocking all subsequent start attempts until page reload. Also set running = true before the initial fetch wait to prevent duplicate starts, and skip market refresh on abort.
  • Market not reachable handling — When job.take fails with market-not-reachable, the job is now marked as skipped instead of failed. The solver checks the market server's path for maintenance blockers and logs the specific blocker server and its remaining maintenance time. Auto Finish All scheduling uses the blocker's maintenanceEndsAt timer to schedule the next retry.
  • Minigame lock detection — Detects the new game mechanic where failed decrypt/hack minigames are locked with a lockExpiresAt timer (~20 min). When a lock is detected, the job is skipped instead of retrying endlessly. The lock expiry time is stored and used by Auto Finish All to schedule the next run when the lock expires.
  • Lock-aware scheduling — Auto Finish All now considers lockExpiresAt timers from skipped jobs alongside maintenance timers and job reset times when scheduling the next run.
  • Job-not-found refresh — When job-not-found is received during job completion, remaining pending jobs from the same market are marked stale and skipped. Market data is refreshed immediately instead of retrying decryption on an outdated job.
  • Maintenance +3 min buffer — Scheduling in background.js now adds 3 minutes to maintenanceEndsAt timestamps. Prevents premature retries when game servers report maintenance ended but aren't yet reachable (typically 1–2 min delay).
  • Market-not-reachable retry — stepCompleteJob now retries job.complete up to 2 times when endpoint was changed by another process, re-setting the correct market endpoint before each retry.
  • Decrypt retry loop fix — Fixed a critical bug where File Decryption, Decrypt & Extract, and Data Download jobs never retried after ICE Wall hack failure. stepCompleteJob was throwing friendlyError-transformed messages (e.g. "Job conditions not met") but retry loops checked for the raw error key job-conditions-not-met. Now throws the raw error key so retry loops correctly match and re-trigger decryption.
  • Data Download decrypt flow fix — Fixed a critical bug where Data Download jobs with DecryptDownloadedFile conditions failed immediately with "Job conditions not met" instead of proceeding to decrypt the downloaded file. The first stepCompleteJob call threw on `job-conditions-n...
Read more

v1.5.8

Choose a tag to compare

@Femtoce11 Femtoce11 released this 11 Jul 11:30
v1.5.8

COR3 Helper — Release Notes

v1.5.8 — Secret Link/Server Finder, Automation Queue, ICE Wall Solver Fixes And More

New Features:

Secret Link/Server Finder

  • Renamed from "IP Search" to "Secret Link/Server Finder" for clarity.
  • Toggle-based UI — Now uses a toggle switch (like Auto Daily Hacking) instead of a button. Toggle auto-disables after the scan completes.
  • Log box — Progress and results are shown in a log box below the toggle (like Daily Hack), instead of inline status text on the toggle row.
  • New server detection — Now detects both new connections AND new servers that appear after scanning, reporting both in the results.
  • Reduced network traffic — get.map is now called only once at the start and once at the end, instead of after every connect.ip call.
  • Orange "nothing found" text — The "Couldn't find anything new..." message now uses the orange accent color for better visibility.

Automation Queue

  • Centralized task queue — A new FIFO automation queue in content.js prevents parallel execution of endpoint-changing processes: Auto Job Solver, Auto Valuable Seller, Auto Update Markets, Auto Send Mercenary, and Clear Failed Jobs.
  • Queue status broadcasting — Queue state (active task and queued tasks) is written to chrome.storage.local under automationQueueStatus for UI consumption.
  • Automatic release — Each automation type releases its queue slot on completion (via COR3_AUTOJOB_DONE, COR3_VALUABLE_DONE, market refresh done, or auto-send finish). Stop actions also remove pending queue entries.
  • Auto-send integration — Auto-send mercenary now checks queue status before starting and registers/releases with the queue at every start/finish point.
  • Clear Failed Jobs integration — The 🧹 cleanup buttons now route through the automation queue. When another automation is active, the button shows ⏳ with a hover tooltip indicating which automation is blocking it, and polls every 10 seconds until the queue is free.
  • Safety net re-check — After any automation finishes and the queue is empty, expedition data is re-checked after 3s to catch edge cases where the expedition update arrived during the finish transition.

Immediate Automation Stop

  • Auto Job Solver immediate abort — delay(), waitForEvent(), and waitForHackToBeDone() now check abortFlag and reject immediately when the user clicks stop, instead of waiting for the current timeout/delay to expire.
  • Auto Valuable Seller immediate abort — delay() and waitForEvent() now check the running flag and reject immediately on stop.

Offline Log Viewer (Popout Window)

  • Popout button — New ⧉ button in the DevTools COR3 Helper toolbar opens a standalone log viewer in a new window.
  • Import support — The popout viewer has an "📂 Import" button that accepts exported log files in three formats: JSON (from Export feature), MD table (from Export feature), and Discord clipboard format (from Copy All Logs button with ```json ``` code fences).
  • Full viewer UI — Same look and feel as the main DevTools panel: category selector, search/filter, detail panel with Raw/JSON-pretty/Tree View, column resize, keyboard navigation.
  • Offline-only — No Live, Refresh, Send, or Clear buttons. Designed purely for reviewing previously exported logs.
  • Auto-category selection — After import, automatically switches to the first non-empty log category.
  • Stateless — Closing and reopening the popout window resets it to an empty viewer.

DevTools Console Log Categories

  • Page Console Logs — New "Page Console Logs" category in DevTools COR3 Helper tab shows all console.log/warn/error output from the game page (MAIN world). Supports Live mode, filtering, pagination, and clear — all without opening a separate console window.
  • Extension Console Logs — New "Extension Console Logs" category shows logs from content scripts, background service worker, and popup. Each entry is prefixed with its source context (content/background/popup).

Fixes To Existing Features:

Auto Valuable Seller

  • Sold items now removed from UI — Introduced _desktopToServerMap to track desktop file IDs back to their server origin, so the onSold callback correctly removes sold files/logs from the "Servers With Valuables" tab.
  • Server DONE tagging — Servers with status DOWNLOADED that have 0 remaining files+logs after selling are now automatically tagged as DONE.
  • Always download valuable logs — Removed the filter that skipped logs already detected by search-valuable, since log names are generated on download and can't be matched reliably. All valuable logs are now always downloaded.
  • Log filtering by seq — Fixed log filtering in seller mode to match by seq (converted to string) instead of logId/id, which were undefined on log objects from get.logs.
  • Faster downloads folder refresh — Skipped delays for cached file analyses and reduced delay to 300ms for uncached ones (was 800–1500ms humanDelay).
  • Accurate search-valuable counts — file.search-valuable and log.search-valuable results now filter out basePrice=0 items before reporting detected counts and before populating the download filter, so the logged count matches the actual number of items downloaded.

Auto Job Solver

  • file-already-decrypted handling — The game server now returns file-already-decrypted for already-decrypted files. Both File Decryption and Decrypt & Extract job solvers now detect this error, skip the minigame, and proceed directly to job completion. Added to ERROR_MAP for friendly UI messages.
  • Wrong file decrypted in Data Download jobs — solveDataDownload was picking ANY isNew or last file in the Downloads folder instead of the actual job file. Now uses a 6-step matching chain: update event ID → conditions ID → conditions name → update event name → base name (strip extension) → single isNew fallback.
  • update.file event tracking — Data Download and Decrypt & Extract jobs now listen for update.file WS events to capture the correct desktop file ID and name after download (server may change the file extension).
  • Base name matching — All three decrypt-capable job types (File Decryption, Data Download, Decrypt & Extract) now match by base file name (e.g. db_5466) when exact name/ID matches fail, handling cases where the server renames the file extension on download.
  • Removed stale get.jobs call — Data Download no longer sends a standalone get.jobs without first setting endpoint to the market server. The stepCompleteJob function handles endpoint switching internally.

IndexedDB Enhancements

  • Backslash sanitization — WS messages logged to IndexedDB now have redundant backslash escapes removed (\\ → \, \" → ").
  • 30k entry limit — Both the WS messages store and the logs store are now capped at 30,000 entries. Excess oldest entries are trimmed during the periodic purge cycle.

ICE Wall Solver

  • Stuck after false positive — After a wrong click, waitForUniqueCandidate relied on MutationObserver which never fires when the board hasn't changed. Now the poll interval calls tryEval() directly (not debounced), reduced from 500ms to 300ms, and a 200ms sleep is added before re-entering the retry loop so the updated invalidPositions set is immediately considered.
  • Abort check in observer — Added window.__iceWallSolverAbort checks inside waitForUniqueCandidate poll and tryEval to prevent hanging when the solver is stopped externally.
  • Tab visibility recovery — On visibilitychange to visible, tryEval() is called directly instead of through the debounced scheduledEval, ensuring immediate re-scan when the user restores a minimized window.
  • Target pattern refresh on retry — After each false positive, the target pattern is re-extracted from the DOM in case browser repaint changed the SVG (e.g. after tab minimize/restore).
  • Remaining positions logging — After each false positive, logs how many valid positions remain for easier debugging.
  • Sub-pixel fingerprint mismatch — The game renders identical glyphs with slightly different SVG path coordinates at different board positions (e.g. 17.5151 vs 18.0361). The solver's fingerprinting used raw d attributes, causing target fingerprints to never match board fingerprints. Added normalizeCoords() to round all numeric values to integers before comparison.

ICE Wall Solver Debug Logging

  • Target sequence logging — When a target pattern is extracted, the solver now logs the anchor position and all offset fingerprints (truncated to 40 chars) to the console.
  • Failed sequence logging — On false-positive clicks, the solver logs the board fingerprints at the attempted position with per-offset match/mismatch indicators (✓/✗).

Miscellaneous Fixes & Improvements to UI

  • COR3_AUTOJOB_DESKTOP_UPDATE_FILE event — Added a dedicated event type in content-early.js for update.file desktop actions, enabling precise tracking of desktop file IDs from downloads in auto-valuable-seller.js.
  • Toggle labels clarified — "Auto Job Solver" → "Auto Job Solver UI" and "Auto Valuable Seller" → "Auto Valuable Seller UI" to clarify that these toggles control UI visibility, not feature activation.

Known Issues:

  • Helper-Only Mode — When trying to restore saved states of all toggles and functionalities, it has problems while restoring some of them.
  • New Server Support — With the game web-version "v1.20.57", there are more server which added to the game recently. Those will be supported with upcoming updates.

See the "Installation" section in the main README for install instructions.

v1.5.5

Choose a tag to compare

@Femtoce11 Femtoce11 released this 03 Jul 01:33
v1.5.5

COR3 Helper — Release Notes

v1.5.5 — Auto Valuable Seller, Multi-Market Mercs Support, Loadout Fixes And More

New Features:

Auto Valuable Seller

  • Two-phase workflow — "Start Valuable Search" scans all hackable servers for valuable files and logs (basePrice > 0, tagged), then "Start Valuable Seller" processes selected servers and sells downloaded items to markets.
  • Two Tab UI — It includes "Servers With Valuables" tab which shows the server list with file information under each server row (ordered by server distance to HOME) and "Downloads Folder" tab which shows all files under "Downloads" folder with their information like tag file name, tag info and their source server information.
  • Automatic server access — For each server, the extension sets the endpoint, checks login status, and hacks if needed (with path-through hacking for unreachable servers along multi-hop paths).
  • Optimal loadout management — Automatically equips the best SEARCH software before scanning and the best HACK software before hacking, including hardware upgrades when needed to meet server defence rates and file detect rates. Uses the same loadout analysis engine as the auto job solver (power calculation, hardware compatibility checks, automatic hardware swaps if needed). Loadout changes are applied per-server based on server type, with full logging in the debug console.
  • Smart search-valuable calls — During the seller phase, file.search-valuable and log.search-valuable are only called on servers where the scan phase actually found valuables of that type, avoiding unnecessary WS calls.
  • Cached file analysis — get.file.analysis results are cached per file ID so re-scanning the downloads folder doesn't repeat analysis on already-analyzed files.
  • Cached login status — get.login.status results are cached with a 3-second TTL to avoid redundant calls when multiple functions check the same server in quick succession.
  • Server processing order — Servers are processed furthest-first (by path length from HOME) to reduce the risk of maintenance mode blocking closer servers needed for return paths.
  • Multi-market selling — After downloading, items are sold across markets in priority order: USOL → SOYUZ → D4RK → HOME, with automatic endpoint switching to each market server.
  • Downloads grouped by server — The Downloads Folder tab groups files under server headers (ordered by proximity, closest first) instead of a flat list, making it easy to see which server each file came from.
  • Debug console — All operations are logged to a dedicated debug console with collapsible Logs tab, showing timestamped entries with color-coded levels (info, success, warn, error).

Multi-Market Mercenary UI

  • Expandable market rows — Mercenaries are now grouped under collapsible "CORE Market" and "USOL Market" sections with faction icons. Click to expand/collapse each market's merc list.
  • Faction info on merc cards — Each mercenary card displays its faction icon alongside the callsign.
  • Elite mercenary badge — Elite mercenaries (from eliteSlots) are displayed at the top of their market section with a bold "ELITE" badge.
  • USOL merc data fetch — Extension sets endpoint to USOL server (URM7-M), fetches mercenaries and expedition config for the USOL market, then runs configure calls for each merc to get detailed cost/risk info.
  • Faction key detection — Market detection uses faction.key (core_main for CORE, usol_employment for USOL) to correctly route mercenary data to the right market section.
  • Full configure flow for CORE mercs — CORE mercenary refresh now follows the same complete flow as USOL: get.mercenaries → get.config → configure per merc, ensuring detailed cost/risk data is fetched for all mercs.
  • Single refresh triggers both markets — The "Refresh Mercenaries" button now triggers both CORE and USOL merc fetches in sequence, with USOL following after CORE completes.
  • Live UI refresh for USOL — Storage change listener now includes usolMercenariesData, so the mercenary UI updates immediately when USOL data arrives.

New Toggles For Mercenary UI

  • Auto-choose USOL First — When enabled alongside "Auto-choose cheapest", USOL mercenaries are prioritized over CORE mercs. The cheapest available USOL merc is selected before considering CORE mercs.
  • Ignore Elite Mercenary — When enabled, elite mercenaries are excluded from auto-choose selection, preventing expensive elite mercs from being automatically sent.

Market-Aware Auto-Send

  • Cross-market auto-choose — The "Auto-choose cheapest available mercenary" toggle now considers mercs from both CORE and USOL markets, sorting by USOL-first preference (if enabled), then cost, then risk.
  • Market-aware launch config — When launching an expedition, the extension uses the correct market ID and expedition config (location/zone/goal IDs) based on the selected mercenary's market.
  • USOL expedition config — Stored separately (usolExpeditionConfigData) and used automatically when sending a USOL merc.

Copy Logs To Clipboard Button

  • One-click log collection — A clipboard button (📋) in the Auto Job Solver section copies all debug logs from every category to the clipboard: WS messages, Auto Job Solver logs, Auto Valuable Seller logs, error logs, and service worker / extension / DevTools console logs.
  • 10 MB size limit — Trims the oldest logs to fit within ~10 MB (Discord's file upload limit), keeping the most recent entries while maintaining timestamp alignment across categories.
  • Visual feedback — Button shows ⏳ while collecting, ✅ on success (with size in MB), or ❌ on failure, then resets to 📋 after 2 seconds.

Enhanced DevTools Logging

  • Multi-category log viewer — DevTools panel now supports 4 log categories via a dropdown selector: WS Messages (existing), Auto Job Solver, Auto Valuable Seller, and Error Logs. Each category has its own IndexedDB storage with 24-hour auto-purge.
  • Dynamic column headers — WS Messages show Direction/Time/Event/Action/Server/Preview/Size columns. Log categories show Time/Level/Message columns with color-coded log levels (info=blue, success=green, warn=yellow, error=red).
  • Per-category clear — Clear button now clears only the currently selected category instead of all data.
  • Category-aware export — JSON and Markdown export adapts format based on selected category.
  • Auto-job & auto-valuable IndexedDB logging — Auto Job Solver and Auto Valuable Seller logs are now written to IndexedDB (in addition to chrome.storage.local for popup UI), making them accessible in the DevTools panel.
  • Error capture — JavaScript errors and unhandled promise rejections are automatically captured and stored in the Error Logs category.
  • UI mode switching — Sent/Received filter checkboxes and Send button are hidden when viewing log categories. Live mode and search work across all categories.

Popout Window Multi-column Layout Support

  • Responsive multi-column layout — When the popup is opened in a popout window, UI sections are wrapped in popout-card containers that automatically arrange into multiple columns based on the window width, eliminating the need to scroll through a single long column.
  • Dynamic column fitting — Cards reflow as the window is resized, fitting as many columns as the available space allows while maintaining readable section widths.
  • Selective card wrapping — Only the specified UI sections are wrapped as popout cards, so the layout reorganization targets the right elements without affecting other parts of the UI.

Helper Mode

  • New toggles supported — Helper mode now properly saves/restores and hides the "Auto-choose USOL first" and "Ignore elite mercenary" toggles.

Fixes To Existing Features:

Auto-Jobs / Loadout Checks

  • Decrypting — Added decrypt rate checks for every file before decrypting which compares it to current decrypt power the loadout has. If needed, it changes software/hardware to make loadout decrypt power higher enough for decrypting the file.
  • Hacking — Added defence rate checks for each server that auto-jobs trying to log-in which compares it to current hacking power the loadout has. If needed, it changes software/hardware to make loadout hacking power higher enough for hacking the server.
  • Decrypting/Hacking — When the equipped decrypt/hack software lacks sufficient computed power, the solver logs a clear message with required vs. available power and skips the job instead of retrying indefinitely.
  • Auto-jobs Decrypting — Added insufficient_power error handling for decrypt operations.
  • Auto-jobs Hacking — Added sai-hack-impossible error handling for hack operations.
  • Logging Support — Added many logs for notifying user about the states of loadout actions during auto-jobs to debug console.

Decrypt Protocol Update

  • decrypt.file replaces open.file — All WebSocket file decryption requests now use the decrypt.file action instead of open.file, matching the game's current protocol.
  • No source field — The source:"desktop" field is removed from decrypt requests per the updated protocol.
  • Response interceptors updated — Both WS message and HTTP polling interceptors now handle decrypt.file responses alongside update.file and open.file.

ICE Wall Solver Logic Update

  • Major algorithm rewrite — Updated the logic for supporting trapezoid and 9-triangle cases by matching the logic based on Doggo's script.

Fix For Known Issue:

  • Auto-Jobs Loadout Integration — Fixed many cases about not finding the best possible loadout preset for certain actions. If more gets discovered in the future, those will be fixed as well.

Miscellaneous Fixes & Improvements to UI

  • Cached Data Usage — When using ...
Read more

v1.5.0

Choose a tag to compare

@Femtoce11 Femtoce11 released this 16 Jun 13:00
v1.5.0

COR3 Helper — Release Notes (Including v1.4.96 and v1.4.97)

v1.5.0 — New Features, UX Fixes & Improvements And More

New Features:

Loadout Viewer

  • New popup section: 🖥️ Loadout — View your equipped hardware (CPU/GPU/RAM/PSU) and all installed software in a game-style card UI.
  • Hardware cards — Show specs (frequency, cores, power, memory, vulnerability), with CHANGE button to swap to any owned hardware and INFO popup with full details.
  • Software list — Collapsible section with sort (by tier, power, name) and search. Each software card shows type (HACK/DECRYPT/SEARCH), target types, consuming ranges, and per-resource power ratios using the server's computed softwarePower data. Some of the software images were so small for general view. So, there is a special zoom applied to certain software images in the list to keep them as same size as others.
  • Resource Overview — Supply vs demand bars for all 6 resources + PSU, boot status indicator.
  • Live updates — Loadout refreshes automatically when data arrives via WebSocket.
  • Equip/unequip — Hardware change and software equip/unequip commands routed through content.js → content-early.js → WS.
  • Refresh button — Manual loadout data refresh.

Auto-Jobs Loadout Integration

  • Loadout resolver module in auto-job-solver.js:
    • parseConsuming — Parses 2-value [min,max] and 3-value [base,min,max] consuming arrays.
    • calculateAnalysis — Computes supply, demand, canBoot, per-software ratio (available = supply − otherBaseDemand), and power = floor(min + ratio × (max − min)).
    • findBestHardware — Brute-force top-3 CPU/GPU/RAM/PSU combos ensuring boot viability.
    • findHackSoftwareForServerType / findDecryptSoftwareForFileType — Candidate lookup sorted by max power.
    • applyLoadoutChange — Sequentially unequips, swaps hardware, equips software via WS commands.
  • Pre-check before each job — ensureLoadoutForJob verifies hack/decrypt software is equipped before the job starts.
  • Error retry with loadout swap — On sai-no-hack-software, sai-hack-impossible, missing-software, insufficient_power, or File is encrypted errors: attempts to swap software/hardware and retries the operation once.
  • Decrypt error handling — File open now races COR3_AUTOJOB_DESKTOP_FILE error vs COR3_AUTOJOB_MINIGAME_START, enabling proper error detection and retry for both solveFileDecryption and solveDecryptExtract.
  • Error map — Added insufficient_power and insufficient-power entries.
  • content-early.js — Cached server type map (window.__cor3ServerTypeMap) from network map, file analysis interceptor (desktop.get.file.analysis), loadout WS send functions, loadout data caching in window.__cor3LoadoutData.

Helper-Only Mode

  • New toggle — "Helper-Only Mode" at the top of the popup (below theme selector). When enabled, it hides and disables;
    • The "Auto Job Solver" toggle, the UI section and all its toggles,
    • The Auto Update Markets toggle,
    • Decisions section "Auto-choose" and "Do not wait" toggles,
    • Mercenaries section "Auto-send", "Auto-choose" and "Auto-sell" toggles.
  • Visible Toggles — Toggles like Market cleanup buttons, QoL toggles (Background, Fog, Notifications, Network Map) and auto-hacking toggles will remain active for a better gameplay experience (They can be turned off in any given time by user).

Trigger Dismiss Failed Jobs

  • New toggle — "🧹" in the Markets section. When clicked, it will trigger a queue for dismissing all failed jobs (via job.dismiss WS command) to the related market one by one until none lefts. This happens in real-time while viewing the UI as well.
  • Toggle Visibility — It will only be visible to the left of market's refresh button if there are failed jobs for that market. Also, it will disappear when there are no more failed jobs left.

Auto-Sell Cheapest Items During Expedition

  • New toggle — "Auto-sell cheapest items when stash is full" in the Mercenaries section. When enabled and when not enough space in inventory to pickup expedition container items, it will sell two cheapest items from inventory automatically.

Resizable Network Map

  • New toggle — "Make Network Map Resizable" in the Toggles section. Injects CSS to make [data-component-name="Application-NETWORK_MAP"] resizable via browser drag handle. It makes the in-game "Network Map" resizable.
  • Persisted — Setting saved in chrome.storage.sync and auto-applied on page load.

Extendable Toggles Section

  • Collapsible toggles — First 3 toggles (Auto Decrypt, Auto ICE Wall, Auto Simple Decrypt) are always visible. Remaining toggles are hidden behind a "Show More ▼" / "Show Less ▲" button to reduce visual clutter.

New Theme With Game's Native UI Colors

  • New theme — Added a new theme matching the game's native UI color scheme as default theme to the extension while keeping the old default theme as "Original" extension theme available in the theme dropdown.

Info Popup UI

  • INFO buttons — Added these buttons to all possible places (market items, inventory and hardwares). Click to view full item details (name, description, image, specs) in a popup overlay.
  • CSS — New .market-item-info-btn, .market-item-header, inv-info-btn and item-details grid layout styles.

USOL Market (Market-4) Support - From Pre-release v1.4.97

  • New market: USOL — Full support for the fourth market (URM7-M server, id 019e4052-c317-7388-9d71-883ffb1560cd, market id 019e4065-6ae8-760d-8724-58ab4f2cf7d7).
  • Path-through — Automatic path-through routing via RM7-E1L5 → RM7-E1SCP → RM7-S4L2 → RM7-S4L3 → URM7-S5L2 → URM7-M, with hack-through for intermediate servers.
  • Auto Job Solver — USOL jobs fully supported: endpoint setting, job take/complete, server priority ordering, market tab UI.
  • Popup UI — USOL market tab with jobs, items, stats, and reset timer.
  • content-early.js — USOL market data caching, WS interceptors, unreachable handling, and path-through retry logic.
  • content.js — USOL market data storage relay.

New Server Support - From Pre-release v1.4.97

  • Server List — Added support for new servers to all server-id related features during pre-release version "v1.4.97". But, with the new game web-version "v1.20.57", there will be another update required to add new servers to the list. This will happen in upcoming updates.

WS Msg Decoding - From Pre-release v1.4.96

  • MSG-pack — Added msgpack decoding support for binary WS msgs. This way, the change in the game server WebSocket channels in terms of encoding the WS msgs didn't affect the extension's capabilities.

Fixes To Existing Features:

ICE Wall Solver Rewrite

  • Major algorithm rewrite — Completely refactored triangle detection, fingerprinting, and pattern matching logic based on Doggo's script.
  • Improved reliability — Better handling of board grid parsing, target preview extraction, and candidate elimination.
  • Reduced code size — Consolidated duplicate logic and removed unnecessary complexity.

Disable Expedition Polling

  • After various testings, all places that does expedition data polling got removed. Now the extension solely relies on incoming expedition data from server when executing the automated actions.
  • In the case of stale data like having expedition container waiting to be picked up, it uses the initial data server sends when the page game page first loaded to understand the state of expeditions, then it executes the necessary actions.

Daily Ops Bearer Token

  • On pre-release version "v1.4.97", there was an in-complete fix to this problem. But this time, it is completely fixed that the extension listens for the Client generated bearer token that the game sends when new WS channel opens. Now, we can refresh "Daily Ops" data without any issues.

WS Messages IndexedDB Resilience

  • Stale connection handling — ws-messages.js now detects dead IndexedDB connections (InvalidStateError, NotFoundError) and automatically reopens the database.
  • Retry logic — Write operations retry once on stale connection errors before failing.
  • _wsInvalidateDb helper — Centralizes DB connection invalidation for onclose, onerror, and onversionchange events.

Expedition API Compatibility

  • objective → goal rename — Updated content.js auto-send expedition logic to use zone.goals[0] and goalId instead of zone.objectives[0] and objectiveId, matching the current server API.
  • Market ID in expedition requests — ws-interceptor.js now includes marketId in the expeditions.get.config WS message.

Miscellaneous Fixes & Improvements to UI

  • Font size adjustments — Adjusted font sizes on various places to match the general view.
  • Icon Replacements — Replaces the existing icons with game UI related icons to certain sections in the extension UI.
  • Others — Many other UI changes to fix the general look of the UI.

Known Issues:

  • Helper-Only Mode — When trying to restore saved states of all toggles and functionalities, it has problems while restoring some of them.
  • Auto-Jobs Loadout Integration — The extension still struggles to find the best possible loadout preset for certain actions. There will be more changes done about this in the future updates according to new cases detected.
  • New Server Support — With the game web-version "v1.20.57", there are more server which added to the game recently. Those will be supported with upcoming updates.

See the "Installation" section in the main README for install instructions.

v1.4.97

v1.4.97 Pre-release
Pre-release

Choose a tag to compare

@Femtoce11 Femtoce11 released this 25 May 01:23
v1.4.97

COR3 Helper — Release Notes

New Features

  • USOL Market — Full support added for the new USOL market.
  • Server List — Added support for new servers to all server-id related features.

Fixes & Improvements

  • Daily Ops — Daily ops bearer token fix. There will be more fixes about this in the next update.
  • Auto Jobs — Fixed "hack start event timed out" issues and "Decrypt & Extract" job issues.

See the "Installation" section in the main README for install instructions.

v1.4.96

v1.4.96 Pre-release
Pre-release

Choose a tag to compare

@Femtoce11 Femtoce11 released this 23 May 10:30
v1.4.96

COR3 Helper — Release Notes

General Fixes

  • Added msgpack decoding support for binary WS msgs. This brought extension back to life.
  • Fixed "auto-jobs" job completion issue by not setting endpoint to the job related market prior to it.

See the "Installation" section in the main README for install instructions.

v1.4.95

Choose a tag to compare

@Femtoce11 Femtoce11 released this 17 May 11:48
v1.4.95

COR3 Helper — Release Notes

General Fixes

  • Added all hackable server support to auto-jobs and clear IPs functionality.
  • Added all missing servers to WS inspector, so it shows server name for all of them properly now.
  • Also added missing servers to server priority list for finishing furthest first.
  • Fixed "auto-jobs" file decryption problems with the new ICE Wall hack minigame appearing during decryptions. Now it waits properly till it finishes.
  • Fixed missing bearer token issue for "Daily Ops" not being able to request new data.

See the "Installation" section in the main README for install instructions.

v1.4.9

Choose a tag to compare

@Femtoce11 Femtoce11 released this 14 May 03:22
v1.4.9

COR3 Helper — Release Notes

DevTools WS Inspector — Storage & UI Rewrite

Storage Rewrite

  • IndexedDB storage — Migrated WS message storage from chrome.storage.local to IndexedDB (cor3_ws_db). Eliminates the kQuotaBytes quota error that occurred when logs exceeded 10 MB.
  • Immediate writes — Each message is written to IndexedDB immediately (no buffering), preventing data loss on page navigation or tab close.
  • 24-hour auto-cleanup — Entries older than 24 hours are automatically purged (checked at most once per minute).
  • Cross-origin DB access — DevTools panel uses chrome.scripting.executeScript to query IndexedDB in the inspected tab's origin.
  • scripting permission — Added to manifest.json for cross-origin DB queries.
  • Console logging — All IndexedDB operations ([COR3 WS-Log] in content script, [COR3 Panel] in DevTools) now log to console for debugging.
  • Removed "Pull History" button — Redundant since the panel now loads directly from IndexedDB.
  • Log section selector — Replaced the XXX/XXX shown counter with a <select> dropdown. Options are paginated in blocks of 1000 (e.g., 0-1000, 1000-2000, 2000-now). Default selection is the latest page (XXX-now).
  • 1000-message page limit — Only 1000 messages are loaded into the DOM at a time, improving rendering performance.
  • Clear button — Now deletes messages from IndexedDB (previously only cleared the display).

Preview Column in MD Export

  • MD export now includes a Preview column with a truncated JSON summary of the message payload (max 200 chars, pipe characters escaped).
  • JSON export also includes a preview field.

Tree View Preview

  • Inline object/array previews — Collapsed tree nodes now show a compact JSON preview (up to 120 chars) next to the bracket, mimicking Chrome Network tab behavior. Example: servers: [{id: "019c0a5b...", serverName: "Home Server", ...}].
  • Preview text disappears when the node is expanded and reappears when collapsed.

Message Detail Search Fix

  • Re-triggers on input — Search now fires on every keystroke (input event) in addition to Enter and the search button.
  • Tree view search — Search now traverses all .tree-node elements in tree view mode, auto-expands collapsed parent nodes, highlights the matching node with a yellow background, and scrolls it into view.
  • Consistent navigation — Enter key cycles through matches in both text and tree modes.

Live Button Fix

  • Activation-point-only — Live mode now sets lastLiveTimestamp to the current time when activated, so only messages arriving after the button is clicked are shown. Previous behavior loaded the full history.
  • Page selector interaction — Selecting a different log page automatically disables live mode.
  • Disabling live mode — When live mode is turned off, the panel returns to the paginated view at the last-selected page.

See the "Installation" section in the main README for install instructions.