Skip to content

Releases: AitiX/Fastlogs

FastLogs 0.5.3 - GameMaker crashes + a real no-UI mode

Choose a tag to compare

@AitiX AitiX released this 16 Jul 18:31

Fixed

  • Crash grouping worked for Unity only. GameMaker writes [hh:mm:ss] LEVEL: message
    lines and a ===== FASTLOGS SESSION marker; the server's parser knew only Unity's
    [E] +12.345 message and ==== FastLogs session . Every GM log therefore parsed to
    zero entries and every GM crash got a null signature, so the Crashes tab was silently
    empty while the viewer rendered the same log fine. Both grammars are now parsed, one
    crash keeps one signature across engines, and Unity signatures are unchanged (existing
    groups do not split). GM logs already stored were stamped "not a crash" at ingest and
    the lazy backfill only revisits unknowns, so a one-time migration (user_version=1)
    clears that sentinel for GM rows and lets them regroup; Unity rows are untouched.
  • UI > EnableUI did not disable the UI. It was read in exactly one place - the loop
    guard's confirm dialog - so clearing it still constructed the IMGUI overlay, its
    settings panel and a toggle gesture polling input every frame. It now withholds both.

Added

  • FastLogsHeadlessServices: capture, upload, screenshots and clipboard with no overlay
    and no gesture, independent of the config asset. FastLogs.SetServicesProvider(new FastLogsHeadlessServices()) is the documented way to run FastLogs as a plain library.
  • The bundled implementations are public and composable: FastLogsDefaultServices (now
    subclassable - override one factory, keep the rest), CapturingLogSource,
    UnityWebRequestUploader, ScreenshotCapturer, ClipboardService. Previously the UI
    classes were public while everything else was internal, so "everything except the UI"
    was the one thing you could not assemble.
  • Contract 1a makes the logText grammar normative (entry lines, session marker, stack
    frame shapes) and 7.11-7.12 spell out engine identification. A client writing its own
    line format is accepted with a 201 and looks healthy while Crashes, level filters and
    session dividers are silently dead - which is what happened to GameMaker.
  • First captured fixture (server/test/fixtures/) plus a sha256 guard: a real player's
    payload now runs through ingest in the test suite. It immediately pinned a contract
    fact - the Unity client sends no device.application.engine at all and is labelled
    Unity only by the server's fallback, the same fallback that mislabelled GameMaker.
  • CI guard keeping the declared engine-free files free of direct UnityEngine references.

Changed

  • BREAKING: the command channel's poll/ack tier now always requires a token. An app
    with no token configured could previously be polled and acked by anyone who knew its
    id. Registered apps carry a token already and are unaffected.
  • MCP dereferencing of offloaded results is restricted to the configured origin (SSRF).
  • Log-store compaction uses a low-watermark: the store was rewritten in full on every
    line past the cap (~2 MB of IO and ~16 MB of garbage per line at a 2 MB cap).
  • Serialized-field reflection is cached per type; component change detection hashes in
    place; the IMGUI driver stays disabled unless something is actually on screen.
  • Sweeper drains its backlog instead of one batch per tick; X-Forwarded-For is no
    longer trusted blindly; a file cannot be attached to another app's log.
  • GameMaker reports send device.application.engine explicitly, so they no longer rely
    on the server's version-string heuristic.

FastLogs 0.5.2

Choose a tag to compare

@AitiX AitiX released this 16 Jul 11:03

Added: oversized command results are offloaded instead of lost. A result past the server's inline cap (COMMAND_MAX_RESULT_BYTES, 64 KB) is uploaded as a file and the ack carries {"__fastlogsResultRef": "", "bytes": N} - previously such an ack was rejected with a 400 that an agent only ever saw as a timeout, leaving the command stuck in dispatched forever. The MCP server dereferences the link transparently, so a wide fastlogs.inspect or a big custom dump reads exactly like a small result; a failed offload acks as an error with the size and cause rather than a dead link. Note: file blobs are not PII-scrubbed (contract 1b). Verified: 94 Unity EditMode tests and 13/13 end-to-end assertions against a real built player (a 150 KB result round-tripped intact). Install (Unity): https://github.com/AitiX/Fastlogs.git?path=/unity#v0.5.2

FastLogs 0.5.1

Choose a tag to compare

@AitiX AitiX released this 16 Jul 10:50

Added: command-to-report correlation - while a command runs, any report it produces is tagged with that command id, so GET /api/await/?code= returns exactly what the command caused instead of matching on timestamps (scope semantics: the previous code is restored, overlapping commands nest, and a handler that sets its own code wins; off switch Commands.CorrelateReports). Added: fastlogs.inspect - a pointed, read-only query for live component state ({type, go?, props?, max?} returns serialized fields plus Renderer/MaterialPropertyBlock probes) instead of pulling a whole scene dump; works regardless of ComponentCapture.Enabled. Verified: 87 Unity EditMode tests, 260 server tests, and 12/12 end-to-end assertions against a real built player. Install (Unity): https://github.com/AitiX/Fastlogs.git?path=/unity#v0.5.1

FastLogs 0.5.0 - agent tooling

Choose a tag to compare

@AitiX AitiX released this 16 Jul 09:29

Added: liveness beacon for the command channel (GET /api/commands//health, admin or scoped command token) reporting pollingNow / lastPollAt / lastPollSecAgo, stamped on every poll including idle ones - it tells an agent 'no build is running' apart from 'the handler hung', which otherwise look identical (CONTRACT section 8e; COMMANDS_LIVENESS_SEC, default 10). Added: MCP server (server/mcp/) exposing the API as native agent tools - run_command (enqueue and wait), enqueue/result, channel_health, await_log, search_logs, get_log; an isolated subpackage with its own dependencies, so the server core keeps its single dependency. Verified: 260 server tests, the end-to-end harness against a real built player (9/9), and the MCP tools driven against that same real player (7/7). Install (Unity): https://github.com/AitiX/Fastlogs.git?path=/unity#v0.5.0

FastLogs 0.4.3

Choose a tag to compare

@AitiX AitiX released this 16 Jul 08:40

Fixed: the Unity package now declares its built-in module dependencies (IMGUI, UnityWebRequest, ImageConversion, ScreenCapture, Physics) - a clean project that did not already pull these in failed to compile the package. Caught the first time the new end-to-end harness built a throwaway player. Added: in-repo end-to-end harness (test/e2e/) that boots the real server and drives a real built player over the command channel; log viewer folds each recorded run under a collapsible session divider. Install (Unity): https://github.com/AitiX/Fastlogs.git?path=/unity#v0.4.3

FastLogs 0.4.2

Choose a tag to compare

@AitiX AitiX released this 16 Jul 08:06

Component capture hardening, proven by a live flood regression (uncapped-fps player, a field changing every frame): scan cadence is now time-based (ScanIntervalSeconds, default 0.5), change captures are debounced per instance (MinSecondsBetweenChangeCaptures, default 1s), and MaxCapturesPerSession now stops only AUTOMATIC captures - a manual pass (fastlogs.capture) keeps working and returns a structured JSON result; an ev:cap marker lands in the log ring when the cap trips. BREAKING: ComponentCapture.ScanIntervalFrames replaced by ScanIntervalSeconds. Install (Unity): https://github.com/AitiX/Fastlogs.git?path=/unity#v0.4.2

FastLogs 0.4.1

Choose a tag to compare

@AitiX AitiX released this 16 Jul 07:15

Fixed: built-in command names are all-lowercase (fastlogs.scenecontext); the server rejects uppercase command names, so the documented camelCase spelling could never be enqueued. Also ships the scoped COMMAND_TOKEN, the /api/v1 canonical alias and online backups (script + daily systemd timer). Install (Unity): add https://github.com/AitiX/Fastlogs.git?path=/unity#v0.4.1 to Packages/manifest.json.

FastLogs 0.4.0 - the agent channel

Choose a tag to compare

@AitiX AitiX released this 16 Jul 02:02

Two-way agent channel (remote commands + headless send), config-driven component capture, asmdef helper, EditMode test suite, scoped COMMAND_TOKEN, /api/v1 alias, online backups, restructured docs (EN facade + RU guides). See CHANGELOG.md for details. Install (Unity): add https://github.com/AitiX/Fastlogs.git?path=/unity#v0.4.0 to Packages/manifest.json.