Gestrics
GestricsChangelogHistorial de cambios

Changelog

Changes you can see when using Gestrics, version by version. Anything invisible in day-to-day use — refactors, tests, build tweaks — is left out.

This file follows Keep a Changelog and Semantic Versioning.

1.1.2 — 2026-10-18

Added

  • A new invoice suggests the terms of the last one to the same client. The invoice dialog always opened with taxes at 0 and the due date 30 days out: for an agency that pays at 60 days the date had to be fixed on every invoice, and if forgotten, the payment alert fired while the client was still within terms. It now suggests the rates and payment days of the last invoice to that company (even if another project manager ordered it) and says so in one line; only if it was issued under today's tax profile. Without a previous invoice, nothing changes.
  • Expenses carry the supplier's invoice. For the quarterly tax return, the accountant needs each incoming invoice's supplier, tax ID, invoice number, taxable base and input tax, and the app only stored the total. Each expense now takes, optionally, the tax included (named by the tax profile: VAT, GST...), the supplier, their tax ID and their invoice number; the resulting base shows as you type, and a tax equal to or above the total is refused. The expense export (CSV and Excel) adds those columns, with base, tax and total apart. An expense with no tax entered exports base and tax blank, not zero: for one that truly has no tax, such as the self-employed social security fee, enter 0.
  • Clients first when choosing a project's client. The dropdown listed the whole contact book from newest to oldest, with the person's name first: after importing 300 agencies to prospect, the two real clients were at the very bottom, and typing "Reed" did not reach "Tom Reed · Reed Legal". Clients (with any project, or marked as active client) now have their own group at the top, with every other contact below; each group is alphabetical, with the company first.
  • Time of day on delivery deadlines. Agencies give deadlines with a time ("Monday at 9:00"), and the app only stored the day: at 11 that Monday it still said "Due today". A project now takes an optional time next to the delivery date (typed as it comes: "9", "9:00", "17h30"). Once that time passes, the project page, the notification bell and the calendar show it as overdue ("Was due today at 09:00"), and the calendar shows the time before the title. Alerts now refresh on their own while the app stays open, at that time, at midnight and when you return to the window (with a laptop asleep overnight, midnight arrived late): before, they were only worked out on launch. The same goes for the stale-backup notice.
  • One reminder for all of a client's overdue invoices. Agencies are often late with several at once, and the project manager got one email per invoice on the same day. The reminder for one invoice now lists the client's other overdue invoices, with amount, due date and the total outstanding, and once sent they are all marked as reminded: the bell no longer asks for one email each. If any of them carries the previous bank account, the reminder gives the new one even when the main invoice already shows the current one.
  • Notice when charging VAT where it does not belong. Charging 21% out of habit to a German agency is a common mistake: a business in another EU country is invoiced without VAT, under the reverse charge, and a client outside the EU is not charged it either. The issue dialog now says so in those two cases, following the same rule that decides the 0% wording on the invoice; it does not warn for a private client in the EU (no tax ID), where VAT does apply.
  • Backup notice in the bell. If there is no backup or the last one is a week old or more, the bell says so ("No backups" / "Last backup 12 days ago") and takes you to Settings, where it is downloaded. Before, it only showed inside Settings, which is not opened day to day, and the app holds invoices that must be kept.
  • Billing email on the contact record. Many agencies ask for invoices to go to their accounts department rather than to the project manager who places the order. If the contact has a "Billing email", the invoice and the payment reminders go there; quotes and deliveries still go to their usual email. It is optional, validated as a single address, and carried by the backup and by contact export and import.
  • BIC/SWIFT notice when invoicing a client outside the EU. A client in the United States or the United Kingdom pays by international transfer, which needs the BIC as well as the IBAN. The invoice already printed it when it was in the profile; now, if it is missing, the issue dialog says so. It does not warn when the client is in the translator's own country, where the transfer is domestic.
  • Restore a backup from the welcome screen. Someone setting up a new computer no longer has to fill in their profile and email only for the restore to overwrite them: the first screen of the setup wizard offers "Moving from another computer? Restore a backup", and once it finishes the app starts with their data, without going back to the wizard.
  • Fixed price. A new project type for work not charged by the word or the hour: a sworn translation per document, a minimum fee, a flat-rate job. You enter the price, and the quote and the invoice show it as a single line ("Translation EN-ES — fixed price", 1 × price), with no word count or per-word rate.
  • Warning for a very high per-word rate. Typing 0.85 instead of 0.085 multiplied the amount by ten with nothing to say so. From 0.50 per word in euros, dollars, pounds and similar currencies, the form now shows a one-line warning ("check the decimals"); it does not block.
  • Accounting export also in Excel. CSV is the format Holded, QuickBooks or Xero ask for, but opened with a double click in Excel set to Spanish it put everything in the first column, with broken accents and no amount that could be added up. Invoices and expenses can now also be exported as .xlsx, with amounts as real numbers.
  • A warning when issuing an invoice without VAT to a client in Spain. The dialog opens with the tax at 0, which is right for a foreign client, and an invoice to a Spanish company could be issued like that with nothing to flag it. It is a warning, not a block: there are exceptions the app cannot know.
  • A warning when issuing without VAT to a client in your own country without having written the reason in the VAT note of your profile (outside Spain, where the warning above applies). This is the case for anyone exempt, such as a French micro-entrepreneur under the franchise scheme: the invoice has to say why there is no VAT.
  • 7% IRPF among the one-click rates, next to 0% and 15%: it is the rate for those starting out, and until now it had to be typed in.
  • Marking "Paid" asks for the payment date, with today suggested. It used to store the date of the click, and since you mark it whenever you remember, the average payment time in Metrics came out wrong. Future dates are not accepted.
  • When creating a first project with no clients yet, the form says where to add them. The drop-down used to come up empty with no explanation.
  • The project's purchase order (PO) number is printed on the invoice, under the due date. Agencies ask for it to match the invoice to their order.
  • A warning when sending the quote for an hourly project with no hours logged, which would come out at 0.00.
  • Correcting an invoice's amount, or cancelling it. Until now an issued invoice could only have its VAT and withholding corrected: an invoice for 5,000 words instead of 3,000, a discount agreed afterwards or a cancelled job had no way out. Editing the invoice now lets you correct the words, hours, rate or price, or tick "Void the invoice" (base to 0). It produces an R- corrective invoice with the corrected line, the reason and the amount corrected, and the project card is brought up to date. A voided invoice no longer shows as overdue.
  • Estimated hours on hourly projects. Hours only came from time tracking, so hourly work could not be quoted before starting: the quote showed 0 h and 0.00. A project now takes estimated hours, which the quote, its email and its PDF use ("Estimated hours: 10.00 h", €500.00). The invoice still charges the hours actually logged.

Changed

  • PDFs are named in English, like the document: the invoice "Invoice-2026-001.pdf", the corrective invoice "Rectificative-Invoice-R-2026-001.pdf", the quote "Quote-12.pdf". They were called "Factura-…" and "presupuesto-…", including in the attachment the client receives.
  • The invoice dialog no longer offers withholding in France, where a freelancer's invoice does not carry it. It is only removed for countries that have been checked (France, for now); elsewhere the field stays, because not having researched it does not mean it does not exist. An invoice that already has withholding still shows it when corrected.
  • The withholding field uses its name in your country: with the Mexico profile it says "ISR (%)", as the summary and the hint already did, instead of a generic "Withholding (%)".
  • The tax ID in your profile and your clients' tax IDs are written in capitals: a "12345678-z" typed that way was printed as such on the invoice.
  • Countries on the contact card in the app's language, and sorted in it: with the app in Spanish you had to look for "Alemania" under "Germany". What is stored — and printed on the invoice — is still the English name.

Fixed

  • No purchased licence key could be activated. The 1.1.2 clean-up that strips the full stop or quotes picked up when copying the key from the email also stripped the "==" every key ends with, and the app reported it as non-existent. That ending is now kept, and stray punctuation is still stripped.
  • On Mac, invoices to Japanese, Chinese or Indian clients no longer show gaps in the name. For those scripts the PDF uses a system font, and on macOS the app looked for fonts that do not exist under those names: the client's name, a required part of the invoice, came out blank or partial. Checked on a GitHub-hosted Mac with clients in Japanese, Chinese, Korean, Hindi and Thai. Nothing changes on Windows.
  • The invoice to a client outside the EU with no tax ID cited the wrong article. For any client abroad, the "not subject" wording cited art. 69.Uno.1º of the VAT Act, which only holds when the recipient is a business or professional; a private individual falls under 69.Dos.f, the one that names translation. The app cannot tell whether the client is a business or a private individual, so with no client tax ID it now cites art. 69 alone, which is true in both cases. With a tax ID it still cites 69.Uno.1º.
  • A project created for the wrong client could not be fixed. Editing it offered no client field, and the only way out was to delete it, along with its logged time and deliverables. The client can now be changed when editing, as long as the project has no invoice; once invoiced it cannot, since the client is recorded on the invoice: void it with a correction and invoice the work in another project.
  • The quote hard-coded the tax names. Its note said "Excludes VAT/withholding tax" for everyone, including a translator in India (who charges GST) and one in France (who has no withholding). It now uses the names of the translator's country, like the invoice: "Excludes VAT/IRPF" in Spain, "Excludes VAT" in France, "Excludes GST" in India.
  • Project search did not find by language pair or content type. Searching "DE-ES" or "technical" to look back over a year's work gave nothing. It does now, and content type also by the name the interface shows in each language.
  • Searching contacts by country, specialty or language pair found nothing. The country is stored in English even when the record shows it in Spanish, so "alemania" gave no results; and specialty ("legal") and language pair ("DE-ES") were not searched. They are now, and since batch sending works on the filtered list, it can send a campaign only to agencies in one country or specialty.
  • Expenses had no place for the most common items, and it was unclear which project they belonged to. Paying a colleague or a reviser, the accountant, phone and internet and professional associations ended up under "Software" or "Other"; they now have their own category. And when linking an expense to a project, the dropdown, the table and the CSV for the accountant showed only the title, which repeats ("User manual" for two clients): they now say "title · client", with archived projects last and marked.
  • After changing bank, an unpaid invoice sent the client to the old account. The invoice keeps the IBAN it was issued with, like the rest of its details, but when resending it or chasing payment the client paid into that account, which might be closed. Now, if the invoice is unpaid and its IBAN is not the one in the profile, the invoice email and the reminder add a line with the new bank details, and the dialog says so before sending.
  • After changing tax country, earlier invoices were shown with the new profile. Someone moving from Spain to France saw a Spanish invoice with "Withholding" instead of IRPF, and the correction dialog offered the French VAT rates (0 and 20%) instead of the Spanish ones. The PDF was already right; the project page and the correction dialog now also use the country each invoice was issued in.
  • A short sending interval made the batch slower, not faster. Settings allowed 3 seconds between emails, but the app only sends 12 per minute: after the 12th the batch paused for 65 seconds, and the announced duration did not count those pauses. The minimum is now 5 seconds, and a lower value saved earlier is raised automatically.
  • On a day with many deliveries, the calendar hid the rest. Only three showed, and "+5 more" was text that did nothing: the others could not be seen or opened from the calendar. "+5 more" now expands the whole day (and "Show less" collapses it), shows their titles on hover, and the three shown first are the most urgent.
  • Importing a large contact sheet stopped halfway. Contacts were saved one at a time, and the app's request limit (300 per minute) cut off a sheet of 500 agencies around row 290: the rest showed up as "could not be saved" with no further explanation. The whole sheet now goes in one go, with the same checks as adding a single contact: 500 contacts import in a couple of seconds.
  • Two timers could run at once. Starting one project's timer without stopping another's left both running, and the same hour was billed to two clients. "Start" now warns about the one still running and stops it before starting; if it had run for more than 8 hours, it first asks whether to log or discard that time, as when stopping it. A project can no longer be invoiced with its timer running: that time was left off the invoice, and the timer could then be neither stopped nor deleted, which also blocked starting any other project's timer. One left in that state can be discarded from the project page.
  • Two texts in the English interface were unclear. The bell notice for delivered work not yet marked said "mark them as Delivered", as if the deliverables were marked rather than the project; the group is now called "Delivered, not marked" ("Entregados sin marcar" in Spanish), short like the others. And the notice about missing client data called the record a "card"; it now says "details", like everywhere else.
  • "New project" while editing another one duplicated it. The "new" form came up with the data of the project being edited, and saving it created a copy. It now comes up empty.
  • A prospect who had become a client could receive a follow-up email. Creating their first project turns the contact into an "Active client", but Outreach did not notice until a restart: it still showed "Sent" and "Needs follow-up". Worse, the project's next email (the delivery) wrote "Sent" back to the database, and "Send follow-ups" ended up sending a "just following up" to a client whose work had already been delivered. The change now shows at once and sticks.
  • Metrics counted each project manager at an agency as a separate client. With two contacts from the same agency it showed "Clients 2", the amount collected split into two bars and the payment days in two rows. The client is now the company (ignoring case and accents) or, when there is no company, the person. The Projects list is still grouped by person, since that is who places the order.
  • A corrective invoice could be overdue the moment it was issued. It is dated today but inherited the original invoice's due date: correcting in January an invoice due in December produced a document dated 4 January and due on 20 December, and the notification bell immediately asked for a payment reminder. Now, if the invoice is unpaid, the dialog asks for a due date from today on, as when issuing; and the payment-terms notice counts the days from the corrective invoice's date.
  • Searching for an invoice that had been paid gave "No results". Paid work gets archived, and it is exactly what the client or the accountant asks about months later; the project search left archived projects out even when their number was typed. Nor did it find a corrective invoice by its R- number, which is the one the client has. Search now reaches archived projects (shown with their archive icon) and R- numbers; without a search, the list still leaves them out.
  • Leaving without saving silently discarded changes, in three places: switching email templates (the postscript being written disappeared), closing the translator profile with Escape or a click outside (a freshly typed IBAN or phone number was lost) and clicking another project in the list with the project form open. With unsaved changes the app now asks before leaving; without them, it leaves as before.
  • A client's glossary accepted the same term twice with different translations ("lease → arrendamiento" and, weeks later, "Lease → alquiler"). If the source term is already there (ignoring case and accents), the app now says so, shows its translation and asks before adding it again: a term with two meanings depending on context can be saved twice on purpose.
  • The invoice could contradict itself on the payment period. The default terms said "within 30 days", so setting the due date to 60 days for an agency produced an invoice with "Due" at 60 days at the top and "30 days" below. The default terms no longer state a period of their own ("by the due date shown above"), and if yours state a number of days that does not match the chosen due date, the invoice dialog points it out.
  • Hours logged in minutes came out unreadable on the invoice and the quote. 80 minutes (1.333… hours) printed as "1.3,333,333,333,333,333". They now show up to four decimals, "1.3333", so the line adds up: 1.3333 × €40 = €53.33, the amount next to it (with two decimals, 1.33 × 40 would give 53.20). The correction dialog shows hours the same way.
  • Changing the project type kept a rate that no longer applied. Switching a per-word project to a fixed price left the "Price" field holding the per-word rate (0.10), and the invoice came out at 0.10; switching to hourly, €0.10/word became €0.10/hour. The field is now cleared when the rate's unit changes, and kept between types with the same unit.
  • An archived job still showed as late on its card and in the calendar ("2 days late"), although the bell no longer flagged it. Archiving a cancelled job removes it from every delivery notice.
  • Deleting a project also deletes its logged time, and the confirmation did not say so. It now does.
  • The invoice wrote taxes in two different ways: "VAT 21.0%" with VAT and "VAT (0%)" without it, and "IRPF -15.0%". They are now always in brackets with no padding decimals, as in the invoice dialog: "VAT (21%)", "IRPF (-15%)".
  • The notice about details missing from a client's card read badly ("This client has no Tax ID, Address on file"). It now reads "Missing from this client's card: tax ID and address".
  • Work already delivered to the client showed as "delivery overdue". Sending the deliverables does not change the status (the status bar is set by hand), so after the deadline the project stayed "In progress" and showed as late in the bell, the project card and the calendar. With the deliverables sent, the notice now reads "Deliverables sent: mark them as Delivered".
  • Adding a file again with the same name duplicated it. When delivering, the corrected version of "Novel_ES.docx" was added next to the old one and the client received both; in the Outreach attachments, an updated CV was added next to the old one and every cold email went out with both. The new file now replaces the one with the same name, with a one-line notice. When a corrected version of work already delivered is sent again, the old one is also removed from the saved deliverables: otherwise the next delivery loaded both again.
  • An invoice issued before the delivery deadline said the service was provided after the invoice date. The service date came from the project's delivery date, which is the deadline: delivered and invoiced on the 6th with a deadline on the 20th, the invoice read "Service date 20". It is now only set when it is earlier than the invoice date.
  • When entering several expenses in a row, the date went back to today after each one. Entering September receipts in October left the second and later ones in October, and in another quarter. The form now proposes the previous expense's date. Also, the "today" it proposed was worked out only once, and fell behind with the app left open for several days.
  • The accounting export ordered invoices from the same day wrongly (2026-002 before 2026-001). Same-day invoices are now ordered by number.
  • A PO the agency sends after receiving the invoice can now be added. The invoice kept the PO from the moment it was issued, and if there was none, there was no way to add it. Changing the project's PO now also changes it on the issued invoice, without a corrective invoice: it is the client's reference, not tax data. The form says the invoice needs resending. The invoice's title, amounts and client stay unchanged.
  • The accounting export (CSV and Excel) showed the client with their current card details, not those on the invoice: if they changed company name, their old invoices came out under the new one. They now appear as on each invoice.
  • After reopening the app, an invoice without VAT could carry the French exemption ("VAT not applicable — French Tax Code, Article 293 B") even for a Spanish translator. It happened to anyone who had not written a VAT note in their profile and already had a contact; if they had also skipped the profile in the setup wizard, their tax country became France. These were two migrations meant for a single old installation; they have been removed, and settings already saved do not change.
  • Generating a recurring invoice did not say which month it was for. With overdue months there was no telling which one would go out; the dialog now says ("the October 2026 recurring invoice").
  • A quote resent after changing it carried the date and expiry of the first one, so a revision sent a month later could arrive already expired, and the client had two "Quote-1.pdf" files with different amounts and nothing saying which one stood. A resend now goes out as "REVISED QUOTE", dated today, in a "Quote-1-rev1.pdf" file, and the email is titled "Revised quote" and says which quote it replaces. Resending it unchanged ("it never arrived") still sends the same quote.
  • The quote email did not give the delivery date, which the PDF did. It now includes "Estimated delivery" when the project has a date.
  • Pasting an email copied from Outlook or Gmail ("Anna Weber <anna@agency.de>", or with "mailto:") left the contact unable to be saved, and importing a list dropped the row. The address is now kept.
  • Sending follow-ups without a subject said "Subject is required" with a subject plainly visible: the missing one belonged to the follow-up template, which was not open. The warning now names the template. When sending to one contact, it also appears before the confirmation rather than after.
  • "Send now" to a contact already emailed asked the same question as for a new one. The dialog now says when they were last emailed.
  • The quote the client received rounded the rate. A rate of €0.085/word came out as "0.09 EUR/word" next to a total worked out at 0.085, so 12,500 words × 0.09 did not give the €1,062.50 on the line below and the quote looked wrong. The rate is now written with the decimals it has (up to four), in the email, on the project card and in Metrics.
  • The language pair of a new project came pre-filled with "EN-ES". Anyone working with another pair clicked and typed theirs, and the project was saved as "EN-ESDE-ES", which is how it then appeared on the quote and the invoice. The field now starts empty, with examples.
  • Picking a client suggests their language pair even when it is written with names, as the contact card itself suggests ("German ↔ Spanish"). Only codes ("DE→ES") used to be recognised.
  • Importing contacts from a CSV saved by Excel in Spanish or French mangled accented letters: "Inés Peña" came in as "In�s Pe�a" and the "País" column was not recognised. That CSV, the one Excel saves by default, uses a different encoding; it is now detected. CAT analyses in CSV benefit too.
  • The country of an imported contact is stored the way the contact card stores it. A sheet with "España" or "Francia" kept the Spanish name, and the invoice, which is in English, said "España". A contact already saved that way is fixed the next time it is saved.
  • The email for a corrected invoice quoted the original's number. The attached PDF was the corrective invoice R-YYYY-NNN, but the subject said "Invoice 2026-002". The invoice email and the payment reminders now quote the corrective invoice.
  • On an hourly project, the form said "Source words" above the logged hours.
  • Without sending the invoice from the app you could not mark "Invoiced" or "Paid". Anyone sending the PDF from their own email — and, without a connected account, everyone — was stuck at "Delivered". Issuing the invoice is now enough; "Paid" then stays pending until you mark it when the payment arrives.
  • On opening the app, the bell did not warn about overdue invoices. It said "No pending notifications" until you visited Projects, even with an invoice weeks overdue. It now warns from start-up.
  • Long-standing clients counted as replies to outreach. Creating a project moves a client to "Active client", and the Outreach header counted that as a reply even if you had never written to them from the app: with only your existing clients entered it showed "Sent 0 · Rate 100%". Only contacts you actually wrote to count now.
  • Attachments with accented names arrived with a broken name. A "CV_Lucía.pdf" reached the agency as "CV_Lucía.pdf". It happened with any accent, ñ or ç in the file name.
  • Importing contacts dropped a row with two addresses in the same cell ("jobs@agency.com; vendor@agency.com", common in agency lists) without saying which. It is now imported with the first address and the rest go to the contact's notes. It never sends to more than one.
  • The batch-send confirmation gave odd durations: "~0 min" for one email and "~1 min" for three that take 16 s. It now gives seconds under a minute, and with a single email it just says so.
  • Outreach attachment sizes used a decimal point in Spanish ("0.20 MB"), and "0.00 MB" for small files. They now follow the language's format and use B or KB where appropriate.
  • A timer left running logged every hour at once when stopped the next day, and those hours go on the invoice. From 8 hours on it now asks before logging them and offers to discard it so the real time can be added by hand.
  • The payment link was not in the invoice email. It was generated to send to the client, but had to be copied and pasted by hand. If the invoice has a live link, the invoice email and the payment reminders now include it on a line of its own. Once the invoice is corrected or paid the link is closed, and it is not sent.
  • The payment link allowed the same invoice to be paid twice. It stayed active after payment until Paid was marked by hand, so a client reopening the email could pay again. Each link now accepts a single payment and Stripe closes it as soon as it completes. This applies to links generated from now on; earlier ones are closed when Paid is marked.
  • With a Stripe test key, Settings just said "Connected to Stripe". It now says it is in test mode and that clients will not be able to pay.
  • A licence key copied from the email with the final full stop was reported as non-existent. The full stop, quotes or brackets picked up when copying it from a sentence are now stripped from the ends.
  • The backup downloaded as "outreach-backup-…", the old name. It is now "gestrics-backup-…". Old backups can still be restored.
  • Changing the title or PO of an invoiced project changed the issued invoice. Downloading the PDF again showed the new title and PO, not the ones the client received. They are now stored when the invoice is issued, like the rest of its data.
  • If the free trial ran out with the app open, the strip still said "14 days left" and every action failed with a stray error, with no licence screen until a restart. It now appears as soon as you try something, and the day count updates by itself.
  • Deleting a contact with invoices led to a dead end. The message said to delete their projects first, but an invoiced project cannot be deleted. It now says what happens: the contact has issued invoices, which must be kept, so it cannot be deleted.
  • "Imported 1 contacts" now reads "Imported 1 contact".
  • In the client glossary, clicking a field did nothing. The fields were inert until you pressed "+". Clicking any of them (or starting to type) now opens the row to add the term.
  • Client emails could go out unsigned. The signature name was only set by the name step of the setup wizard; anyone who skipped it and entered their name later in the profile sent quotes, invoices and reminders ending in a bare "Best regards,". With no sender name set, the profile name now signs.
  • An invoice could be issued with a due date earlier than its issue date. Picking the wrong month in the calendar was enough: the invoice went out already overdue and the payment reminder fired straight away. The generate button is now disabled with a one-line note. Today is still valid (payment on receipt).
  • Sending an invoice with no email account said "Failed to send deliverables". It now says "Failed to send the invoice".
  • "1 invoices exported", "1 expenses exported", "1 months left to generate" and, when importing contacts, "1 duplicates (already existed)". Now singular.
  • Amounts on the invoice and quote PDFs did not follow the English format of the rest of the document. They had no thousands separator and the symbol after the figure ("1062.50 €", "320.00 £"), while the email sent with them said "€1,062.50". The PDFs now use the same format as the email: "€1,062.50", "£320.00", "¥12,000".
  • The average rates in Metrics counted the fee of recurring plans as if it were a per-word rate, sending that client's average sky-high. They are now left out, as is the fixed price.
  • Searching "2026-007" in Projects found nothing. The search box only looked at the title and the client, while the invoice number and the PO are exactly what clients and accountants quote. It now searches both too.
  • With two corrections to the same invoice, the accounting export lost the first one, and each corrective invoice was compared with the original: correcting €450 to €270 and then cancelling gave -€190.80 and -€477.00, a reduction counted twice. All of them are now exported, and each one corrects the previous one ("Rectifies invoice R-2026-001") with its own difference: -€190.80 and -€286.20, which add up to the real reduction.
  • A project could be saved with delivery before receipt (picking the wrong month in the calendar), and it showed as overdue from day one. It can no longer be saved, with a one-line note.
  • Editing a project with no receipt date gave it today's date on saving, though nobody had entered it. It now stays empty; a new project still proposes today.
  • Switching a fixed-price project to per-word translation left "1 word" at the price as the rate (1 × €30/word). The words and rate are now cleared.
  • Invoices from a recurring plan had the month in the interface language ("Monthly translation retainer — octubre 2026") on an English document. It is now always in English ("October 2026"). Invoices already issued keep their title.
  • Choosing "Paid" in the status field of the edit form left the project paid with no payment date, so Metrics did not count it as collected and the accounting export listed it as pending. It now opens the same payment-date dialog as the "Paid" step.
  • Correcting an invoice that had already been paid said nothing about the difference. The dialog now says in one line whether money must be refunded to the client or the client owes more.
  • The rate on the PDF did not match the one in the app. The quote and the invoice always printed it with four decimals ("€0.0700") while the project card said "0.07 EUR/word". The PDF now follows the app's rule —the currency's decimals and up to four, with no padding zeros—: "€0.07", "€0.085", and "€0.015" on a CAT category.
  • The Outreach response rate used a full stop in Spanish ("0.0%"). It now follows the language's format: "0,0 %".
  • A translation over 15 MB only said "File exceeds the 15 MB limit", without saying which one when several were picked or what to do. It now names the file and suggests sending a download link in the message.
  • The quote email for a project with a CAT analysis gave an average rate ("Rate: 0.0755 EUR/word", amount ÷ words) that appeared nowhere else and did not add up to the total. It now lists the breakdown, one line per category with the same labels and figures as the attached PDF ("No Match: 3,000 words × 0.10 EUR/word = €300.00").
  • The email for a corrected invoice did not say it replaces another one. It carried the corrective invoice but read like a new invoice, so a client who already had the original could pay both. It now adds, after the invoice paragraph: "This corrective invoice R-2026-001 replaces invoice 2026-001; please disregard the earlier one."
  • A revision or post-editing project showed the base rate on its card (€0.10/word with 2,000 words and an amount of €100, which does not add up) and nothing said it was a revision; the quote email called it "per CAT analysis". The card now shows the service and the rate actually charged (€0.05/word), the same as the email and the PDF, and the average rates in Metrics count that one, not the base rate.
  • Changing a client's email sent them back to "Pending" and wiped their history, as if they were a new contact. When an agency changed project manager, the next "Send to pending" mailed the outreach email to the client itself. For an active client only the email changes now; for a prospect it still asks as before.
  • Undoing a "Paid" marked by mistake left the invoice paid. Going back to "Invoiced" from the form kept the invoice's payment date: the accounting export listed it as paid and it never showed as overdue. The payment date is now cleared.

1.1.1 — 2026-10-03

Added

  • Invoice payment terms are written once and appear on the PDF. The issuing dialog had an "Invoice notes (optional)" field that started empty, with a grey hint, and whose text was printed at the end of the document under a "Notes" heading — far from the "Payment terms" block, where a fixed "Bank transfer" line could contradict it. There is now a Payment terms field in the translator profile, with a starting text you can change ("Payment by bank transfer within 30 days of the invoice date. Please quote the invoice number as the payment reference."); every new invoice starts from it and can be adjusted for that invoice only; and the PDF prints it where it belongs, right under "Payment terms" and above the IBAN. If you write none, the invoice comes out as before. It is in English because the invoice PDF is entirely in English.
  • memoQ analyses can be imported, in all four formats memoQ exports them in. "Import CAT analysis" now reads what the Export button of its Statistics produces: the HTML and the three CSVs — the one reflecting the results on screen, the per-file Trados-compatible one and the per-file one with all the information. Before, its CSV could be picked but fell into a single column — memoQ never separates with commas — and its HTML was turned away with "this is not a Trados report". Rows arrive already assigned to their category — 101% and pre-translated ones as context, repetitions, 100%, each band and the ones with no match — and "Fragments" is shown unassigned, like "Locked" in Trados: whether that is billed is each client's call. If the file holds several analyses one after another, the first one is imported and the dialog says so; if it holds several files, they are added up, without counting the totals row twice. Checked with the same analysis exported in all four formats: all four give 249 words and the same breakdown, and from there €18.10 at €0.09/word, both on screen and in the quote PDF.
  • Wordfast Pro analyses can be imported too, in the four formats a translator uses. "Import CAT analysis" reads what its "Export report" produces: its own CSV, the Trados-compatible CSV, the HTML and the XLS. Rows arrive already assigned — context, repetitions, 100%, each band and the ones with no match — and "Ignored" segments are shown unassigned, like "Locked" in Trados. If the report holds several files, they are added up, and its totals table is not counted on top of them. Wordfast writes five more formats, meant to feed other programs: some do not even carry the repetitions or the new words, so they are not recognised and the file goes to the generic importer, where columns are picked by hand. Checked with reports generated by Wordfast itself: all four formats give the same 311 words and the same breakdown, and from there €22.09 at €0.09/word, both on screen and in the quote PDF.

Changed

  • Save and cancel on the new-contact form are always in view. The form has thirteen fields in a 340 px panel, so its two buttons sat at the end of a long scroll: saving — or leaving without saving — meant scrolling all the way down. They now stay pinned to the bottom of the panel, with the fields scrolling underneath.
  • You mark the status bar yourself, step by step. Issuing the invoice used to move the project to "Invoiced" on its own, and the bar then asked for a click on "Paid": it invited you to treat a brand-new invoice, sometimes not even sent, as already paid. The bar now follows what you actually do: you send the translation and click "Delivered"; the pending step becomes "Invoiced", dashed but not clickable while the client does not have the invoice; you create it and send it with "Send", and only then can it be clicked; clicking it moves the pending step to "Paid", which you click when the money arrives. The project stays in "Delivered" between issuing the invoice and clicking "Invoiced"; that changes nothing that counts: pending invoices, due dates and reminders all look at the invoice, not at the status.
  • No tooltips in the status bar. The name of each step is already written under its icon, and what is missing before you can click it is spelled out in the line below — "issue the invoice first with Create invoice", "send the invoice to your client first with Send" — with no need to hover.
  • One colour scheme for the status bar. The dashed outline of the pending step is always the same slate grey, the one used by secondary buttons: each step used to paint it in its own colour, so it changed colour as you advanced. And a step you have reached is always the same green — a finished project used to show four green steps and "Paid" in purple, as if it were something else. Each status keeps its own colour where it does tell things apart: the project list and the delivery calendar.
  • The invoice card has the same buttons as the quote card. Edit and Download in grey, and Send in amber and twice as wide, just like there. The wide coloured button used to be Download — in blue, a colour no other button on the card uses — and Send was a narrow grey one, so two cards with the same layout suggested different things.
  • The translator profile is split in two halves. It mixed what the client sees printed with what only the app uses: the IBAN next to the CAT rate table, the tax ID under "Personal information" and the Metrics currency in between. Now the top holds what appears on your documents — identity and contact, online presence, and billing and payment — and the bottom what the app uses — main currency, CAT rate table, post-editing rates and reminders — each half with a line explaining it. Within billing, the tax country comes first because the name of the tax ID ("NIF", "RFC") and of the tax in the following fields come from it, and the tax note gains an explanation of where it is printed and what it is for.
  • A newly created project no longer looks quoted. Until now it started with "Quoted" filled in, as a completed step, and asked for a click on "In progress" even though the quote had not gone out yet. Now the pending step is "Quoted" itself, dashed and unfilled, and the hint reads "Click on Quoted to advance": the quote can be edited and sent as many times as needed, and the click, once the client accepts it, moves the project to "In progress".
  • The quote has its own card, like the job and the invoice, instead of sitting inside the status bar. Its buttons read "Edit", "Download" and "Send" (or "Resend", once it has gone out), without repeating "quote" on all three. Once the project moves on, the card keeps the sending date and the download. The Invoice card follows suit: "Edit", "Download" and "Send".
  • Dates spell out the month: "Sep 26, 2026" in English and "26 sept 2026" in Spanish, each language's convention (the CLDR medium format that browsers apply). They used to be numeric and switched order with the language (9/26/2026 vs 26/9/2026), so 3/5 could be March or May. This applies across the whole app — detail panels, lists, metrics, history, notices — and to the invoice and quote PDFs, which stay in English: "Sep 26, 2026" with the interface in English, "26 Sep 2026" otherwise.
  • A custom calendar for picking dates, in all seven date fields. The Windows/Chromium one showed the date in the format of the Windows language, not the app's, and its mouse wheel scrolled weeks without changing the month in the header. Now the wheel moves between months, days from the previous and next month are greyed out, and there is a "Today" button (plus "Clear" where the date is optional). Keyboard: arrows to move, Page Up/Page Down to change month, Enter to pick, Esc to close.
  • "Send deliverables" is locked until the quote is accepted, like "Create invoice" before delivery, and says what is missing: "Mark Quoted before sending deliverables".
  • The confirm buttons of the send dialogs just say "Send" for deliverables, invoices and quotes; the dialog title already says what is being sent.
  • The note under the invoice tax rates is now a single line that says what to do. It used to be three lines explaining what the buttons proposed — the country's standard rate and the 0% usually applied to a client abroad — buttons that explain themselves, and it never said the one thing that mattered: what to write and who to ask if in doubt. It now reads "Set VAT and Withholding if they apply. If in doubt, seek professional advice.", with both names coming from the fiscal profile rather than fixed: a Mexican translator reads "VAT and ISR", an Indian one "GST and Withholding".
  • In English, "Encargo" is now translated as "Assignment" instead of "Job", in the detail panel and in every message.
  • "New contact" is no longer a tab, it is a button. The Outreach panel's header had two tabs, "Contacts" and "New contact", and the second one led nowhere: it opened the new-contact form. An action button dressed up as navigation, which also left "Contacts" looking clickable while you were already standing on it. It now works like Projects: at the top sits the section title —"Contacts", "New contact" or "Edit contact", depending on what is below it, with nothing to click— and adding a contact is a button at the foot of the list. The form gains a "Cancel" next to its save button, the way out the tab used to be, and its labels —"Name", "Company"…— no longer sit centred over fields that are left-aligned.
  • An empty list now just says "No contacts" again. It used to carry a three-line hint below it naming both doors —"New contact" and "Import contacts"—. With adding a contact turned into a button at the foot of the list, both announce themselves, and the hint was taking up half of a box that is already short on height.
  • The contact search box now shares a row with the title, and is a magnifier. It used to have a whole row to itself, leaving the list with 199 of the panel's 652 px: four and a half contacts in view. It now sits to the right of "Contacts" —which moves left until it lines up right under the "T" of "All statuses"— and the "Search contacts…" text gives way to a magnifying glass pinned to the right edge, as in Windows Explorer; while there is something typed, the clear cross takes its place. The list goes from 199 to 262 px: from 4.6 to 6.2 contacts in view without scrolling. With the new-contact form open the search box is not drawn, since there is no list to filter.
  • The Projects search box, the same. Same measurements as the Outreach one —a 12.5 px field in a 52 px row, instead of 13 in a 62 px one— and the same magnifier in place of the "Search projects or clients…" text. It also gains the clear cross, which it never had. And the same order: the status filter on top and the search below, as in Outreach, so the panel header is the same in both views.
  • Support moves from the translator profile to Settings. It sat at the end of the profile, between the IBAN and the CAT rates: a section that is not configured at all, on the screen where you fill in the details that get printed on the invoice. It now closes the maintenance block, next to the backup, the setup guide and diagnostics, which is what you look at when something is not working.
  • Every title in Settings is now left-aligned. All eleven came out centred, and the longer ones —"App password", with its notice beside it— looked differently aligned merely because they were wider. The two backup buttons, on the other hand, really were stuck to the left, and are now centred like the rest.
  • The backup leaves the panel for Settings. It used to be a collapsible bar at the foot of Outreach, where it spent 50 px of height on something done once a month and where nobody working in Projects could find it. It now lives next to the setup guide and diagnostics, with both buttons and —this is what could not be lost— the notice of how long since the last one, which the File menu has no way to give. With the room it frees, the contact list reaches 7.4 contacts in view.
  • The new-project form no longer explains where clients come from. The "Clients are your Outreach contacts…" hint showed under the dropdown while the list was empty; it has been removed.
  • "No projects" now looks like "No contacts". It was a smaller line of text with nothing around it; it now carries the open-folder icon above it —the project icon throughout that view— and the same text size as its Outreach counterpart. The icon follows the reason for the gap: the folder when no project has been created, the magnifier when there are projects but the search box or the filter finds none.
  • The interval between sends now lives only in Settings. The Outreach panel carried a twin of the field already there —same setting, same 3 to 300 second range— spending permanent height on a number you set once. Added to everything above, the contact list goes from the 4.6 contacts in view this release started with to 8.3, without dropping a single feature from the panel.

Fixed

  • Activating a licence with the trial over left the app empty, and wiped settings on top of that. Entering the key on the "Your free trial has ended" screen got you in with no contacts, every counter at zero and none of your settings. The data was still intact on disk and came back on a restart, but in the meantime the app saved that emptiness over what was stored: the sender name, the email account details, the signature and the sending preferences were really lost, and the first template you touched reverted to the factory one. It happened right after paying. The window now reloads on activation and everything is where it should be. Contacts, projects, invoices and the tax profile were never at risk.
  • "Check for updates" was not checking anything. The answer came from a cache that launching the app had just filled, so the menu kept saying "You're already on the latest version" even when a new one had shipped. It now really asks every time you click it, and says so when there is no connection instead of passing off a stale answer as current.
  • And with the trial over it did nothing at all: the button stayed clickable and no message appeared. It now answers, and the result shows on the licence screen itself.
  • Nor did it do anything once you had hidden the notice with "Not now": the strip stayed hidden and, since there really was a new version, the "you're up to date" message did not come up either. Asking for the check by hand now brings back a notice you had hidden.
  • A semicolon-separated CSV is no longer read as a single column. Excel in Spanish and French exports "CSV (semicolon delimited)", and memoQ's statistics are only exported with semicolons or tabs. The app read everything as if it were commas, so the whole file fell into one column: importing contacts showed one very long header and nothing else, and importing an analysis recognised no category at all. The separator is now decided by reading the file itself, not its extension, and a comma inside "Dupont, Marie" is still part of the name.
  • "File → Import Backup…" did nothing at all. It has never worked since it existed, and for two reasons at once. It pointed at the "Import contacts" file picker, so it would have asked for a CSV or an Excel file and read your choice as a contact list; and even pointing at the right one it would have opened no window either, because the browser inside the app only opens a file picker when a click of yours asks for it, and a menu command does not count as one. The file-picking window is now opened by the app itself, outside that rule, and the restore carries on as normal: confirmation included.
  • Trados analyses now really import, in any of their formats. "Import CAT analysis" now reads the "Analyze Files" report (or the "GroupShare Analyze and Translate" one) just as Trados leaves it: the .xml in the project's Reports folder and whatever its "Save As" produces —XML, Excel, HTML or MHT—; the Excel, HTML and MHT ones with Trados in English, German, Spanish, French or Italian. It sorts it by itself: the rows come with the Trados names, in the app's language, and in the same order as in its report, each one already mapped to its category, and all that is left is to check it and confirm. Whatever the report does not make clear whether to charge is left unmapped, for you to decide: "Locked", internal fuzzy matches when the report's total does not prove they are counted apart from the other rows, and categories that the Trados table does not show. If the table in an export is not laid out as expected, the import says so and asks for the XML instead of sorting it wrongly. Before, only the Excel file could be picked, and it was misread: it opens with the title and the analysis settings, repeats every category file by file —so they were added up twice— and, with Trados in French or Spanish, it did not recognise the new words. With a real 862-word analysis, the import suggested 26; now, in any of the four formats, 862.
  • The rate accepts a decimal comma. Typing "0,09" as a project's rate silently dropped the comma and left "009": nine euros per word, a hundred times more. The comma now counts as a decimal point, and in "Source words" a "1.234" with a thousands dot is 1234 words, not 1.234.
  • And the same in the other number fields. In the recurring billing plan, the comma was also dropped as you typed it: an amount of "150,50" became €15,050 a month and "1.500,00" €1.50, and a VAT rate of "5,5", 55%. The amount is now read with a decimal comma or point and with a thousands separator —"150,50", "1.500,00", "1 500", "1,500.00"—, a "1.500" is fifteen hundred, and the amount as it will be invoiced shows under the field; anything that cannot be read without guessing, such as "150 50", is flagged and cannot be saved. An expense amount is read the same way and shows next to the button how it will be saved: it was a browser number field, which never takes a dot as a thousands separator and accepts the comma or not depending on the Windows language. The VAT and withholding rates when issuing or correcting an invoice and the CAT rate weights were fields of that same kind, and every percentage now accepts a comma with any Windows —"5,5"—, pasted with its "%" too. And in manual time entries, "1,5" hours was one hour and the half hour was lost: it is now an hour and a half, and "1:30" and "1h30" work too.
  • A PDF no longer opens the importer as if it were a spreadsheet. The file picker lets you choose "All files", and the PDF analysis agencies often send opened the column mapping with the PDF's internals as headers; "Import contacts" did the same with a vCard. Each import now reads only the formats its picker offers, and anything else shows a message saying which ones work.
  • With a window open, the keyboard no longer reaches what is behind it. The app's windows let the focus out: pressing Tab from "Import CAT analysis", or from the terms of use on first launch, reached the header buttons behind the overlay, and from there the whole page could be used with the window still open. Pressing "Import contacts" or "Import CAT analysis" again also left the new file with the column mapping —or the row assignment— of the previous one, which fell out of line over it without warning. Now the focus moves into the window when it opens, Tab and Shift+Tab cycle inside it without leaving, and closing it returns the focus to the button it was opened from; and each imported file opens its window from scratch. Escape also closes only the window on top: pressing Escape on the confirmation question when sending deliverables without attachments closed both, and the email being written was lost.
  • The menu no longer acts behind an open window either. "New Contact", "New Project", both backup entries and "View Getting Started Guide" still worked with a window in front: Ctrl+N switched view out of sight, and "Import Backup…" could restore the whole database with a half-written email on top. They are now greyed out while a window is open, the way Windows treats the menu of a window that has a dialog in front, and come back as soon as it closes. Copy, paste, zoom and quit stay available: they are needed inside the window.
  • The language switchers, the "skip" links and the CAT analysis links work with the keyboard. The "ES | EN" in the header and the one in the terms of use on first launch, the "Skip step" and "Skip tour" links in the getting-started guide, and "Replace analysis" and "Remove analysis" in the project form only responded to the mouse: Tab skipped them, and Enter and Space did nothing. In the terms, which cannot be closed without accepting them and no longer let the focus out, keyboard users had no way to change the language before reading them. Now Tab reaches all of them, with the browser's focus ring, and Enter or Space activates them; they look the same as before. Screen readers can also tell which language is active.
  • The CAT breakdown table no longer shows one cent more than the project amount. It added up each category's amount before rounding, while the "Calculated amount" and the PDF add up the rounded ones: two categories were enough to see €49.73 in the table above an amount of €49.72. Its word counts now also follow the app's language: they used the system's, so with the system in another language they did not match the amounts next to them.
  • A name containing "$" or braces no longer scrambles the messages it appears in, such as the confirmation for deleting a contact or sending them an email, the one for generating a recurring invoice or the summary of a Trados analysis. The name went through a substitution that interprets certain combinations with "$": "Libro de $'final" duplicated the rest of the sentence and left a {language} in plain sight, and "$$" became a single "$". And the placeholders were filled in one at a time, so a contact called "Ana {email}" got the email inside their name while the real placeholder was left in plain sight. The name is now copied as is. Emails to clients were not affected: they fill in their variables another way.
  • Notifications and client folders answer to the keyboard. Every notification in the bell's dropdown and every client row in the projects tree only worked with the mouse: Tab walked straight past them and neither Enter nor Space did anything, so without a mouse there was no way to open a notification or collapse a client. They are now part of the tab order, they fire on Enter and on Space, and tabbing draws a ring around whichever one has focus. The notification of a recurring invoice being generated stays out of the tab order while it lasts, just as it was already out of the mouse's reach. And a screen reader announces each folder as "Client NAME, N projects" instead of reading out everything in the row. Nothing on screen changes.
  • The first press on a client folder is no longer lost. In the projects tree, collapsing a client nobody had touched since the app opened took two clicks: the first one was dropped. It now collapses on the first one.

1.1.0 — 2026-09-21

The first release that actually ships. It replaces the installer uploaded on 10 August under this same number: that build was produced before the licensing code existed, so it did not include the activation its own release note announced.

Added

  • A proper menu bar (File, Edit, View, Window, Help), with the app's real features instead of Electron's generic default: new contact or project, export and import backup, check for updates, reopen the getting-started guide, download the technical log, terms of use and support contact. In Spanish or English depending on the app's chosen language.
  • New-version notice. On startup the app checks whether a later version has been released and, if so, says so in a strip below the header with a download link. It never downloads or installs anything on its own. "Not now" silences that particular version, so the notice comes back when the next one ships. Offline, the strip simply does not appear.
  • Licence activation and validation. The app requires an active licence to run, and lets you deactivate the current computer so you can activate it on another one.
  • "Send delivery" on the job card. Previously you had to scroll to a separate card at the bottom of the page, upload the files there and then, in a second step, tick them and send; anyone who did not know that card existed could not find how to deliver the work at all. Files are now picked inside the send dialog itself.
  • "Send invoice" on the invoice card, with the invoice file visible and the download button beside it. Emailing the invoice was possible before, but only through a path you had to know about in advance.
  • CAT category breakdown on the project page. It was previously only visible by reopening the edit form.
  • Free-text language pair, with the common combinations offered as suggestions. It used to be six fixed options, all between English, French and Spanish, plus an "Other" that forced a detour on every project.
  • Phone, address and tax ID in contact export and import. They were dropped on every export.
  • Charts in Metrics: collected per month over the last twelve, and collected per client, largest first. Until now the tab was only figures and tables: you could read how much had been collected in total, but not whether this month is going better than the last, nor which clients the money comes from.
  • A configurable main currency in the translator settings. Totals in the header and in Metrics are summarised in it. The most-billed one is suggested, but the choice is the translator's: it is usually the currency they think and pay taxes in, which need not be the one they earn most in.
  • A support address inside the application: in the translator profile, next to the technical log download button, on the server-unavailable screen and on the recovery screen after an error. It lived only on the website, so anyone who got stuck inside the program had no one to write to without leaving to look for it.
  • The license activation screen now says who to write to. The messages for a suspended or blocked license, or one activated on too many devices, all ask you to contact support, and that screen —the very first one, with the whole app behind it— gave no address at all: the only one in the app lives in the translator profile, on the far side of the door that won't open.
  • The setup guide can always be reopened, from Settings. It used to be a header icon that only appeared if you had skipped the profile step, so anyone who filled in their name —most people— lost the wizard and the tour for good. It now sits next to Diagnostics, where the rest of the housekeeping lives, and takes up no room in a header that has none to spare.
  • The empty contact list now says where to start. On a fresh install it was the first thing you looked at —an icon, "No contacts" and nothing else— with both doors in plain sight but neither announcing itself as the first step. It now names both: the "New contact" tab above and the "Import contacts" button below. It only shows while the list is genuinely empty, never when it is the search box or the status filter that found nothing.
  • The new-project form now says where clients come from when there are none. Anyone who buys the app for the invoicing goes straight to Projects and finds the client dropdown with a single option, "pick one": clients are your Outreach contacts, which is a different tab, under a different name, with nothing tying the two together. The hint only shows while the list is empty.
  • The onboarding wizard now explains what the tax country decides, with the same sentence the translator profile already used: that choice drives the name of each tax, the rates offered, the tax ID label and whether the invoice carries Veri*Factu. It was the only one of the two places where you pick it that said nothing — and it is the first one you go through.
  • 14-day free trial. The whole application can be used, with no key and no card, for fourteen days from the first time it is opened. A strip under the header shows how many are left, turning from amber to red for the last three; from there you can buy a license or enter one you already have. Once the time is up, the application asks for a license to get back in and says so in those words, instead of pointing you to a purchase email that never existed. Your data stays where it was.
  • Gestrics now downloads for Mac too. A single installer that covers both Apple Silicon and Intel, with nothing to choose between. It carries no developer signature, so the first time macOS refuses to open it and you have to allow it from System Settings → Privacy & Security; the website explains this next to the download button.

Changed

  • The approximate total in Metrics now converts 24 currencies, not four. Exchange rates were only fetched for the dollar, pound, Swiss franc and Canadian dollar, so invoicing in Swedish krona, Mexican pesos or yen left that money out of the consolidated total. Rates are now fetched for every currency in the dropdown that the European Central Bank publishes. The four it does not — Argentine peso, Chilean peso, Colombian peso and dirham — are still left out, and the screen lists them rather than hiding it.
  • The currency dropdown is no longer 159 entries long. Reaching the euro meant scrolling past the Afghan afghani, the Angolan kwanza and the Azerbaijani manat. It is now 28 — the ones a translator with international clients actually gets paid in. A project already saved in any other one keeps it: it still appears in that project's own dropdown, so opening and saving it does not change its currency.
  • The Spanish interface no longer mixes "follow-up" with "seguimiento". The English wording is unchanged — there "follow-up" is the right term.
  • Shorter, clearer button labels. The two "Show key" buttons in Settings are now "Show"; the Stripe one is "Connect", pairing with the "Disconnect" next to it; "Deactivate this device" is now "Deactivate"; and the getting-started button says what it opens: "Open getting-started guide".
  • The privacy policy now also lists the version check. It is the fourth connection the app makes, alongside the mail server, Keygen and the exchange rates, and that list exists in order to be complete. No data is sent — it is a read request for a static file — but it now says so. Because this changes the list of processing activities, the app asks for the legal texts to be accepted again next time it opens.
  • The main currency is now picked by name, not by its code. The profile field shows "Euro" or "US Dollar", with the code in the tooltip, and the list is sorted alphabetically by that name. The currency dropdowns on a project still show the code: they sit inline in narrow fields where a long name does not fit.
  • The app's English is no longer a literal translation of the Spanish. An audit of all 867 pairs, read one by one: calques were removed ("E.g.:" where "e.g." belongs, Spanish dashes, sentence orders copied across) and terms that had several forms at once were unified — "encargo" was "job" twelve times and "assignment" once, and "factura rectificativa" had three different English words, one of them ("credit note") a different document altogether.
  • The "Send delivery" button is now "Send deliverables". It opened a dialog titled "Send deliverables", and what gets sent are the files, not the job.
  • The terms of use no longer claim the invoice complies with Spanish Royal Decree 1007/2023. The invoicing section said that, on the Spain profile, the app generates documents "following, in 'No Veri*Factu' mode, the technical requirements" of that decree. That was not accurate: the hash-chained record the app keeps is its own traceability measure, and neither the QR code nor the hash follows the format required by Order HAC/1177/2024. The text now describes what it actually does and states plainly what it does not yet meet, so nobody relies on it with their accountant.
  • Full visual overhaul: new wordmark, consistent icons throughout, a shared design for dialogs, skeleton placeholders instead of spinners, custom scrollbars, and a single system of corner radii and shadows.
  • Every piece of interface copy rewritten, in both Spanish and English.
  • Template editing and preview merged into one screen, instead of two separate modes.
  • The email subject saves itself as you type.
  • The invoice is no longer stored as a file: it is generated at the moment you download or send it, so it always reflects the current data. Previously a copy frozen at invoice-creation time was kept, which meant anyone generating a payment link afterwards could send the client an invoice without that link.
  • Currencies are named by their ISO code — EUR, USD, GBP — in Metrics and in the header, instead of by symbol. Only the euro and the dollar have a symbol in Spanish, so a single list mixed "€" and "US$" with "GBP" and "CHF".
  • The header shows a single abbreviated total in the main currency — "EUR 201k" — instead of a list of per-currency amounts that did not fit the cell. The full amount appears on hover, and a negative profit is shown in red.
  • A freshly installed Metrics tab no longer greets you with a grid of dashes. Four cards reading "—" and three tables repeating "Not enough data" were the first impression for someone who had just installed the app.
  • Tax-number placeholders no longer show a Spanish format. "00000000X" appeared under fields labelled RFC, SIRET or GST depending on the country. In the Spanish interface the client's field was also labelled "CIF / NIF", so a Mexican translator saw Spanish wording above their client's RFC; it now uses the same neutral wording the English interface always had.
  • The "Quoted" counter explains what it counts on hover: quotes already sent to the client. It read 0 while the first project sat in the "Quoted" state, and without an explanation that looked like a fault at the most fragile moment of all.
  • The project form's examples are prefixed with "E.g." so they do not read as data already entered. The new-contact and new-project buttons lose their "+".
  • The rate writes its decimal separator according to the language: "0,11 EUR/word" in Spanish, where it previously read "0.11" right below amounts written with a comma. The quote the client receives stays in English, with a point.
  • The "server unavailable" screen no longer asks for a terminal command. It showed cd server && npm start to someone with no terminal —the local server is started by the application itself— and no folder by that name even exists. It now states the only thing a user can actually do: close Gestrics and open it again, which relaunches the process.
  • Connecting your email is no longer required to get in. The onboarding wizard's "Connect your email" step could not be skipped, does not close on Escape or on an outside click, and covers the rest of the app — so anyone without an app password to hand was locked out of what they had just installed, even though projects, quotes and invoices work without email. It can now be left for later: while it is still pending, the Settings gear carries an amber dot that explains itself on hover, and any attempt to send says so in the interface language instead of failing against the server.
  • The wizard's email step now says which account is connected, not just that one is. A green tick with no address asks you to take its word for it, and that is exactly the doubt that leads to retyping an app password that was fine.
  • The wizard's second step was called "Billing details" and collected two of the profile's twenty-seven fields. It is now "Name and tax country" and says where the rest —tax ID, address, IBAN— gets filled in, instead of implying an invoicing setup that stops halfway.
  • The Terms of Use now cover the trial period. Section 3 becomes "Trial period, license to use and activation" and describes the fourteen days: every feature, no key and no means of payment, counted on the device itself. It previously said only that use was subject to payment and a license key. Because this is a substantive change, the application asks for the terms to be accepted again the next time it opens.
  • The support address is now contact@outreachstudio.app. It replaces soporte@, and it is the one shown in the translator profile, on the "server unavailable" screen, on the recovery screen after an error, on the licence activation screen and on the line that asks for the send log to be attached. It comes from a single constant, so all five change together; the website advertises the same one.

Fixed

Backup

  • Restoring a backup silently dropped eleven columns. The restore writes each table naming its columns one by one, and the ones added later were never added there. Among the losses: the issuer identity frozen at invoicing time — so an old invoice went back to using your CURRENT details — the tax country it was issued under, the date of supply, the payment-reminder state — your client received the whole chasing sequence again for an invoice they may already have paid — the Stripe payment link, and the flag marking a deliverable as already sent. The quietest one: the period of a recurring invoice, which is what stops the same month being invoiced twice; without it, restoring was enough to issue that month's invoice a second time. A backup now returns exactly what it stored, and a check verifies it by exporting, restoring and comparing.

Invoices and quotes

  • A recurring plan's card read "Source words 1" and "320.00 EUR/word". A monthly fee is charged neither by word nor by hour, but internally it is stored as one word at a "rate" equal to the fee, and that showed up raw on every retainer. The invoice PDF already handled it; the card now does too, showing the fee under its own label.
  • The quote no longer disappears once the job moves on. As soon as the project left "Quoted", the PDF the client is looking at could no longer be downloaded: getting it back meant moving the project to its previous state. Its download button now stays, without the edit and resend options, which no longer apply there.
  • A job could charge a cent other than the one its own lines added up to. With a CAT breakdown, the total was worked out by summing raw amounts and rounding at the end, while the PDF prints one already-rounded row per category: at a rate of €0.11, the five rows add up to €145.69 and the total read €145.70. Same for hourly work, where genuine half-cents turn up: a quarter of an hour at €32.50/h is €8.125, an amount that does not exist in money, and it was stored that way every time you stopped the timer. The total is now always the sum of what is printed, and every amount the app CALCULATES — words by rate, hours by rate, CAT breakdown — is rounded to the cent before being stored.
  • The invoice ledger filed a number its own signature did not back. The taxable base went into the hash-chained record exactly as it came out of multiplying words by rate — 1,480 × 0.14 gives 207.20000000000002 in floating point — while the hash sealing that record is computed on the rounded figure. None of this showed on screen or in the PDF, which always formatted correctly, but anyone reading the database directly — an audit, a future export — got the dirty value, and base + tax did not match the stored total.
  • A quote already sent looked exactly like one never sent. The project card still read “Send the quote to the client or edit it first” weeks after it had gone out: the only place that knew was the “Quotes” counter in the header, so it was easy to send the client the same quote twice. The card now shows the day it was sent and the button becomes “Resend quote”.
  • A newly created recurring billing plan did not appear under Alerts until the app was restarted. The dialog itself tells you generation is confirmed from Alerts; you went there following that instruction and found it empty. It now shows up — and disappears when the plan is deleted — without a restart.
  • The reason for a correction is printed on the invoice the client receives, and the help text did not say so. It only said it was “recorded alongside the correction”, which reads like an internal filing note. It now warns that it is printed on the client's document and that it should be written in English, like the rest of the invoice.
  • A recurring invoice was issued without the project or the invoice showing up anywhere. Confirming it from Alerts while already on the Projects tab, the app reported it had been generated and the list did not change: the new project and its invoice — already recorded in the ledger, with its number — were nowhere to be seen until the app was restarted. The list only reloaded when switching tabs, so it failed on exactly the likeliest path: looking at your projects and confirming the alert. It now refreshes on its own and opens the new project, which is what it meant to do all along.
  • One invoice in ten did not add up to its own total. VAT and withholding are rounded to the cent, but the total was computed on the full decimals, so the totals block could contradict itself: on a €50.03 base the invoice read 50.03 + 10.51 − 7.50 with a TOTAL of 53.03 instead of 53.04. Sweeping bases from €50 to €10,000 at the usual rates, 1,160,062 of 11,940,012 combinations failed to add up. Each amount is now rounded to its currency's smallest unit — the yen has no cents, the Kuwaiti dinar has three — and the total is the sum of those figures, which is what gets paid.
  • The CAT breakdown lines did not add up to their own total. Each line was rounded on its own while the total came from the exact amounts, so the printed lines could differ from the figure below by a cent: at €0.0333 per word, four lines added up to €43.92 while the total read €43.91. On a quote that invites a question from the client; on an invoice the mismatch was against the taxable base, which is precisely what those lines exist to determine. The difference is now allocated to the largest line and the document adds up.
  • An invoice with no issue date vanished from the accounting CSV. It was dropped even when exporting everything with no date range, so an issued invoice could simply never reach your accountant without anything saying so. It now appears in the full listing, with the date column blank so the problem is visible; a quarterly export still leaves it out, since without a date it cannot be assigned to a period.
  • A client name in Hindi (or any Indic script) came out as empty boxes. The fallback font meant to cover them was looked up under a filename that does not exist on Windows, so it was never used. It now prints correctly, and the internal warning that reported the lost characters — which did work — stops firing.
  • New warning when invoicing a client whose details are in Arabic or Hebrew. The PDF prints those letters reversed and unjoined, because it does not lay out right-to-left text. Since the recipient's name is mandatory on an invoice, the dialog now warns you before issuing instead of letting you find out in the document you already sent.
  • A country written without accents left the invoice missing its mandatory wording. The dropdown on the client card stores canonical names, but importing contacts from a spreadsheet stores whatever the file says: "Espana", "Belgica", "Paises Bajos", "Deutschland", "Holanda", "USA"… None were recognised, and an unrecognised country meant the app did not print the reverse-charge wording on an intra-EU invoice. Accents, dots and the most common endonyms now resolve alike. And when the country still isn't recognised, the issuing dialog warns before you issue instead of staying silent.
  • Editing a paid invoice wiped its payment date. Just opening the invoice and saving again was enough, even without changing anything: the dialog doesn't send the payment date, and the server blanked it anyway. From then on, the CSV for your accountant reported that invoice as unpaid with an empty payment-date column, it dropped out of "Collected" and out of the average time-to-payment in Metrics, and the job card offered to generate a payment link again for something your client had already paid.
  • The default due date counted from today, not from the invoice date. An invoice dated earlier said "30 days" and fell due after 47. The sum was also done in hours: the day daylight saving ends is 25 hours long, so the term landed a day early. It is now 30 days from the invoice date, counted in days.
  • Dates were off by one day outside the Madrid time zone. A date stored as 2026-08-20 was read as midnight UTC, so in Mexico, the United States, Brazil, Chile, Colombia, Peru, Argentina or Canada it was shown and printed as the 19th. It affected everything at once: the invoice issue and due dates, the quote's validity, the date of supply, and every date in the interface. Writing failed the other way round — the UTC day was used — so invoicing in the afternoon in Mexico issued the document with tomorrow's date, and that date is frozen into the invoice ledger. Alerts were off too: an invoice showed as overdue on its own due date, and the payment reminder reached the client a day early.
  • You could issue an invoice without your own tax details. Until now the tax ID and address were optional fields in Settings, so a fresh installation could generate an invoice whose issuer was just a name. Such an invoice is not valid anywhere. The app now refuses to issue it and says exactly which fields are missing and where to fill them in; the rejected invoice consumes no number and leaves no trace. The client's details are not blocked — their tax ID is not always mandatory, and requiring it would prevent invoicing a private individual — but the issuing dialog warns when they are missing and explains when they matter.
  • Correcting an issued invoice left two documents in circulation under the same number. When you changed the VAT or withholding on an invoice you had already sent, the app asked for a reason and recorded the correction in its internal ledger, but the PDF still came out with the original number and date and the new amounts: the client ended up with two different pieces of paper both claiming to be invoice 2026-001. The QR code, which did read the right ledger entry, also contradicted the heading printed right above it. The document is now issued as what it is — "RECTIFICATIVE INVOICE #R-2026-001", with its own date, the invoice it corrects, the reason and the rectified amount — and the QR agrees with the heading. The project card and the email attachment use that number too.
  • The invoice said two different things about when it was due, and neither was yours. The top right read "Payment due: 30 days end of month" and halfway down the page "Payment due upon receipt": both were hardcoded and contradicted each other, while the due date you actually picked when issuing never appeared anywhere. The invoice now shows that real date, next to the issue date. Leave it blank and nothing is printed, rather than inventing a term.
  • "Invoice notes" did not appear on the invoice. The issuing dialog asks for that text under exactly that label and suggests using it for an account number or payment terms; it was then stored and never shown on the document. It now prints below the payment terms, on its own page if needed and without truncation — it is where a legal mention goes, such as the reverse charge on an intra-EU invoice.
  • Changing your own details rewrote invoices you had already sent. The issuer's name, tax ID, address and bank details were read from Settings every time a PDF was downloaded, not from what they were at issue time. Moving house, fixing a typo or incorporating changed who appeared as the issuer on every earlier invoice, including the ones the client already had. That identity is now frozen on the invoice, and the QR code likewise stops attributing an old invoice to a new tax ID. Invoices issued before this change behave as they did, since they have nothing frozen to show.
  • A foreign client's name was destroyed in the PDF. Both documents were generated with the PDF format's standard fonts, which only cover the Western Latin alphabet. Any other character came out as garbage, with no warning: a Polish agency called "Biuro Tłumaczeń Sp. z o.o." was printed as "Biuro T'VÖ7eB7.". The same went for Czech, Turkish, Romanian, Greek, Cyrillic, Japanese, Chinese and Korean — and the recipient's name is a mandatory invoice detail. Only Spanish accents and the euro sign were spared, which is why invoicing within Spain never showed the problem. Both documents now embed a full font, with automatic fallback for alphabets that font does not cover, and anything no installed font can represent is recorded in the application log instead of silently vanishing.

Onboarding

  • Switching email provider in the wizard left the previous provider's error on screen: picking "Custom" after failing with Gmail still showed the notice about the Gmail app password, below a form that was now asking for something else.
  • With a "Custom" email provider, the "Use SSL/TLS" checkbox came ticked while the suggested port was 587 — precisely the combination that cannot work, since 465 is TLS from the first byte and 587 is STARTTLS. Anyone who typed their own server and left the suggested port failed on the first attempt without having got anything wrong. The checkbox now starts unticked, matching 587, and follows the port on the two values where the answer is not open to debate; on any other (2525, 25, one of the provider's own) whatever you ticked by hand is respected. This covers both forms, the wizard's and Settings'.
  • Connecting your email from the onboarding wizard left the Settings screen looking as if no account existed —provider "Gmail", every field empty— with the email already working. The wizard only wrote where the server reads to send, and that screen is painted from somewhere else that nothing was updating; for the same reason, reopening the wizard asked again for the password of an account that was already connected. The password is still not stored there.

Invoicing and tax

  • A recurring plan could skip its own first month, and nobody claimed it. The date a plan is created is stored in universal time, but it was read as if it were the translator's local time. For anyone working west of Greenwich, a plan created early on the 1st was recorded as belonging to the following month: that instalment never showed up among the pending periods, the plan counted as up to date, and the retainer went unbilled with no warning at all. In Spain the bug was invisible, because there both readings agree.
  • The e-invoicing notice switched its wording a day early or a day late. The date each country's mandate starts to apply was compared against the universal day instead of the local calendar day, so the notice could move by one day depending on the time zone.
  • Withholding tax now appears under the name it has in the issuer's country — ISR in Mexico, IRPF in Spain — in the form, on the invoice card and in the PDF. It previously always said "IRPF", so a Canadian invoice displayed a Spanish tax, and a Mexican one could show four different names for the same tax.
  • Negative VAT and withholding rates are rejected on both creation and rectification.
  • A rectification that only redistributes VAT and withholding without changing the total is now recorded as such.
  • An invoiced project can no longer be deleted.
  • The manual project status can no longer mark a project as invoiced when no invoice exists.
  • CAT breakdown amounts respect each currency's decimal places.
  • A skipped month of recurring billing was lost for good: if the app was not opened for a month, on returning only the current one was generated and the plan was marked as up to date, with no warning and no way to recover the missed month from any screen.
  • Restoring a backup could issue the same month's invoice twice, each with its own number and its own ledger entry.
  • The label on the profile's tax-note field was hardcoded to "VAT / Tax note": one country's tax names on the same line, whoever was looking. It now comes from the fiscal profile like the rest of the app — "GST note" on an Indian profile, and the translated generic when the country has no term of its own.
  • The IBAN placeholder suggested a Spanish-shaped number (ES00 0000…) whatever the fiscal profile said. It is now neutral (XX00 0000…): it keeps the hint about how an IBAN is grouped without assuming the country, and it matches the BIC placeholder beside it.
  • The accounting CSV export hardcoded both tax column headers in Spanish ("% IVA", "% IRPF"), ignoring the fiscal profile: a translator with a Mexican profile got an "IRPF" column for what their country calls ISR, contradicting the PDF of that same invoice. With the interface in English, the whole header row, each row's status and the file name still came out in Spanish.
  • The "Correction history" for an invoice named the withholding tax generically instead of by the name it has in the translator's country: with a Mexican fiscal profile it read "Withholding" where the rest of the app already said "ISR". The VAT on that same line was already correct.
  • The warning about a negative tax rate named IVA and IRPF, two Spanish taxes, regardless of the translator's country: a Mexican user was told the problem was their IRPF, which does not exist there — their withholding is ISR — and an Indian user, who only has GST, got the same. It now refers to "tax rates", naming none of them.
  • Withholding was labelled "IRPF" on almost everyone's invoice. Only Spain and Mexico had a name of their own for it, so a Colombian, Argentine or Chilean translator — or anyone from the remaining countries — saw the Spanish tax named where theirs belonged. When a country has no specific name, it now says "Retención" (plain "Withholding" in the English interface). VAT is unchanged: that one really is called the same across the Spanish-speaking world.
  • The reason field for a credit note asked for it "when changing VAT/IRPF" and offered "VAT applied incorrectly" as the example, two lines below fields that did call each tax by its own name. Those two sentences now use the country's name as well.

Data and backups

  • Restoring a backup kept the contact but lost its entire history. Not any more.
  • Restoring no longer loses creation and modification dates either.
  • Advancing a project's status deleted every deliverable, including files that had never been sent to anyone. Only files that actually reached the client are removed now.

Metrics

  • Opening the tab took the whole app down. Going to Metrics replaced the window with the "Unexpected error" screen, the message at its foot: "Cannot access 'expenseForm' before initialization" — in the installed copy, minified, "Cannot access 'M' before initialization", which tells nobody anything. Reloading brought the app back, but going into Metrics again took it down again. The cause was the very change in this same version that cut the currency dropdown down to 28: so that an expense saved in an uncommon currency keeps its own, the list started reading the currency of the expense being edited — and here it read it before it existed. Of the four currency dropdowns that were touched, this was the only one with the bug. The tab opens again, and editing an expense in a currency outside the short list — Thai baht, say — still keeps its option.
  • The header overflowed when several currencies were involved: the amount spilled out of its cell and over the label next to it.
  • The "Net profit" card stretched across the full width when it wrapped onto a second row, and stopped looking like one card among others.
  • The average-rate table showed rows that looked repeated — two "Technical", two "EN-ES". They were not: rows are grouped by label, currency and unit, because averaging 0.15 € with 0.18 $ would mean nothing. Each row now states what tells it apart from its siblings.

Outreach

  • Stray spaces were only trimmed from the email address. A name or company pasted from LinkedIn or a spreadsheet kept its leading and trailing spaces, and those went straight to two places the client sees: the first line of the cold email ("Hi␣␣␣␣Marie Dupont␣␣␣,") and the client block on the invoice. Every field is trimmed now, and anything left blank is stored as properly empty.
  • Changing a contact's email address wiped its history without asking. Fixing a typo in the domain destroyed the logged sends, the contact dates and the follow-up count, and sent the contact back to "Pending"; the notice appeared afterwards, once done. You are now asked first, told how many sends will be lost, and only when there is something to lose. Cancelling saves nothing and leaves the form as it was.
  • A name made only of spaces got past the form and came back from the server as "failed to save contact", as if the app had broken rather than a field being missing.
  • Saving a contact could leave it with no name or an unusable email address. The check existed when creating one but not when editing, and editing an already-deleted contact reported success.
  • The daily sending limit was saved and displayed, but never enforced.
  • Cancelling a batch send during a retry wait took up to a minute to take effect. It now responds almost immediately.
  • The estimated duration of a batch send was overstated, worst of all on small batches.
  • Contacts whose last send failed showed up as "Pending", with no way to tell them apart from contacts never contacted at all.
  • Contact search ignores accents: "jose" finds "José".
  • The 5 MB attachment limit was advertised but never checked; the failure only surfaced on sending, as a confusing email error.
  • Email addresses with leading or trailing spaces are trimmed on save.
  • Deleting a contact could be blocked with no way out by glossary terms or recurring plans that no screen let you manage.
  • The notice that trims a batch send on reaching the daily limit left a literal {{remaining}} on screen in its second sentence ("Sending to {{remaining}} of 8 contacts"), in both Spanish and English: the placeholder occurs twice in the string and only the first one was being filled in.
  • Pressing Enter at the end of a template did nothing, and whatever you typed next ended up stuck to your signature. Adding a postscript or a link below "Best regards, [Your name]" was impossible: the new line was never drawn, so the caret fell back to the previous one. It also left an invisible line break at the end of the saved text, which went out with the email.
  • The Subject line gave no warning about braces that aren't real variables. Typing something like {{tarifa}} there raised no warning — the template body did — and still stopped the send, marking the contact in red. The warning now appears next to whichever field causes it, subject or body.
  • A batch send with one of those braces marked every contact in the batch as failed, one by one, over a problem that belongs to the template and not to any of them. It is now flagged before the batch starts and the contacts are left as they were, the same as already happened with a missing subject, no email account or an empty attachment.
  • A contact with no company was marked as failed if the template used that tag, with a message sending you off to check the template — when the template was fine and what was missing was one of their own details. Company is optional, yet it was the only one of the four contact fields treated as required when sending. And since failed contacts re-enter the next batch, it failed again every time. It now comes out blank, as specialty and languages already did, and before a batch starts you are told how many contacts are missing a detail the template uses, so you can cancel and fill it in. The same happened in the Projects emails — payment reminder, quote and delivery — which now also accept all five contact tags instead of just two.
  • Undo after inserting a tag deleted something else. The tag went in through a route the browser does not record in its history, so Ctrl+Z skipped it and undid the previous edit instead: a word on another line disappeared and the tag stayed put. Same when pasting.
  • Inserting a tag between two words left a double space.
  • A tag typed by hand still showed as {{nombre}}. It now turns into a tag like any other when you leave the editor.
  • Dragging formatted text into the editor smuggled its HTML in. Pasting already stripped it; dropping did not.
  • The Subject line now shows what will go out underneath, with the same tags and the chosen contact's details. Before you only saw raw braces.
  • Emptying a template and saving brought the factory one back, silently, and that was the one being sent. You are now told it cannot be left empty.

Sending email

  • The "no email account" warning could lie in both directions. The header decided whether an account existed by looking at a copy kept inside the database, while sending uses the real credentials, which live encrypted outside it. The two drifted apart: wipe the database and the warning stayed on forever with email working perfectly; and the other way round — restoring a backup, which carries the username but never the password — the app treated as configured an account every send was going to fail on. And it was not just the warning: the Outreach batch send was gated on that same copy, so with the database wiped it refused to send anything — "no email account configured" — while email worked perfectly, and after restoring a backup it started the batch only to fail contact by contact. All of that now asks the server, which is the side holding the credentials, and it also tells apart a third case that did not exist before: an account that is saved but rejected by the provider, with its own warning in the header and, in Settings, a red dot reading "Saved, but the provider rejects it" instead of the green one reassuring you about a password that does not work. The welcome wizard was taking the same wrong path: it counted an account with a saved address but no password as connected, and now only does so when the server confirms it can send.
  • The two emails that ask for money were the only ones not greeting the client by name. The quote and the delivery said “Hi Anke,”; the invoice and the three payment reminders, a bare “Hi,”. And the invoice subject was the only one of the seven carrying no reference at all — “Invoice for Translation Services” — so three invoices to the same client arrived with identical subjects and their mail client stacked them into a single thread, which is the opposite of what chasing an unpaid invoice needs. All four now greet the client by name, and the invoice subject carries its number and the project. If you had already rewritten a template, yours is kept: this only changes the factory defaults.
  • Sending an invoice said “Deliverables sent”. The dialog already adapted everything else — title, icon, button and email body — but the confirmation message had been left out.
  • The delivery and the invoice could go out promising an attachment that was not there. The email delivering the translation says “Please find attached the completed work”, and the invoice one, “Please find attached the invoice”. If no file was added, or if the PDF was removed from the attachment list before hitting send, the email went out anyway: no warning, no way to undo it, and a client reading the promise of a file that was not enclosed. With no attachment at all, sending now stops and says which file is missing.
  • The payment reminder gave the due date in a format the client reads the other way round. These emails always go out in English, and the amount was already formatted for the client, but the date followed the interface language: “€676.00” and “10/8/2026” sat in the same sentence. That date is 10 August to whoever runs the app in Spanish and 8 October to whoever reads the email in English, so the final overdue notice ended up contradicting itself: a due date the client reads as being in the future, in an email chasing them for 39 days of delay. The month is now written out — “August 10, 2026” — which cannot be read two ways in any market. This covers all three reminder stages and the invoice email.
  • An already-saved password looked exactly like a field that never had one. The server never returns the email account password, not even encrypted, so the Settings field showed up empty whether or not an account was connected. Anyone coming back months later had no way to tell if their email was still set up. Now, when there is one, a green dot and “One is already saved” appear next to the label, and the field itself says “Leave blank to keep it unchanged”.
  • The same email could reach the client three times. If the connection dropped right after the message was handed over — the server already had it queued and only the confirmation was lost — the app treated it as failed and sent it again up to three times, then reported an error. In outreach that means the same cold email repeated to a prospect. Only failures known to have happened before delivery are retried now, such as a temporary rejection of the recipient; everything else is reported without sending again.
  • Every refusal from the mail server was announced as "check your app password". An address that does not exist, a message that is too large or one blocked by a spam filter all sent you off to retype a password that was perfectly fine, with no way out: the check in Settings kept saying it was correct. Each case now says what actually happened.
  • A server that stalled halfway could leave the app on "Sending…" for up to half an hour — ten minutes per attempt, and it tried three times — with nothing to click and no way to tell whether the email had gone out. Each stage of the connection now has its own timeout.
  • The subject line could go out with unresolved variables. If it contained "{{idiomas}}" or "{{especialidad}}" — the body template accepts both, and the unresolved-variable warning treated them as fine — the client received the literal braces in the subject line of a cold email. The contact's history even stored the correctly resolved subject, so it did not show up there either.
  • An empty attachment was sent as if nothing were wrong. A 0-byte file — an export that failed halfway, or one the cloud had not finished downloading — was accepted, listed as an attachment, and then silently dropped at send time: the client got the email without the file and the app reported success. It can no longer be added, and if one arrives empty by another route the send stops and names it.
  • Saving the email settings when the file could not be written to disk — no free space, no permissions, or an antivirus locking it — silently shut down the app's internal server: the window stayed open and everything else stopped responding without a single warning. It now explains the problem and the app stays up.
  • A format that cannot be sent is now flagged when you pick the file, not when you send. An .exe or a .docm was accepted as an attachment — the file dialog's filter is only a hint, and picking "All files" got around it — sat in the list like any other, and the rejection only arrived when you pressed Send; in a batch, once per contact. It is now checked when you pick it and when it is saved, with the same rule deliverables already used.
  • The sending warnings that were hardcoded in Spanish now read in the interface language: a malformed recipient address, an attachment that is too large, a format that is not accepted, more than five files, and the send-rate limit. Until now only connection errors with the mail provider were translated.
  • Changing the email account without typing the password said "Settings saved" and changed nothing: the screen showed the new address while emails kept going out from the previous one. Since the password is never pre-filled, all it took was reopening Settings and editing the address. It now says the password is needed to verify the account and leaves the dialog open with everything you typed, instead of reporting as saved what was not.

Other

  • The browser's spellchecker underlined correct Spanish as misspelt. The app declared itself English to the browser — the document language was fixed and nothing ever changed it — even with the interface in Spanish. Since that is what the spellchecker picks its dictionary from, writing an email subject or body, or notes on a contact or a project, got correctly spelt words underlined in red. The declared language now follows the one chosen in the header. A screen reader also stops reading Spanish with English pronunciation.
  • The timer left "0min" entries. Starting and stopping it by mistake — or a double click — created a zero-minute line on the card, with its date and its cross, that only had to be deleted by hand and travelled in the backup too. Under half a minute nothing is stored any more.
  • A file under half a kilobyte showed as "0 KB", which looks like an empty file right before sending it to a client. Bytes are now shown.
  • The hourly rate suggested "e.g. 0.12", which is a per-word example: under the "Rate per hour" label it was proposing twelve cents an hour.
  • The language pair is now suggested when you pick a client, taken from the one that contact already has. It is only a suggestion, and only when the contact holds a recognisable pair: anything already typed is left alone.
  • The trial period is now anchored in the data already saved. It previously relied solely on its own record file, so an installation holding contacts, projects and invoices from weeks earlier could still present itself as brand new. Now, if that record is missing, the start is rebuilt from the oldest entry in the database. Nothing new is stored: only dates that were already there are read.
  • The main currency dropdown came up completely blank. All 159 currencies were there, but every option rendered with no text and no value: the field was reading two properties the list does not have. On top of that, with no currency saved the browser showed the first one on the list — the UAE dirham — as if it had been chosen; the list now opens with an option that says what the app actually does until you pick one: summarise in whichever currency you bill most.
  • “Cancel” in Settings did not revert three fields. The app password, the Stripe key and the licence key are typed outside the settings draft — they are text used to activate or verify something, not a setting that gets saved — so closing with Cancel left them there, still filled in on the next open, as if nothing had been cancelled. The modal now clears them when it opens.
  • Response metrics were stuck at 0 after automatic reply detection was removed.
  • The file types accepted as attachments are the same everywhere in the app, and include the formats used in translation work.
  • Form examples no longer show addresses or numbers that looked like real data already filled in.
  • With Windows in dark mode, the application shell appeared flanked by two almost-black bands. A dark-mode block inherited from the scaffolding template had survived, redefining the background, text and border of an interface that deliberately uses a light palette.
  • The email templates no longer carry the original installation translator's identity anywhere in the installed application. A migration remained with their name, their degree and their professional profiles written in plain text, inside a file that is installed uncompressed.
  • An internal server crash now leaves a record in send.log. This is a separate path from the error screen, which recorded its own failures before and still does: this is about the process that stores your data. That it had died was recorded nowhere at all, and the reason came down to a race: the log is written through a stream that process shutdown does not wait for, so that last line — the one explaining the crash — arrived or not with nothing to guarantee it, and never arrived at all while the file had yet to be created. It is now written straight to the file before exiting, and the application also records that the internal server has terminated, which until now only went to a console the installed version does not have.
  • An unexpected server failure no longer takes the last thing you did down with it. The database saves lazily — changes pile up in memory and reach disk a second later — and closing the application properly forces that save before exiting. Crashing did not: there were two uncaught-exception handlers, and the first killed the process before the second, the only one that saved, ever ran. Any uncaught exception, or any unhandled promise rejection, threw away whatever was pending: the contact you had just edited, the hours you had just logged. All four exit paths now save.
  • Unexpected interface crashes left no trace in send.log. There were two nested safety nets, and the inner one —the one that actually caught every failure, being the closer of the two— only wrote to the browser console: the very file the error screen asks you to attach carried not a line about that crash. Only the outer net remains, and it does record the stack trace.
  • That error screen now appears in the active language. It carried all of its text in Spanish and English at once, one below the other, and was the only screen in the app that did not go through the translation system. On top of that, while no language had been chosen it always fell back to Spanish, even when the system was in English.
  • Every warning the app gives you when something cannot be done now reads in the interface language. Until now a good part of them arrived in Spanish even with the app set to English, because the text was written inside the program and shown as-is. There are about fifty: contacts, jobs, invoices, recurring plans, hours, expenses, glossary, deliverables, Stripe, licence and exchange rates. Several also say more clearly what happened — that another contact already uses that email, how many jobs have to go before one can be deleted, or that an already-invoiced job has its amount frozen into its invoice.

Security

The app's first security review, focused on what can realistically happen to a translator: a bad file you open yourself, and a web page open in your browser while Gestrics is running.

  • Restoring an incomplete backup no longer deletes issued invoices. Restoring a backup made with an older version — one that did not yet save the invoice ledger — emptied that ledger and reported success. And since invoice numbering is derived from it, the next invoice was named 2026-001 again: a number already sent to another client. The app now stops before touching anything, tells you how many issued invoices would be lost and with which numbers, and only continues if you confirm it explicitly.
  • A backup with a tampered invoice ledger is never stored. Ledger entries are hash-chained precisely so that altering one shows; but on restore they were written back as-is, unchecked. A hand-edited backup file could write invented invoices for any amount. The whole chain is now verified before anything is restored, and an entry that does not check out never reaches the disk under any circumstances. If the backup's ledger is damaged, the app tells you and offers to recover everything else - contacts, jobs, invoices - leaving the ledger empty, rather than leaving you unable to restore at all.
  • A restore that fails halfway no longer leaves your data halfway. Previously the tables were emptied and then filled row by row, skipping the ones that failed: the result was "restored" with an error count beside it, and an incomplete database. A restore is now a single operation — all of it or none of it — and if something fails it tells you which row, with your data untouched.
  • The local server only answers requests addressed to 127.0.0.1. Gestrics runs a server on your machine so the app itself can talk to it. Even though it only listened locally, a web page open in your browser could reach it by pointing its own domain at your machine, and read your contacts, invoices and stored keys from there. The app now checks which name it was called by and turns away anything that is not your own.
  • The date of the last licence check is now stored encrypted. The 7-day offline allowance hangs off it, and it sat in plain text inside license-config.json: a date in a JSON file inviting you to change it in a text editor. It is now encrypted like everything else, and a hand-written date is discarded rather than trusted. This is the same rule already applied to the trial record; this file had simply been left out. If the first launch after updating happens offline, one online check is needed to regain the offline allowance.
  • An imported contact can no longer smuggle a formula into your exports. Excel and LibreOffice execute a cell that starts with =, +, - or @. If you imported a contact list from an agency and one of its fields carried a formula, it was stored as-is: exporting your contacts and opening the file ran that formula on your machine. Those cells are now marked as text in CSV and TSV exports. Amounts are left alone, so the CSV for your accountant still adds up, and re-importing one of your own exports into Gestrics gives back the original text.
  • At 14 days the app now really does close. The end of the trial was enforced by the screen alone: behind it the local server kept answering everything, so there was still a way to go on using the app without a licence. It is now closed from the inside too, and the only thing left open is what you need in order to activate. Your data is untouched: it is all still there, and it comes back the moment you enter your key.
  • Starting a fresh data folder no longer grants another trial. The start of the trial is anchored to the oldest trace of your own work, but that was only consulted when the record was missing: starting from scratch and bringing your data over AFTERWARDS gave you fourteen new days losing nothing. It is now always consulted, and the older of the two dates wins. This also fixes the honest case: restoring a backup on a new laptop continues the same trial instead of starting another.

1.0.0 — 2026-08-09

First public release. A desktop CRM for freelance translators, with all data kept on your own machine.

Added

  • Outreach: contacts, email templates, batch sending with rate limits, per-contact status tracking and history.
  • Projects: jobs with word counts, rates, CAT analysis import, time tracking, deliverables and a per-client glossary.
  • Invoicing: invoices with VAT and withholding tax, a purpose-built PDF, a hash-chained ledger compliant with Veri*Factu, rectifications, per-country tax profiles and Stripe payment links.
  • Metrics: income, expenses, response rates and a per-client breakdown.
  • Full backups, plus contact export and import in CSV, TSV, Excel and ODS.
  • SMTP sending with automatic provider detection.
  • Spanish and English.

Historial de cambios

Cambios visibles de Gestrics, versión a versión. Lo que no se nota al usar la aplicación (refactorizaciones, pruebas, ajustes de compilación) no se recoge aquí.

El formato sigue Keep a Changelog y el versionado es semántico.

1.1.2 — 2026-10-18

Añadido

  • La factura nueva propone las condiciones de la anterior al mismo cliente. El diálogo de emisión arrancaba siempre con los impuestos a 0 y el vencimiento a 30 días: a una agencia que paga a 60 había que corregir la fecha en cada factura, y si se olvidaba, el aviso de cobro saltaba con el cliente todavía en plazo. Ahora propone los tipos y el plazo de la última factura a esa empresa (aunque la encargara otra gestora) y lo dice en una línea; solo si se emitió con el perfil fiscal de hoy. Sin factura previa, todo sigue como antes.
  • Los gastos llevan la factura del proveedor. Para la declaración trimestral, el gestor pide de cada factura recibida el proveedor, su identificador fiscal, el número de factura, la base y el impuesto soportado, y la app solo guardaba el total. Cada gasto admite ahora, opcionales, el impuesto incluido (con su nombre del perfil fiscal: IVA, GST…), el proveedor, su identificador fiscal y el número de su factura; al teclearlo se ve la base resultante, y un impuesto igual o mayor que el total no se acepta. La exportación de gastos (CSV y Excel) añade esas columnas con base, impuesto y total por separado. Un gasto sin impuesto apuntado sale con base e impuesto en blanco, no a cero: para uno sin impuesto de verdad, como la cuota de autónomo, se apunta 0.
  • Los clientes, primero al elegir el cliente de un proyecto. El desplegable listaba toda la agenda del contacto más nuevo al más antiguo, con la persona delante: tras importar 300 agencias para prospectar, los dos clientes de verdad quedaban al final, y teclear «Reed» no llevaba a «Tom Reed · Reed Legal». Ahora los clientes (con algún proyecto o marcados como cliente activo) van en su propio grupo arriba, y el resto de contactos debajo; cada grupo por orden alfabético y con la empresa delante.
  • Hora en el plazo de entrega. Las agencias citan la entrega con hora («lunes a las 9:00»), y la app solo guardaba el día: a las 11 de ese lunes seguía diciendo «Vence hoy». El proyecto admite ahora una hora opcional junto a la fecha de entrega (se escribe como venga: «9», «9:00», «17h30»). Pasada esa hora, la ficha, la campana y el calendario la dan por vencida («Venció hoy a las 09:00»), y el calendario la enseña delante del título. Los avisos se ponen al día solos con la aplicación abierta, a esa hora, a medianoche y al volver a la ventana (con el portátil suspendido de noche, la medianoche llegaba tarde): antes solo se calculaban al abrirla. También el aviso de copia de seguridad vieja.
  • Un solo recordatorio para todas las facturas vencidas de un cliente. Las agencias suelen retrasarse con varias a la vez, y la gestora recibía un correo por factura el mismo día. Ahora el recordatorio de una nombra las demás vencidas del mismo cliente, con su importe y vencimiento y el total pendiente, y al enviarlo todas quedan recordadas: la campana ya no pide un correo por cada una. Si alguna lleva la cuenta bancaria anterior, el recordatorio da la nueva aunque la principal ya lleve la actual.
  • Aviso al cobrar IVA a quien no corresponde. Facturar el 21 % por costumbre a una agencia alemana es un error habitual: a una empresa de otro país de la UE se le factura sin IVA, con inversión del sujeto pasivo, y a un cliente de fuera de la UE tampoco se le repercute. El diálogo de emisión lo dice ahora en esos dos casos, con la misma regla que decide la mención de la factura al 0 %; a un particular de la UE (sin identificador fiscal) no avisa, porque ahí sí corresponde.
  • Aviso de copia de seguridad en la campana. Si no hay ninguna copia o la última tiene una semana o más, la campana lo dice («Sin copias de seguridad» / «Última copia hace 12 días») y lleva a Configuración, donde se descarga. Antes solo se veía dentro de Configuración, que en el día a día no se abre, y en la aplicación viven facturas que hay que conservar.
  • Email de facturación en la ficha del contacto. Muchas agencias piden que las facturas vayan a su contabilidad y no a la gestora que encarga. Si el contacto tiene «Email de facturación», la factura y los recordatorios de cobro salen ahí; presupuestos y entregas siguen yendo a su email de siempre. Es opcional, se valida como una sola dirección, viaja en la copia de seguridad y en la exportación e importación de contactos.
  • Aviso del BIC/SWIFT al facturar a un cliente de fuera de la UE. Un cliente de Estados Unidos o del Reino Unido paga con una transferencia internacional, y para eso necesita el BIC además del IBAN. La factura ya lo imprimía si estaba en el perfil; ahora, si falta, el diálogo de emisión lo dice. No avisa si el cliente es del mismo país que el traductor, porque ahí la transferencia es nacional.
  • Restaurar una copia desde la bienvenida. Quien estrena ordenador ya no tiene que rellenar el perfil y el correo para que la restauración los sobrescriba después: la primera pantalla del asistente ofrece «¿Vienes de otro ordenador? Restaurar una copia», y al terminar la aplicación arranca con sus datos, sin volver al asistente.
  • Precio cerrado. Nuevo tipo de proyecto para lo que no se cobra por palabras ni por horas: una traducción jurada por documento, un mínimo, un encargo a tanto alzado. Se escribe el precio y el presupuesto y la factura lo muestran como una sola línea («Translation EN-ES — fixed price», 1 × precio), sin palabras ni tarifa por palabra.
  • Aviso de tarifa por palabra muy alta. Escribir 0,85 en vez de 0,085 multiplicaba el importe por diez sin que nada lo dijera. A partir de 0,50 por palabra en euros, dólares, libras y divisas parecidas, el formulario avisa en una línea («revisa los decimales»); no bloquea.
  • Exportación contable también en Excel. El CSV es el formato que piden Holded, QuickBooks o Xero, pero abierto con doble clic en un Excel en español lo metía todo en la primera columna, con las tildes rotas y sin un importe que se pudiera sumar. Facturas y gastos se exportan ahora además en .xlsx, con los importes como números.
  • Aviso al emitir una factura sin IVA a un cliente en España. El diálogo abre con el impuesto a 0, que es lo que toca para un cliente extranjero, y una factura a una empresa española se podía emitir así sin que nada lo advirtiera. Es un aviso, no un bloqueo: hay excepciones que la aplicación no puede saber.
  • Aviso al emitir sin IVA a un cliente de tu propio país sin haber escrito el motivo en la nota de IVA del perfil (fuera de España, donde el aviso es el de arriba). Es el caso de quien está exento, como el microempresario francés en franquicia: la factura tiene que decir por qué va sin IVA.
  • El 7 % de IRPF, entre los tipos de un clic, junto al 0 % y el 15 %: es el de quien empieza su actividad, y hasta ahora había que teclearlo.
  • Al marcar «Cobrado» se elige el día del cobro, con hoy propuesto. Antes se guardaba siempre la fecha del clic, y como se marca cuando uno se acuerda, el tiempo medio de cobro de Métricas salía falseado. No admite fechas futuras.
  • Al crear el primer proyecto sin tener clientes, el formulario dice dónde darlos de alta. Antes el desplegable salía vacío sin más.
  • La referencia de pedido (PO) del proyecto sale en la factura, debajo del vencimiento. Las agencias la piden para casar la factura con su pedido.
  • Aviso al enviar el presupuesto de un proyecto por horas sin horas registradas, que saldría a 0,00.
  • Rectificar el importe de una factura, o anularla. Hasta ahora una factura emitida solo admitía corregir el IVA y la retención: una factura con 5.000 palabras en vez de 3.000, un descuento acordado después o un encargo cancelado no tenían salida. Al editar la factura se pueden corregir ahora las palabras, las horas, la tarifa o el precio, o marcar «Anular la factura» (base a 0). Sale una rectificativa R- con la línea corregida, el motivo y el importe rectificado, y la ficha del proyecto se pone al día. Una factura anulada ya no aparece como vencida.
  • Horas estimadas en los proyectos por horas. Las horas solo salían del control de tiempo, así que un trabajo por horas no se podía presupuestar antes de empezar: el presupuesto salía con 0 h y 0,00. Ahora el proyecto admite unas horas estimadas, que son las que cotizan el presupuesto, su correo y su PDF («Estimated hours: 10.00 h», €500.00). La factura sigue cobrando las horas registradas de verdad.

Cambiado

  • Los PDF se llaman en inglés, como el documento: la factura, «Invoice-2026-001.pdf»; la rectificativa, «Rectificative-Invoice-R-2026-001.pdf»; el presupuesto, «Quote-12.pdf». Se llamaban «Factura-…» y «presupuesto-…» también en el adjunto que recibe el cliente.
  • El diálogo de factura ya no ofrece retención en Francia, donde una factura de autónomo no la lleva. Solo se quita en los países comprobados (de momento, Francia); en el resto el campo sigue, porque que no esté estudiado no quiere decir que no exista. Una factura que ya lleve retención la sigue mostrando al corregirla.
  • El campo de retención lleva el nombre que tiene en tu país: con perfil México dice «ISR (%)», como ya decían el resumen y la ayuda, en vez de un genérico «Retención (%)».
  • El NIF del perfil y el identificador fiscal de los clientes se escriben en mayúsculas: un «12345678-z» tecleado así salía igual en la factura.
  • Los países de la ficha del contacto, en el idioma de la aplicación y ordenados en él: con la aplicación en español había que buscar «Alemania» como «Germany». Lo que se guarda —y sale en la factura— sigue siendo el nombre en inglés.

Corregido

  • Ninguna clave de licencia comprada se podía activar. La limpieza de 1.1.2 que quita el punto o las comillas arrastrados al copiar la clave del correo quitaba también el «==» con el que terminan todas, y la aplicación la daba por inexistente. Ahora ese final se conserva, y la puntuación arrastrada se sigue quitando.
  • En Mac, las facturas a clientes japoneses, chinos o indios ya no salen con huecos en el nombre. Para esos alfabetos el PDF usa una fuente del sistema, y en macOS la app buscaba unas que no existen con ese nombre: el nombre del cliente, dato obligatorio de la factura, salía en blanco o a medias. Comprobado en un Mac de GitHub con clientes en japonés, chino, coreano, hindi y tailandés. En Windows no cambia nada.
  • La factura a un cliente de fuera de la UE sin identificador fiscal citaba el artículo equivocado. Para cualquier cliente de fuera, la mención de «no sujeta» citaba el art. 69.Uno.1º de la Ley del IVA, que solo vale si el destinatario es empresario o profesional; a un particular se le aplica el 69.Dos.f, el que nombra la traducción. La aplicación no sabe si el cliente es empresa o particular, así que ahora, sin identificador fiscal del cliente, cita el art. 69 a secas, cierto en los dos casos. Con identificador sigue citando el 69.Uno.1º.
  • Un proyecto creado para el cliente equivocado no se podía corregir. Al editarlo no había campo de cliente, y la única salida era borrarlo, con su tiempo registrado y sus entregables. Ahora el cliente se cambia al editar mientras el proyecto no tenga factura; con factura no, porque el cliente queda en ella: se anula con una rectificativa y se factura en otro proyecto.
  • El presupuesto nombraba los impuestos a fuego. Su nota decía «Excludes VAT/withholding tax» para todos: al traductor indio (que cobra GST) y al francés (que no tiene retención) también. Ahora usa los nombres de su país, como la factura: «Excludes VAT/IRPF» en España, «Excludes VAT» en Francia, «Excludes GST» en la India.
  • El buscador de proyectos no encontraba por par de idiomas ni por tipo de contenido. Buscar «DE-ES» o «técnico» para repasar un año de trabajo no daba nada. Ahora sí, y el tipo también por el nombre que enseña la interfaz en inglés («Technical»).
  • Buscar contactos por país, especialidad o par de idiomas no encontraba nada. El país se guarda en inglés aunque la ficha lo enseñe en español, así que «alemania» no daba resultados; y la especialidad («legal», «médico») y el par de idiomas («DE-ES») no se buscaban. Ahora sí, y como el envío en lote trabaja sobre la lista filtrada, sirve para mandar una campaña solo a las agencias de un país o de una especialidad.
  • Los gastos no tenían dónde poner lo más habitual, ni se sabía a qué proyecto iban. Pagar a un colega o a un revisor, la gestoría, el teléfono y las asociaciones profesionales acababan en «Software» o en «Otros»; ahora tienen su categoría. Y al vincular un gasto a un proyecto, el desplegable, la tabla y el CSV para la gestoría enseñaban solo el título, que se repite («Manual de usuario» de dos clientes): ahora dicen «título · cliente», con los archivados al final y marcados.
  • Tras cambiar de banco, una factura pendiente mandaba a pagar a la cuenta vieja. La factura conserva el IBAN con el que se emitió, como el resto de sus datos, pero al reenviarla o al recordar su cobro el cliente pagaba con esa cuenta, quizá ya cerrada. Ahora, si la factura está sin cobrar y su IBAN no es el del perfil, el correo de la factura y el del recordatorio añaden una línea con los datos bancarios nuevos, y el diálogo lo avisa antes de enviar.
  • Tras cambiar de país fiscal, las facturas anteriores se enseñaban con el perfil nuevo. Quien se muda de España a Francia veía una factura española con «Retención» en vez de IRPF, y al rectificarla el diálogo ofrecía los tipos de IVA franceses (0 y 20 %) en vez de los españoles. El PDF ya era el correcto; ahora la ficha y el diálogo de rectificar usan también el país en que se emitió cada factura.
  • Un intervalo de envío corto hacía el lote más lento, no más rápido. Configuración dejaba poner 3 segundos entre correos, pero la aplicación solo manda 12 por minuto: tras el 12.º el lote se paraba 65 segundos, y la duración anunciada no contaba esas esperas. El mínimo es ahora 5 segundos, y un valor más bajo guardado antes se sube solo.
  • En un día con muchas entregas, el calendario escondía las demás. Solo se veían tres, y «+5 más» era un texto que no hacía nada: las otras no se podían ver ni abrir desde el calendario. Ahora «+5 más» despliega el día entero (y «Ver menos» lo recoge), enseña sus títulos al pasar el ratón, y las tres que se ven primero son las más urgentes.
  • Importar una hoja grande de contactos se cortaba a mitad. Los contactos se guardaban de uno en uno, y el límite de peticiones de la aplicación (300 por minuto) cortaba una hoja de 500 agencias hacia la fila 290: el resto salía como «no se pudieron guardar» sin más explicación. Ahora la hoja entera va de una vez, con las mismas comprobaciones que el alta de un contacto: 500 contactos se importan en un par de segundos.
  • Dos cronómetros podían contar a la vez. Arrancar el de un proyecto sin parar el de otro dejaba los dos en marcha, y la misma hora se cobraba a dos clientes. Ahora «Empezar» avisa del que sigue en marcha y lo para antes de empezar; si llevaba más de 8 horas, pregunta antes si se registran o se descartan, como al pararlo. Tampoco se puede facturar un proyecto con su cronómetro en marcha: ese tiempo no entraba en la factura, y el cronómetro ya no se podía parar ni borrar, lo que además impedía empezar el de cualquier otro proyecto. Uno que hubiera quedado así se puede descartar desde la ficha.
  • Dos textos de la interfaz en inglés se entendían mal. El aviso de la campana para los trabajos entregados sin marcar decía «mark them as Delivered», como si se marcaran los entregables y no el proyecto; ahora el grupo se llama «Delivered, not marked» («Entregados sin marcar» en español), corto como los demás. Y el aviso de datos que faltan del cliente llamaba «card» a su ficha; ahora dice «details», como el resto.
  • «Nuevo proyecto» con la edición de otro abierta lo duplicaba. El formulario «nuevo» salía con los datos del proyecto que se estaba editando, y al guardarlo se creaba una copia. Ahora sale vacío.
  • Un prospecto convertido en cliente podía recibir un correo de seguimiento. Al crear su primer proyecto el contacto pasa a «Cliente activo», pero Prospección no se enteraba hasta reiniciar: seguía «Enviado» y en «Necesita seguimiento». Peor, el siguiente envío del proyecto (la entrega) le devolvía el «Enviado» en la base, y «Enviar seguimientos» acababa mandándole un «just following up» a un cliente con trabajo entregado. Ahora el cambio se ve en el acto y se conserva.
  • Métricas contaba cada gestora de una agencia como un cliente distinto. Con dos fichas de la misma agencia, salían «Clientes 2», lo cobrado partido en dos barras y los días de cobro en dos filas. Ahora el cliente es la empresa (sin distinguir mayúsculas ni tildes) y, si no hay empresa, la persona. La lista de Proyectos sigue agrupada por persona, que es quien encarga.
  • Una rectificativa podía salir ya vencida. Se emite con fecha de hoy, pero heredaba el vencimiento de la factura original: rectificar en enero una factura que vencía en diciembre producía un documento con fecha del 4 de enero que vencía el 20 de diciembre, y la campana pedía el recordatorio de cobro en el acto. Ahora, si la factura está sin cobrar, el diálogo pide un vencimiento a partir de hoy, como al emitir; y el aviso de términos de pago cuenta los días desde la fecha de la rectificativa.
  • Buscar una factura ya cobrada daba «Sin resultados». Lo cobrado se archiva, y es justo por lo que pregunta meses después el cliente o la gestoría; el buscador de proyectos dejaba fuera los archivados aunque se escribiera su número. Tampoco encontraba una rectificativa por su número R-, que es el que tiene el cliente. Ahora la búsqueda alcanza a los archivados (con su icono de archivo) y a los números R-; sin buscar, la lista sigue sin ellos.
  • Salir sin guardar descartaba los cambios sin avisar, en tres sitios: al cambiar de plantilla de correo (la posdata que se estaba escribiendo desaparecía), al cerrar el perfil del traductor con Escape o pulsando fuera (un IBAN o un teléfono recién tecleados se perdían) y al pulsar otro proyecto de la lista con el formulario de proyecto abierto. Ahora, con cambios sin guardar, se pregunta antes de salir; sin cambios, se sale como siempre.
  • El glosario de un cliente admitía el mismo término dos veces con traducciones distintas («lease → arrendamiento» y, semanas después, «Lease → alquiler»). Ahora, si el término de origen ya está (sin distinguir mayúsculas ni tildes), se avisa con su traducción y se pregunta antes de añadirlo otra vez: un término con dos sentidos según el contexto se puede guardar dos veces a propósito.
  • La factura podía contradecirse con el plazo de pago. Los términos por defecto decían «within 30 days», y quien ponía el vencimiento a 60 días para una agencia emitía una factura con «Due» a 60 días arriba y «30 days» abajo. Los términos por defecto ya no llevan plazo propio («by the due date shown above»), y si los tuyos dicen un número de días que no coincide con el vencimiento elegido, el diálogo de la factura lo avisa.
  • Las horas registradas por minutos salían ilegibles en la factura y en el presupuesto. 80 minutos (1,333… horas) se imprimían como «1.3,333,333,333,333,333». Ahora salen con hasta cuatro decimales, «1.3333», para que la línea cuadre: 1.3333 × 40 € = 53,33 €, el importe que figura al lado (con dos decimales, 1.33 × 40 daría 53,20). El diálogo de rectificar enseña las horas igual.
  • Cambiar el tipo de proyecto dejaba una tarifa que ya no valía. Al pasar un proyecto por palabras a precio cerrado, el campo «Precio» se quedaba con la tarifa por palabra (0,10) y la factura salía por 0,10; al pasar a por horas, 0,10 €/palabra quedaba como 0,10 €/hora. Ahora, si cambia la unidad de la tarifa, el campo se vacía; entre tipos de la misma unidad se conserva.
  • Un encargo archivado seguía saliendo como retrasado en su ficha y en el calendario («Lleva 2 días de retraso»), aunque la campana ya no lo avisaba. Archivar un encargo cancelado lo saca de todos los avisos de entrega.
  • Borrar un proyecto también borra su tiempo registrado, y la confirmación no lo decía. Ahora lo dice.
  • La factura escribía los impuestos de dos maneras: «VAT 21.0%» con IVA y «VAT (0%)» sin él, e «IRPF -15.0%». Ahora siempre entre paréntesis y sin decimales de relleno, como en el diálogo de la factura: «VAT (21%)», «IRPF (-15%)».
  • El aviso de datos que faltan en la ficha del cliente se leía mal («no tiene Identificador fiscal, Dirección guardados»). Ahora: «Falta en la ficha de este cliente: identificador fiscal y dirección».
  • Un trabajo ya entregado al cliente avisaba de «entrega vencida». Enviar los entregables no cambia el estado (el carril se marca a mano), así que, pasado el plazo, el proyecto seguía «En curso» y salía como retrasado en la campana, en la ficha y en el calendario. Ahora, con los entregables enviados, el aviso dice «Entregables enviados: márcalos como Entregado».
  • Volver a añadir un archivo con el mismo nombre lo duplicaba. Al entregar, la versión corregida de «Novela_ES.docx» se sumaba a la anterior y el cliente recibía las dos; en los adjuntos de Prospección, el CV actualizado se sumaba al viejo y cada correo en frío salía con los dos. Ahora el archivo nuevo sustituye al del mismo nombre, y se avisa en una línea. Al reenviar una versión corregida de un trabajo ya entregado, la vieja se retira también de los entregables guardados: si no, la siguiente entrega volvía a cargar las dos.
  • Una factura emitida antes del plazo de entrega decía que el servicio se prestaba después de expedirla. La fecha de operación salía de la fecha de entrega del proyecto, que es el plazo: entregado y facturado el día 6 con plazo el 20, la factura llevaba «Service date 20». Ahora solo se pone cuando es anterior a la fecha de la factura.
  • Al apuntar varios gastos seguidos, la fecha volvía a hoy tras cada uno. Quien apuntaba en octubre los tickets de septiembre dejaba el segundo y los siguientes en octubre, y en otro trimestre. Ahora se propone la fecha del gasto anterior. Además, la fecha de hoy que proponía el formulario se calculaba una sola vez y con la aplicación abierta varios días se quedaba atrás.
  • La exportación contable ordenaba mal las facturas del mismo día (la 2026-002 antes que la 2026-001). Ahora, a igual fecha, por número.
  • Una PO que la agencia manda después de recibir la factura ya se puede añadir. La factura guardaba la PO del momento de emitirla, y si no la había, no había forma de ponerla. Ahora, al cambiar la PO del proyecto, cambia también en la factura emitida, sin rectificativa: es la referencia del cliente, no un dato fiscal. El formulario avisa de que hay que reenviarla. El título, los importes y el cliente de la factura siguen sin cambiar.
  • La exportación contable (CSV y Excel) ponía al cliente con los datos de su ficha actual, no con los de la factura: si cambiaba de razón social, sus facturas antiguas salían con el nombre nuevo. Ahora sale como figura en cada factura.
  • Al reabrir la aplicación, una factura sin IVA podía salir con la exención francesa («VAT not applicable — French Tax Code, Article 293 B») aunque el traductor fuera español. Le pasaba a quien no había escrito nota de IVA en su perfil y ya tenía algún contacto, y si además había omitido el perfil en el asistente, su país fiscal pasaba a ser Francia. Eran dos migraciones pensadas para una sola instalación antigua; se han retirado, y los ajustes ya guardados no cambian.
  • Generar una factura recurrente no decía de qué mes era. Con meses atrasados no se sabía cuál salía; ahora el diálogo lo dice («la factura recurrente de octubre de 2026»).
  • Un presupuesto reenviado tras cambiarlo llegaba con la fecha y la caducidad del primero, así que el revisado al mes podía llegar ya caducado, y el cliente tenía dos «Quote-1.pdf» con importes distintos sin nada que dijera cuál valía. Ahora el reenvío sale como «REVISED QUOTE», con fecha de hoy, en un archivo «Quote-1-rev1.pdf», y el correo lo titula «Revised quote» y dice a qué presupuesto sustituye. Reenviarlo sin cambios («no me ha llegado») sigue mandando el mismo presupuesto.
  • El correo del presupuesto no decía la fecha de entrega, que sí iba en el PDF. Ahora lleva «Estimated delivery» cuando el proyecto tiene fecha.
  • Pegar un email copiado de Outlook o Gmail («Anna Weber <anna@agencia.de>», o con «mailto:») dejaba el contacto sin poder guardarse, y al importar una lista se descartaba la fila. Ahora se queda la dirección.
  • Enviar los seguimientos sin asunto decía «El asunto es obligatorio» con un asunto escrito a la vista: el que faltaba era el de la plantilla de seguimiento, que no estaba abierta. Ahora el aviso dice qué plantilla es. En el envío individual, además, el aviso sale antes de pedir confirmación y no después.
  • «Enviar ahora» a un contacto al que ya se escribió preguntaba lo mismo que con uno nuevo. Ahora el diálogo dice cuándo se le escribió.
  • El presupuesto que recibía el cliente redondeaba la tarifa. Una tarifa de 0,085 €/palabra salía como «0.09 EUR/word» junto al total calculado con 0,085, así que 12.500 palabras × 0,09 no daba los 1.062,50 € de la línea de abajo y el presupuesto parecía tener un error. Ahora la tarifa se escribe con los decimales que tiene (hasta cuatro), en el correo, en la ficha del proyecto y en Métricas.
  • El par de idiomas de un proyecto nuevo venía relleno con «EN-ES». Quien trabaja con otro par hacía clic y tecleaba el suyo, y el proyecto se guardaba como «EN-ESDE-ES», que es como salía después en el presupuesto y en la factura. Ahora el campo empieza vacío, con ejemplos.
  • Al elegir cliente se propone su par de idiomas también si está escrito con nombres, como sugiere la propia ficha del contacto («Alemán ↔ Español»). Antes solo se reconocían códigos («DE→ES»).
  • Importar contactos desde un CSV guardado con Excel en español o en francés destrozaba las tildes: «Inés Peña» llegaba como «In�s Pe�a» y la columna «País» no se reconocía. Ese CSV, el que Excel guarda por defecto, va en otra codificación; ahora se detecta. Afecta también a los análisis CAT en CSV.
  • El país de un contacto importado se guarda como lo guarda la ficha. Una hoja con «España» o «Francia» dejaba el nombre en español, y la factura, que va en inglés, decía «España». Un contacto que ya lo tuviera así se corrige al volver a guardarlo.
  • El correo de una factura rectificada citaba el número de la original. El PDF adjunto era la rectificativa R-AAAA-NNN, pero el asunto decía «Invoice 2026-002». Ahora el correo de la factura y los recordatorios de cobro citan la rectificativa.
  • En un proyecto por horas, el formulario decía «Palabras origen» encima de las horas registradas.
  • Sin enviar la factura desde la aplicación no se podía marcar «Facturado» ni «Cobrado». Quien manda el PDF desde su propio correo —y sin cuenta conectada, todo el mundo— se quedaba en «Entregado». Ahora basta con haber emitido la factura; después «Cobrado» queda pendiente hasta que lo marques al recibir el pago.
  • Al abrir la aplicación, la campana no avisaba de las facturas vencidas. Decía «Sin avisos pendientes» hasta que se pasaba por Proyectos, aunque una factura llevara semanas vencida. Ahora avisa desde el arranque.
  • Los clientes de siempre contaban como respuestas a la prospección. Al crearle un proyecto, un cliente pasa a «Cliente activo», y la cabecera de Prospección lo sumaba como respuesta aunque nunca le hubieras escrito desde la aplicación: con solo clientes dados de alta salía «Enviados 0 · Tasa 100 %». Ahora solo cuentan los contactos a los que se escribió.
  • Los adjuntos con tilde en el nombre llegaban con el nombre roto. Un «CV_Lucía.pdf» le llegaba a la agencia como «CV_Lucía.pdf». Pasaba con cualquier tilde, eñe o cedilla en el nombre del archivo.
  • Importar contactos descartaba la fila con dos correos en la misma celda («jobs@agencia.com; vendor@agencia.com», lo normal en listas de agencias), sin decir cuál. Ahora se importa con la primera dirección y las demás quedan en las notas del contacto. Nunca se envía a más de una.
  • La confirmación del envío en lote daba una duración rara: «~0 min» para un correo y «~1 min» para tres que tardan 16 s. Ahora da segundos cuando es menos de un minuto, y con un solo correo dice solo eso.
  • El tamaño de los adjuntos de Prospección salía con punto decimal en español («0.20 MB»), y «0.00 MB» para archivos pequeños. Ahora va con el formato del idioma y en B o KB cuando toca.
  • Un cronómetro olvidado en marcha registraba todas las horas de golpe al pararlo al día siguiente, y esas horas pasan a la factura. Ahora, a partir de 8 horas, pregunta antes de registrarlas y ofrece descartarlo para añadir el tiempo real a mano.
  • El enlace de pago no iba en el correo de la factura. Se generaba para mandárselo al cliente, pero había que copiarlo y pegarlo a mano. Ahora, si la factura tiene un enlace vigente, el correo de la factura y los recordatorios de cobro lo incluyen en una línea propia. Si la factura se ha rectificado o ya está cobrada, el enlace está cerrado y no se manda.
  • El enlace de pago admitía pagar la misma factura dos veces. Seguía activo después del pago hasta que se marcaba Cobrado a mano, así que el cliente que volvía a abrir el correo podía pagar de nuevo. Ahora cada enlace admite un solo pago y Stripe lo cierra en cuanto se completa. Afecta a los enlaces generados desde ahora; los anteriores se cierran al marcar Cobrado.
  • Con una clave de Stripe de prueba, Configuración decía solo «Conectado con Stripe». Ahora dice que está en modo de prueba y que los clientes no podrán pagar.
  • La clave de licencia copiada del correo con el punto final se daba por inexistente. Ahora se quitan de los extremos el punto, las comillas o los paréntesis que se arrastran al copiarla de una frase.
  • La copia de seguridad se descargaba como «outreach-backup-…», el nombre antiguo. Ahora es «gestrics-backup-…». Las copias viejas se siguen pudiendo restaurar.
  • Cambiar el título o la PO de un proyecto ya facturado cambiaba la factura emitida. Al volver a descargar el PDF salían el título y la PO nuevos, no los que recibió el cliente. Ahora se guardan al emitir, como el resto de los datos de la factura.
  • Si la prueba gratuita se acababa con la aplicación abierta, la franja seguía diciendo «quedan 14 días» y cada acción fallaba con un error suelto, sin la pantalla para activar la licencia hasta reiniciar. Ahora aparece en cuanto se intenta algo, y la cuenta de días se actualiza sola.
  • Borrar un contacto con facturas mandaba a un callejón sin salida. El aviso decía que se borraran antes sus proyectos, pero un proyecto facturado no se puede borrar. Ahora dice lo que pasa: tiene facturas emitidas, que deben conservarse, y no se puede eliminar.
  • «Importados 1 contactos» ahora dice «Importado 1 contacto».
  • En el glosario del cliente, pinchar en un campo no hacía nada. Los campos estaban inertes hasta pulsar «+». Ahora pinchar en cualquiera de ellos (o empezar a escribir) abre la fila para añadir el término.
  • Los correos al cliente podían salir sin firma. El nombre de la firma solo lo ponía el paso del nombre del asistente; quien se lo saltaba y escribía su nombre después en el perfil mandaba presupuestos, facturas y recordatorios acabados en «Best regards,» sin más. Ahora, sin remitente, firma el nombre del perfil.
  • Se podía emitir una factura con el vencimiento anterior a la fecha de emisión. Bastaba con equivocarse de mes en el calendario: la factura salía ya vencida y el aviso de cobro saltaba enseguida. Ahora el botón de generar se desactiva y lo dice en una línea. Hoy sí vale (pago al contado).
  • Enviar una factura sin cuenta de correo avisaba de un «Error al enviar los entregables». Ahora dice «Error al enviar la factura».
  • «1 facturas exportadas», «1 gastos exportados», «Quedan 1 meses por generar» y, al importar contactos, «1 duplicados (ya existentes)». Ahora en singular.
  • Los importes del PDF de factura y presupuesto no seguían el formato inglés del resto del documento. Salían sin separador de miles y con el símbolo detrás («1062.50 €», «320.00 £»), mientras que el correo que los acompaña decía «€1,062.50». Ahora los PDF usan el mismo formato que el correo: «€1,062.50», «£320.00», «¥12,000».
  • Las tarifas medias de Métricas contaban la cuota de los planes recurrentes como si fuera una tarifa por palabra, y la media de ese cliente salía disparada. Ahora quedan fuera, igual que el precio cerrado.
  • Buscar «2026-007» en Proyectos no encontraba nada. El buscador miraba solo el título y el cliente, y el número de factura o la PO son justo lo que citan el cliente y la gestoría. Ahora busca también por los dos.
  • Con dos rectificaciones de la misma factura, la exportación contable perdía la primera, y cada rectificativa se comparaba con la factura original: corregir 450 € a 270 € y luego anular daba -190,80 € y -477,00 €, una rebaja contada dos veces. Ahora salen todas en la exportación, y cada una rectifica la anterior («Rectifies invoice R-2026-001») con su diferencia: -190,80 € y -286,20 €, que suman la rebaja real.
  • Se podía guardar un proyecto con la entrega anterior a la recepción (equivocarse de mes en el calendario), y salía con la entrega vencida desde el primer día. Ahora no se puede guardar y lo dice en una línea.
  • Editar un proyecto sin fecha de recepción le ponía la de hoy al guardar, aunque nadie la hubiera escrito. Ahora se queda vacía; en un proyecto nuevo se sigue proponiendo hoy.
  • Al pasar un proyecto de precio cerrado a traducción por palabras se quedaba «1 palabra» a la tarifa del precio (1 × 30 €/palabra). Ahora se vacían las palabras y la tarifa.
  • El título de las facturas de un plan recurrente llevaba el mes en el idioma de la interfaz («Monthly translation retainer — octubre 2026») en un documento en inglés. Ahora va siempre en inglés («October 2026»). Las facturas ya emitidas conservan su título.
  • Elegir «Cobrado» en el estado del formulario de edición dejaba el proyecto cobrado sin fecha de cobro, y entonces Métricas no lo contaba como cobrado y la exportación contable lo daba por pendiente. Ahora abre el mismo diálogo de la fecha de cobro que el paso «Cobrado».
  • Rectificar una factura ya cobrada no decía nada de la diferencia. Ahora el diálogo avisa en una línea si hay que devolver dinero al cliente o si el cliente debe más.
  • La tarifa del PDF no coincidía con la de la aplicación. El presupuesto y la factura la escribían siempre con cuatro decimales («€0.0700») mientras la ficha del proyecto decía «0,07 EUR/pal». Ahora el PDF usa la misma regla que la aplicación —los decimales de la divisa y hasta cuatro, sin ceros de relleno—: «€0.07», «€0.085», y «€0.015» en una categoría CAT.
  • La tasa de respuesta de Prospección salía con punto en español («0.0%»). Ahora va con el formato del idioma: «0,0 %».
  • Una traducción de más de 15 MB solo decía «El archivo supera el límite de 15 MB», sin decir cuál si se elegían varios ni qué hacer. Ahora nombra el archivo y propone enviar un enlace de descarga en el mensaje.
  • El correo del presupuesto de un proyecto con análisis CAT daba una tarifa media («Rate: 0.0755 EUR/word», importe ÷ palabras) que no salía en ningún otro sitio y no cuadraba con el total. Ahora escribe el desglose, una línea por categoría con las mismas etiquetas y cifras que el PDF adjunto («No Match: 3,000 words × 0.10 EUR/word = €300.00»).
  • El correo de una factura rectificada no decía que sustituye a otra. Llevaba adjunta la rectificativa pero el texto era el de una factura nueva, y el cliente, que ya tenía la original, podía pagar las dos. Ahora añade, tras el párrafo de la factura: «This corrective invoice R-2026-001 replaces invoice 2026-001; please disregard the earlier one.»
  • Un proyecto de revisión o post-edición enseñaba la tarifa base en la ficha (0,10 EUR/pal con 2.000 palabras y un importe de 100 €, que no cuadra) y nada decía que era una revisión; el correo del presupuesto lo llamaba «per CAT analysis». Ahora la ficha muestra el servicio y la tarifa que se cobra (0,05 EUR/pal), la misma del correo y del PDF, y las tarifas medias de Métricas cuentan esa y no la base.
  • Cambiar el email de un cliente lo devolvía a «Pendiente» y borraba su historial, como si fuera un contacto nuevo. Cuando una agencia cambia de gestor, el siguiente «Enviar a pendientes» le mandaba al propio cliente el correo de prospección. Ahora, con un cliente activo, solo cambia el email; con un prospecto sigue preguntando como antes.
  • Deshacer un «Cobrado» marcado por error dejaba la factura cobrada. Al volver a «Facturado» desde el formulario, la factura conservaba su fecha de cobro: la exportación contable la daba por cobrada y nunca avisaba de vencimiento. Ahora se quita la fecha de cobro.

1.1.1 — 2026-10-03

Añadido

  • Los términos de pago de la factura se escriben una vez y salen en el PDF. El diálogo de emisión tenía un campo «Notas en factura (opcional)» que arrancaba vacío, con una pista gris, y cuyo texto se imprimía al final del documento bajo un título «Notes» —lejos del bloque «Payment terms», donde salía un «Bank transfer» fijo que podía contradecirlo—. Ahora hay un campo Términos de pago en el perfil del traductor, con un texto de partida que se puede cambiar («Payment by bank transfer within 30 days of the invoice date. Please quote the invoice number as the payment reference.»); cada factura nueva arranca con él y se puede ajustar solo para esa factura; y el PDF lo imprime donde corresponde, justo bajo «Payment terms» y encima del IBAN. Si no escribes ninguno, la factura sale igual que antes. Va en inglés porque el PDF de la factura está entero en inglés.
  • El análisis de memoQ se importa, en los cuatro formatos en que memoQ lo exporta. «Importar análisis CAT» lee ahora lo que sale del botón Export de sus Estadísticas: el HTML y los tres CSV —el que refleja los resultados en pantalla, el de una fila por archivo compatible con Trados y el de una fila por archivo con toda la información—. Antes, su CSV se podía elegir pero caía entero en una sola columna —memoQ nunca separa con comas—, y su HTML se rechazaba con un «esto no lo reconozco como informe de Trados». Las filas llegan ya asignadas a su categoría —101 % y las pretraducidas como contexto, las repeticiones, el 100 %, cada banda y las que no tienen coincidencia—, y «Fragments» se enseña sin asignar, como «Bloqueado» en Trados: que eso se cobre o no lo decide cada cliente. Si el archivo trae varios análisis seguidos, se importa el primero y la ventana lo dice; si trae varios archivos, se suman, sin contar dos veces la fila de totales. Comprobado con el mismo análisis exportado en los cuatro formatos: los cuatro dan 249 palabras y el mismo reparto, y de ahí salen 18,10 € a 0,09 €/palabra, tanto en pantalla como en el presupuesto en PDF.
  • El análisis de Wordfast Pro también se importa, en los cuatro formatos que usa un traductor. «Importar análisis CAT» lee lo que saca su «Export report»: su CSV, el CSV compatible con Trados, el HTML y el XLS. Las filas llegan ya asignadas —contexto, repeticiones, 100 %, cada banda y las que no tienen coincidencia—, y los segmentos «Ignored» se enseñan sin asignar, como «Bloqueado» en Trados. Si el informe trae varios archivos, se suman, y su tabla de totales no se cuenta además de ellos. Wordfast escribe cinco formatos más, pensados para alimentar a otros programas: algunos ni siquiera traen las repeticiones o las palabras nuevas, así que no se reconocen y el archivo sigue al importador genérico, donde se eligen las columnas a mano. Comprobado con informes generados por el propio Wordfast: los cuatro formatos dan las mismas 311 palabras y el mismo reparto, y de ahí 22,09 € a 0,09 €/palabra, tanto en pantalla como en el presupuesto en PDF.

Cambiado

  • Guardar y cancelar el alta de un contacto, siempre a la vista. El formulario tiene trece campos en un panel de 340 px, así que sus dos botones quedaban al final de un desplazamiento largo: para guardar —o para salir sin guardar— había que bajar hasta el fondo. Ahora van pegados abajo del panel, con los campos pasando por debajo.
  • El carril de estados lo marcas tú, paso a paso. Emitir la factura ponía el proyecto en «Facturado» sola, y el carril pasaba a pedir el clic en «Cobrado»: invitaba a dar por pagada una factura recién creada, a veces ni enviada. Ahora el recorrido es el que de verdad haces: mandas la traducción y pulsas «Entregado»; el paso pendiente pasa a «Facturado», punteado pero sin poder pulsarse mientras el cliente no tenga la factura; creas la factura y se la mandas con «Enviar», y entonces sí se puede pulsar; al pulsarlo el paso pendiente pasa a «Cobrado», y lo pulsas cuando el dinero llega. El proyecto se queda en «Entregado» entre emitir la factura y pulsar «Facturado»; eso no cambia nada de lo que cuenta: «Pendientes», los vencimientos y los recordatorios miran la factura, no el estado.
  • Sin globos de ayuda en el carril. El nombre de cada paso ya está escrito debajo de su icono, y lo que falta para poder pulsarlo lo dice entero el renglón de debajo —«emite antes la factura con Crear factura», «mándale antes la factura al cliente con Enviar»—, sin tener que pasar el ratón por encima.
  • Los colores del carril, unificados. Las líneas discontinuas del paso pendiente van todas del mismo gris azulado, el de los botones secundarios: antes cada paso las pintaba de su propio color y cambiaban de color según avanzabas. Y un paso alcanzado se ve siempre del mismo verde —un proyecto terminado salía con cuatro pasos verdes y «Cobrado» en morado, como si fuera otra cosa—. Los colores de cada estado siguen donde sí distinguen: la lista de proyectos y el calendario de entregas.
  • La caja de la factura lleva los mismos botones que la del presupuesto. Editar y Descargar en gris, y Enviar en ámbar y del doble de ancho, igual que allí. Antes el botón ancho y de color era el de descargar —en azul, un color que no usa ningún otro botón de la ficha— y el de enviar iba en gris estrecho, así que dos cajas con la misma disposición proponían cosas distintas.
  • El perfil del traductor se reparte en dos mitades. Mezclaba lo que el cliente ve impreso con lo que solo usa la aplicación: el IBAN junto al tarifario CAT, el identificador fiscal bajo «Datos personales» y la moneda de Métricas en medio. Ahora arriba va lo que sale en tus documentos —identidad y contacto, presencia online, y facturación y cobro— y abajo lo que usa la aplicación —moneda principal, tarifario CAT, tarifas de post-edición y recordatorios—, cada mitad con una línea que lo explica. En facturación, el país fiscal va primero porque de él salen el nombre del identificador («NIF», «RFC») y el del impuesto de los campos siguientes, y la nota de impuesto gana una explicación de dónde se imprime y para qué sirve.
  • Un proyecto recién creado ya no parece presupuestado. Hasta ahora nacía con «Presupuestado» relleno, como paso cumplido, y pedía el clic en «En curso», aunque el presupuesto no hubiera salido todavía. Ahora el paso pendiente es el propio «Presupuestado», punteado y sin fondo, y el aviso dice «Haz clic en Presupuestado para avanzar»: el presupuesto se edita y se envía las veces que haga falta, y el clic, cuando el cliente lo acepta, lleva el proyecto a «En curso».
  • El presupuesto tiene su propia tarjeta, como el encargo y la factura, en vez de ir metido en la barra de estado. Sus botones son «Editar», «Descargar» y «Enviar» (o «Reenviar», si ya salió), sin repetir «presupuesto» en los tres. Cuando el proyecto avanza, la tarjeta se queda con la fecha de envío y la descarga. La tarjeta de Factura sigue el mismo criterio: «Editar», «Descargar» y «Enviar».
  • Las fechas llevan el mes en letra: «26 sept 2026» en español y «Sep 26, 2026» en inglés, que es la convención de cada idioma (el formato medio de CLDR, el que aplican los navegadores). Antes eran numéricas y cambiaban de orden al cambiar de idioma (26/9/2026 frente a 9/26/2026), y un 3/5 no decía si era marzo o mayo. Vale para toda la aplicación —fichas, listas, métricas, historial, avisos— y para los PDF de factura y presupuesto, que siguen en inglés: «26 Sep 2026», o «Sep 26, 2026» con la interfaz en inglés.
  • Un calendario propio para elegir fechas, en los siete campos de fecha de la aplicación. El de Windows/Chromium enseñaba la fecha en el formato del idioma de Windows, no del de la aplicación, y su rueda desplazaba las semanas sin cambiar el mes del título. Ahora la rueda pasa de mes, los días del mes anterior y del siguiente salen en gris, y hay botón «Hoy» (y «Borrar» donde la fecha es opcional). Con el teclado: flechas para moverse, RePág/AvPág para cambiar de mes, Intro para elegir y Esc para cerrar.
  • «Enviar entregables» se bloquea mientras el presupuesto no está aceptado, igual que «Crear factura» antes de entregar, y dice qué falta: «Marca Presupuestado antes de enviar entregables».
  • Los botones de confirmar envío dicen solo «Enviar» en los diálogos de entregables, factura y presupuesto; el título del diálogo ya dice qué se envía.
  • El aviso bajo los tipos de impuesto de la factura pasa a una sola línea que dice qué hacer. Antes eran tres líneas explicando qué proponían los botones —el tipo general del país y el 0 % que suele tocar a un cliente extranjero—, unos botones que se entienden solos, y no decían lo único que hacía falta saber: qué escribir y a quién preguntar en caso de duda. Ahora dice «Establece IVA e IRPF si aplican. En caso de dudas, busca asesoría.», con los dos nombres del perfil fiscal y no a fuego: un traductor mexicano lee «IVA e ISR», uno indio, «GST y Retención».
  • En inglés, «Encargo» se traduce ahora «Assignment» en vez de «Job», en la ficha y en todos los mensajes.
  • «Nuevo contacto» ya no es una pestaña, es un botón. La cabecera del panel de Prospección tenía dos pestañas, «Contactos» y «Nuevo contacto», y la segunda no llevaba a ninguna parte: abría el formulario de alta. Un botón de acción disfrazado de navegación, que además dejaba «Contactos» pintada como pulsable estando ya encima de ella. Ahora funciona como Proyectos: arriba queda el título de la sección —«Contactos», «Nuevo contacto» o «Editar contacto», según lo que haya debajo, y sin nada que pulsar— y el alta es un botón al pie de la lista. El formulario gana un «Cancelar» junto a su botón de guardar, que es la salida que antes daba la pestaña, y sus etiquetas —«Nombre», «Empresa»…— dejan de salir centradas sobre unos campos que van a la izquierda.
  • La lista vacía vuelve a decir solo «Sin contactos». Llevaba debajo una pista de tres líneas que nombraba las dos puertas —«Nuevo contacto» e «Importar contactos»—. Con el alta convertida en botón al pie de la lista, las dos se anuncian solas, y la pista ocupaba la mitad de una caja que ya va justa de alto.
  • El buscador de contactos comparte fila con el título, y es una lupa. Tenía una fila entera para él, y la lista se quedaba con 199 de los 652 px del panel: cuatro contactos y medio a la vista. Ahora va a la derecha de «Contactos» —que se corre a la izquierda hasta caer justo debajo de la «T» de «Todos los estados»— y el texto «Buscar contacto…» se sustituye por una lupa pegada al borde derecho, como en el explorador de Windows; mientras hay algo escrito, la equis de borrar ocupa su sitio. La lista pasa de 199 a 262 px: de 4,6 a 6,2 contactos a la vista sin desplazar. Con el formulario de alta abierto el buscador no se pinta, porque no hay lista que filtrar.
  • El buscador de Proyectos, igual. Mismas medidas que el de Prospección —campo de 12,5 px en una fila de 52, en vez de 13 en una de 62— y la misma lupa en lugar del texto «Buscar proyecto o cliente…». Estrena además la equis de borrar, que allí no había. Y el mismo orden: el filtro de estado arriba y el buscador debajo, como en Prospección, para que la cabecera del panel sea la misma en las dos vistas.
  • El soporte se muda del perfil del traductor a Configuración. Estaba al final del perfil, entre el IBAN y las tarifas CAT: un apartado que no se configura, en la pantalla donde se rellenan los datos que salen impresos en la factura. Ahora cierra el bloque de mantenimiento, junto a la copia de seguridad, la guía de inicio y el diagnóstico, que es lo que se mira cuando algo no va.
  • Los títulos de Configuración van todos a la izquierda. Los once salían centrados, y los más largos —«Contraseña de aplicación», con su aviso al lado— parecían alineados de otra forma sólo por ocupar más ancho. Los dos botones de la copia de seguridad, en cambio, sí estaban descolgados a la izquierda y ahora van centrados como los demás.
  • La copia de seguridad se va del panel a Configuración. Estaba en una barra plegable al pie de Prospección, donde gastaba 50 px de alto para algo que se hace una vez al mes y donde no la encontraba nadie que estuviera en Proyectos. Ahora vive junto a la guía de inicio y el diagnóstico, con los dos botones y —esto es lo que no se podía perder— el aviso de cuánto hace de la última, que el menú Archivo no sabe dar. Con el hueco que deja, la lista de contactos llega a 7,4 contactos a la vista.
  • El formulario de un proyecto nuevo ya no explica de dónde salen los clientes. La pista «Los clientes son tus contactos de Prospección…» aparecía bajo el desplegable con la lista vacía; se retira.
  • «Sin proyectos» se ve como «Sin contactos». Era una línea de texto más pequeña y sin nada alrededor; ahora lleva encima el icono de carpeta abierta —el de proyecto en toda esa vista— y el mismo tamaño de letra que su equivalente de Prospección. El icono cambia según el motivo del hueco: la carpeta cuando no hay ningún proyecto creado, la lupa cuando los hay pero el buscador o el filtro no encuentran ninguno.
  • El intervalo entre envíos se queda sólo en Configuración. El panel de Prospección tenía un campo gemelo del que ya estaba allí —mismo ajuste, mismo rango de 3 a 300 segundos—, gastando alto permanente para un número que se pone una vez. Sumado a todo lo anterior, la lista de contactos pasa de los 4,6 contactos a la vista con los que empezó la versión a 8,3, sin quitar ninguna función del panel.

Corregido

  • Activar la licencia con la prueba agotada dejaba la aplicación vacía, y encima borraba ajustes. Quien introducía la clave en «Se acabó la prueba gratuita» entraba sin contactos, con los contadores a cero y sin sus ajustes. Los datos seguían intactos en disco y reaparecían al reiniciar, pero mientras tanto la aplicación guardaba ese vacío encima de lo guardado: el nombre del remitente, los datos de la cuenta de correo, la firma y las preferencias de envío se perdían de verdad, y la primera plantilla que tocaras volvía a la de fábrica. Pasaba justo después de pagar. Ahora la ventana se recarga al activar y todo está en su sitio. Los contactos, los proyectos, las facturas y el perfil fiscal nunca estuvieron en peligro.
  • «Buscar actualizaciones» no comprobaba nada. La respuesta salía de una caché que la propia apertura de la aplicación acababa de llenar, así que el menú contestaba «Ya tienes la última versión» aunque se hubiera publicado una nueva. Ahora pregunta de verdad cada vez que se pulsa, y si no hay conexión lo dice en vez de dar por buena una respuesta vieja.
  • Y con el periodo de prueba agotado no hacía nada en absoluto: el botón seguía pulsable y no aparecía ni un aviso. Ahora responde, y el resultado se lee en la propia pantalla de la licencia.
  • Tampoco hacía nada si antes habías ocultado el aviso con «Ahora no»: la franja seguía oculta y, como sí había versión nueva, tampoco salía el mensaje de que estás al día. Pedir la comprobación a mano vuelve a mostrar el aviso que hubieras ocultado.
  • Un CSV con punto y coma ya no se lee como una sola columna. Excel en español y en francés exporta «CSV delimitado por punto y coma», y las estadísticas de memoQ solo se exportan con punto y coma o con tabulador. La aplicación leía todo como si fuera coma, así que el archivo entero caía en una columna: al importar contactos salía una cabecera larguísima y ninguna otra, y al importar un análisis no se reconocía ninguna categoría. Ahora el separador se decide leyendo el propio archivo, sin mirar la extensión, y una coma dentro de «"Dupont, Marie"» sigue siendo parte del nombre.
  • «Archivo → Importar copia de seguridad…» no hacía nada. No ha funcionado nunca desde que existe, y por dos motivos a la vez. Apuntaba al selector de archivos de «Importar contactos», así que habría pedido un CSV o un Excel y lo elegido se habría leído como una lista de contactos; y aunque hubiera apuntado al suyo, tampoco habría abierto ninguna ventana, porque el navegador que hay dentro de la aplicación sólo abre un selector de archivos cuando lo pide un clic del usuario, y una orden del menú no cuenta como tal. Ahora la ventana de elegir archivo la abre la propia aplicación, por fuera de esa regla, y la restauración sigue su curso normal: confirmación incluida.
  • El análisis de Trados se importa de verdad, en cualquiera de sus formatos. «Importar análisis CAT» lee ahora el informe de «Analizar archivos» (o el de «Analizar y traducir con GroupShare») tal como lo deja Trados: el .xml de la carpeta Reports del proyecto y lo que sale de su «Guardar como» —XML, Excel, HTML o MHT—; el Excel, el HTML y el MHT, con Trados en inglés, alemán, español, francés o italiano. Lo reparte solo: las filas salen con los nombres de Trados, en el idioma de la aplicación, y en el mismo orden que en su informe, cada una ya asignada a su categoría, y basta con revisarlo y confirmar. Lo que el informe no deja claro si se cobra se queda sin asignar, para que lo decidas tú: «Bloqueado», las fuzzy internas cuando el total del informe no demuestra que van aparte de las demás filas, y las categorías que la tabla de Trados no enseña. Si la tabla de una exportación no tiene la forma esperada, la importación lo dice y pide el XML en vez de repartirla mal. Antes solo se podía elegir el Excel, y se leía mal: empieza por el título y los ajustes del análisis, repite cada categoría archivo por archivo —y se sumaban dos veces— y, con Trados en francés o en español, no reconocía las palabras nuevas. Con un análisis real de 862 palabras, la importación proponía 26; ahora, en cualquiera de los cuatro formatos, 862.
  • La tarifa acepta la coma decimal. Al teclear «0,09» en la tarifa de un proyecto, la coma se descartaba sin avisar y quedaba «009»: nueve euros por palabra, cien veces más. Ahora la coma vale como punto decimal, y en «Palabras origen» un «1.234» con punto de miles son 1234 palabras, no 1,234.
  • Y lo mismo en el resto de campos de cifras. En el plan de facturación recurrente, la coma también se descartaba al teclearla: el importe «150,50» quedaba en 15.050 € al mes y «1.500,00» en 1,50 €, y un IVA de «5,5», en 55 %. Ahora el importe se lee con coma o con punto decimal y con separador de miles —«150,50», «1.500,00», «1 500», «1,500.00»—, un «1.500» son mil quinientos, y debajo del campo se ve el importe tal como se va a facturar; lo que no se puede leer sin adivinar, como «150 50», lo avisa y no deja guardar. El importe de un gasto se lee igual y enseña junto al botón cómo se va a guardar: era un campo numérico del navegador, que nunca toma el punto como separador de miles y que acepta la coma o no según el idioma de Windows. Los tipos de IVA y de retención al emitir o rectificar una factura y los pesos del tarifario CAT eran campos de esa misma clase, y ahora todos los porcentajes aceptan la coma con cualquier Windows —«5,5»—, también pegados con su «%». Y en el registro manual de horas, «1,5» era una hora y se perdía la media hora: ahora es hora y media, y también valen «1:30» y «1h30».
  • Un PDF ya no abre el importador como si fuera una hoja de cálculo. El selector de archivos deja elegir «Todos los archivos», y el PDF del análisis que suelen mandar las agencias abría el mapeo de columnas con el contenido interno del PDF como cabecera; en «Importar contactos» pasaba lo mismo con un vCard. Ahora cada importación solo lee los formatos que ofrece su selector, y lo demás da un aviso que dice cuáles valen.
  • Con una ventana abierta, el teclado ya no llega a lo que queda detrás. Las ventanas de la aplicación dejaban salir el foco: pulsando Tab desde «Importar análisis CAT», o desde los términos de uso del primer arranque, se llegaba a los botones de la cabecera, detrás del velo, y desde ahí se podía usar la página entera con la ventana todavía abierta. Si se volvía a pulsar «Importar contactos» o «Importar análisis CAT», el archivo nuevo se quedaba además con el mapeo de columnas —o la asignación de filas— del anterior, que caía desplazado sobre él sin avisar. Ahora el foco entra en la ventana al abrirse, Tab y Mayús+Tab dan la vuelta dentro sin salir, y al cerrarla vuelve al botón desde el que se abrió; y cada archivo importado abre su ventana de cero. Escape, además, cierra solo la ventana de encima: si al enviar los entregables sin adjuntos se pulsaba Escape en la pregunta de confirmación, se cerraban las dos y se perdía el correo que se estaba escribiendo.
  • Y el menú tampoco actúa por detrás de una ventana abierta. «Nuevo contacto», «Nuevo proyecto», las dos copias de seguridad y «Ver guía de inicio» funcionaban con una ventana delante: Ctrl+N cambiaba de vista sin que se viera, e «Importar copia de seguridad…» llegaba a restaurar la base entera con un correo a medio escribir encima. Ahora se ven en gris mientras haya una ventana abierta, como hace Windows con el menú de una ventana que tiene un diálogo delante, y vuelven en cuanto se cierra. Copiar, pegar, el zoom y salir siguen disponibles: hacen falta dentro de la ventana.
  • Los selectores de idioma, los «omitir» y los enlaces del análisis CAT responden al teclado. El «ES | EN» de la cabecera y el de los términos de uso del primer arranque, los «Omitir paso» y «Omitir recorrido» de la guía de inicio, y el «Reemplazar análisis» y «Quitar análisis» del formulario de proyecto solo respondían al ratón: Tab se los saltaba, e Intro y Espacio no hacían nada. En los términos, que no se cierran sin aceptarlos y ya no dejan salir el foco, quien usa el teclado se quedaba sin forma de cambiar de idioma antes de leerlos. Ahora Tab llega a todos, con el anillo de foco del navegador, e Intro o Espacio los accionan; se ven igual que antes. Los lectores de pantalla, además, saben cuál es el idioma activo.
  • La tabla del desglose CAT ya no dice un céntimo más que el importe del proyecto. Sumaba los importes de cada categoría sin redondear, mientras el «Importe calculado» y el PDF suman los ya redondeados: con dos categorías bastaba para ver 49,73 € en la tabla encima de un importe de 49,72 €. Y sus palabras salen ahora con el formato del idioma de la aplicación: tomaban el del sistema, así que con el sistema en otro idioma no casaban con los importes de al lado.
  • Un nombre con «$» o con llaves ya no descoloca los mensajes que lo llevan dentro, como la confirmación de borrar un contacto o de enviarle un correo, la de generar una factura recurrente o el resumen de un análisis de Trados. Pasaban el nombre por una sustitución que interpreta ciertas combinaciones con «$»: «Libro de $'final» duplicaba el resto de la frase y dejaba un {language} a la vista, y «$$» se quedaba en un solo «$». Y los huecos se rellenaban de uno en uno, así que un contacto llamado «Ana {email}» se llevaba el email dentro del nombre y el hueco de verdad quedaba a la vista. Ahora el nombre se copia tal cual. Los correos a los clientes no estaban afectados: rellenan sus variables por otro camino.
  • Los avisos de la campana y las carpetas de cliente responden al teclado. Cada aviso del desplegable de la campana y cada fila de cliente del árbol de proyectos servían solo con el ratón: el tabulador pasaba de largo y ni Intro ni Espacio hacían nada, así que sin ratón no había forma de abrir un aviso ni de plegar un cliente. Ahora entran en el recorrido del tabulador, se accionan con Intro y con Espacio, y al tabular se ve un recuadro alrededor del que tiene el foco. El aviso de una factura recurrente que se está generando se queda fuera del recorrido mientras dura, igual que ya estaba fuera del alcance del ratón. Y un lector de pantalla anuncia cada carpeta como «Cliente NOMBRE, N proyectos», en vez de leer de corrido todo lo que hay en la fila. Nada de lo que se ve cambia.
  • La primera pulsación sobre una carpeta de cliente ya no se pierde. En el árbol de proyectos hacían falta dos clics para plegar un cliente que nadie hubiera tocado desde que se abrió la aplicación: el primero se descartaba sin hacer nada. Ahora pliega a la primera.

1.1.0 — 2026-09-21

Primera versión que se lanza de verdad. Sustituye al instalador que se subió el 10 de agosto bajo este mismo número: aquel se generó antes de que existiera el código de licencias, así que no llevaba la activación que su propia nota de publicación anunciaba.

Añadido

  • Barra de menú propia (Archivo, Editar, Ver, Ventana, Ayuda), con las funciones reales de la aplicación en vez de la genérica que trae Electron por defecto: nuevo contacto o proyecto, exportar e importar copia de seguridad, comprobar actualizaciones, volver a ver la guía de inicio, descargar el registro técnico, términos de uso y contacto de soporte. En español o en inglés según el idioma elegido en la aplicación.
  • Aviso de versión nueva. La aplicación comprueba al arrancar si hay una versión posterior publicada y, si la hay, lo dice en una franja bajo la cabecera con el enlace de descarga. No descarga ni instala nada por su cuenta. "Ahora no" silencia esa versión concreta, así que el aviso vuelve cuando se publique la siguiente. Sin conexión, la franja simplemente no aparece.
  • Activación y validación de licencia. La aplicación pide una licencia activa para usarse, y permite desactivar el equipo actual para poder activarla en otro.
  • "Enviar encargo" en la tarjeta del encargo. Antes había que bajar hasta una tarjeta aparte al final de la ficha, subir allí los archivos y, en un segundo paso, marcarlos y enviarlos; quien no supiera que esa tarjeta existía no encontraba cómo entregar el trabajo. Ahora los archivos se eligen dentro del propio diálogo de envío.
  • "Enviar factura" en la tarjeta de la factura, con su archivo a la vista y el botón de descarga al lado. Mandar la factura por correo era posible antes, pero solo por un camino que había que conocer de antemano.
  • Desglose por categorías CAT en la ficha del proyecto. Antes solo se veía reabriendo el formulario de edición.
  • Par de idiomas de escritura libre, con las combinaciones habituales como sugerencias. Antes eran seis opciones fijas, todas entre inglés, francés y español, más un "Otro" que obligaba a un rodeo en cada proyecto.
  • Teléfono, dirección y CIF en la exportación e importación de contactos. Se perdían en cada exportación.
  • Gráficos en Métricas: cobrado por mes, los últimos doce, y cobrado por cliente ordenado de mayor a menor. La pestaña era hasta ahora solo cifras y tablas: se leía cuánto se había cobrado en total, pero no si el mes va mejor que el anterior ni de qué clientes viene el dinero.
  • Moneda principal elegible en los ajustes del traductor. En ella se resumen los totales de la cabecera y de Métricas. Se propone la que más se factura, pero la elección es del traductor: suele ser la divisa en la que piensa y paga impuestos, que no tiene por qué ser en la que más ingresa.
  • Dirección de soporte dentro de la aplicación: en el perfil del traductor, junto al botón de descargar el registro técnico, en la pantalla de servidor no disponible y en la de recuperación tras un error. Estaba solo en la web, así que quien se atascaba dentro del programa no tenía a quién escribir sin salir a buscarlo.
  • La pantalla de activación de licencia ya dice a quién escribir. Los mensajes de licencia suspendida, bloqueada o activada en el máximo de equipos piden contactar con soporte, y esa pantalla —la primera de todas, con la aplicación entera detrás— no daba ninguna dirección: la única que hay vive en el perfil del traductor, o sea al otro lado de la puerta que no se abre.
  • La guía de inicio se puede volver a abrir siempre, desde Configuración. Estaba en un icono de la cabecera que solo aparecía si se había omitido el paso del perfil, así que quien rellenó su nombre —lo más probable— perdía el asistente y el recorrido para siempre. Ahora vive junto al Diagnóstico, que es donde está el resto del mantenimiento, y no ocupa sitio en una cabecera que no da más de sí.
  • La lista de contactos vacía dice por dónde se empieza. Recién instalada era lo primero que se miraba —un icono, «Sin contactos» y nada más—, con las dos puertas a la vista pero sin que ninguna se anunciara como el primer paso. Ahora nombra las dos: la pestaña «Nuevo contacto» de arriba y el botón «Importar contactos» de abajo. Solo aparece con la lista de verdad vacía, nunca cuando es el buscador o el filtro de estado el que no encuentra nada.
  • El formulario de un proyecto nuevo dice de dónde salen los clientes cuando no hay ninguno. Quien compra la aplicación por la facturación va derecho a Proyectos y se encuentra el desplegable de cliente con una sola opción, la de «elige uno»: los clientes son los contactos de Prospección, que es otra pestaña, con otro nombre y sin nada que las relacione. La pista solo aparece con la lista vacía.
  • El asistente de bienvenida ya explica qué decide el país fiscal, con la misma frase que el perfil del traductor: de esa elección salen el nombre de cada impuesto, los porcentajes que se ofrecen, la etiqueta del identificador fiscal y si la factura lleva Veri*Factu. Era el único de los dos sitios donde se elige que no lo contaba, y encima es el primero por el que se pasa.
  • Periodo de prueba de 14 días. La aplicación se puede usar entera, sin clave y sin tarjeta, durante catorce días desde la primera vez que se abre. Una franja bajo la cabecera dice cuántos quedan, y en los tres últimos pasa de ámbar a rojo; desde ahí se puede comprar la licencia o introducir una que ya se tenga. Cumplido el plazo, la aplicación pide licencia para volver a entrar y lo dice con esas palabras, en vez de mandar a buscar una clave de compra que nunca hubo. Los datos siguen donde estaban.
  • Gestrics ya se descarga también para Mac. Un solo instalador que vale para Apple Silicon y para Intel, sin tener que saber cuál llevas. Va sin firma de desarrollador, así que la primera vez macOS se niega a abrirlo y hay que autorizarlo en Ajustes del Sistema → Privacidad y seguridad; la web lo explica junto al botón de descarga.

Cambiado

  • El total aproximado de Métricas ya convierte 24 divisas, no cuatro. Solo se pedían tipos de cambio para dólar, libra, franco suizo y dólar canadiense, así que facturar en coronas suecas, pesos mexicanos o yenes dejaba ese dinero fuera del total consolidado. Ahora se piden para todas las del desplegable que publica el Banco Central Europeo. Las cuatro que no publica —peso argentino, peso chileno, peso colombiano y dírham— siguen quedando fuera, y la pantalla las enumera en vez de callárselo.
  • El desplegable de divisa deja de tener 159 monedas. Para llegar al euro había que pasar por el afgani afgano, el kwanza angoleño y el manat azerbaiyano. Quedan 28, las que un traductor con clientes internacionales puede cobrar de verdad. Un proyecto ya guardado en cualquier otra la conserva: sigue apareciendo en su propio desplegable, así que abrirlo y guardarlo no le cambia la divisa.
  • Se acabó el «follow-up» en la interfaz en español, que convivía con «seguimiento» en la misma pantalla: el estado del contacto, la plantilla, el botón del envío en lote y el tipo de entrada del historial dicen ahora todos «seguimiento». Los envíos ya registrados se ven con la palabra nueva sin tener que hacer nada. En inglés no cambia: allí «follow-up» es el término correcto, no un anglicismo.
  • Botones con nombres más cortos. Los dos «Mostrar clave» de Configuración pasan a «Mostrar»; el de Stripe, a «Conectar», que hace pareja con el «Desconectar» de al lado; «Desactivar este equipo» a «Desactivar»; y el de la guía de inicio dice ya qué abre: «Abrir guía de inicio».
  • La política de privacidad enumera también la comprobación de versión. Es la cuarta conexión que hace la aplicación, junto al servidor de correo, Keygen y los tipos de cambio, y esa lista está para ser completa. No se envía ningún dato —es una petición de lectura de un archivo estático—, pero ahora lo dice. Al ser un cambio de la lista de tratamientos, la aplicación vuelve a pedir que se acepten los textos legales la próxima vez que se abre.
  • La moneda principal se elige por su nombre, no por sus siglas. El campo del perfil enseña «Euro» o «Dólar estadounidense», con el código en el tooltip, y la lista va ordenada alfabéticamente por ese nombre. Los desplegables de divisa de un proyecto siguen con el código: van en línea y estrechos, y ahí un nombre largo no cabe.
  • El inglés de la aplicación deja de ser una traducción literal del español. Auditoría de los 867 pares leídos uno a uno: se quitaron los calcos («E.g.:» donde va «e.g.», rayas españolas, órdenes de frase copiados) y se unificaron los términos que tenían varias formas a la vez — «encargo» era "job" doce veces y "assignment" una, y «factura rectificativa» llegó a tener tres ingleses distintos, uno de ellos ("credit note") otro documento diferente.
  • El botón «Enviar encargo» pasa a llamarse «Enviar entregables». Abría un diálogo titulado «Enviar entregables», y lo que se manda son los archivos, no el encargo.
  • Los términos de uso ya no afirman que la factura cumpla el Real Decreto 1007/2023. El apartado de facturación decía que, con el perfil España, la aplicación genera documentos «siguiendo, en modalidad "No Veri*Factu", los requisitos técnicos» de esa norma. No era exacto: el registro encadenado por hash que lleva la aplicación es una medida propia de trazabilidad, y ni el código QR ni la huella siguen el formato que exige la Orden HAC/1177/2024. El texto explica ahora lo que de verdad hace y dice de forma expresa lo que todavía no cumple, para que nadie se apoye en ello ante su asesoría.
  • Renovación visual completa: logotipo nuevo, iconos coherentes en toda la aplicación, ventanas emergentes con un diseño común, siluetas de carga en vez de ruedas giratorias, barras de desplazamiento propias, y un sistema único de bordes y sombras.
  • Toda la redacción de la interfaz reescrita, en español y en inglés.
  • Edición y vista previa de plantillas en una sola pantalla, en vez de dos modos separados.
  • El asunto del correo se guarda solo mientras se escribe.
  • La factura ya no se guarda como archivo: se genera en el momento de descargarla o enviarla, así que siempre refleja los datos actuales. Antes circulaba una copia congelada al crear la factura, y quien generaba un enlace de pago después podía enviarle al cliente una factura sin ese enlace.
  • Las divisas se nombran con su sigla ISO —EUR, USD, GBP— en Métricas y en la cabecera, en vez de con el símbolo. En español solo el euro y el dólar tienen símbolo, así que una misma lista mezclaba "€" y "US$" con "GBP" y "CHF".
  • La cabecera muestra un único total abreviado en la moneda principal —"201k EUR"— en lugar de una lista de importes por divisa que no cabía en la celda. El importe completo aparece al pasar el ratón, y un beneficio negativo se pinta en rojo.
  • Métricas recién instalada ya no recibe con una rejilla de guiones. Cuatro tarjetas con "—" y tres tablas repitiendo "Datos insuficientes" eran la primera impresión de quien acababa de instalar la aplicación.
  • El identificador fiscal del cliente deja de llamarse "CIF / NIF" en español: un traductor mexicano veía terminología española encima del RFC de su cliente. Con la etiqueta caen cuatro marcadores con formato de NIF español que salían bajo campos que dicen RFC, SIRET o GST según el país.
  • El contador "Presupuestos" explica qué cuenta al pasar el ratón: los ya enviados al cliente. Marcaba 0 con el primer proyecto en estado "Presupuestado", y sin explicarlo parecía una avería justo en el momento más frágil.
  • Los ejemplos del formulario de proyecto llevan "Ej." delante, para que no se lean como datos ya introducidos. Los botones de nuevo contacto y nuevo proyecto pierden el "+".
  • La tarifa escribe el decimal según el idioma: "0,11 EUR/pal" en español, donde antes ponía "0.11" justo debajo de importes con coma. El presupuesto que recibe el cliente sigue en inglés, con punto.
  • La pantalla de "servidor no disponible" deja de pedir una orden de terminal. Enseñaba cd server && npm start a quien no tiene terminal —el servidor local lo arranca la propia aplicación—, y encima esa carpeta no existe con ese nombre. Ahora dice lo único que el usuario puede hacer de verdad: cerrar Gestrics y volver a abrirlo, que relanza el proceso.
  • Conectar el correo deja de ser obligatorio para entrar. El paso «Conecta tu correo» del asistente de bienvenida no se podía omitir, no se cierra con Escape ni con un clic fuera y tapa el resto de la aplicación, así que quien no tuviera a mano una contraseña de aplicación se quedaba fuera de lo que acababa de instalar — aunque proyectos, presupuestos y facturas funcionan sin correo. Ahora se puede dejar para luego: mientras siga pendiente, el engranaje de Configuración lleva un punto ámbar que lo explica al pasar el ratón, y cualquier intento de envío lo dice en el idioma de la interfaz en vez de fallar contra el servidor.
  • El paso del correo del asistente dice qué cuenta hay conectada, no solo que la hay. Un tick verde sin dirección obliga a fiarse, y es justo la duda que lleva a reescribir una contraseña de aplicación que estaba bien.
  • El segundo paso del asistente se llamaba «Datos de facturación» y recogía dos campos de los veintisiete del perfil. Ahora se llama «Nombre y país fiscal» y dice dónde se rellena el resto —identificador fiscal, dirección, IBAN—, en vez de dar por cerrada una facturación que se queda a medias.
  • Los Términos de Uso recogen el periodo de prueba. El punto 3 pasa a llamarse "Periodo de prueba, licencia de uso y activación" y describe los catorce días: todas las funciones, sin clave y sin medio de pago, contados en el propio equipo. Antes decía solo que el uso estaba sujeto al pago y a una clave de licencia. Al ser un cambio sustancial, la aplicación vuelve a pedir que se acepten los términos la próxima vez que se abre.
  • La dirección de soporte pasa a ser contact@outreachstudio.app. Sustituye a soporte@, y es la que sale en el perfil del traductor, en la pantalla de servidor no disponible, en la de recuperación tras un error, en la de activación de licencia y en la línea que pide adjuntar el registro de envíos. Sale de una sola constante, así que las cinco cambian a la vez; la web la anuncia igual.

Corregido

Copia de seguridad

  • Restaurar una copia perdía once columnas por el camino, sin decir nada. La restauración escribe cada tabla nombrando sus columnas una a una, y las que se habían añadido después nunca se añadieron ahí. Se perdían, entre otras: la identidad del emisor congelada al facturar —con lo que una factura vieja volvía a tomar tus datos de HOY—, el país fiscal con el que se emitió, la fecha de operación, el estado de los recordatorios de cobro —tu cliente recibía otra vez la reclamación entera de una factura que quizá ya había pagado—, el enlace de pago de Stripe, y el marcador de entregable ya enviado. El más silencioso: el periodo de una factura recurrente, que es lo que impide facturar dos veces el mismo mes; sin él, restaurar bastaba para emitir la mensualidad por duplicado. Ahora la copia devuelve exactamente lo que guardó, y hay una comprobación que lo verifica exportando, restaurando y comparando.

Facturas y presupuestos

  • La ficha de un plan recurrente decía "Palabras origen 1" y "320,00 EUR/pal". Una cuota mensual no se cobra ni por palabras ni por horas, pero por dentro se guarda como una palabra a una "tarifa" igual a la cuota, y eso se enseñaba en crudo en todos los retainers. La factura en PDF ya lo resolvía; ahora la ficha también, con la cuota y su etiqueta.
  • El presupuesto ya no desaparece al avanzar el encargo. En cuanto el proyecto pasaba de "Presupuestado", el PDF que el cliente tiene delante dejaba de poder descargarse: para recuperarlo había que devolver el proyecto a su estado anterior. Ahora queda su botón de descarga, sin las opciones de editar ni reenviar, que ahí ya no tienen sentido.
  • Un encargo podía cobrar un céntimo distinto del que sumaban sus propias líneas. Con desglose CAT, el total se calculaba sumando los importes en crudo y redondeando al final, mientras que el PDF imprime una fila por categoría ya redondeada: con una tarifa de 0,11 €, las cinco filas suman 145,69 € y el total decía 145,70 €. Lo mismo por horas, donde salen medios céntimos de verdad: un cuarto de hora a 32,50 €/h son 8,125 €, un importe que en dinero no existe, y se guardaba así cada vez que parabas el cronómetro. Ahora el total es siempre la suma de lo que se ve impreso, y todo importe CALCULADO por la aplicación —palabras por tarifa, horas por tarifa, desglose CAT— se redondea al céntimo antes de guardarse.
  • El libro de facturas archivaba un número que su propia firma no respaldaba. La base imponible entraba en el registro encadenado tal cual salía de multiplicar palabras por tarifa —1.480 × 0,14 da 207,20000000000002 en coma flotante—, mientras que el hash que sella ese asiento se calcula sobre la cifra ya redondeada. Nada de esto se veía en pantalla ni en el PDF, que siempre formatearon bien, pero quien leyera la base de datos por su cuenta —una revisión, una exportación futura— se encontraba el valor sucio, y base + cuota no cuadraba con el total guardado.
  • Un presupuesto ya enviado se veía exactamente igual que uno sin enviar. La ficha seguía diciendo «Envía el presupuesto al cliente o edítalo antes de enviarlo» aunque hubiera salido semanas atrás: el único sitio que lo sabía era el contador «Presupuestos» de la cabecera, así que era fácil mandarle dos veces lo mismo al cliente. Ahora la ficha dice el día en que se envió y el botón pasa a «Reenviar presupuesto».
  • Un plan de facturación recurrente recién creado no aparecía en Avisos hasta reiniciar. El propio diálogo te dice que la generación se confirma desde Avisos; ibas allí siguiendo esa instrucción y estaba vacío. Ahora aparece —y desaparece al borrar el plan— sin reiniciar nada.
  • El motivo de una rectificación se imprime en la factura que recibe el cliente, y el texto de ayuda no lo decía. Decía solo «queda registrado junto a la rectificación», que se lee como una nota interna de archivo. Ahora avisa de que se imprime en el documento del cliente y de que conviene escribirlo en inglés, como el resto de la factura.
  • Una factura recurrente se emitía sin que aparecieran ni el proyecto ni la factura. Al confirmarla desde Avisos estando ya en la pestaña de Proyectos, la aplicación avisaba de que la había generado y la lista no cambiaba: el proyecto nuevo y su factura —ya asentada en el libro, con su número— no se veían por ninguna parte hasta reiniciar la aplicación. Venía de que la lista solo se recargaba al cambiar de pestaña, así que fallaba justo en el camino más probable: estar mirando tus proyectos y confirmar el aviso. Ahora se actualiza sola y se abre la ficha del proyecto nuevo, que era lo que pretendía hacer desde el principio.
  • Una de cada diez facturas no sumaba su propio total. El IVA y la retención se redondean al céntimo, pero el total se calculaba sobre los decimales completos, así que el bloque de totales podía contradecirse: con una base de 50,03 €, la factura decía 50,03 + 10,51 − 7,50 y un TOTAL de 53,03 en vez de 53,04. Barriendo las bases entre 50 y 10.000 € con los tipos habituales, descuadraban 1.160.062 de 11.940.012 combinaciones. Ahora cada importe se redondea a la unidad mínima de su divisa —el yen no tiene céntimos, el dinar kuwaití tiene tres— y el total es la suma de esas cifras, que es lo que se paga.
  • Las líneas del desglose CAT no sumaban su propio total. Cada línea se redondeaba por separado y el total salía de los importes exactos, así que la suma de lo impreso podía separarse un céntimo de la cifra de abajo: con una tarifa de 0,0333 €/palabra, cuatro líneas sumaban 43,92 € y el total decía 43,91 €. En el presupuesto invita a una consulta del cliente; en la factura el descuadre iba contra la base imponible, que es justo lo que esas líneas sirven para determinar. Ahora la diferencia se reparte sobre la línea de mayor importe y el documento cuadra consigo mismo.
  • Una factura sin fecha de emisión desaparecía del CSV contable. Se descartaba incluso al exportarlo todo sin acotar fechas, así que una factura emitida podía no llegar nunca a tu asesoría sin que nada lo dijera. Ahora sale en el listado completo, con la fecha en blanco para que se vea que hay algo que corregir; en la exportación de un trimestre sigue sin salir, porque sin fecha no se puede asignar a un periodo.
  • Un nombre de cliente en hindi (o cualquier alfabeto índico) salía en cuadraditos. La fuente de respaldo que debía cubrirlos estaba buscada con un nombre de archivo que no existe en Windows, así que nunca se usaba. Ya se imprime bien, y el aviso interno que denunciaba los caracteres perdidos —que sí funcionaba— deja de saltar.
  • Aviso nuevo al emitir a un cliente con datos en árabe o hebreo. El PDF imprime esas letras del revés y sin unir, porque no compone texto de derecha a izquierda. Como el nombre del destinatario es obligatorio en la factura, ahora el diálogo lo advierte antes de emitir en vez de dejarte descubrirlo en el documento ya enviado.
  • Un país escrito sin tildes dejaba la factura sin su mención obligatoria. El desplegable de la ficha guarda nombres canónicos, pero al importar contactos desde una hoja de cálculo se guarda lo que traiga el archivo: «Espana», «Belgica», «Paises Bajos», «Deutschland», «Holanda», «USA»… Ninguno se reconocía, y un país que no se reconoce hacía que la aplicación no imprimiera la mención de inversión del sujeto pasivo en una factura intracomunitaria. Ahora los acentos, los puntos y los endónimos más corrientes se resuelven igual. Y cuando el país sigue sin reconocerse, el diálogo de emisión avisa antes de emitir en vez de callar.
  • Editar una factura ya cobrada le borraba la fecha de cobro. Bastaba con abrir la factura y volver a guardar, aunque no cambiaras nada: el diálogo no envía la fecha de cobro, y el servidor la ponía a vacío igualmente. A partir de ahí, el CSV para tu asesoría declaraba esa factura como pendiente y con la columna de fecha de cobro vacía, desaparecía de «Cobrado» y del tiempo medio de cobro en Métricas, y la ficha volvía a ofrecerte generar un enlace de pago para algo que tu cliente ya había pagado.
  • El vencimiento por defecto contaba desde hoy, no desde la fecha de la factura. Una factura con fecha anterior salía diciendo «30 días» y venciendo a 47. Además, la suma se hacía en horas: el día en que acaba el horario de verano dura 25, así que el plazo caía en la víspera. Ahora son 30 días desde la fecha de la factura, contados en días.
  • Las fechas se corrían un día si no trabajas en el huso de Madrid. Una fecha guardada como 2026-08-20 se interpretaba como medianoche UTC, así que en México, Estados Unidos, Brasil, Chile, Colombia, Perú, Argentina o Canadá se veía y se imprimía como el 19. Afectaba a todo a la vez: la fecha de expedición y el vencimiento de la factura, la validez del presupuesto, la fecha de operación, y cada fecha de la interfaz. Al escribir fallaba en el sentido contrario —se usaba el día UTC—, de modo que facturar por la tarde en México emitía con la fecha del día siguiente, y esa fecha queda congelada en el libro de facturas. Los avisos también iban corridos: una factura aparecía como vencida el mismo día de su vencimiento, y el recordatorio de cobro le llegaba al cliente un día antes de tocar.
  • Se podía emitir una factura sin tus propios datos fiscales. Hasta ahora el identificador fiscal y el domicilio eran campos opcionales de Configuración, así que una instalación recién estrenada podía generar una factura cuyo emisor era solo un nombre. Una factura así no es válida en ningún país. Ahora la aplicación se niega a emitirla y dice exactamente qué campos faltan y dónde rellenarlos; la factura rechazada no consume número ni deja rastro. Los datos del cliente no se bloquean —su identificador fiscal no siempre es obligatorio, y exigirlo impediría facturar a un particular—, pero el diálogo de emisión avisa si faltan y explica cuándo importan.
  • Corregir una factura ya emitida dejaba circulando dos documentos con el mismo número. Al cambiar el IVA o la retención de una factura enviada, la aplicación pedía un motivo y anotaba la rectificación en su libro interno, pero el PDF seguía saliendo con el número y la fecha originales y los importes nuevos: el cliente acababa con dos papeles distintos que decían ser la factura 2026-001. El código QR, que sí leía el asiento correcto, además contradecía a la cabecera impresa justo encima. Ahora el documento se emite como lo que es — «RECTIFICATIVE INVOICE #R-2026-001», con su propia fecha, la factura que corrige, el motivo y el importe rectificado — y el QR concuerda con la cabecera. La ficha del proyecto y el archivo adjunto al correo usan también ese número.
  • La factura decía dos cosas distintas sobre cuándo hay que pagarla, y ninguna era la tuya. Arriba a la derecha ponía «Payment due: 30 days end of month» y a media página «Payment due upon receipt»: las dos frases estaban escritas a fuego y se contradecían, mientras que la fecha de vencimiento que tú habías elegido al emitir no se imprimía en ninguna parte. Ahora la factura muestra esa fecha real, junto a la de emisión. Si la dejas en blanco no se imprime nada, en vez de inventar un plazo.
  • Las «Notas en factura» no salían en la factura. El diálogo de emisión pide ese texto con esa misma etiqueta y sugiere usarlo para el número de cuenta o las condiciones de pago; luego se guardaba y no aparecía nunca en el documento. Ahora se imprime bajo las condiciones de pago, con su propia página si hace falta y sin recortarlo — es el sitio donde se escribe una mención legal, como la inversión del sujeto pasivo de una factura intracomunitaria.
  • Cambiar tus datos reescribía las facturas ya enviadas. El nombre, el identificador fiscal, la dirección y los datos bancarios del emisor se leían de Configuración cada vez que se descargaba un PDF, no de lo que había al emitir. Mudarte, corregir una errata o pasar de autónomo a sociedad cambiaba quién figuraba como emisor en todas las facturas anteriores, incluidas las que el cliente ya tenía. Ahora esa identidad queda congelada en la factura, y el QR también deja de atribuir una factura antigua a un identificador nuevo. Las facturas emitidas antes de este cambio siguen comportándose como hasta ahora, porque no tienen nada congelado que mostrar.
  • El nombre de un cliente extranjero se destruía en el PDF. Los dos documentos se generaban con las fuentes estándar del formato PDF, que solo cubren el alfabeto latino occidental. Cualquier otro carácter salía como basura, sin ningún aviso: una agencia polaca llamada «Biuro Tłumaczeń Sp. z o.o.» aparecía impresa como «Biuro T'VÖ7eB7.». Lo mismo con el checo, el turco, el rumano, el griego, el cirílico, el japonés, el chino y el coreano — y el nombre del destinatario es un dato obligatorio de la factura. Solo se libraban los acentos españoles y el símbolo del euro, por lo que facturando dentro de España no se veía nunca. Ahora los dos documentos incrustan una fuente completa, con respaldo automático para los alfabetos que esa fuente no cubra, y lo que ninguna fuente instalada sepa representar queda anotado en el registro de la aplicación en vez de desaparecer sin más.

Alta

  • Cambiar de proveedor de correo en el asistente dejaba en pantalla el error del proveedor anterior: elegir «Personalizado» después de fallar con Gmail seguía enseñando el aviso sobre la contraseña de aplicación de Gmail, debajo de un formulario que ya pedía otra cosa.
  • Con un proveedor de correo «Personalizado», la casilla «Usar SSL/TLS» venía marcada mientras el puerto sugerido era el 587 — justo la combinación que no funciona, porque 465 es TLS desde el primer byte y 587 es STARTTLS. Quien escribiera su servidor y dejara el puerto sugerido fallaba en el primer intento sin haberse equivocado en nada. Ahora la casilla arranca desmarcada, a juego con el 587, y sigue al puerto en los dos valores donde la respuesta no admite discusión; en cualquier otro (2525, 25, uno propio del proveedor) se respeta lo que se haya marcado a mano. Vale para los dos formularios, el del asistente y el de Configuración.
  • Conectar el correo desde el asistente de bienvenida dejaba la pantalla de Configuración como si no hubiera ninguna cuenta —proveedor «Gmail» y los campos vacíos— con el correo ya funcionando. El asistente solo guardaba donde lee el servidor para enviar, y esa pantalla se pinta de otro sitio que nadie actualizaba; por lo mismo, volver a abrir el asistente pedía otra vez la contraseña de una cuenta que ya estaba conectada. La contraseña sigue sin guardarse ahí.

Facturación y fiscalidad

  • Un plan recurrente podía saltarse su primer mes, y nadie lo reclamaba. La fecha de alta del plan se guarda en horario universal, pero se leía como si fuera la hora local del traductor. Para quien trabaja al oeste de Greenwich, un plan creado a primera hora del día 1 quedaba registrado como del mes siguiente: esa mensualidad no salía nunca en los periodos pendientes, el plan se daba por al día y el retainer se quedaba sin facturar sin ningún aviso. En España el fallo no se veía, porque allí las dos lecturas coinciden.
  • El aviso de facturación electrónica cambiaba de texto un día antes o después de tiempo. La fecha en que empieza a obligar el mandato de cada país se comparaba contra el día universal en vez de contra el del calendario local, así que el aviso podía adelantarse o retrasarse una jornada según el huso.
  • La retención aparece con el nombre que tiene en el país del emisor —ISR en México, IRPF en España— en el formulario, en la ficha y en el PDF. Antes decía "IRPF" siempre, de modo que una factura canadiense mostraba un impuesto español, y una mexicana llegaba a mostrar cuatro nombres distintos para el mismo impuesto.
  • Se rechazan tipos negativos de IVA y de retención al crear y al rectificar.
  • Una rectificación que solo redistribuye IVA y retención sin cambiar el total ya se registra como tal.
  • No se puede borrar un proyecto ya facturado.
  • El estado manual del proyecto ya no permite marcarlo como facturado sin que exista factura.
  • Los importes del desglose CAT respetan los decimales de cada divisa.
  • Un mes de facturación recurrente saltado se perdía para siempre: si la aplicación no se abría durante un mes, al volver solo se generaba el corriente y el plan quedaba marcado como al día, sin aviso ni forma de recuperar el mes perdido desde ninguna pantalla.
  • Restaurar una copia de seguridad podía emitir dos veces la factura del mismo mes, cada una con su número y su asiento en el libro.
  • La etiqueta del campo de nota fiscal del perfil decía «Nota de IVA / TVA» a fuego: dos nombres de impuesto de dos países concretos en el mismo renglón, mirara quien mirara. Ahora sale del perfil fiscal como el resto de la aplicación — «Nota de GST» con perfil de India, y el genérico traducido cuando el país no tiene término propio.
  • El marcador de posición del IBAN proponía un número con forma española (ES00 0000…) tuviera el perfil fiscal que tuviera. Ahora es neutro (XX00 0000…): conserva la pista de cómo se agrupa un IBAN sin dar por hecho el país, y hace juego con el del BIC de al lado.
  • La exportación contable a CSV escribía a fuego y en español las cabeceras de los dos impuestos («% IVA», «% IRPF»), sin mirar el perfil fiscal: un traductor con perfil de México recibía una columna «IRPF» de lo que en su país es el ISR, contradiciendo al PDF de esa misma factura. Con la interfaz en inglés salían igualmente en español la cabecera entera, el estado de cada fila y el nombre del archivo.
  • El «Historial de rectificaciones» de una factura llamaba a la retención por su nombre genérico en vez de por el que tiene en el país del traductor: con perfil fiscal de México ponía «IRPF» donde el resto de la aplicación ya decía «ISR». El IVA de esa misma línea sí salía bien.
  • El aviso de un porcentaje de impuesto negativo nombraba el IVA y el IRPF, dos impuestos españoles, sin mirar el país del traductor: uno mexicano leía que el problema estaba en su IRPF, que no existe allí —su retención es el ISR—, y uno indio, que solo tiene GST, lo mismo. Ahora habla de «los porcentajes de impuestos», sin nombrar ninguno.
  • La retención salía llamada «IRPF» en la factura de casi todo el mundo. Solo España y México tenían nombre propio para ella, así que un traductor colombiano, argentino o chileno —o cualquiera de los demás países— veía el nombre del impuesto español ahí donde debía ir el suyo. Ahora, cuando el país no tiene un nombre concreto, pone «Retención» a secas. El IVA no cambia: ese sí se llama igual en toda Hispanoamérica.
  • El motivo de una rectificativa pedía el cambio «al modificar IVA/IRPF» y proponía de ejemplo «IVA aplicado incorrectamente», dos renglones por debajo de unas casillas que sí llamaban a cada impuesto por su nombre. Ahora también esas dos frases usan el del país.

Datos y copias de seguridad

  • Restaurar una copia de seguridad conservaba el contacto pero perdía todo su historial. Ya no.
  • Restaurar tampoco pierde ya las fechas de creación y modificación.
  • Avanzar de estado borraba todos los entregables, incluidos los que aún no se habían enviado a nadie. Ahora solo se borran los que ya llegaron al cliente.

Métricas

  • La pestaña tumbaba la aplicación entera. Al entrar en Métricas, la ventana se sustituía por la pantalla de «Error inesperado», con el mensaje al pie: "Cannot access 'expenseForm' before initialization" —en la copia instalada, minificado, "Cannot access 'M' before initialization", que no dice nada a nadie—. Recargar devolvía la aplicación, pero volver a entrar en Métricas la tumbaba otra vez. Lo causó el mismo cambio que acortó el desplegable de divisa a 28 monedas, de esta misma versión: para que un gasto guardado en una divisa poco corriente conserve la suya, la lista pasó a mirar la divisa del gasto en edición, y aquí la miraba antes de que existiera. De los cuatro desplegables de divisa que se tocaron, este era el único con el fallo. La pestaña vuelve a abrirse, y editar un gasto en una divisa de fuera de la lista —un bat tailandés, por ejemplo— sigue conservando su opción.
  • La cabecera se derramaba al haber varias divisas: el importe se salía de su celda y pisaba la etiqueta de al lado.
  • La tarjeta "Beneficio neto" se estiraba a todo el ancho al bajar de fila, y dejaba de parecer una tarjeta más.
  • La tabla de tarifa media enseñaba filas que parecían repetidas —dos "Técnico", dos "EN-ES"—. No lo eran: se agrupa por etiqueta, divisa y unidad, porque promediar 0,15 € con 0,18 $ no significaría nada. Ahora cada fila dice qué la distingue de sus hermanas.

Prospección

  • Los espacios sobrantes solo se limpiaban del correo. Un nombre o una empresa pegados desde LinkedIn o desde una hoja de cálculo se guardaban con los espacios de delante y de detrás, y de ahí salían a dos sitios que ve el cliente: la primera línea del email en frío («Hi␣␣␣␣Marie Dupont␣␣␣,») y el bloque de cliente de la factura. Ahora se limpian todos los campos, y lo que queda en blanco se guarda vacío de verdad.
  • Cambiar el correo de un contacto borraba su historial sin preguntar. Corregir una errata del dominio se llevaba por delante los envíos registrados, las fechas de contacto y el contador de seguimientos, y devolvía el contacto a «Pendiente»; el aviso aparecía después, ya hecho. Ahora se pregunta antes, diciendo cuántos envíos se van a perder, y solo cuando hay algo que perder. Cancelar no guarda nada y deja el formulario como estaba.
  • Un nombre de solo espacios pasaba el formulario y volvía del servidor como «error al guardar el contacto», como si hubiera fallado la aplicación en vez de faltar un dato.
  • Guardar un contacto podía dejarlo sin nombre o con un correo imposible. La comprobación existía al crearlo pero no al editarlo, y editar un contacto ya borrado decía que se había guardado.
  • El límite diario de envíos se guardaba y se mostraba, pero no se aplicaba.
  • Cancelar un envío por lotes durante una espera de reintento tardaba hasta un minuto en surtir efecto. Ahora responde casi al instante.
  • La estimación de duración de un envío por lotes se pasaba de largo, especialmente en tandas pequeñas.
  • Los contactos cuyo último envío falló aparecían como "Pendiente", sin forma de distinguirlos de los que nunca se habían contactado.
  • La búsqueda de contactos ignora los acentos: "jose" encuentra "José".
  • El límite de 5 MB por adjunto se anunciaba pero no se comprobaba; el fallo aparecía al enviar, como un error de correo confuso.
  • Los correos con espacios sobrantes al principio o al final se limpian al guardar.
  • Borrar un contacto podía quedar bloqueado sin salida por términos de glosario o planes recurrentes que no había forma de gestionar desde ninguna pantalla.
  • El aviso que recorta un envío en lote al llegar al límite diario dejaba un {{remaining}} literal a la vista en su segunda frase («Se enviará a {{remaining}} de 8 contactos»), en español y en inglés: el hueco aparece dos veces en la cadena y solo se rellenaba la primera.
  • Pulsar Enter al final de una plantilla no hacía nada, y lo siguiente que escribías aparecía pegado a la firma. Añadir una posdata o un enlace debajo de «Un saludo, [Tu nombre]» era imposible: la línea nueva no llegaba a dibujarse, así que el cursor volvía a la anterior. Además dejaba un salto de línea invisible al final del texto guardado, que se iba con el correo.
  • El Asunto no avisaba de las llaves que no son variables reales. Escribir algo como {{tarifa}} ahí no daba ningún aviso —el cuerpo de la plantilla sí lo daba— y aun así paraba el envío al pulsar enviar, marcando el contacto en rojo. El aviso sale ahora junto al campo que lo provoca, sea el asunto o el cuerpo.
  • Un envío en lote con una de esas llaves marcaba en error a todos los contactos de la tanda, uno por uno, por un problema que es de la plantilla y no de ninguno de ellos. Ahora se avisa antes de empezar y los contactos se quedan como estaban, igual que ya pasaba al faltar el asunto, la cuenta de correo o el contenido de un adjunto.
  • Un contacto sin empresa se marcaba en error si la plantilla usaba esa etiqueta, con un aviso que mandaba a revisar la plantilla — cuando la plantilla estaba bien y lo que faltaba era un dato suyo. La empresa es opcional, pero era el único de los cuatro campos del contacto que se trataba como obligatorio al enviar. Y como los contactos en error vuelven a entrar en la tanda siguiente, volvía a fallar cada vez. Ahora sale en blanco, como ya hacían especialidad e idiomas, y antes de empezar un lote se dice a cuántos contactos les falta algún dato que la plantilla usa, para poder cancelar y rellenarlo. Lo mismo pasaba en los correos de Proyectos —recordatorio de cobro, presupuesto y entrega—, que además ahora aceptan las cinco etiquetas de contacto y no solo dos.
  • Deshacer después de insertar una etiqueta borraba otra cosa. La etiqueta se metía por una vía que el navegador no apunta en su historial, así que Ctrl+Z se la saltaba y deshacía la edición anterior: desaparecía una palabra de otra línea y la etiqueta se quedaba donde estaba. Igual al pegar.
  • Insertar una etiqueta entre dos palabras dejaba dos espacios.
  • Una etiqueta escrita a mano seguía viéndose como {{nombre}}. Ahora, al salir del editor, se convierte en etiqueta como las demás.
  • Arrastrar texto con formato al editor colaba su HTML. Pegar ya lo limpiaba; soltar, no.
  • El Asunto enseña debajo lo que va a salir, con las mismas etiquetas y los datos del contacto elegido. Antes solo se veían las llaves en crudo.
  • Vaciar una plantilla y guardarla hacía reaparecer la de fábrica, sin decir nada, y era la de fábrica la que se enviaba. Ahora se avisa de que no puede quedarse vacía.

Envío de correo

  • El aviso de "sin cuenta de correo" podía mentir en los dos sentidos. La cabecera decidía si había cuenta mirando una copia guardada dentro de la base de datos, mientras que el envío usa las credenciales reales, que viven cifradas fuera de ella. Las dos se separaban: borrada la base, el aviso se quedaba puesto para siempre con el correo funcionando; y al revés —restaurando una copia de seguridad, que lleva el usuario pero nunca la contraseña— la aplicación daba por configurada una cuenta con la que cada envío iba a fallar. Y no era solo el aviso: el envío en tanda de Prospección se gobernaba con esa misma copia, así que borrada la base se negaba a mandar nada —«no hay cuenta de correo configurada»— con el correo funcionando perfectamente, y restaurada una copia arrancaba la tanda para fallar contacto a contacto. Ahora todo eso lo pregunta al servidor, que es quien tiene las credenciales, y además distingue un tercer caso que antes no existía: cuenta guardada que el proveedor rechaza, con su propio aviso en la cabecera y, en Configuración, el punto en rojo con «Guardada, pero el proveedor la rechaza» en vez del verde que tranquilizaba sobre una contraseña que no funciona. El asistente de bienvenida seguía el mismo camino equivocado: daba por conectada una cuenta con la dirección guardada pero sin contraseña, y ahora solo lo hace cuando el servidor confirma que puede enviar.
  • Los dos correos que piden dinero eran los únicos que no saludaban por tu nombre. El presupuesto y la entrega decían «Hi Anke,»; la factura y los tres recordatorios de cobro, «Hi,» a secas. Y el asunto de la factura era el único de los siete sin ninguna referencia —«Invoice for Translation Services»—, así que tres facturas al mismo cliente le llegaban con asunto idéntico y su gestor de correo las apilaba en un solo hilo; para reclamar un impago, justo lo contrario de lo que hace falta. Ahora los cuatro saludan por el nombre del cliente y el asunto de la factura lleva su número y el proyecto. Si ya habías reescrito alguna plantilla, la tuya se respeta: esto solo cambia las de fábrica.
  • Enviar una factura decía «Entregables enviados». El diálogo ya se adaptaba entero —título, icono, botón y cuerpo del correo—, pero el aviso de confirmación se había quedado fuera.
  • La entrega y la factura podían salir prometiendo un adjunto que no iba dentro. El correo que entrega la traducción dice «Please find attached the completed work», y el de la factura, «Please find attached the invoice». Si no se añadía ningún archivo, o si se borraba el PDF de la lista de adjuntos antes de darle a enviar, el correo salía igual: sin aviso, sin forma de deshacerlo, y con el cliente leyendo la promesa de un archivo que no estaba. Ahora, sin ningún adjunto, el envío se detiene y dice cuál falta.
  • El recordatorio de cobro daba el vencimiento en un formato que el cliente lee al revés. Estos correos van siempre en inglés, y el importe ya salía en formato de cliente, pero la fecha seguía el idioma de la interfaz: en el mismo renglón convivían «€676.00» y «10/8/2026». Esa fecha es el 10 de agosto para quien escribe la aplicación en español y el 8 de octubre para quien lee el correo en inglés, así que el aviso final de impago llegaba a contradecirse solo: una fecha de vencimiento que el cliente lee como futura, en un correo que le está reclamando 39 días de retraso. Ahora el mes va escrito —«August 10, 2026»—, que no admite lectura doble en ningún mercado. Afecta al recordatorio en sus tres etapas y al correo de la factura.
  • Una contraseña ya guardada se veía igual que un campo que nunca tuvo nada. El servidor no devuelve nunca la contraseña de la cuenta de correo, ni siquiera cifrada, así que el campo de Configuración aparecía vacío tanto si había una cuenta conectada como si no. Quien volvía meses después no tenía forma de saber si su correo seguía configurado. Ahora, cuando la hay, junto a la etiqueta aparece un punto verde con «Ya hay una guardada», y el propio campo dice «Déjalo en blanco para no cambiarla».
  • Un mismo correo podía llegarle al cliente tres veces. Si la conexión se cortaba justo después de entregar el mensaje —el servidor ya lo tenía en cola y lo único que se perdió fue la confirmación—, la aplicación lo daba por fallido y volvía a mandarlo hasta tres veces, para acabar avisando de un error. En prospección eso es el mismo correo en frío repetido a un cliente potencial. Ahora solo se reintenta lo que se sabe ocurrido antes de la entrega, como un rechazo temporal del destinatario; el resto se avisa sin repetir el envío.
  • Cualquier negativa del servidor de correo se anunciaba como «verifica tu contraseña de aplicación». Una dirección que no existe, un mensaje demasiado grande o uno bloqueado por el filtro antispam mandaban a reescribir una contraseña que estaba perfecta, sin ninguna salida: la comprobación de Configuración seguía diciendo que era correcta. Cada caso dice ahora lo que pasó de verdad.
  • Un servidor que se quedaba a medias podía dejar la aplicación en «Enviando…» hasta media hora —diez minutos por intento, y lo intentaba tres veces— sin nada que pulsar y sin saber si el correo había salido. Ahora cada fase de la conexión tiene su propio límite de espera.
  • El asunto podía salir con las variables sin resolver. Si llevaba «{{idiomas}}» o «{{especialidad}}» —la plantilla del cuerpo admite las dos, y el aviso de variables sin resolver las daba por buenas—, el cliente recibía las llaves literales en la línea de asunto de un correo en frío. El historial del contacto guardaba además el asunto bien resuelto, así que ni ahí se veía.
  • Un adjunto vacío se enviaba como si nada. Un archivo de 0 bytes —un export que falló a medias, o uno que la nube todavía no había bajado del todo— se aceptaba, aparecía listado como adjunto y el envío lo descartaba sin decir nada: el cliente recibía el correo sin el archivo y la aplicación informaba de éxito. Ahora no se puede añadir, y si alguno llega vacío por otro camino el envío se detiene y dice cuál es.
  • Guardar la configuración de correo cuando el archivo no se podía escribir en disco —sin espacio libre, sin permisos o con un antivirus bloqueándolo— apagaba en silencio el servidor interno de la aplicación: la ventana seguía abierta y todo lo demás dejaba de responder sin un solo aviso. Ahora lo explica y la aplicación sigue en pie.
  • Un formato que no se puede mandar se avisa al elegir el archivo, no al enviar. Un .exe o un .docm se aceptaba como adjunto —el filtro del diálogo de archivos es solo una sugerencia y basta con elegir «Todos los archivos»—, se quedaba en la lista como uno más y el rechazo llegaba al pulsar Enviar; en un lote, una vez por cada contacto. Ahora se comprueba al elegirlo y también al guardarlo, con el mismo criterio que ya usaban los entregables.
  • Los avisos del envío que estaban escritos a fuego en español ahora salen en el idioma de la interfaz: la dirección de destinatario mal escrita, el adjunto demasiado grande, el formato no admitido, más de cinco archivos y el límite de envíos seguidos. Hasta ahora solo se traducían los errores de conexión con el proveedor de correo.
  • Cambiar la cuenta de correo sin escribir la contraseña decía «Configuración guardada» y no cambiaba nada: la pantalla pasaba a mostrar la dirección nueva mientras los correos seguían saliendo de la anterior. Como la contraseña nunca se prerrellena, bastaba con reabrir Configuración y tocar el correo. Ahora avisa de que hace falta la contraseña para verificar la cuenta y deja el diálogo abierto con todo lo escrito, en vez de dar por guardado lo que no lo estaba.

Otros

  • El corrector del navegador subrayaba el español como si fueran faltas. La aplicación se declaraba en inglés ante el navegador —el idioma del documento estaba fijado y no lo cambiaba nadie—, aunque la interfaz estuviera en español. Como el diccionario del corrector se elige por ahí, al escribir el asunto y el cuerpo de un correo, o las notas de un contacto o de un proyecto, salían subrayadas en rojo palabras bien escritas. El idioma declarado sigue ahora al que esté elegido en la cabecera. De paso, un lector de pantalla deja de leer el español con pronunciación inglesa.
  • El cronómetro dejaba entradas de "0min". Arrancarlo y pararlo por error —o un clic doble— creaba una línea de cero minutos en la ficha, con su fecha y su aspa, que solo servía para borrarla a mano y que además viajaba en la copia de seguridad. Por debajo de medio minuto ya no se guarda nada.
  • Un archivo de menos de medio kilobyte se veía como "0 KB", que parece un archivo vacío justo antes de mandárselo al cliente. Ahora se dan los bytes.
  • La tarifa por hora sugería "Ej.: 0.12", que es un ejemplo de tarifa por palabra: bajo la etiqueta "Tarifa por hora" proponía doce céntimos la hora.
  • El par de idiomas se propone solo al elegir cliente, tomándolo del que ya tiene guardado ese contacto. Solo se propone, y solo cuando el contacto tiene un par reconocible: lo que ya esté escrito no se toca.
  • El periodo de prueba se ancla también en los datos ya guardados. Antes dependía únicamente de su propio archivo de registro, de modo que una instalación con contactos, proyectos y facturas de semanas atrás podía volver a presentarse como recién estrenada. Ahora, si ese registro falta, el inicio se reconstruye a partir del dato más antiguo que haya en la base. No se guarda nada nuevo: solo se leen fechas que ya estaban.
  • El desplegable de moneda principal salía entero en blanco. Las 159 divisas estaban ahí, pero cada opción se pintaba sin texto y sin valor: el campo leía dos propiedades que la lista no tiene. Además, sin divisa guardada el navegador enseñaba la primera de la lista —el dírham de los Emiratos— como si estuviera elegida; ahora la lista abre con una opción que dice lo que la aplicación hace mientras no elijas: resumir por la divisa en la que más factures.
  • «Cancelar» en Configuración no revertía tres campos. La contraseña de aplicación, la clave de Stripe y la clave de licencia se escriben fuera del borrador de ajustes —son texto para activar o verificar algo, no un ajuste que se guarde—, así que cerrar con Cancelar las dejaba escritas y seguían ahí al volver a abrir, como si no se hubiera cancelado nada. Ahora el modal las limpia al abrirse.
  • Los indicadores de respuesta se quedaban en 0 tras la retirada de la detección automática de respuestas.
  • Los formatos de archivo admitidos como adjunto son los mismos en todos los puntos de la aplicación, e incluyen los propios de la traducción.
  • Los ejemplos de los formularios ya no muestran direcciones ni números que parecieran datos reales ya introducidos.
  • Con Windows en modo oscuro, el armazón de la aplicación aparecía flanqueado por dos bandas casi negras. Sobrevivía un bloque de modo oscuro heredado de la plantilla del andamiaje que redefinía el fondo, el texto y el borde de una interfaz que usa una paleta clara a propósito.
  • Las plantillas de correo ya no llevan la identidad del traductor de la instalación original en ninguna parte de la aplicación instalada. Quedaba una migración con su nombre, su titulación y sus perfiles profesionales escritos en claro, dentro de un archivo que se instala sin comprimir.
  • Una caída del servidor interno ya deja constancia en send.log. Es un camino distinto del de la pantalla de error, que registraba y sigue registrando lo suyo: aquí se trata del proceso que guarda los datos. Que se hubiera muerto no quedaba anotado en ningún sitio, y el motivo dependía de una carrera: el registro se escribe por un flujo que el cierre del proceso no espera, así que ese último renglón —el que explica la caída— llegaba o no sin que nada lo garantizara, y con el archivo aún sin estrenar no llegaba nunca. Ahora se escribe directamente antes de salir, y la aplicación anota además que el servidor interno ha terminado, cosa que hasta ahora solo iba a una consola que la versión instalada no tiene.
  • Un fallo inesperado del servidor ya no se lleva por delante lo último que hayas hecho. La base de datos se guarda en diferido —los cambios se acumulan en memoria y bajan a disco un segundo después—, y cerrar la aplicación por las buenas fuerza ese guardado antes de salir. Estrellarse, en cambio, no lo hacía: había dos manejadores de excepciones no controladas y el primero mataba el proceso antes de que el segundo, el único que guardaba, llegara a ejecutarse. Cualquier excepción no capturada, o cualquier promesa rechazada sin capturar, tiraba lo que estuviera pendiente: el contacto recién editado, las horas recién anotadas. Ahora los cuatro caminos de salida guardan.
  • Los cierres inesperados de la interfaz no dejaban rastro en send.log. Había dos redes de seguridad anidadas, y la interior —que era la que atrapaba todos los fallos, por estar más cerca— solo escribía en la consola del navegador: el archivo que la propia pantalla de error pide adjuntar llegaba sin una línea sobre ese fallo. Queda solo la red exterior, que sí registra la traza.
  • Esa pantalla de error aparece ya en el idioma activo. Llevaba todo su texto en español y en inglés a la vez, uno debajo del otro, y era la única de la aplicación que no pasaba por el sistema de traducción. Además, mientras no se hubiera elegido idioma caía siempre en español, aunque el sistema estuviera en inglés.
  • Todos los avisos que la aplicación te da cuando algo no se puede hacer salen ya en el idioma de la interfaz. Antes buena parte de ellos llegaba en español aunque la tuvieras en inglés, porque el texto se escribía en el interior del programa y se enseñaba tal cual. Son unos cincuenta: contactos, encargos, facturas, planes recurrentes, horas, gastos, glosario, entregables, Stripe, licencia y tipos de cambio. De paso varios dicen mejor lo que pasa — que ese correo ya lo tiene otro contacto, cuántos encargos hay que quitar antes de poder eliminarlo, o que un encargo ya facturado tiene el importe congelado en su factura.

Seguridad

Primera revisión de seguridad de la aplicación, centrada en lo que de verdad puede pasarle a un traductor: un archivo malo que abre él mismo, y una web abierta en el navegador mientras Gestrics está en marcha.

  • Restaurar una copia de seguridad incompleta ya no borra las facturas emitidas. Restaurar una copia hecha con una versión anterior —de las que no guardaban el libro de facturas— vaciaba ese libro y decía que todo había ido bien. Y como la numeración se calcula a partir de él, la siguiente factura volvía a llamarse 2026-001: un número que ya se le había enviado a otro cliente. Ahora la aplicación se detiene antes de tocar nada, dice cuántas facturas emitidas se perderían y con qué números, y solo sigue si lo confirmas expresamente.
  • Una copia con el libro de facturas manipulado no se guarda. Los asientos van encadenados por hash, precisamente para que alterar uno se note; pero al restaurar se guardaban tal cual, sin comprobarlos. Un archivo de copia editado a mano podía escribir facturas inventadas con el importe que se quisiera. Ahora la cadena se verifica entera antes de restaurar nada, y un asiento que no cuadre no llega al disco bajo ningún concepto. Si el libro de la copia está dañado, la aplicación te lo dice y te ofrece recuperar todo lo demás —contactos, encargos, facturas— dejando el libro vacío, en vez de dejarte sin poder restaurar nada.
  • Una restauración que falla a medias ya no deja los datos a medias. Antes se vaciaban las tablas y luego se iba fila por fila, saltando las que fallaban: el resultado era "restaurado" con un recuento de errores al lado, y una base de datos incompleta. Ahora la restauración es una sola operación — entra entera o no entra nada— y si algo falla te dice qué fila fue, con tus datos intactos.
  • El servidor local solo atiende a quien pregunta por 127.0.0.1. Gestrics levanta un servidor en tu equipo para que la propia aplicación hable con él. Aunque solo escuchaba en local, una web abierta en el navegador podía alcanzarlo haciendo que su dominio apuntara a tu propio equipo, y leer desde ahí tus contactos, tus facturas y tus claves guardadas. Ahora se comprueba con qué nombre se ha llamado y se rechaza cualquiera que no sea el tuyo.
  • La fecha de la última validación de la licencia se guarda cifrada. De ella cuelga el margen de 7 días que la aplicación concede sin conexión, y estaba en claro dentro de license-config.json: una fecha en un JSON invitando a cambiarla con el Bloc de notas. Ahora va cifrada como el resto, y una fecha escrita a mano se descarta en vez de aceptarse. Es el mismo criterio que ya se seguía con el registro del periodo de prueba; este archivo se había quedado fuera. Si el primer arranque tras actualizar ocurre sin conexión, hará falta una comprobación con red para volver a tener margen sin ella.
  • Un contacto importado ya no puede colar una fórmula en tus exportaciones. Excel y LibreOffice ejecutan una celda que empiece por =, +, - o @. Si importabas una lista de contactos de una agencia y alguno de sus campos venía con una fórmula dentro, se guardaba tal cual: al exportar tus contactos y abrir el archivo, la fórmula se ejecutaba en tu equipo. Ahora esas celdas salen marcadas como texto en los CSV y TSV. Los importes no se tocan, así que el CSV para tu asesor sigue sumando igual, y volver a importar en Gestrics una exportación propia devuelve el texto original.
  • A los 14 días la aplicación se cierra de verdad. El fin de la prueba lo hacía cumplir solo la pantalla: por detrás el servidor local seguía respondiendo a todo, así que seguía habiendo por dónde seguir usando la aplicación sin licencia. Ahora se cierra también por dentro, y lo único que queda abierto es lo necesario para activar. Tus datos no se tocan: siguen ahí enteros, y vuelven en cuanto introduces la clave.
  • Estrenar carpeta de datos ya no regala otra prueba. El inicio de la prueba se apoya en la marca más antigua de tu propio trabajo, pero eso solo se miraba cuando faltaba el registro: bastaba con empezar de cero y traerse los datos DESPUÉS para tener catorce días nuevos sin perder nada. Ahora se mira siempre y manda la fecha más antigua de las dos. De paso arregla el caso honrado: restaurar una copia en un portátil nuevo continúa la misma prueba en vez de estrenar otra.

1.0.0 — 2026-08-09

Primera versión pública. CRM de escritorio para traductores autónomos, con los datos guardados en el propio equipo.

Añadido

  • Prospección: contactos, plantillas de correo, envío por lotes con límites de frecuencia, seguimiento del estado de cada contacto e historial.
  • Proyectos: encargos con recuento de palabras, tarifas, importación de análisis CAT, control de horas, entregables y glosario por cliente.
  • Facturación: facturas con IVA y retención, PDF propio, libro de asientos encadenado conforme a Veri*Factu, rectificativas, perfiles fiscales por país y enlaces de pago con Stripe.
  • Métricas: ingresos, gastos, tasas de respuesta y desglose por cliente.
  • Copias de seguridad completas, exportación e importación de contactos en CSV, TSV, Excel y ODS.
  • Envío por SMTP con detección automática de proveedor.
  • Español e inglés.