8835e01595
Remove guest login: every user registers with a phone number
Zareian2026-10-05 17:38:18 +03:30
03e81abe7e
docs: security guards table lists the new tests
Zareian2026-10-05 09:37:11 +03:30
28b8527760
Security review: staff admin lockdown, unicode-safe login/phone/grade inputs, demo guest not upgradable, home cache not floodable
Zareian2026-10-05 09:34:42 +03:30
fedd10ff22
Money review: Bazaar rejection no longer burns the purchase token, read-only order admin, pack grant from order snapshot
Zareian2026-10-05 09:26:26 +03:30
eb4e97753b
CLAUDE.md: security review fixes are deployed
Zareian2026-10-05 05:09:50 +03:30
58c8e6d014
question packs instead of monthly/yearly plans; hearts are real
Zareian2026-10-02 11:41:39 +03:30
2edc56fc08
paid plans: 10 tutor questions a day at 179,000 / 1,790,000 toman
Zareian2026-10-02 10:11:31 +03:30
b3940e87f7
docs: age tone, public IDs, prices, account deletion and the test-account cleanup
Zareian2026-10-02 06:50:33 +03:30
191aba0e25
tutor quota message in Persian digits
Zareian2026-10-02 06:36:03 +03:30
2f1e257533
delete_users: only project models; Django admin history (LogEntry.user_id is staff) was being counted
Zareian2026-10-02 06:20:05 +03:30
63cd1af6f7
public user IDs, plans priced by tutor cost, age-based tutor tone, self-service account deletion
Zareian2026-10-02 06:10:17 +03:30
e9d676ce68
delete_users --real-phones: every phone user except the demo logins
Zareian2026-10-02 02:41:16 +03:30
39247f6d53
senior's post-demo changes: parent report in the student's own account, Jalali birth date, invoices, math-only tutor, priced quotas
Zareian2026-10-02 02:38:43 +03:30
d5dbd1b23d
keep the Referer on the redirect to Zarinpal so StartPay accepts our domain
Zareian2026-10-01 08:56:13 +03:30
5e1613e431
docs: technical handbook without a version label, dated only
Zareian2026-09-30 14:11:39 +03:30
a325def504
docs: technical handbook (Markdown + PDF) with use-case and relational models, scenario diagrams
Zareian2026-09-30 13:38:21 +03:30
e3abd675db
let Bazaar verification find out whether a SKU is a one-time product or a subscription
Zareian2026-09-30 12:31:51 +03:30
5f4d7b1ed4
record the Bazaar connection: company account authorized, package com.tadrisino.app set
Zareian2026-09-30 12:24:00 +03:30
957c9d0f1e
record the 2026-09-29 final pre-presentation pass: what shipped, measured tutor latency, test writes to demo data
Zareian2026-09-29 22:23:07 +03:30
93b451d422
list a user's own support tickets, Persian digits in completion notifications, rewrite .env.example to match the code
Zareian2026-09-29 21:18:12 +03:30
8321dc22c3
record the 2026-09-29 deploy: diagrams live, backup name, test guests to remove
Zareian2026-09-29 08:18:29 +03:30
2c759a7dd7
docs: how tutor diagrams work, measured accuracy and cost
Zareian2026-09-29 06:58:01 +03:30
50df7bd371
diagram kit: triangles and quadrilaterals from problem data, shape patterns, translate points, arithmetic/quote/duplicate-key repairs, clock guard (tutor-v10-shape-anchor)
Zareian2026-09-29 06:11:43 +03:30
a8cd681d65
an explicit 'draw it' request without topic words gets the whole diagram catalog (tutor-v8-asked-figure)
Zareian2026-09-29 03:34:12 +03:30
731dea9bb1
tutor-v7-diagram-kit: anchor short follow-ups to the previous question, new diagram pieces in the prompt
Zareian2026-09-29 02:37:50 +03:30
14a4d9cbf1
redraw the figure on follow-ups that only change the numbers; add a local fake OpenAI server
Zareian2026-09-29 00:43:04 +03:30
0917ab487f
diagrams for every grade, sectioned prompt, repair of real model slips; fill lesson texts and thin islands
Zareian2026-09-28 23:22:13 +03:30
33d8f43d74
draw a diagram in tutor answers: validated JSON from the model, rendered by the app; add the fourth companion tedi
Zareian2026-09-28 17:44:44 +03:30
74c3ee5e86
record the Zarinpal fix: shared tadrisino2.ir merchant installed, PaymentRequest now 100
Zareian2026-09-27 22:25:13 +03:30
4393087fa7
wait up to 10 s to reach Kavenegar and 30 s for its reply
Zareian2026-09-27 22:14:23 +03:30
ca46e66024
keep the login code when Kavenegar answers late instead of failing the request
Zareian2026-09-27 22:06:34 +03:30
9a1ee36c0a
record the new Bazaar client and the real cause of Zarinpal -14 (merchant registered for tadrisino.org)
Zareian2026-09-27 21:45:58 +03:30
301a6942da
record that the login SMS now arrives: template SMSVerify on the server, status 10
Zareian2026-09-27 21:45:31 +03:30
c1c2a270c2
record the new Bazaar authorize link for mathapi.tadrisino2.ir
Zareian2026-09-27 02:11:28 +03:30
93334635f2
record the domain move and the live frontend: mathapi live, Zarinpal still -14, demo data intact
Zareian2026-09-27 01:39:56 +03:30
1f38465d88
move the API's own address to mathapi.tadrisino2.ir
Zareian2026-09-27 01:06:48 +03:30
8768a2406b
docs: the Bazaar redirect URI follows PUBLIC_BASE_URL; re-link after a domain move
Zareian2026-09-27 00:55:48 +03:30
4b246e0c70
make the domain configuration, not code: two env vars move everything
Zareian2026-09-26 23:46:25 +03:30
2f8ed50b86
record the Bazaar re-authorization: personal-account token cleared, new link out, 7d205ca live
Zareian2026-09-26 22:21:54 +03:30
7d205caa79
send the Bazaar access token without "Bearer" and cap its cache at an hour
Zareian2026-09-26 22:12:20 +03:30
ff212855a5
send the login code through Kavenegar's approved template when one is configured
Zareian2026-09-26 22:02:01 +03:30
f6cdfddaa9
record the 2026-09-26 Bazaar fix deploy: bdd5aba live, authorize link sent
Zareian2026-09-26 22:01:39 +03:30
bdd5aba985
fix Bazaar purchase validation URLs and add the new pishkhan-token method
Zareian2026-09-26 21:44:14 +03:30
64f88f0bce
record the 2026-09-26 Bazaar deploy: 8763ffd live, authorize window open 72 h
Zareian2026-09-26 21:33:53 +03:30
8763ffd7bf
let the Bazaar verify URL double as the OAuth redirect URI
Zareian2026-09-26 21:30:44 +03:30
5d490edaf9
keep the raw benchmark answers so the report's questions and answers never need re-running
Zareian2026-09-26 10:43:43 +03:30
64cf018e55
record the v6 fraction-wording experiment: notation slightly better, answers slightly worse, not shipped
Zareian2026-09-26 03:25:43 +03:30
a6f91ea915
record the gpt-4.1-mini deploy: 11bbe1c live, server .env switched, live answer verified
Zareian2026-09-26 03:02:18 +03:30
11bbe1c248
tutor runs on gpt-4.1-mini, and primary-school "/" is read as decimal or fraction by rule
Zareian2026-09-26 02:36:54 +03:30
e0176ca0a6
record the live integration check: GapGPT back, Zarinpal -14 domain mismatch, Bazaar unset, test user 18
Zareian2026-09-25 18:48:57 +03:30
4a3ec0280a
record the first real SMS test: Kavenegar cancels every send (status 13) from this account's line
Zareian2026-09-25 12:37:03 +03:30
8b510597a6
record the 2026-09-25 SMS deploy: 0580aec is live, Kavenegar on, test user 17 to purge
Zareian2026-09-25 12:34:37 +03:30
0580aec7b0
harden OTP for real SMS and close the second audit round
Zareian2026-09-25 12:28:06 +03:30
74aa9aa8ca
list everything left open for the demo that must be closed before real users
Zareian2026-09-25 10:32:36 +03:30
66066cbe23
record the 2026-09-25 deploy: 42783f9 is live, backup taken, bench folder removed
Zareian2026-09-25 06:28:59 +03:30
42783f9ba4
tutor answers step by step in plain text, islands finish, and the audit's money and login holes are closed
Zareian2026-09-25 06:24:13 +03:30
fbdb9495ee
close out the docs: current counts, the live-streak caveat for demo accounts, CACHE_URL as it really behaves
Zareian2026-09-24 07:47:29 +03:30
81348cee5a
drop leftovers from the live leaderboard: no fake model rows, no second sort
Zareian2026-09-24 07:27:45 +03:30
ca6b2ff4c9
record the 2026-09-24 state: frontend audit, what the backend gained, what is left
Zareian2026-09-24 07:00:53 +03:30
96f0204fcf
refill hearts like Duolingo: one every 5 hours, all of them after 24
Zareian2026-09-24 06:58:39 +03:30
701d8badcc
make streaks and the leaderboard live, and stop three AI chats from freezing the API
Zareian2026-09-24 06:39:50 +03:30
c874c186b1
see the real client IP behind ArvanCloud, and mark all notifications read in one call
Zareian2026-09-24 05:03:27 +03:30
147af3ac10
send the student back to the web app after paying, not to a raw JSON page
Zareian2026-09-24 03:46:41 +03:30
b32194497c
let a finished island quiz open the next island, and ground ask-AI in the student's book
Zareian2026-09-24 02:49:02 +03:30
0c6b08c9ff
make every grade's id its class number and sort grades by it everywhere
Zareian2026-09-23 22:47:02 +03:30
d70737dddf
record that the server now has RAG on, seven demo logins and demo data
Zareian2026-09-23 22:07:34 +03:30
7d6abab15c
document the twenty environment variables the code reads but never mentioned
Zareian2026-09-23 02:11:29 +03:30
5003b8a852
write down the frontend test account, which existed only in one person's notes
Zareian2026-09-23 01:55:16 +03:30
ac3999ea92
render the Persian API docs right-to-left
Zareian2026-09-23 01:45:37 +03:30
ae0375c26c
make the API docs page answer a consumer's first questions, and fix a missing endpoint
Zareian2026-09-23 01:28:32 +03:30
5492788bf8
make the README an entry point and move procedures into docs/
Zareian2026-09-23 01:12:04 +03:30
5aa10eb7b7
give every developer a way into the API that does not depend on one person
Zareian2026-09-23 00:52:57 +03:30
8fce3b9548
give the leaderboard and notifications a real producer
Zareian2026-09-22 13:30:57 +03:30
66364e0e92
fix the campaigns concurrency test by fixing what it was catching
Zareian2026-09-22 04:43:44 +03:30
6a6d0200d2
complete the quiz path for grades 8 through 12, and close three gaps in the API contract
Zareian2026-09-22 03:49:32 +03:30
82edd0ecb0
bring حسابان 11 and 12 into the game path
Zareian2026-09-22 03:35:26 +03:30
3026df0397
carry today's 312 new questions to the server
Zareian2026-09-20 12:50:30 +03:30
acce78bb03
write down the extraction method so another team can reuse it
Zareian2026-09-20 12:36:45 +03:30
3156bcbbf3
stop counting the frontend developer's port numbers
Zareian2026-09-20 12:36:45 +03:30