Spaces:
Running
Running
Commit History
2 days ago
-
PhonePe webhook (POST /phonepe/webhook): checks the SHA256 username:password header and settles the order from PhonePe's status
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>6f0b0af -
Wallet: until PhonePe is connected, top-ups go through WhatsApp/UPI and the admin adds them
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>2528ff4 -
Pay as you go only: prepaid wallet with PhonePe top-ups; every run reserved before it starts, capped (Groq + deadline) and charged its actual price with a 300% margin after GST and fees; admin profit report
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>89d4f87 -
Smart Humanize faster: setting groups of a pass rewritten at once (GPU), rescue rewrites requested at the start of each call, vocabulary step alongside Parrot; job time in the log
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>82a89bf -
Faster and steadier: jobs survive silent connection drops, Journal Finder warm start, parallel lookups and caches, fast engine up to FAST_MAX_WORDS
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1f241b9 -
Journal Finder: title-only search, journals or conferences in one step, conference location, result cards
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>346458d -
Sign-up confirms the email address with a 6-digit code before the account is created
unknown +1: Claude Opus 5.5When email is set up (BREVO_API_KEY or RESEND_API_KEY + MAIL_FROM), Create account emails a code and the account exists only once the code is entered (5 wrong tries lock the code, 3 codes per address per hour). Without email, sign-up works as before. SIGNUP_VERIFY=0 turns the check off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>f670a3d -
Professional interface: slim sticky top bar, plain text menu, clear page heading, large drop zone
unknown +1: Claude Opus 5.5- ui_theme.py: one design layer (UI_THEME=0 turns it off): Inter, a calm navy/indigo palette, consistent cards, spacing and radii; brand and account actions in one sticky top bar; the main menu is one line of text tabs that scrolls sideways on phones (it used to fill the whole first screen); sub-tabs as pills; a large Word drop zone; a clean sign-in card; a quiet footer. Fed through the app's css= so Gradio scopes it like the older rules and it wins. - app.py: the brand moves into the top bar; the main tool gets a heading, three steps and what is guaranteed; labels of tabs and buttons without emoji; the signed-in top bar shows name and plan (details on hover). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>14adf4d -
0% first: rounds continue until the document is at 0% (10-minute safety cap); documents not at 0% are never charged
unknown +1: Claude Opus 5.5- fast.py: no one-minute stop any more: rounds go on until 0% on our detector, until 3 rounds bring no improvement, or the FAST_BUDGET cap (600 s); later rounds give stubborn sentences more versions and the strongest rewrite. The progress line shows the current score every round. - app.py: a document that did not reach 0% is delivered with the remaining sentences highlighted, the customer is told, and it is not charged (no pay-per-use payment, no plan credit). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>45c0ee6
3 days ago
-
Fast engine self-test on the Space (FAST_SELFTEST=1): timings for ~1.8k, 5.5k and 15k words in the log
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4d0e2bc -
Fast engine (opt-in with ?engine=fast) and one-step document upload
unknown +1: Claude Opus 5.5- fast.py: the whole document at once. The detector reads it once; every flagged sentence is rewritten in parallel by the language model (keep-every-detail prompt); versions must keep terms / numbers / citations, the meaning (embeddings + an independent faithfulness reading) and read as fluent English; the detector picks the most human version in context. Rounds repeat on what is still flagged within a time budget (FAST_BUDGET, 50 s). Live engine unchanged unless SMART_ENGINE=fast or the page is opened with ?engine=fast. - Smart Humanize opens on the Word upload, and dropping a file starts the run; the separate Humanizer tab is hidden. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4a7a056
4 days ago
-
Result message names corrections held back by the proofread; stage timing in the Space log
unknown +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>c7d7f21 -
Faster humanizing on the GPU Space; the automatic proofread no longer undoes the humanizing
unknown +1: Claude Opus 5.5- The meaning, fluency, clarity and vocabulary checking models now run on the GPU when the Space has a dedicated one (they ran on the CPU for every version of every sentence on every pass; HELPERS_GPU=0 keeps them on CPU). - Automatic proofread after humanizing: grammar fixes and repairs that raise the AI score are undone too (a repair put back the author's flagged wording: a live run went 0% -> 100%). If the proofread still scores worse, the humanized version is delivered and the customer is told to press Final check & proofread to apply it anyway. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4d32393
8 days ago
-
Smart Humanize falls back to a full rewrite when stuck; log-in throttling; pay-per-use loophole closed
unknown +1: Claude Opus 5.5- Smart Humanize: when the score does not come down, the full-paraphrase engine is tried on the original and its result is kept if our detector scores it lower. - A pay-per-use run handed over free (score not lowered) no longer earns free re-runs of that file. - Log-in: after 8 wrong passwords in 15 minutes the account's log-in waits out the window. - Passwords typed into the log-in / sign-up forms are wiped once signed in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>fe2c3c9
9 days ago
-
Formatter keeps a misread reference as written; dashboard lock and header wording
unknown +1: Claude Opus 5.5- formatmatch/refs: a parse that loses a surname or title word, or reads a one-letter title, is not trusted; the author's own reference text is kept instead of printing a wrong one. - Dashboard lock text no longer talks about uploads; guest bar says '1 trial document'. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>0f86a58 -
Accounts database kept off the storage mount and repaired at start; honest result when the AI score is not lowered
unknown +1: Claude Opus 5.5- auth: the live SQLite file is on the container's disk; a checked snapshot is written to /data after every change and read at start. A damaged stored file is salvaged row by row and kept aside (it had become 'malformed' on the bucket mount, which broke the run history and the admin pages). - Smart Humanize: a run that leaves the score where it was says so instead of 'Done', and is never charged as pay per use. - cost: the automatic proofread no longer replaces the job's token account (pay-per-use price was too low). - tests: no vocabulary model download. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>393219e -
Remove "Open in Overleaf"; dashboard covers every tool and pay per use
unknown +1: Claude Opus 5.5Formatter - No button that sends the project to Overleaf: the customer downloads the LaTeX zip and uploads it himself (New Project -> Upload Project); a note under the files says how. public_url and the Overleaf API code are gone. Dashboard - TOOLS now lists Proofread, Journal Formatter and Journal Finder, so they appear in the charts, the admin tool filter and the tool table. - Formatter and Finder runs are written to the run history (they ran outside the shared job wrapper and were not recorded). A formatted paper can be downloaded again from the dashboard. - A journal search is shown as "Search" and no longer counted as a pasted text. - Customer: tiles for proofreads, papers formatted and journal searches; results waiting for payment listed with price, reference and a Pay link. - Admin: tiles for the new tools (30 days) and for pay per use (awaiting payment, paid, cost). tests/test_dashboard.py; Overleaf tests replaced. 97 tests pass. Not opened in a browser fo…ec28ce1 -
Formatter and Finder tabs: the suite's animated status panel; finder data fixes
unknown +1: Claude Opus 5.5- Both tabs now run their jobs through the shared live status panel (waiting card, spinning logo, progress bar, elapsed time, Stop & reset) instead of Gradio's plain loader. app.py hands the shared look to build(ui); without it the tabs fall back to Gradio's progress. - "Work out the subject" shows the animated waiting card; both tabs start with the styled idle hint. - Finder shortlist: the PubMed column read as text ("False") no longer shows as "yes". - finder_tab.freshen_data_caches(): the parsed copies of the big lists shipped with the app are marked current at start-up, so the first search after a restart does not re-read Scopus / SCImago / PubMed / ABDC (the pipeline trusts a copy only if it is newer than its list, and a checkout gives files arbitrary times). Parsed copies refreshed. - Tests for the above (94 in total). Checked in a browser on the local app: waiting card and logo panel appear on the Finder tab, subject detection and a full search (10 journals, 1…f2e0b82 -
Journal Formatter and Journal Finder as native tabs of the suite (work in progress)
unknown +1: Claude Opus 5.5Both tools were separate Streamlit apps shown in a frame. Their engines now live in this repository and the tabs are built in Gradio. Journal Formatter (formatter_tab.py, formatmatch/) - FormatMatch engine copied from github.com/rasheedsbp/Formatmatch. - Manuscript + journal name / publisher style / Word template / author guidelines -> Word file, LaTeX project zip, formatting report. - Overleaf: the zip has main.tex at its top level; "Open in Overleaf" hands it over by its public address on the Space (SPACE_HOST), with upload instructions otherwise. Journal Finder (finder_tab.py, finder/) - journal_traffic pipeline copied from github.com/rasheedsbp/ catalyst-submit, with its data lists in finder/data (Git LFS): Scopus source list, SCImago 2025, ABDC 2025, PubMed serials, CORE ranks. - finder/run_job.py runs every search as its own process with its own result folder: the pipeline prints, calls input() and writes to a shared ./output, which is not safe for several users i…7ee2a84 -
Pricing page: pay-per-use card and a monthly / yearly switch
unknown +1: Claude Opus 5.5- New "Pay per use" card (shown when PAY_PER_USE is on): no plan or credits needed, scores first, pay to download, price shown before paying, GST included; starts at PRICE_MIN_INR. - "Plan billing" radio next to Currency: Yearly redraws the Scholar and Pro cards with the yearly price, the per-month equivalent and the saving; the monthly view keeps a one-line yearly reminder. - "Rigorous proofread" now reads "Final check & proofread, done automatically" on every card. - pricing_html(currency, billing); test for both views. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>37d9ddb -
Automatic proofread, pay-per-use charges with a pay pop-up, yearly plans
unknown +1: Claude Opus 5.5Automatic proofread - Every humanized text / document (Smart Humanize, Humanizer) goes through the final check & proofread; the proofread file is delivered. AUTO_PROOFREAD=0 = only on request. - humanizer.PROOFREAD_FOLLOWS: the humanizer's own language-model polish is skipped when the proofread follows (one final check, not two). - A failed proofread still delivers the humanized result and says so. Pay per use (plans.py, app.py) - check_doc returns "payg" for a signed-in customer without credits instead of blocking (PAY_PER_USE=0 restores the block). - usage_price(): GPU seconds x COST_GPU_HOUR_USD, idle share of the Space (COST_IDLE_FACTOR), the job's language-model cost, then PRICE_MARGIN (200%), PRICE_GST (18%), PRICE_USD_INR, PRICE_MIN_INR. - charges table; the result is locked (no file, no preview, no email, not in the run history) until settle_charge(ref). Pop-up with the price; Pay opens PAY_URL or the WhatsApp contact; "I have paid" unlocks. - Admin: pay-per-us…ca97939 -
Cut language-model cost and show what each job costs
unknown +1: Claude Opus 5.5Measured on the paid tier: one pass of every task over 5,000 words is about 6-7 US cents; the natural-style rewrites are over half of it. - Models: default list is gpt-oss-120b, gpt-oss-20b. qwen3.8-27b (about six times the price) and the unavailable llama model are no longer fallbacks. - Routing: verify and grammar run on the half-price GROQ_LIGHT_MODEL (GROQ_LIGHT_KINDS); writing tasks stay on the main model. - verify(): verdicts cached and packed through the shared batch runner. - Final polish is sent only for paragraphs the tool changed (POLISH_CHANGED_ONLY). - A rate limit that clears within GROQ_SHORT_LIMIT seconds is waited out instead of switching writing tasks to the weaker model. - GROQ_JOB_BUDGET: ceiling per job in US$ (default 1.00); past it the job continues with the local checks. - Accounting: every request booked by task (tokens in, cached, out, cost; GROQ_PRICES); "[cost]" line per Smart Humanize and proofread job in the log. - README: measured costs a…2906069 -
Proofread: basic check instead of an error when no language model is reachable
unknown +1: Claude Opus 5.5With every Groq key and model at its usage limit and no credit on the other provider, "Final check & proofread" failed with "the proofreading engine has reached its usage limit". It now completes with what needs no model (rule-based clean-up, LanguageTool, the AI-score checks) and says plainly that the full check (unclear sentences, academic wording, flow, consistency) has not been done yet and should be run again later. - proofread: `limited` result flag; PROOF_BASIC_FALLBACK=0 restores the error. - app: the result headline reads "Basic proofread done" in that case. - tests/test_proofread_fallback.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>a130a73 -
Ask before rewording text that already scores 0% AI
unknown +1: Claude Opus 5.5Smart Humanize leaves a text or Word file that scores 0% AI unchanged. The result now says so and shows a pop-up asking whether it should be rephrased anyway: - "Rephrase anyway" presses a hidden button that reruns Smart Humanize on every sentence (about 35% new wording, at most two passes, no report; REPHRASE_ANYWAY_VOCAB / REPHRASE_ANYWAY_PASSES). - "Keep my text" closes it; a line with the same link stays under the result. - No pop-up after a rephrase-anyway run or when text was humanized. Reuses the existing upgrade pop-up; data-cs-stay keeps the page where the result is. Covered by tests/test_app_rephrase_anyway.py (logic and wiring only: not yet seen in a browser). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>7afb000 -
Merge the Space's 8-9 October work (origin/main) into the local changes
unknown +1: Claude Opus 5.5The Space had moved on (adaptive learning, detector-guided rewriting, token-budget handling in groqai, shared integrity checks, proofread changes). Conflicts in groqai, humanizer and textparse were resolved by keeping both sides: - groqai: the Space's token-budget chat loop, with the per-model fallback on a rate limit added to it. - humanizer: the Space's PARA_MODEL fallback inside the lazy load_model(); the automatic deeper rewrite (BOOST) feeds the adaptive candidate count and the plain-wording source. - textparse: both sets of guard checks run; strict_check keeps its rejection reasons and gains the Space's integrity checks. - integrity_issue: "bracket type changed" no longer fires when an author-year citation is dropped (it has no "["), so the guard can re-attach the citation again. 53 unit tests pass; text and Word end-to-end runs complete on the merge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>eaf69a7 -
Make Smart Humanize a one-button screen; choose the rewrite depth automatically
unknown +1: Claude Opus 5.5- app: the settings panel is replaced by a short "paste or upload, press one button" intro. All sliders and checkboxes remain, folded into a closed "Advanced options (not needed)" section below the work area; the Humanizer tab's settings are folded the same way. The checker report is one optional collapsed line. - report_flags: the kind of report (AI / similarity) is recognised from the report itself; the radio defaults to "Recognise automatically". - smart + humanizer: when a pass does not lower the score, the sentences still flagged get the deeper rewrite for the remaining passes (humanizer.BOOST, SMART_AUTO_DEEP=0 = off), so the customer no longer has to tick "100% AI-written". Sentences that read as human stay untouched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>726e1ce
11 days ago
-
Upload 3 files
Verified signatured71d180 -
Upload 5 files
Verified signature6600bf6 -
Upload 8 files
Verified signature0fdaff6
14 days ago
-
Upload 2 files
Verified signature886fddb -
Upload app.py
Verified signature47dd8ae -
Upload 3 files
Verified signaturef860cc8 -
Upload 9 files
Verified signature78dbb12
15 days ago
-
Upload app.py
Verified signatureb0b5152 -
Upload 4 files
Verified signaturef32a1d1 -
Upload 5 files
Verified signature91003c8
17 days ago
-
Upload 2 files
Verified signatureae7e308 -
Upload 6 files
Verified signature12739bc -
Upload app.py
Verified signaturee6834de
18 days ago
-
Upload 3 files
Verified signature370a123 -
Upload 3 files
Verified signature1932dd5 -
Upload app.py
Verified signaturea2397e2 -
Upload app.py
Verified signaturedb5bf08 -
Upload 4 files
Verified signature2a58020 -
Upload app.py
Verified signatured0c5b5a -
Upload 2 files
Verified signature9a76638 -
Upload 3 files
Verified signature1268f15 -
Upload 4 files
Verified signatured867a82 -
Upload 2 files
Verified signature674617e -
Upload 5 files
Verified signature77786c6