Commit Graph

772 Commits

Author SHA1 Message Date
Knugi
0056204d87 Merge pull request #206 from tang-vu/contribai/improve/quality/crash-in-timestamp-formatting-when-timez
 Quality: Crash in timestamp formatting when timezone_offset is None
2026-03-26 21:56:43 +08:00
KnugiHK
abf4f3c814 Implement tests for classes TimeZone and Timing 2026-03-26 21:53:44 +08:00
KnugiHK
9e138d3a1f Cache TimeZone object in Timing class 2026-03-26 21:31:52 +08:00
KnugiHK
18a0d822b3 Timezone offset should also accepts float 2026-03-26 21:30:10 +08:00
KnugiHK
bb860533d5 Add a default value for timezone_offset in Timing.__init__ 2026-03-26 21:23:59 +08:00
Tang Vu
a2bcc39e63 refactor: crash in timestamp formatting when timezone_offset is none
In `Timing.format_timestamp`, if `self.timezone_offset` is `None` (which is explicitly allowed by the `Optional[int]` type hint), it instantiates `TimeZone(None)`. 
When `datetime.fromtimestamp()` calls the `utcoffset()` method on this timezone object, it executes `timedelta(hours=self.offset)`, which evaluates to `timedelta(hours=None)`. This raises a `TypeError: unsupported type for timedelta hours component: NoneType`, causing the application to crash during export.


Affected files: data_model.py

Signed-off-by: Tang Vu <vuminhtang2212@gmail.com>
2026-03-26 03:25:44 +07:00
KnugiHK
cf1f37db38 Update compile-binary.yml 2026-03-21 18:04:16 +08:00
KnugiHK
8781459547 Update actions 2026-03-21 18:00:50 +08:00
Knugi
2b54225689 Merge pull request #194 from SoLoHK525/features/exif-support
Add support for exif timestamp export
2026-03-21 17:32:16 +08:00
KnugiHK
a161993ab9 Normalize media path handling in handlers 2026-03-21 17:22:47 +08:00
KnugiHK
8dfced9d94 Avoid self-copy when no timestamp 2026-03-21 17:16:32 +08:00
KnugiHK
517fd2d3ac Add back missing comma 2026-03-21 16:42:25 +08:00
SoLoHK525
37a52c0d7d Add support for exif timestamp export 2026-03-21 16:25:19 +08:00
Knugi
bad813eb73 Merge pull request #199 from watercrossing/fix/ios-polls-contacts-typo
iOS: Add poll support, fix contact name resolution, fix typos
2026-03-21 16:02:40 +08:00
KnugiHK
014f830fa0 Update test_incremental_merge.py 2026-03-21 15:53:20 +08:00
KnugiHK
a4d79c3892 Add backward compatibility to contact database processing
Because ZLID does not exist in the old schema
2026-03-21 15:46:00 +08:00
KnugiHK
daf6375966 Implement aliases for chat. For LID mapping 2026-03-21 15:36:32 +08:00
KnugiHK
b1886fd737 Better parse metadata message in iOS 2026-02-22 18:35:04 +08:00
KnugiHK
09a26dbe04 Add placeholder for Android on polls 2026-02-22 18:00:20 +08:00
Ingolf Becker
99474e65cc iOS: Add poll support, fix contact name resolution, fix typos
- Add poll message decoding for iOS (ZMESSAGETYPE 46) using raw protobuf
  parsing of ZWAMESSAGEINFO.ZRECEIPTINFO blobs (no external dependency).
  Polls render with vote tallies and voter names in the HTML export.
- Fix iOS contact name resolution: pull ZFULLNAME from address book,
  resolve LID-based group members, fall back to ZWAPROFILEPUSHNAME,
  and avoid overwriting real names with phone numbers.
- Fix typo: 'expoter' -> 'exporter' in android_crypt.py and __main__.py.
- Add poll field to Message data model and update test fixtures.
2026-02-22 17:44:22 +08:00
KnugiHK
ea396f0885 Update README.md 2026-02-22 17:44:22 +08:00
KnugiHK
5fa0a613b0 Fix legacy call query
This add back the backward compatibility for the legacy schema, which is broken in 0.13.0
2026-02-22 16:52:04 +08:00
KnugiHK
a0719bc2bf Update README.md 2026-01-24 23:05:00 +08:00
KnugiHK
bac2efe15a Revert "Update README.md"
This reverts commit 1c7d6f7912.
0.13.0
2026-01-24 18:33:10 +08:00
KnugiHK
9a6ee3ce5f Revert "Add iphone_backup_decrypt as an optional dependency (#123)"
This reverts commit 94960e4a23.
2026-01-24 18:31:59 +08:00
KnugiHK
823a89e677 Merge branch 'dev' 2026-01-24 18:21:36 +08:00
KnugiHK
945b422f71 Update ci.yml 2026-01-24 18:21:25 +08:00
KnugiHK
19008a80bc Merge branch 'dev' 2026-01-24 18:09:15 +08:00
KnugiHK
4e877987fb Bump version & update readme 2026-01-24 18:08:43 +08:00
KnugiHK
322b12a5a4 Fix a crash in message counting if chat filter is in use 2026-01-24 18:02:30 +08:00
KnugiHK
1560c49644 Update ci.yml 2026-01-24 17:42:02 +08:00
KnugiHK
28ba97d72f Fix CI on Windows 2026-01-24 17:38:22 +08:00
KnugiHK
eab98ba0d6 Fix crash on pre-release versions and enable update checks for pre-releases 2026-01-24 17:20:07 +08:00
KnugiHK
f920ca82b4 Refactor the logging facility a bit 2026-01-24 17:05:14 +08:00
KnugiHK
4eed3ca321 Refactor CLEAR_LINE in a more pythonic way
So it is easier for contributor to write a logging line for this project.
2026-01-24 16:48:07 +08:00
KnugiHK
746e4e1ac5 Fix and improve the logging facility for incremental merge 2026-01-24 16:24:10 +08:00
KnugiHK
1694ae7dd9 Update utility.py 2026-01-24 01:47:45 +08:00
KnugiHK
f05e0d3451 Refactor incremental_merge 2026-01-24 01:33:18 +08:00
KnugiHK
0c5f2b7f13 Add a comment on SQLi in get_chat_condition 2026-01-24 01:19:55 +08:00
KnugiHK
db01d05263 Refactor get_chat_condition to increase maintainability 2026-01-24 00:50:06 +08:00
KnugiHK
2e7953f4ca Add unit test for get_chat_condition 2026-01-24 00:03:21 +08:00
KnugiHK
95a52231be Fix the returning string for empty filter list 2026-01-24 00:03:08 +08:00
Knugi
e0aab06192 Update LICENSE 2026-01-21 16:06:12 +00:00
Knugi
43b00d8b48 Update README.md 2026-01-21 14:28:41 +00:00
KnugiHK
bf230db595 Gracefully handle bytes that can't be decoded from db (#44) 2026-01-20 23:35:05 +08:00
KnugiHK
242e8ee43a Fix regressions introduced in 194ed29 (default template swap)
This commit restores the logic originally introduced in:

* 265afc1
* 8cf1071
* 177b936
2026-01-20 01:42:30 +08:00
lifnej
c32096b26b Show sql errors if DEBUG flag is set. 2026-01-20 00:07:04 +08:00
lifnej
4aa1c26232 Missing newline in vcard info log. 2026-01-20 00:06:38 +08:00
KnugiHK
feca9ae8e0 Fix error on database without jid_map table
I realized the `jid_map` table might be missing after reviewing @lifnej's work in ee7db80. This fix adds use the preflight check result for the table before querying it.

I plan to apply this same pattern to other sections where `jid_map` is used.
2026-01-19 22:59:19 +08:00
KnugiHK
92c325294c Add preflight check to see if the jid_map table exists 2026-01-19 22:53:29 +08:00