<feed xmlns='http://www.w3.org/2005/Atom'>
<title>limox, branch main</title>
<subtitle>The Linux on mobile XMPP (LimoX) client</subtitle>
<id>https://cgit.xengineering.eu/limox/atom?h=main</id>
<link rel='self' href='https://cgit.xengineering.eu/limox/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/'/>
<updated>2023-09-04T15:28:40Z</updated>
<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>
<entry>
<title>First working version of new RX concept</title>
<updated>2023-07-04T11:48:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T11:48:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=92534f5af88b42665ad44f2495fe5dfb116d3406'/>
<id>urn:sha1:92534f5af88b42665ad44f2495fe5dfb116d3406</id>
<content type='text'>
This uses xml.Decoder.DecodeElement() which makes parsing way easier.

This first step is just able to parse stream features partially.
</content>
</entry>
<entry>
<title>Remove unit test for router</title>
<updated>2023-07-04T11:42:24Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T11:42:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=45b04ef092a99d0d3f355e27896c82f1dbf15d28'/>
<id>urn:sha1:45b04ef092a99d0d3f355e27896c82f1dbf15d28</id>
<content type='text'>
The new router will be so trivial that it is not worth a unit test.
</content>
</entry>
</feed>
