650 Commits
Author SHA1 Message Date
Dmitry Popov a8fe4c4b65 Merge pull request #657 from guarzo/fix/restore-location-tracking-on-map-entry
fix(tracker): random loss of tracking, only fixed by relogging in EVE
2026-08-17 12:43:41 +02:00
SzesciennaGeometria 44459ae8f8 Merge branch 'wanderer-industries:main' into lazydelete-coloring-bug 2026-08-16 15:34:52 +02:00
szesciennageometria 29d289555d missed cleanup 2026-08-16 14:52:11 +02:00
szesciennageometria 309a0a9427 fixed re-paste bug while lazy delete is in-progress + code cleanup 2026-08-16 14:48:55 +02:00
szesciennageometria 37f3b29d2f fixed coloring two systems red with same signature when removing sigs from one of them 2026-08-16 14:09:58 +02:00
Guarzo af2a265c71 fix(tracker): characters stop moving on the map after a browser disconnect
maybe_start_location_tracking/2 matched %{track_location: true} in the
track_settings argument. No caller passes that key -- all five call sites
send %{map_id: _, track: true | false} -- so the clause never matched and
the function could not turn location tracking on. maybe_start_ship_tracking/2
had the identical defect.

Match on the state's active_maps instead: a character on at least one map
should be polling their location.

Without this, a character is stranded by an event they never initiated. When
a browser's presence lapses past the grace period the character is untracked
server-side, active_maps empties, and maybe_stop_tracking/2 clears
track_location. The character is still online in EVE throughout, and the only
other writer -- update_online/1 -- is gated on an online-status transition
that a character who stays logged in never produces. So the browser
reconnecting cannot restore it. update_location/1 then falls through to its
catch-all on every tick, and the character stops moving on the map while
every liveness signal keeps reporting healthy.

This is why #620 reports that toggling tracking off and on does not help but
relogging in EVE does: toggling routes through the dead clause, while
relogging produces the online transition that restores the flag as a side
effect.

Fixes #620
2026-08-11 19:56:05 +00:00
Dmitry Popov f64d34ff95 Merge pull request #637 from guarzo/fix/map-character-location-tracking
fix(test): repair 8 never-passing character location tracking tests
2026-08-11 11:32:25 +02:00
GuarzoandClaude Opus 5 33acc374b4 fix(map): match Ash-wrapped NotFound in MapRepo.get/2
Review of the previous commit found that Ash returns NotFound wrapped
inside Ash.Error.Invalid, not as a bare struct. Verified against a live
query: `Api.Map.by_id(<missing uuid>)` returns

    {:error, %Ash.Error.Invalid{errors: [%Ash.Error.Query.NotFound{}]}}

so the bare-NotFound clause never matched. A genuinely missing map would
have propagated as a generic error and logged a spurious error line.

Match the wrapped shape as well. Confirmed `MapRepo.get/2` now returns
{:error, :not_found} for a missing map with no error log. No caller
depends on the :not_found atom specifically (all use wildcard or
with/else), so propagation of real faults is unaffected.

Also make track_character_on_map/2 clear stale per-map location caches,
mirroring TrackingUtils.track_character/4, which the helper claimed to
mirror but did not.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 19:29:25 +00:00
GuarzoandClaude Opus 5 789d4fa884 fix(map): stop MapRepo.get/2 masking all errors as :not_found
MapRepo.get/2 flattened every error from Api.Map.by_id/1 into
{:error, :not_found}. That turned infrastructure faults into a
"map does not exist" signal: a DBConnection.OwnershipError in test
surfaced as "Failed to load map state" -> "map not loaded" ->
"Timeout waiting for map ... Check Map.Manager is running", pointing
at Map.Manager (which was running fine) instead of the real cause.

Keep the :not_found translation for a genuine Ash NotFound, and
propagate + log anything else.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 19:03:01 +00:00
Ryan Olds 4125982936 Fixing build warning 2026-07-24 11:58:05 -07:00
Ryan R. Olds 9d37cefcbe Include characters that haven't passaged in user activity API 2026-07-22 23:01:17 -07:00
Dmitry Popov da5a93e498 Merge pull request #616 from guarzo/guarzo/idor-audit
fix: authorize client-supplied IDs in LiveView handlers (IDOR audit)
2026-07-17 15:04:46 +02:00
Dmitry Popov a220d94050 Merge pull request #617 from starkythefox/fix_location_update_on_debug_logs_on
Recoverable crash on update location with debug logs on
2026-07-09 13:21:12 +02:00
Guarzo 5349b5088c fix: authorize client-supplied IDs in LiveView handlers (IDOR audit)
LiveView event handlers were trusting client-supplied record IDs without
verifying they belong to the user's current map/user scope. A logged-in
user could push another map's record UUID over the LV socket and act on
it. Affected handlers:

- cancel-subscription / edit-subscription / update_subscription
  (cancel or upgrade any map's paid subscription by ID)
- characters_live.ex "delete"
  (soft-delete any user's character and null their user_id)
- cancel_ping
  (cross-map rally-ping cancellation broadcast)
- deleteSystemComment
  (cross-map comment deletion)
- update_passage_mass
  (cross-map wormhole passage mass corruption)
- updateCharacterTracking
  (untrack another user's character on a shared map)

Also fixes a related numeric-trust bug in subscribe/update_subscription
where `period`, `characters_limit`, and `hubs_limit` were parsed without
bounds, allowing `period: "-1"` to produce a back-dated subscription
with a negative price.

Adds WandererAppWeb.HandlerAuth with focused helpers each handler now
routes through, plus 26 regression tests covering both the IDOR auth
checks and the bounded-int parsers.
2026-06-10 14:31:56 +00:00
Guarzo 8dc2a278c2 fix: update to subscription balance handling 2026-06-09 23:09:15 +00:00
starkythefox 83727dea63 fix(server): prevent Access error debugging update_location 2026-06-05 21:44:08 +02:00
Dmitry Popov 2c024ab9e2 Merge pull request #610 from Drewsif/remove-connected-wormholes
Feat: Automatic Cleanup of Connected Wormhole Signatures
2026-06-02 10:03:39 +02:00
Dmitry Popov c93c0f7df0 Merge pull request #607 from Arkezar/feat/track-connection-lock-user
feat: Track Save Mass (locked) status on connections
2026-06-01 20:23:40 +02:00
Drew Bonasera 2e29beeb13 Update wormhole class constants for C1 and C4 destination types and refactor bookmark formatting logic.
- fix(mapper): Update `whClassName` values for C1 and C4 destination types
- refactor(mapper): Consolidate K162 and multi-destination checks in bookmark formatting helper
- fix(map): Remove `c4_to_ns?` check and small ship size constraint from connection operations
2026-05-30 21:51:00 -04:00
Drew Bonasera c18a15abeb Merge branch 'main' into add-auto-bookmark-copy 2026-05-22 09:45:35 -04:00
Dmitry Popov f4a7b3d46e fix(core): tracking issues fixed 2026-05-18 03:38:38 +02:00
Dmitry Popov 6d7f887d0e fix(core): tracking issues fixed 2026-05-16 19:48:03 +02:00
Dmitry Popov e57e3d2b4e fix(core): tracking issues fixed 2026-05-16 13:49:05 +02:00
Drew Bonasera ddba4549ce Automatically removes the corresponding signature from a connected system when a wormhole signature is deleted. This ensures connections are properly cleaned up from both sides of the wormhole.
- feat(map): Automatically remove the back-link signature when its corresponding signature is deleted.
2026-05-01 07:40:10 -04:00
Drew Bonasera 0a44a1403e Adds an option to ignore return wormholes for auto-indexing and use a custom symbol instead. This also fixes chained index formatting for system auto-tags and labels.
- feat(bookmarks): Add settings to ignore return holes and use a custom symbol for auto-indexing
- feat(settings): Add a `dependsOn` property to conditionally render settings
- fix(systems): Correctly apply chained index formats for auto-tag and custom label
- refactor(bookmarks): Pass target system info to `handleAutoBookmark` for return hole detection
2026-05-01 06:57:17 -04:00
Dmitry Popov 2d95353eb0 fix(core): potential memory leak fixes 2026-05-01 11:49:54 +02:00
Drew Bonasera a3e096cc44 Adds advanced customization for auto-bookmark names and introduces a new {dest_class_index} variable. Users can now override the string output for format variables like time, mass, and destination class.
- feat(mapper): Add UI for advanced customization of bookmark format variables
- feat(mapper): Implement custom string mapping and `{dest_class_index}` logic for bookmark names
- feat(settings): Add `bookmark_custom_mapping` to user settings
- fix(mapper): Treat linked signatures as wormholes for auto-bookmarking
2026-04-29 10:57:48 -04:00
Drew Bonasera 0a19f248ae Introduces automatic tagging and labeling for destination systems upon wormhole jumps. Users can now configure the format for these tags and labels in the map settings.
- feat(mapper): Implement auto-tagging and auto-labeling logic for destination systems
- feat(settings): Add UI options to configure system auto-tag and auto-label formats
- feat(backend): Add new system auto-tag and auto-label settings to user preferences
- refactor(settings): Extract shared auto-format options into a constant
2026-04-28 11:03:46 -04:00
Drew Bonasera 292039c749 Adds a dedicated 'Bookmarks' settings tab with advanced options for automatic bookmark naming. This includes features for auto-filling temporary names, starting indices from 0, and toggling auto-copy.
- feat(bookmarks): Add a dedicated 'Bookmarks' settings tab with advanced formatting options.
- feat(bookmarks): Implement auto-filling of a wormhole's temporary name based on its index.
- feat(bookmarks): Add setting to start wormhole bookmark indices from 0.
- feat(bookmarks): Add setting to enable or disable automatic copying of bookmark names.
- fix(bookmarks): Handle bookmark index 0 correctly in auto-naming calculations.
- refactor(settings): Move bookmark format setting to the new 'Bookmarks' tab.
- chore(api): Add new bookmark settings to the backend allowlist.
2026-04-28 01:15:46 -04:00
Drew Bonasera 56d0d16255 Adds a feature to automatically copy formatted wormhole bookmark names to the clipboard. This is configurable via a new text input in the map settings and is triggered when a wormhole is linked or updated.
- feat(signatures): Automatically copy formatted bookmark name to clipboard on WH link or update
- feat(settings): Add support for text input fields in the settings UI for bookmark format
- feat(signatures): Add `k162Type` to custom info to specify K162 destination type
- refactor(map): Extract system class group logic into a `getSystemClassGroup` helper
- fix(signatures): Add error handling for malformed `custom_info` JSON
- fix(ui): Correct typo in `LINK_SIGNATURE_SETTINGS` constant
- feat(backend): Add `bookmark_name_format` field to user settings
2026-04-26 23:45:49 -04:00
Arkezar 2f86fc9f17 feat: track Save Mass (locked) status on connections 2026-04-25 18:27:04 +00:00
Dmitry Popov b85ffed19f Merge pull request #603 from starkythefox/c729-reversal
fix: C729 reversal - Allow multiple destinations for Wormholes
2026-04-17 10:12:41 +02:00
Dmitry Popov cb66b73337 Merge branch 'main' into passages-mass 2026-04-13 11:00:25 +02:00
starkythefox 6dc0890def feat: make C729 wormholes static to Pochven systems
Reverses the direction of C729 wormholes due to patch 2026-03-18.1. Also
makes C729 static on each Pochven system.
2026-04-11 16:12:07 +02:00
Dmitry Popov 0032b56d09 fix(signatures): Back linked signatures not cleared old connection statuses 2026-04-10 23:57:40 +02:00
Dmitry Popov 74e8f45265 feat(core): added character profile pages support 2026-04-07 00:38:24 +02:00
Dmitry Popov 8e5ed22bc0 feat(core): Add support for editing passages mass 2026-04-01 11:55:25 +02:00
Dmitry Popov 63b40b9c75 fix(core): Fixed character re-auth issues 2026-03-26 02:02:04 +01:00
Dmitry Popov d62ad709ab fix(core): Fixed character re-auth issues 2026-03-26 01:10:57 +01:00
Dmitry Popov 9ab7fcc46e fix(core): Fixed character re-auth issues 2026-03-26 00:41:07 +01:00
Dmitry Popov 171591f07d fix(core): Fixed tracking issues & adding systems to map from routes 2026-03-23 12:19:17 +01:00
Dmitry Popov e45e6a39eb feat(signatures): Sync mass status with connection, show it on unsplashed sigs 2026-03-14 23:58:25 +01:00
Dmitry Popov ad35d9e172 fix(core): Fixed tracking issues 2026-03-13 12:33:18 +01:00
Dmitry Popov 80d5dd1eb1 Merge branch 'main' of github.com:wanderer-industries/wanderer 2026-02-27 18:47:51 +01:00
Dmitry Popov 1ab0e96cbb fix(core): Fixed access token refresh issues 2026-02-27 18:46:56 +01:00
Dmitry Popov c451735559 chore: Updated character expired token handler 2026-02-17 16:19:36 +01:00
Dmitry Popov b71bc94d4f fix(tracking): Fixed character tracking issues 2026-02-15 11:06:35 +01:00
Dmitry Popov 35ea4e5f1e feat(signatures): Fixed creator visibility issues. Added 4.5 hour color for unsplashed
Build Test / 🚀 Deploy to test env (fly.io) (push) Has been cancelled
Build Test / 🛠 Build (1.17, 18.x, 27) (push) Has been cancelled
Build Develop / 🛠 Build (1.17, 18.x, 27) (push) Has been cancelled
🧪 Test Suite / Test Suite (push) Has been cancelled
Build Develop / 🛠 Build Docker Images (linux/amd64) (push) Has been cancelled
Build Develop / 🛠 Build Docker Images (linux/arm64) (push) Has been cancelled
Build Develop / merge (push) Has been cancelled
Build Develop / 🏷 Notify about develop release (push) Has been cancelled
2026-02-12 16:15:44 +01:00
Dmitry Popov 34a4d5dc9f feat(subscriptions): Added top map donators support
Build Test / 🚀 Deploy to test env (fly.io) (push) Has been cancelled
Build Test / 🛠 Build (1.17, 18.x, 27) (push) Has been cancelled
Build Develop / 🛠 Build (1.17, 18.x, 27) (push) Has been cancelled
🧪 Test Suite / Test Suite (push) Has been cancelled
Build Develop / 🛠 Build Docker Images (linux/amd64) (push) Has been cancelled
Build Develop / 🛠 Build Docker Images (linux/arm64) (push) Has been cancelled
Build Develop / merge (push) Has been cancelled
Build Develop / 🏷 Notify about develop release (push) Has been cancelled
2026-02-11 17:09:54 +01:00
Dmitry Popov 15142f188b Merge branch 'main' into develop 2026-02-11 10:35:32 +01:00