<feed xmlns='http://www.w3.org/2005/Atom'>
<title>limox/xmpp, 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-07-06T19:43:42Z</updated>
<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>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>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>
<entry>
<title>Re-implement stream open and close</title>
<updated>2023-07-04T10:58:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:58:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=ea98ee187477051444bbf548757af6336d333862'/>
<id>urn:sha1:ea98ee187477051444bbf548757af6336d333862</id>
<content type='text'>
This is more suitable for the new RX concept.
</content>
</entry>
<entry>
<title>Remove xmpp.presence type</title>
<updated>2023-07-04T10:43:47Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:43:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=8e84ca8a4d340956bd0aaead59d5c79dcaede6a5'/>
<id>urn:sha1:8e84ca8a4d340956bd0aaead59d5c79dcaede6a5</id>
<content type='text'>
This was empty and has no benefit.
</content>
</entry>
<entry>
<title>Remove runStreamPair()</title>
<updated>2023-07-04T10:35:49Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:33:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=9f87ef34c589825d65824a8c9210fed5bf92f94d'/>
<id>urn:sha1:9f87ef34c589825d65824a8c9210fed5bf92f94d</id>
<content type='text'>
This will not be used in the new RX concept.
</content>
</entry>
<entry>
<title>Remove element_buffer</title>
<updated>2023-07-04T10:30:02Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:30:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=5932556e7051690e262a5ee39263b7905bf1ba20'/>
<id>urn:sha1:5932556e7051690e262a5ee39263b7905bf1ba20</id>
<content type='text'>
The new RX concept will not need such an element buffer and uses the
xml.Decoder.DecodeElement() function instead.
</content>
</entry>
<entry>
<title>Remove encoderDecoder struct completely</title>
<updated>2023-07-03T20:28:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-03T20:28:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=3efcd60f8ebdc962d5be85003cc8c59a2b43e610'/>
<id>urn:sha1:3efcd60f8ebdc962d5be85003cc8c59a2b43e610</id>
<content type='text'>
This was not really necessary because it was all related to the
xmpp.session and should thus be implemented there.

Using the context package further reduced the complexity for
cancelation.
</content>
</entry>
<entry>
<title>Move xml.Encoder to session struct</title>
<updated>2023-07-03T20:17:15Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-03T20:17:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=2fade1039c1842f08b30da5c95b5542b57e38ec6'/>
<id>urn:sha1:2fade1039c1842f08b30da5c95b5542b57e38ec6</id>
<content type='text'>
The encoderDecoder sub-struct of the session struct should be removed in
little steps. This is the first one.
</content>
</entry>
</feed>
