Commit Graph
50 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås 1aa3cbca29 deps: Bump frida-core, frida-swift and gir2swift 2026-10-01 20:49:11 +02:00
Ole André Vadla Ravnås 02962abfa3 deps: Bump SwiftyPharo
Its VM now starts on macOS 27.
2026-09-26 20:43:53 +02:00
Ole André Vadla Ravnås 74f3f499e6 deps: Bump SwiftyPharo
Its VM now builds from frida/pharo-vm, and the image comes from the
release built that way.
2026-09-26 09:11:26 +02:00
Ole André Vadla Ravnås b9d0088a64 deps: Bump frida-swift
Picks up bindings that build on Linux.
2026-09-25 19:30:52 +02:00
Ole André Vadla Ravnås b9b5047928 deps: Bump Frida to 17.19.0 2026-09-25 17:55:01 +02:00
Ole André Vadla Ravnås cce9f40a4f core: Take the kernel image as an object
frida-core now reads a kernel once and answers what it names, so the
image config carries that rather than a path, and the vsock probe asks
it for the symbol instead of searching the image for the word.

That probe was never a symbol lookup: kallsyms stores its names
compressed, so the match came from whatever else in the kernel happens
to spell vsock. It took an LZ4 inflater of its own to look, which goes
with it.
2026-09-17 19:41:59 +02:00
Ole André Vadla Ravnås 761ee194fb core: Run the Android emulator on Windows
The emulator's control channel was the only thing pulling grpc-swift
in, and with it swift-nio-ssl, which does not build on Windows at all
-- it has no branch for the platform and its PosixPort reaches for
mlock, lstat and readlink. Nothing here wants TLS: the endpoint is
plaintext on the loopback, and only seven calls are ever made.

So the wire is spoken directly. GRPCConnection opens one HTTP/2
stream per call over swift-nio-http2 and frames length-prefixed
protobuf into it; EmulatorControlClient names the seven. That drops
grpc-swift-2, grpc-swift-nio-transport, grpc-swift-protobuf and
swift-nio-ssl from the graph, along with 7840 lines of generated
service stubs. The generated messages stay.

The rest is what running it on Windows turned up:

  - AVD discovery split on "\n" and trimmed only .whitespaces, so
    every name kept a trailing \r and every AVD was dropped.
  - An AVD config spells its paths with backslashes, which URL keeps
    as ordinary characters rather than separators.
  - emulator and adb want .exe, and the SDK sits under LOCALAPPDATA.
  - Port reservation and process lookup move into HostPort and
    HostProcessLookup, which QemuMachine's two copies also wanted.
  - The launcher re-execs into QEMU there, so the discovery ini is
    named after that process; the one naming this launch's debug port
    is taken when the launcher's own is absent.

Frames still arrive through a mapping rather than the socket:
CreateFileMapping backs the same file:// handle the emulator is
handed elsewhere.

A guest without vsock is refused outright on Windows, where the
virtio-serial fallback would ask QEMU for a QMP UNIX socket and be
told "unix sockets are not available on windows".

LUMA_EMULATOR_DISPLAY_ONLY drives launch, control and streaming
without a guest agent. Against a Pixel_2 AVD it reports a 1080x1920
first frame and nine more in three seconds.
2026-09-17 13:13:47 +02:00
Ole André Vadla Ravnås 93f668d144 core: Control the Android emulator over gRPC
Drive the emulator's gRPC control API: stream its screen into an
embedded display through a shared-memory frame transport sized from the
device's reported resolution, re-opened when a notification says it
changed; forward pointer and key input; and take ready snapshots with
the SnapshotService.
2026-09-16 19:17:40 +02:00
Ole André Vadla Ravnås 00c053339e build: Bump SwiftyR2 and radare2
The new xcframework carries the RIOPlugin layout change.
2026-09-11 14:52:59 +02:00
Ole André Vadla Ravnås 69882da7a8 build: Pin radare2 to what the xcframework has
SwiftyR2 links a prebuilt radare2 on Apple platforms, so the other
platforms have to build the same revision.
2026-09-10 22:44:22 +02:00
Ole André Vadla Ravnås 487ff9cbf4 build: Bump frida-swift for the Linux socket fix 2026-09-10 21:41:04 +02:00
Ole André Vadla Ravnås 507bcf7fb3 build: Bump frida-swift and SwiftyR2
For the uint64 variant on Linux, and seeking past Int64.max.
2026-09-10 17:54:51 +02:00
Ole André Vadla Ravnås 278196d2e5 build: Bump dependencies
frida-swift to 141d200c, which carries FridaCore 17.18.0. frida-core
to 0602e5dc and radare2 to 84e28a44 for the Windows and Linux builds.
GRDB 7.11.1, swift-asn1 1.7.2, Sparkle 2.9.6.
2026-09-10 13:02:03 +02:00
Ole André Vadla Ravnås 08abf2d564 build: Bump frida-swift to snapshot.20260908
Pull in FridaCore 17.18.0-snapshot.20260908.
2026-09-08 20:49:39 +02:00
Ole André Vadla Ravnås d7b10ee6b8 Move to the Frida with stable device ids
Pick up frida-core's caller-set Barebone device id and the binding
that passes it, so a machine's device keeps the same id.
2026-09-08 18:54:43 +02:00
Ole André Vadla Ravnås c0c0f49b3e Move to the Frida with guest fixes
frida-swift resolves the main context off a worker thread, a halted
guest can be let go, and a script that errors or overflows its stack
no longer takes the guest down. Fetch the matching barebone agents
from the 17.17.1-barebone lineage.
2026-09-08 18:54:43 +02:00
Ole André Vadla Ravnås 53785a35a2 Move to the Frida with the hostlink registers
The installed frida-core has grown the ecam, mmio and irq bindings,
and the pinned frida-swift predates them.
2026-09-08 18:54:43 +02:00
Ole André Vadla Ravnås 0e933206fb Boot virtual machines from the target picker
Add a machine abstraction to LumaCore, with QEMU as its first
backend: templates mirroring frida-core's test guests, a QMP client,
and a display that maps QEMU's surface over D-Bus rather than
copying frames.

Leave readiness to the user: drive the guest, mark it ready, and come
back to that snapshot later. Keep the machine in the project, so
booting it again resumes where it was marked. Hand the stub to
addBareboneDevice, so it joins the picker beside the other devices.

Show the display while booting, and afterwards in a Machines panel,
which the side panel now models as an enum to share its slot.
2026-08-20 14:52:52 +02:00
Ole André Vadla Ravnås 44137dcfb7 build: Build the Pharo VM on Windows too
Nothing on that path ever built one, so the bridge compiled against a
header no pkg-config could point at. Building it there took a VM that
speaks MSVC rather than pthreads, a generation VM for ARM64, and a
prefix named in every dialect of path the toolchain reads -- one
pinned bridge at the end of it, rather than the dozen the search took.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås 5e12c866b6 Build the Pharo VM on Linux
No distribution packages one, so SwiftyPharo asks pkg-config and
the Makefile builds a VM into .build when nothing answers. CI keeps
it in a prefix of its own and finds it again at run time.

The Meson-built VM replaces the CMake one, which brings the plugin
and boot fixes with it.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås 4f7f06e57d Follow frida-swift's regenerated API
Take the regenerated bindings on both frontends.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås b6ee7d7187 Put the whole surface on iOS too
The playground, the notebook cells, the source editor with its
marks, the inspector columns and the canvas are written once for
both Apple platforms, with a file naming what the two frameworks
call differently. The editor is where they really part company.

The engine owns the image and its start-up, so a mission reaches
the whole of Pharo.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås 02ca1ff8a5 Make the shader toolchain, don't find one
glslang and SPIRV-Cross build under neither SwiftPM nor Xcode, so
CI makes them into an xcframework and publishes it against a tag.
The manifest names that artifact; a build downloads it and needs
nothing local.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås a1508524a0 Draw the author's own scene on a canvas
A scene the image holds by handle and changes; the host draws it.
Each drawable carries its own vertex and fragment stages, its own
attribute layout, named uniforms, buffers, a transform and a
visibility flag -- described as objects rather than staged globals.

A value says what it should do, ramp or oscillate, rather than what
it is each frame: nothing crosses per frame, since the image has no
business in the frame path any more than in the audio callback.
Both renderers work it out on the clock that draws it.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås 48f13e55af Open a body inline under its mark
A mark's body opens as a view attachment on its own line under it,
with the rest of the send carried below, so the code reflows around
it rather than stacking under the editor. Snippets reorder and copy;
a graph or chart draws offline from its snapshot.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås d89a69443b Paint graphs and charts natively
Draw mondrian graphs and GtPlotter charts as views rather than
pictures: bars, lines, scatter and composites, labelled axes, nodes
and points that select, walk by key, and drill.
2026-08-13 12:46:08 +02:00
Ole André Vadla Ravnås 1e66b7a4f9 Say what a failed snippet did, and where
A compile error reads in words with a dot at the failing spot.
Evaluate splits from evaluate-and-inspect, the snippet spins while
it runs, and print it, format and browse sit on GT's keys.
2026-08-13 12:46:08 +02:00
Ole André Vadla Ravnås a7a806e3c0 Grow the playground into a page of snippets
Snippets share their variables across runs and evaluate from the
keyboard, a page can be maximized, an empty one says what it is for,
and the columns beside it head and size their own lists.
2026-08-13 12:46:08 +02:00
Ole André Vadla Ravnås e4176f7dca Show the image the host's records
The image asks the host about its sessions and its event stream and
gets records back, a cell per column, declared the way GT declares
them -- not lines it would have to parse.
2026-08-13 12:46:08 +02:00
Ole André Vadla Ravnås 3aab17ca5a Run Pharo from the notebook and a playground
Boot the VM against a bundled image, evaluate from a notebook cell
or a playground snippet, and keep what each evaluation produced.
The image is staged on every build; the framework release is pinned.
2026-08-13 12:46:08 +02:00
Ole André Vadla Ravnås a316a93a93 build: Bump frida-swift and frida-core 2026-07-09 18:06:59 +02:00
Ole André Vadla Ravnås ce32477080 Adopt unified SwiftyR2 cmd API
Move to the single cmd that returns an R2CommandResult with an
optional output, and handle the nil that r2 yields for commands
with no string result (e.g. an invalid command from completion).
Bump the SwiftyR2 pin to the revision with that fix.
2026-06-26 18:33:16 +02:00
Ole André Vadla Ravnås 7f180329b6 build: Bump frida-swift and frida-core 2026-06-24 13:27:17 +02:00
Ole André Vadla Ravnås 51db7d705c build: Bump frida-swift and frida-core 2026-06-22 22:04:04 +02:00
Ole André Vadla Ravnås 721cc3c9ad build: Bump frida-core and frida-swift
frida-swift now tracks FridaCore 17.15.0.
2026-06-19 13:59:15 +02:00
Ole André Vadla Ravnås 407c8ea6e2 build: Bump Frida deps and @types/frida-gum 2026-06-17 15:47:53 +02:00
Ole André Vadla Ravnås 4630f476c1 build: Bump frida-core and frida-swift
frida-swift now tracks FridaCore 17.14.0.
2026-06-17 01:45:53 +02:00
Ole André Vadla Ravnås fab121a976 build: Bump frida-core and frida-swift
Pull in the new full-scope process "argv" parameter and its
ProcessDetails accessor, which back the command line shown in the
target picker.
2026-06-16 02:27:40 +02:00
Ole André Vadla Ravnås 136b5ed438 build: Bump frida-core and frida-swift 2026-06-12 21:41:11 +02:00
Ole André Vadla Ravnås ebe973eb3c build: Bump frida deps and @types/frida-gum 2026-06-05 19:54:14 +02:00
Ole André Vadla Ravnås 7f4bdc65e0 build: Bump frida deps and @types/frida-gum 2026-06-02 12:42:32 +02:00
Ole André Vadla Ravnås b89bd03dfc build: Bump frida-swift and frida-core 2026-05-31 23:25:59 +02:00
Ole André Vadla Ravnås 47c82db8e6 build: Bump frida-core and frida-swift 2026-05-23 16:05:53 +02:00
Ole André Vadla Ravnås 3bb90498ef core: Capture r2 logs per command
runCommand and decompile now return R2CommandResult so callers
can see r2's log entries. r2_cmd surfaces them to the agent;
findFunctionStart treats any error log as no result.
2026-05-18 00:29:07 +02:00
Ole André Vadla Ravnås e34c641a86 build: Sync root Package.resolved 2026-05-15 18:09:41 +02:00
Ole André Vadla Ravnås e48aa8b987 Bump frida-swift and frida-core to 17.9.8 2026-05-11 14:03:02 +02:00
Ole André Vadla Ravnås 815db58458 Bump Swift package dependencies
Resync Package.resolved pins to the current latest commits on
frida-swift, SwiftyR2 and swift-asn1.
2026-04-19 11:03:15 +02:00
Ole André Vadla Ravnås f7f5c7c6f1 ci: Update frida-swift to 40a4bf8 2026-04-10 14:03:17 +02:00
Ole André Vadla Ravnås 3010f789db Extract TracerConfig, CodeShareConfig, services
Split UI-coupled types into portable data (LumaCore) and
platform-specific editor profiles (Luma):

- TracerConfig: data struct + template stubs to LumaCore,
  TracerEditorProfile stays with SwiftyMonaco in Luma
- CodeShareConfig + CodeShareProjectRef to LumaCore,
  CodeShareEditorProfile stays in Luma
- CodeShareService: drop ObservableObject, move as
  stateless enum with async methods to LumaCore
- HookPack: data struct to LumaCore, discovery stays

Add swift-crypto dependency for cross-platform SHA256.
Add FoundationNetworking import for Linux URLSession.
2026-04-06 19:26:53 +02:00
Ole André Vadla Ravnås 92357bfd80 Add LumaCore package + cross-platform scaffolding
Lay the groundwork for a GTK/Adwaita frontend by extracting
shared infrastructure into a LumaCore Swift package. Agent
sources and LumaBundleCompiler move to top-level locations
so both the Xcode project and SPM can reference them.

New structure:
- Package.swift: root manifest with LumaCore lib + compiler
- Sources/LumaCore/: engine, persistence, models, and
  platform-abstracted token store
- Sources/LumaBundleCompiler/: moved from LumaBundleCompiler/
- Agent/: moved from Luma/Agent/
- LumaGtk/: skeleton GTK app package
2026-04-06 18:59:29 +02:00