Timex 1.1.0 में दो चीज़ें बदलीं। दोनों में से किसी का अच्छा screenshot नहीं बनता।
पहली: app अब पाँच भाषाएँ बोलती है। English, Español, Русский, हिन्दी, ไทย। हर label, हर chip, हर tooltip, हर break-card instruction, हर error message।
दूसरी: Timex को तुम्हारे समय के बारे में जो भी पता है — हर session, हर app event, हर break, पानी का हर गिलास — Settings में एक click से ZIP file में export कर सकते हो।
ये दो features एक जैसे नहीं लगते। हैं।
एक हफ़्ते में तीन email
1.0 ship होने के बाद पहला email Saint Petersburg के एक developer से था जो English में लिखने के लिए माफ़ी माँग रहा था, क्योंकि उसे यक़ीन नहीं था कि मैं Russian पढ़ सकता हूँ। (पढ़ सकता हूँ।) दूसरा Madrid के एक freelancer से था जिसने विनम्रता से पूछा कि क्या उसके clients कभी वो timesheet PDFs पढ़ पाएँगे जो वह उन्हें भेजता है। उसके पाँच में से तीन clients English नहीं बोलते।
तीसरा अलग था। एक line: "मेरा data कहाँ है?" — किसी ऐसे आदमी से जिसने Timex नौ दिन इस्तेमाल किया, तय किया कि यह उसके लिए नहीं है, और app delete करने से पहले उन नौ दिनों की tracked activity कहीं और ले जाना चाहता था। उसे CSV नहीं चाहिए था। उसे report नहीं चाहिए थी। उसे data चाहिए था।
ये दो सवाल — यह किस भाषा में है और मेरा data कहाँ रहता है — मेरे inbox में एक हफ़्ते तक एक दूसरे के बगल में बैठे रहे जब तक मुझे समझ नहीं आया कि यह एक ही सवाल है।
दोनों इसी का version हैं: यह तो मेरा होना चाहिए, है ना?
Version 1.0 इस बारे में था कि क्या Timex काम करता है। Version 1.1 इस बारे में है कि क्या वह तुम्हारे लिए काम करता है — तुम्हारी भाषा में, तुम्हारे data के साथ जो तुम्हारी शर्तों पर accessible हो, बिना मुझे email किए कि इन में से कोई एक भी चीज़ हो जाए।
पाँच भाषाएँ, app के अंदर
Today view, menu-bar popover, Settings window, break overlay, और license activation flow की हर string अब इनमें render होती है:
- English
- Español
- Русский
- हिन्दी
- ไทย
तारीख़ें तुम्हारे locale में render होती हैं (17 मई 2026 vs. 17 мая 2026 г. vs. 17 พฤษภาคม 2569)। संख्याएँ तुम्हारे decimal separator का सम्मान करती हैं। Language switcher Settings में pills की एक row है — एक पर tap करो और पूरी app बिना restart के re-render हो जाती है। पहले launch पर system default load होता है।
मैं ईमानदार रहूँगा कि 1.1 में क्या नहीं है: RTL भाषाएँ। Layout engine RTL-aware है; translations अभी तैयार नहीं हैं। जब हमारे पास Arabic या Hebrew का अच्छा translation होगा, हम भेजेंगे। तब तक हम right-to-left का टूटा हुआ पहला impression देने के बजाय इंतज़ार करना पसंद करेंगे।
दो specific चीज़ें जिनमें मेरी अपेक्षा से ज़्यादा समय लगा:
- Russian में pluralization एक तीन-form system है (1 / 2–4 / 5+)। "1 перерыв", "2 перерыва", "5 перерывов" — हर एक का अलग ending है।
{n} breaksको English-style pluralization के साथ naïvely use करना app को native reader के लिए robot जैसा बना देता है। अब हम सही करते हैं। - Thai date formats default में Buddhist calendar use करते हैं — Thai में साल 2569 Gregorian में 2026 है। Today view वो दिखाती है जो तुम्हारे system पर set हो।
छोटी चीज़ें। सही करने लायक।
सब कुछ ZIP के तौर पर export करो
Settings → Export Database… खोलो। तुम्हें एक ZIP file मिलती है जिसमें तुम्हारा पूरा SQLite database है, ठीक वैसे ही जैसे Timex उसे देखता है। हर tracked session, हर app event, हर break, पानी का हर log, हर preference।
ZIP में क्या नहीं है: कुछ नहीं। न encrypted blob, न cloud handle, न "इसे decode करने के लिए तुम्हें online रहना पड़ेगा"। यह एक SQLite file है।
लेकिन ज़्यादा ज़रूरी सवाल है: तुम इसके साथ करते क्या हो?
ज़्यादातर लोगों के लिए ईमानदार जवाब "इसे terminal में sqlite3 से खोलो" नहीं है। यह मेरे लिए जवाब है। ज़्यादातर लोगों के लिए जवाब है: ZIP को हमारी किसी browser tool में drag करो। तीनों पूरी तरह तुम्हारे browser में चलती हैं — कुछ tab से बाहर नहीं जाता, कुछ server तक नहीं पहुँचता, file तुम्हारी मशीन से कभी बाहर नहीं निकलती।
- Timesheet PDF — ZIP drop करो, date range चुनो, हर app और project की billable hours के साथ client-ready PDF लो। Madrid का वो freelancer? वह असल में यही माँग रहा था।
- Wrapped — तुम्हारा साल (या महीना, या हफ़्ता) समय में — वो apps जिनमें तुम जिए, वो घंटे जिनमें focus रोका, और वो दिन जिनमें नहीं रोका। Spotify-Wrapped, लेकिन इस बारे में कि तुम्हारा ध्यान कहाँ गया।
- SQLite viewer — ZIP drop करो, हर table browse करो, अपने SQL queries चलाओ। उनके लिए जिन्हें rendered जवाब नहीं, raw जवाब चाहिए।
वही export file, तीनों tools। Schema वही schema है जिस पर Timex खुद internally चलता है — कोई अलग "export shape" नहीं जो छुपकर subset हो।
अगर browser बिल्कुल skip करना है, यह बस एक SQLite file है:
unzip timex-export-2026-05-17.zip
sqlite3 timex.db
sqlite> SELECT app, SUM(duration_ms)/1000/60 AS minutes
...> FROM sessions WHERE date(started_at) = '2026-05-17'
...> GROUP BY app ORDER BY minutes DESC;
यह क्यों matter करता है: यह "अगर मैं जाना चाहूँ तो?" का एकमात्र ईमानदार जवाब है। ज़्यादातर apps इस सवाल का जवाब देती हैं "इन limitations के साथ, इन fields के बिना, CSV में export करो"। Timex जवाब देता है "यह वह पूरी file है जिस पर app चल रही है। यह वो tools हैं जो इसे useful चीज़ में बदलते हैं। यह बाहर निकलने का रास्ता है, अगर चाहो। हमें उम्मीद है तुम वापस आओगे।"
बिना glamour वाला हिस्सा: design system + accessibility
1.1.0 में एक तीसरा बदलाव है जो तुम्हें screenshot में नहीं दिखेगा। App में हर corner radius, border, hover state, और brand colour अब एक token set से आता है। 1.1 से पहले, आधे components one-off CSS थे। Break overlay का button hover Settings से अलग था। Popover में chip shape Today view से अलग थी। काम करता था, लेकिन app कैसे बनी थी इसकी सच्चाई बता देता था — feature-by-feature, तेज़।
उसी release में: हर icon-only button के पास अब VoiceOver label है। पानी के +/- steppers, date chevrons, break overlay का close button — पहले screen-reader users को सिर्फ़ "button" बोला जाता था। अब वे बताते हैं कि वे क्या करते हैं।
इनमें से कोई भी नहीं बदलता कि app क्या करती है। दोनों बदलते हैं कि वह कैसी लगती है।
यह 2.0 क्यों नहीं है
जायज़ सवाल: क्या app को पाँच भाषाओं में ship करना बड़ा version bump नहीं होना चाहिए?
होता, अगर release की कीमत उसके diff के size के proportional होती। नहीं होती। नई भाषाएँ उन strings के translations हैं जो हमेशा वहाँ थीं। Export एक button है जो वो code use करता है जो Timex हमेशा internally चलाता रहा है। किसी ने यह नहीं बदला कि app क्या करती है — उन्होंने बदला कि उसे कौन use कर सकता है, और किसकी शर्तों पर।
यह 1.1 है, 2.0 नहीं। Version number app के shape को track करता है, काम के size को नहीं।
आगे क्या
तीन चीज़ें queue में:
- और भाषाएँ, जो लोग email करते हैं उसके हिसाब से। German, French, Portuguese (Brazil), और Japanese queue में हैं। Infrastructure है; बस ऐसे translators चाहिए जिन पर हम भरोसा करें।
- Filtered export — पिछले 30 दिन, या एक app की activity, पूरे database के बजाय। दो लोग पहले से माँग चुके हैं।
- Macs के बीच cloud-free sync, अगर मैं ऐसा रास्ता निकाल सकूँ जो "your data, your file" principle का उल्लंघन न करे जिस पर बाक़ी app बनी है। यह वाला मुश्किल है।
अगर इनमें से कोई जल्दी चाहिए, footer में email है।
अगर 1.0 पर हो, download page से 1.1 लो। Upgrade सब कुछ preserve करता है। अगर नए हो, trial अब भी 100 घंटे है, बिना signup, बिना email collection — और अब, तुम्हारी भाषा में।
— DK