<feed xmlns='http://www.w3.org/2005/Atom'>
<title>limox, branch session-struct</title>
<subtitle>The Linux on mobile XMPP (LimoX) client</subtitle>
<id>https://cgit.xengineering.eu/limox/atom?h=session-struct</id>
<link rel='self' href='https://cgit.xengineering.eu/limox/atom?h=session-struct'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/'/>
<updated>2023-09-04T20:47:31Z</updated>
<entry>
<title>Add xmpp.SessionFrontend.Disconnect()</title>
<updated>2023-09-04T20:47:31Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-04T20:47:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=dc8ff3e7d214c6a390f2aa5c794891b17c418640'/>
<id>urn:sha1:dc8ff3e7d214c6a390f2aa5c794891b17c418640</id>
<content type='text'>
This is the first convenience function implemented inside the xmpp
module but for the goroutine of the using application.
</content>
</entry>
<entry>
<title>xmpp: Add type SessionFrontend</title>
<updated>2023-09-04T20:44:00Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-04T20:18:53Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=93668403433cbfc22fe9c38ebbd6ef67af625ad2'/>
<id>urn:sha1:93668403433cbfc22fe9c38ebbd6ef67af625ad2</id>
<content type='text'>
Some parts of the `xmpp` module functionality should be written for the
using application software. To reference a running session more easily
it is an advantage to have an opaque struct for this instead of
decoupled channels.
</content>
</entry>
<entry>
<title>Merge branch 'update'</title>
<updated>2023-09-04T15:28:40Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-04T15:28:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=44bc88197196df41ead0ede734295cb2feac066d'/>
<id>urn:sha1:44bc88197196df41ead0ede734295cb2feac066d</id>
<content type='text'>
This updates from gioui.org v0.1.0 to v0.3.0.
</content>
</entry>
<entry>
<title>Update to gioui.org v0.3.0</title>
<updated>2023-09-04T15:28:10Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-04T15:28:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=8ec8cddbdce0add6c62de0370b32362f7e7bb384'/>
<id>urn:sha1:8ec8cddbdce0add6c62de0370b32362f7e7bb384</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update to gioui.org v0.2.0</title>
<updated>2023-09-04T15:27:12Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-04T15:26:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=bd92773ccd795dca6c0613bca3d1fb83b2f25a6d'/>
<id>urn:sha1:bd92773ccd795dca6c0613bca3d1fb83b2f25a6d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'roster-backend'</title>
<updated>2023-07-06T19:45:31Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:45:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=16d5f079cc51bffe9f07b356f3a42d5a09a45317'/>
<id>urn:sha1:16d5f079cc51bffe9f07b356f3a42d5a09a45317</id>
<content type='text'>
Getting the roster (contact list) is crucial to provide a MVP LimoX
since the chats should be grouped by contacts.

For the MVP it is only relevant to get the roster on connect. Everything
else can be done later.
</content>
</entry>
<entry>
<title>Apply go fmt</title>
<updated>2023-07-06T19:43:42Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:43:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=007f413e457ff0b733447acba61b11d6813dd41c'/>
<id>urn:sha1:007f413e457ff0b733447acba61b11d6813dd41c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement roster result handling</title>
<updated>2023-07-06T19:42:43Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:42:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=a3e01c9a867791b466fe2a3e1d0efd77c840729b'/>
<id>urn:sha1:a3e01c9a867791b466fe2a3e1d0efd77c840729b</id>
<content type='text'>
This completes the roster get / result cycle which is needed for a MVP.
</content>
</entry>
<entry>
<title>Implement roster get request</title>
<updated>2023-07-06T19:29:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:29:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=7960453fb4c56d2fdf9cae08df457027bd62ae6d'/>
<id>urn:sha1:7960453fb4c56d2fdf9cae08df457027bd62ae6d</id>
<content type='text'>
This asks the server for the roster / contact list for the current
account.
</content>
</entry>
<entry>
<title>Use different IQ struct for RX and TX</title>
<updated>2023-07-06T19:21:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:21:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=553537a2c9f08450614648d7184b6bbf212d5ed5'/>
<id>urn:sha1:553537a2c9f08450614648d7184b6bbf212d5ed5</id>
<content type='text'>
It is quite tricky to write structs with correct XML struct tags which
are suitable for RX and TX because in RX structs all possible fields
have to be addressed and in TX some have to be hidden depending on the
use case.
</content>
</entry>
<entry>
<title>Migrate bind sending to new generic iq struct</title>
<updated>2023-07-05T20:34:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T20:34:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=4cc9ea5cd439a1f5306f38838774b46d2b145d9a'/>
<id>urn:sha1:4cc9ea5cd439a1f5306f38838774b46d2b145d9a</id>
<content type='text'>
This makes the code way less complex.
</content>
</entry>
<entry>
<title>Migrate bind receive to new iq struct</title>
<updated>2023-07-05T20:02:02Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T20:01:14Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=57845892dbfc6db0648b18e418a6b15218d8526c'/>
<id>urn:sha1:57845892dbfc6db0648b18e418a6b15218d8526c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add new generic iq struct</title>
<updated>2023-07-05T20:01:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T19:59:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=13eeca2177dc767aa7d01c9caed95ae2be736471'/>
<id>urn:sha1:13eeca2177dc767aa7d01c9caed95ae2be736471</id>
<content type='text'>
This will cover all iq use cases with optional arguments and
sub-elements.
</content>
</entry>
<entry>
<title>Move bind logic to new xmpp/iq.go</title>
<updated>2023-07-05T20:01:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T19:46:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=989c6ee9158f67cda2d6287d096c813075d13bd2'/>
<id>urn:sha1:989c6ee9158f67cda2d6287d096c813075d13bd2</id>
<content type='text'>
The bind request / response works with IQ stanzas. Because of the way
encoding and decoding is done with LimoX / the Go standard library it
makes sense to group IQ-based logic in a separat file since the struct
for IQs will be there.
</content>
</entry>
<entry>
<title>Merge branch 'msg-backend'</title>
<updated>2023-07-05T19:26:56Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T19:26:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=d614346ae08e5384e1dca7306ba64fbdc9931d2e'/>
<id>urn:sha1:d614346ae08e5384e1dca7306ba64fbdc9931d2e</id>
<content type='text'>
This adds the XMPP functionality to send and receive XMPP text messages
in one-to-one chats.
</content>
</entry>
<entry>
<title>Apply go fmt</title>
<updated>2023-07-05T19:26:12Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T19:26:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=4dc3723f68c390ed05ddeff13f2378da7ebf2b8f'/>
<id>urn:sha1:4dc3723f68c390ed05ddeff13f2378da7ebf2b8f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement echo bot</title>
<updated>2023-07-05T19:24:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:51:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=ce7814012009ba8f5b72d49e2ec96d5594be895e'/>
<id>urn:sha1:ce7814012009ba8f5b72d49e2ec96d5594be895e</id>
<content type='text'>
This demonstrates the full one-to-one chat message backend without the
need to implement the GUI.
</content>
</entry>
<entry>
<title>Implement (chat) message receiving backend</title>
<updated>2023-07-04T20:30:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:30:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=107f97f2cd3ff8dbbdb39269e622462c48b0d41c'/>
<id>urn:sha1:107f97f2cd3ff8dbbdb39269e622462c48b0d41c</id>
<content type='text'>
This sets a handler and the routing up to be able to log chat messages
with body and sender reference.

This can later be used for the GUI.
</content>
</entry>
<entry>
<title>Merge branch 'element-handling'</title>
<updated>2023-07-04T20:15:17Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:10:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=48811e7d2487ebc3db49b8af7e20f57db4ac28f4'/>
<id>urn:sha1:48811e7d2487ebc3db49b8af7e20f57db4ac28f4</id>
<content type='text'>
This moves away from the concept to parse each individual XML token from
the token and group them as a []xml.Token slice for further processing.

While this is still possible, receiving aswell as sending has switched
to define structs with XML tags which can be marshalled and unmarshalled
with the xml.Encoder.EncodeElement() and xml.Decoder.DecodeElement()
functions.

Further documentation can be found at https://pkg.go.dev/encoding/xml#Unmarshal
and https://pkg.go.dev/encoding/xml#Marshal.

This merge reduces with its changes the number of code lines in the XMPP
implementation by around 41 percent!
</content>
</entry>
<entry>
<title>Apply go fmt</title>
<updated>2023-07-04T20:09:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:09:36Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=d9fe0a4360770b1e4b6b4fb3686c3275ad1b6e6e'/>
<id>urn:sha1:d9fe0a4360770b1e4b6b4fb3686c3275ad1b6e6e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove unused code</title>
<updated>2023-07-04T20:09:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:09:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=4c9c6c91f9dfca9fd17731d5b0e94aaaace4a137'/>
<id>urn:sha1:4c9c6c91f9dfca9fd17731d5b0e94aaaace4a137</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Re-implement resource binding and presence</title>
<updated>2023-07-04T20:04:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:04:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=a23ba089a4e715e68b8c8d4179290692215784a2'/>
<id>urn:sha1:a23ba089a4e715e68b8c8d4179290692215784a2</id>
<content type='text'>
This was removed for refactoring.
</content>
</entry>
<entry>
<title>Add namespace to streamFeatures struct</title>
<updated>2023-07-04T19:48:23Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T19:48:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=ed6b4e818f4090c0c707fab49093bc4c3cc3ac20'/>
<id>urn:sha1:ed6b4e818f4090c0c707fab49093bc4c3cc3ac20</id>
<content type='text'>
This prevents collisions.
</content>
</entry>
<entry>
<title>Re-implement SASL</title>
<updated>2023-07-04T19:24:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T19:24:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=2c71877e392da6c2691827160142e95142f7bea6'/>
<id>urn:sha1:2c71877e392da6c2691827160142e95142f7bea6</id>
<content type='text'>
Was broken because of switch to new RX concept.
</content>
</entry>
<entry>
<title>Introduce handle() as dummy</title>
<updated>2023-07-04T14:37:27Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T14:37:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=e529bab2e5df93ff8e9fd415b9d65e9bb6d17695'/>
<id>urn:sha1:e529bab2e5df93ff8e9fd415b9d65e9bb6d17695</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement XML element parsing with Generic</title>
<updated>2023-07-04T14:26:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T14:26:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=7902764e053eb3b8b4d46f8d9caf47d2d5cddd7c'/>
<id>urn:sha1:7902764e053eb3b8b4d46f8d9caf47d2d5cddd7c</id>
<content type='text'>
This helps to avoid duplicated code when new XML elements are described
as custom structs.
</content>
</entry>
<entry>
<title>Rework routing completely</title>
<updated>2023-07-04T12:26:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T12:25:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=3a5e9fce02264eeed884b15781593479fda9296a'/>
<id>urn:sha1:3a5e9fce02264eeed884b15781593479fda9296a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Further reduce complexity of streamFeatures struct</title>
<updated>2023-07-04T12:06:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T12:06:36Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=1d3dfa5b93000bc4109ba49ea018e72fbf4f5753'/>
<id>urn:sha1:1d3dfa5b93000bc4109ba49ea018e72fbf4f5753</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Just pass parsed data if successful</title>
<updated>2023-07-04T12:01:51Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T12:01:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=3826f3ee7850590142fe51747447dffece332762'/>
<id>urn:sha1:3826f3ee7850590142fe51747447dffece332762</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce complexity of streamFeatures struct</title>
<updated>2023-07-04T11:57:26Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T11:57:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=e5257c8a9c3dfcda52fb96fcac2ac81aefb52e55'/>
<id>urn:sha1:e5257c8a9c3dfcda52fb96fcac2ac81aefb52e55</id>
<content type='text'>
</content>
</entry>
</feed>
