• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ossia / libossia / 37679617985
53%

Build:
DEFAULT BRANCH: master
Ran 07 Oct 2026 09:36PM UTC
Jobs 1
Files 514
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

07 Oct 2026 08:07PM UTC coverage: 52.679% (-0.1%) from 52.78%
37679617985

push

github

jcelerier
ossia-qt: let a script spell out the OSC type tags it needs

Every number a QML script puts in an OSC message went on the wire as a
float. value_from_js() has a single numeric branch -- `if(v.isNumber())
return v.toNumber()` -- and toNumber() is a double, so there was no way
for a script to send an int at all. SpatGRIS's /spat/serv grammar wants
an int source index followed by floats, and the shipped Spatial Protocol
Mapper emits it as "sffffff" with the index as 1.000000.

The type cannot be recovered from the value. JavaScript has one number
type: 1, 1.0 and 2/2 are the same thing, so honouring Number.isInteger()
(or QV4's internal int32 tagging) would make the *shape* of the packet
depend on the data. The same /spat/serv message would be encoded
"siiiiff" with the source on an axis and "sifffff" a moment later -- a
receiver with a fixed grammar would then work or not depending on where
the source happens to be, which is worse than being consistently wrong,
and it would silently change what every existing script sends.

So the tags come from the script, which is the only thing that knows the
grammar at the far end:

    sock.osc("/spat/serv", ["deg", 1, az, el, r, h, v], "sifffff");

The type tag string of liblo's oscsend. Supported: i h f d s S c b T F I.
The two-argument overload is untouched, byte for byte, so no existing
script, document or wire format changes. A tag string shorter than the
argument list, or a tag this build cannot emit, leaves those arguments to
the untyped conversion rather than dropping them.

Added on the UDP, TCP, Unix (datagram and stream) and serial sockets --
everywhere osc() already existed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq

0 of 109 new or added lines in 5 files covered. (0.0%)

6 existing lines in 4 files now uncovered.

32352 of 61413 relevant lines covered (52.68%)

182988.8 hits per line

Uncovered Changes

Lines Coverage ∆ File
74
0.0
0.0% src/ossia-qt/protocols/utils.hpp
13
0.0
0.0% src/ossia-qt/protocols/qml_unix_outbound_socket.hpp
9
0.0
0.0% src/ossia-qt/protocols/qml_serial_socket.hpp
9
0.0
0.0% src/ossia-qt/protocols/qml_tcp_outbound_socket.hpp
4
0.0
0.0% src/ossia-qt/protocols/qml_udp_outbound_socket.hpp

Coverage Regressions

Lines Coverage ∆ File
3
47.1
-0.62% src/ossia/network/oscquery/oscquery_mirror.cpp
1
87.5
-0.83% src/ossia/dataflow/exec_pool.hpp
1
0.0
0.0% src/ossia-qt/js_utilities.cpp
1
0.0
0.0% src/ossia-qt/protocols/utils.hpp
Jobs
ID Job ID Ran Files Coverage
1 37679617985.1 07 Oct 2026 09:36PM UTC 514
52.68
GitHub Action Run
Source Files on build 37679617985
  • Tree
  • List 514
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • d9495580 on github
  • Prev Build on master (#37466882128)
  • Next Build on master (#37723607946)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc