Releases
Product updates, improvements, and fixes for PracticeTET.
Patch release improving Remotion short-video speech playback and export (assistance languages, helper hook voices, MP4 download progress), fixing production build and TTS/highlight issues, and adding a yellow-themed View Practice History accordion on Daily 5 exam cards.
Added
- Remotion shorts assistance language (English, Marathi, Hindi) for localized exit and step copy
- Basic concept and application-steps helper hook audio before TTS in speech playback mode
- With-audio playback mode and studio MP4 download with live render progress
- Daily 5 exam card View Practice History accordion with per-paper history links and emerald solved status
Fixed
- Short-video TTS sourcing and scheduling (S3 materialization, speech clip sequencing, AST highlights in MP4)
- Firebase production build TypeScript errors in short-video speech and render download streaming
- Daily 5 practice-history accordion layout shift when expanding
Removed
Nothing removed in this release.
Minor release driving Remotion short-video screen timing from decorator TTS speech segments, adding server-side MP4 download with S3 audio materialization for render, and polishing studio intro metadata, concept reveal, application-step scroll, and exit marketing.
Added
- TTS-driven question, option, basic-concept, and application-step screen timing with chained speech playback in the Remotion composition
- Download MP4 from the short-video studio via server render, materializing S3 or local TTS into public assets for Remotion CLI
- Revision-driven short-video intro metadata, revealable rich content, and application-step autoscroll in the studio preview
- Exit screen Daily 5 link under the logo and refreshed shorts exit copy for YouTube publishing
- Speech-audio and screen-timing unit tests for short-video scheduling
Fixed
- Application steps revealing before prior step TTS finished by aligning UI steps, speech meta, and dictation clip scheduling
- Remotion render failures when TTS URLs pointed at API paths or stale dictationSpeechClips after audio rewrite
- Firebase production build TypeScript error when normalizing short-video data before questionScreenTiming is computed
Removed
Nothing removed in this release.
Patch release auto-scrolling the Daily 5 home page to paper CTAs after a short delay, and extending occurrence insights with Daily-5 Completions labeling plus a Partial Solves segment for in-progress attempts on each occurrence.
Added
- Daily 5 home auto-scroll to the choose-paper section and exam cards after 2s, with reduced-motion support
- Occurrence insights Total Daily-5 Partial Solves section with the same segment cards and today vs overall percentages
- Partial-solve detection for occurrence attempts with at least one question answered but not all five submitted
- Renamed occurrence insights Total Daily 5 solved to Total Daily-5 Completions
Fixed
Nothing fixed in this release.
Removed
Nothing removed in this release.
Minor release adding a time-aware Create Free Account modal on Daily 5 results for anonymous users, and expanding occurrence insights with today vs overall segment percentages plus registered-user home screen and push enablement metrics.
Added
- Daily 5 results account-create modal styled like the quick results reveal, with scroll- and idle-aware timing after solve flow
- Create Free Account CTA on the inline keep-progress nudge and results modal with localized copy
- Daily 5 occurrence insights dual percentages (today's total and overall total) on session visits and solved segment cards
- Home screen and Notifications enablement section for registered event participants with today and overall counts
- Backend aggregation for overall anonymous participants and PWA/push enablement from interaction events and active push subscriptions
Fixed
- Firebase production build TypeScript error when resolving registered participant Mongo user ids for insights
Removed
- CTET-only empty-state message about questions availability on the Daily 5 list
- Legacy three-day Important Reminder account modal on the Daily 5 results tab
Minor release adding a celebrate-first results reveal modal after View Results, fixing overall summary accuracy and rank calculations, and showing solved paper status correctly on Daily 5 home exam cards.
Added
- Daily 5 results reveal modal after View Results with card sweep, rank summary, and accuracy feedback
- Progressive emerald fill CTA on the reveal modal before opening detailed results
- Confetti and clapping timed with the reveal flow while deferring detailed results until dismiss
Fixed
- Daily 5 overall summary unique count exceeding total solved and accuracy diluted by empty days
- Overall rank using solved-question aggregates instead of incorrect denominators
- Home exam cards showing Paper 1 as Pending after completion due to scheduled-date mismatch
- Green results loading panel replaced with standard emerald spinner on results entry
Removed
Nothing removed in this release.
Patch release speeding up Daily 5 list and solve load with split today APIs and caching, improving the post-completion results experience, and blocking new attempts during the 11:55 PM–midnight IST contest close window.
Added
- Split Daily 5 today API into lightweight questions and lazy results endpoints
- Server-side caching for Daily 5 event and today resolution with invalidation on writes
- Client-side results prefetch cache for faster View Results navigation after completing Daily 5
- End-of-day contest window (11:55 PM–midnight IST) blocking new attempts while preserving review access
- Contest-ended results badge with locked ranks, percentiles, and medals messaging
- Green inline results loading panel when opening Results after completing Daily 5
- Auto-expand solution on wrong answers in the Daily 5 solve flow
- examCode and paperCode on assessment events with indexed Mongo lookup
Fixed
- Daily 5 solve screen slow load from full today API usage and duplicate per-question refresh
- Results tab stuck indefinitely on Loading results
- Confetti and clapping audio firing before results data finished loading
- Content API authorization running full today resolution on every question fetch
- Explain button shown when solution TTS audio is unavailable
- Question solve timer starting before question content was fully ready
Removed
Nothing removed in this release.
Patch release adding on-demand Daily 5 occurrence insights with segmented metrics and snapshot export, resolving assessment and campaign metadata from signed-off content revisions instead of copied snapshots, and polishing Daily 5 question card PYQ context styling.
Added
- Daily 5 occurrence insights panel with on-demand compute for session visits, solved counts, account acquisition rate, and total accounts
- Segmented insight metric cards with total emphasis and percentage-of-total on user-type dimensions
- Insights snapshot download via camera button exporting the analysis panel as JPEG
- Batch content revision loader enriching assessment event and Daily 5 occurrence metadata at read time
- Inline PYQ context line on Daily 5 question cards with dot-separated exam, year, and date
- Optional outline appearance for Daily 5 dissolve CTA buttons and links
Fixed
- Assessment event Use it storing copied metadata instead of content refs resolved from signed-off revisions
- Session visit and Daily 5 solved segment counts diverging for anonymous users on the same occurrence date
- Production build TypeScript errors in dissolve CTA appearance props and batch revision null mapping
Removed
Nothing removed in this release.
Patch release adding an Exam Medium content tag category, Sanskrit as an allowed subject, and safer tag canonicalization when subject and medium values overlap.
Added
- Exam Medium tag category with English, Hindi, and Marathi predefined values
- Sanskrit as an allowed PTMD subject and extraction job Subject tag value
- exammedium and medium aliases for Exam Medium in the content document tag store
Fixed
- Explicit Exam Medium tags being overwritten as Subject when values matched English, Hindi, or Marathi
- Legacy value-only English, Hindi, and Marathi tags still inferring as Subject instead of Exam Medium
Removed
Nothing removed in this release.
Patch release switching the Daily 5 flow to Noto Sans, polishing the home screen with a hero glow and exam card borders, styling solved paper CTAs as outlined chips, and adding a Total Time Spent metric on practice history.
Added
- Noto Sans as the primary font for Daily 5 home, list, solve, history, and question content
- Indigo radial glow behind the Daily 5 home hero headline area
- Total Time Spent overall metric card on practice history with compact hr/m/s formatting
- Outlined white styling for solved Daily 5 paper CTAs on the home exam cards
Fixed
- Tailwind font-sans overriding Noto Sans inside the Daily 5 campaign layout
- Daily 5 exam cards lacking a visible border on the home screen
Removed
Nothing removed in this release.
Patch release improving Manage Occurrences content metadata and search, restricting the 1212 OTP dev bypass to development, and showing a CTET Daily 5 availability message on the campaign list.
Added
- Subject code and Asked (N times) metadata on Manage Occurrences Available Content and Occurrence Content lists
- Extended Available Content search by subject, exam codes, and paper tags including Paper 1 and Paper_1 variants
- CTET availability message on Daily 5 campaign list (questions from 11 October 2026)
Fixed
- 1212 OTP dev bypass reachable in production login and create-account flows
- generatePhoneOtp returning 1212 outside development
Removed
Nothing removed in this release.
Patch release fixing paper-scoped Daily 5 progress and ranks, improving WhatsApp link previews with a PNG Open Graph logo, polishing results card layout and sharing, and sending MSG91 admin alerts on new account creation.
Added
- MSG91 admin email notification when a new PracticeTET account is created
- Share with Friends on Daily 5 history day results
- PracticeTET logo PNG Open Graph image for public result share link previews
Fixed
- Daily 5 progress, scoring, and candidate rank scoped to exam and paper instead of mixing papers
- Overall and today rank display, unique questions solved count, and related home and history refresh
- WhatsApp and iOS link previews not rendering when og:image used SVG or lacked an absolute PNG URL
- Daily 5 results metric card order and colors with Share with Friends on Candidate Rank
- Marathi label for unique questions solved (वेगवेगळे सोडवलेले प्रश्न)
Removed
Nothing removed in this release.
Patch release fixing Save Revision overwriting decorator-applied contentDocument fields by syncing the Edit tab to server revision updates, scoping local edit drafts to updatedAt, and preserving hydrated decorator work after save.
Added
Nothing added in this release.
Fixed
- Edit Revision Save overwriting speech segments, solution, and other decorator-applied contentDocument fields with a stale local editor snapshot
- Edit tab showing outdated contentDocument after decorator apply due to missing updatedAt sync and stale localStorage drafts
- Decorator work panel losing hydrated execution logs after Save Revision because PATCH response omitted decoratorWorkWithLogs
Removed
Nothing removed in this release.
Patch release adding inline speech segment text editing in the TTS Audio decorator, OpenAI prompt caching with cached-token cost tracking, combinationKey-aware TTS reconciliation after Speech Segments apply, and Smart Solution raw-string editing with live ASTify overrides.
Added
- Inline speech segment text editing in TTS Audio decorator with tick save to contentDocument (segment-text API)
- OpenAI prompt_cache_key on revision-scoped runs with cached input token rates and cache-hit metadata in execution logs
- Smart Solution Step 2 editable raw string with Save Raw String and rawStringOverrides for live ASTify
Fixed
- TTS Audio showing stale COMPLETED audio after Speech Segments re-apply when combinationKey no longer matches
- TTS work output reconciled on Speech Segments apply to reuse historical syntheses only when combinationKey matches
- SmartSolutionDecoratorPanel savingRawStringUnitIds ReferenceError at runtime
Removed
Nothing removed in this release.
Minor release introducing the Smart Solution Decorator as a unit-based alternative to the Solution Data Decorator, with structure validation, per-unit ASTify, sectional preview and apply, and consistent application-steps stepper rendering in Content View and Daily 5.
Added
- Smart Solution Decorator in content review with Step 1 structure (Raw paste stub and Clean paste JSON validation) and Step 2 ASTify workspace
- Per-unit ASTify via SmartSolutionDecoratorASTifyCTA prompt client with Content and Executions tabs in the unit detail panel
- Smart Solution structure save and ASTify API routes with apply-to-revision flow and execution log hydration
- Solution Preview section with Apply to Revision gated on validated AST for all units
- AST Builder for Solution prompt documentation (docs/AST/ASTBuilderForSolution.md)
- expandApplicationSteps option on DecoratorSolutionContentView so one Smart Solution unit renders as one stepper step
Fixed
- Application steps stepper splitting a single Smart Solution unit with multiple ROOT paragraphs into separate numbered steps in preview, Content View, and Daily 5
- HeroUI v3 Switch controls not responding in Prompt Allow Clients, column pickers, Show Archived, and comment visibility toggles
- Firebase production build TypeScript errors in Smart Solution decorator UI, prompt settings popover, and smartSolution data layer
Removed
Nothing removed in this release.
Patch release raising the AI prompt max output token default to 15,000 so Solution Decorator JSON responses are not truncated on multi-step math solutions.
Added
Nothing added in this release.
Fixed
- Solution Decorator and other prompt executions truncating at 4,096 output tokens on large AST JSON responses
- Legacy prompt revisions stored with the old 4,096 default now run with 15,000 tokens at execution time
Removed
Nothing removed in this release.
Patch release making the Diwali launch news strip always visible by removing the dismiss control and announcement hide logic.
Added
Nothing added in this release.
Fixed
Nothing fixed in this release.
Removed
- Launch news strip close button and localStorage-based dismissal cooldown
- Launch strip visibility gating via announcementDismissal for the Diwali campaign
Patch release adding a localized, dismissible Diwali launch news strip below the navbar, restoring the inline Save My Progress banner, polishing question solve timer and history loading UX, fixing toast auto-dismiss and Marathi/Hindi typography, and recording displayMode in interaction events.
Added
- Localized, dismissible Diwali launch news strip below the navbar with amber gradient marquee and megaphone badges
- Launch strip explore and close interaction events (PTETLaunchStripClicked, PTETLaunchStripClosed)
- Announcement dismissal policy with cooldown and permanent hide after repeated dismissals
- Daily 5 question solve timer chip UI with clock icon and elapsed time chips
- displayMode (browser | standalone) persisted in interaction event context
- Inline Save My Progress banner on Daily 5 list for anonymous users after today's completion or yesterday's practice
Fixed
- Toast auto-dismiss by passing the full HeroUI toast object through AppToast
- Marathi and Hindi typography by switching --font-sans to Noto Sans Devanagari for mr and hi
- Daily 5 history day detail loading state with centered emerald spinner
- Daily 5 exam card history accordion body vertical padding
Removed
Nothing removed in this release.
Minor release adding Daily 5 solution Explain helper voices, practice history and account-nudge UX polish, Marathi/Hindi Noto Sans typography, a reference-solution workflow for the Solution Data Decorator, Content View Smart Copy, and Firebase production build fixes.
Added
- Daily 5 exam card View Practice History accordion with per-paper history links
- Daily 5 history empty state with lottie and no-practice message
- Account create nudge modal on Results for anonymous users after 3 completed practice days
- Noto Sans Devanagari typography when Daily 5 language is mr or hi
- Daily 5 solution Explain helper voice clips (kickstart per section + closure greet) in en, mr, and hi with 500ms pause before closure
- Indigo/violet/purple gradient Explain button styling in Daily 5 solution panel
- One-off Gemini TTS script (npm run tts:one-off) for generating helper audio locally
- Solution Data Decorator reference solution input with execute confirmation modal
- referenceSolution field on decorator work and contentDocument.solution with per-revision append-on-apply
- referenceSolution included in SOURCE_QUESTION_TO_DECORATE prompt payload when confirmed
- Content View Smart Copy button to copy question, stimulus, options with optionIds, and correctAnswerKey as JSON
Fixed
- Assessment event available content checkbox selection and layout in content review
- Daily 5 Questions/Results tab rounded-md styling
- Firebase production build TypeScript errors in AppToast and AppToastProvider
Removed
Nothing removed in this release.
Patch release fixing production signup after login OTP when no account exists, polishing account-flow mobile navigation and OTP input styling, and computing Daily 5 push streak from the best current streak across paper tracks.
Added
Nothing added in this release.
Fixed
- Login not-found to create-account now carries verified phone from the OTP token so profile submit no longer fails with Phone number is required
- Mobile hamburger menu hidden on account, login, signup, and create-account routes
- OTP verify input shows indigo focus ring on the active digit slot only
- Daily 5 push streak uses the best current streak across paper tracks instead of a merged any-paper date streak
Removed
Nothing removed in this release.
Minor release adding Daily 5 web push reminders with streak-aware en/mr/hi copy, PWA add-to-home-screen prompts, interaction event tracking for share/account/PWA/push flows, learner preferred-language sync, MSG91 local OTP auth, and Firebase production build fixes.
Added
- Daily 5 interaction events pipeline to MongoDB with session attribution, UTM, and referral context
- Interaction events for result share, create-account, login, public result page views, and solve-today interest
- PWA install auto-prompt and manual modal with iOS steps, desktop Chromium fallback, and install/shown/added-to-home-screen events
- Web push with VAPID subscriptions, service worker, push API routes, and streak-aware reminder copy in en, mr, and hi
- Four IST push schedules: Daily 5 ready (8:30), reminder 1 (1:30), reminder 2 (8:00), and last chance (9:30)
- Push notifications modal in signed-in avatar menu with per-device subscription state and turn-on loading spinner
- Push interaction events for enable, disable, permission denied, notification click, and sent delivery
- Preferred app language persisted on learner profile and synced for localized push messages
- Local MSG91 SMS OTP auth with MongoDB verification for development and testing
- Pre-registered member gold shimmer title in signed-in account popover
- Assessment event occurrence question reordering and duplicate active event blocking in studio
Fixed
- Daily 5 completion UX, homepage learner flow, and live results badge presentation
- Daily 5 results sharing copy, account event wiring, and results screen UX polish
- Firebase production build TypeScript errors for web-push types, MongoDB ObjectId filters, VAPID BufferSource, and preferredAppLanguage parsing
- /daily5 prerender failure from useSearchParams without a Suspense boundary
- Push notifications modal close control, alignment, enabled-state copy, and disable CTA styling
- PWA standalone indigo theme-color title bar theming on desktop installed app
Removed
- Practice History link from signed-in account popover
Major release launching the public Daily 5 TET practice campaign with interactive solve flow, results and sharing, learner mobile OTP accounts with progress linking, pre-registration UX, and studio Assessment Events management wired to occurrence-based question delivery.
Added
- Interactive Daily 5 question solve flow with TTS audio, answer feedback, and previous/next navigation
- Daily 5 campaign wired to assessment event occurrences with today list, progress, and social proof
- Daily 5 results screen with medal tiers, performance metric cards, first-day comparison logic, and overall summary
- Public share page and WhatsApp/Facebook medal share popover for Daily 5 results
- Daily 5 practice history with heatmap calendar and day detail panels
- Learner mobile OTP login, create-account flow with avatar selection, and anonymous progress merge on signup
- Navbar account menus for anonymous and registered learners with pre-registration countdown and discount cards
- Dynamic welcome typing animations and gated Save My Progress nudge for returning anonymous users
- Assessment Events studio management with list, create, detail views, and occurrence scheduling
- Assessment event occurrence content assignment and content-review integration
- Solution decorator AST validation with content review apply/retry actions
- Homepage indigo CTA linking to /daily5: Solve Daily 5 TET Questions Daily
Fixed
- Daily 5 result card labels for Marathi Devanagari typography with Noto Sans Devanagari and natural letter-spacing
- Result metric cards keep min-width on desktop and wrap to new rows on smaller laptop screens
- Production build TypeScript errors for Firebase deploy including font subsets, MongoDB $pull, and TTS audio responses
- First-day result comparisons show localized first-day message instead of misleading prior-day trends
- Medal win ordinal counts learner medal history rather than same-tier rank among candidates today
- Social proof card copy switches between empty-state and your-turn messaging based on candidate count
- Live badge shows only for today occurrences in SCHEDULED state
Removed
- Experience a Mock Test gray homepage CTA in favor of Daily 5 campaign entry point
Patch release adding a manual Content Tags Decorator for editing contentDocument.tagStore in content review, and extending the Solution Data Decorator with tagStore input context and TET difficulty assessment that sets questionMetadata.difficultyLevel on apply.
Added
- Content Tags Decorator for manual tagStore editing in content review, reusing the extraction jobs Raw Markdown tag UI
- POST .../decorators/contentTags/save API to persist tags directly to contentDocument.tagStore
- tagStore ↔ ExtractionJobTag conversion helpers with legacy category alias support
- Solution decorator SOURCE_QUESTION_TO_DECORATE input fields from tagStore: examCode, subjectCode, contentNature, paper, others
- difficultyLevelAsPerTETExam (EASY | MEDIUM | HARD) parsing from solution decorator response
- questionMetadata.difficultyLevel update on solution decorator apply from difficultyLevelAsPerTETExam
- Revised SolutionDecoratorPrompt with tag input context, difficulty assessment, and teaching guidance updates
Fixed
Nothing fixed in this release.
Removed
Nothing removed in this release.
Patch release fixing direct content review URLs that previously fetched the full content list, showed a Coming soon placeholder, and rendered the group sidebar outside batch review mode.
Added
Nothing added in this release.
Fixed
- Direct content review detail URLs no longer fetch the full /api/content-review list when ?inGroup= is absent
- Coming soon placeholder no longer appears on valid single-content review pages after the revision loads
- Content review sidebar, prev/next navigation, and group position label now appear only in ?inGroup= batch review mode
Removed
Nothing removed in this release.
Patch release adding content review groups with extraction-job grouping and in-group batch navigation, server-side pagination for the content list at production scale, a strengthened submit-to-review and approval workflow with AST validation, and a fix for repeated revision API fetches on the content detail screen.
Added
- ContentReviewGroup collection with create and list APIs, extraction-job Group Content action, and Content Groups tab on the content review list
- Batch review navigation via ?inGroup= on content detail routes, opening the first question when a group is selected
- Server-side paginated content review list with debounced search and batched revision lookups for large datasets
- AST schema validation for solution sections and shared stimulus, required on submit-to-review and persisted with the revision
- Assigned reviewer gating for accuracy, UI, and sign-off approvals with duplicate submission rejection
- Content review sidebar revision status filter with color-coded item circles, legends, and status counts
- Return to draft flow and review reset when saving content changes on an in-review revision
Fixed
- ContentReviewScreen no longer refetches the same revision on every re-render from unstable useEffect dependencies
- Production sign-off now sets revision status to SIGNED_OFF instead of remaining IN_REVIEW
- ContentType enum import in paginated content list query so group and list APIs load correctly
Removed
- Dedicated /studio/content-review/groups/{groupId} list screen in favor of direct in-group detail navigation
Minor release delivering the content-review revision workflow, decorator tabs for solution and speech segments, Google Cloud TTS synthesis with S3 audio storage, and content-view playback with combined and per-segment downloads.
Added
- Full content-review revision workflow under studio routes with list, detail, comments, verification, and revision actions
- Content Review decorators tab with solution, speech segments, and TTS audio decorator work panels
- Solution decorator execute, apply, effective execution selection, and decorator AST content view rendering
- Speech segments decorator with segment grouping, apply-to-document flow, and short-video content-review revision wiring
- TTS audio decorator with per-segment Google Cloud synthesis, execution logs, effective segment selection, and Use it apply flow
- S3-backed TTS audio upload and proxy serving with fileS3ObjectKey on speech segment audio metadata
- Content view Audio menu with field-container highlight playback, Download Combined, and Download all actions
- BOLD and ITALIC AST node types with validators and tightened solution decorator prompt guidance
- Shared stimulus context display, decorator section badges, and application-steps stepper in content preview
Fixed
- Content review screen rendering for current ASTLib node types
- Application steps stepper connector layout during field playback highlighting
- Use it button and stale-content warning visibility when decorator output is not yet applied
Removed
Nothing removed in this release.
Minor release adding React AST renderers for all ASTLib node types, a studio playground with language, layout, and preview modes, and structured views for tables, statements, match columns, assertion/reason, rearrangement, and labelled parts.
Added
- React AST renderers for all ASTLib node types through ASTRendererRegistry
- AST Renderer Playground with per-node examples, EN/HI/MR copy, web/mobile/responsive preview, and inline/block layout toggle
- HeroUI table rendering with SIMPLE and 2DHEADER playground examples, sky-600 headers, and 2D corner arrows
- Statements layout with overlapping S1–S4 badges and gray card rows
- Match columns two-column card layout with mapping pills for match options
- Assertion/reason card layout, rearrangement sentence vs letter unit types, and REARRANGEMENT_OPTION label-chain badges
- Labelled parts sentence rendering with inline labelled-part chips
- Self-hosted Temml Noto Sans Math, AstImageView fullscreen zoom, and AstBlockScrollShadow for overflow on small screens
Fixed
- Highlight, underline, and fill-blank inline decorations for a cleaner renderer look
- Table horizontal scrollbars stay visible on wide AST tables
- Playground node list hides composed child types such as STATEMENT, TABLE_ROW, TABLE_CELL, MATCH_COLUMN, and MATCH_ITEM
Removed
- Monolithic astRendererPlaygroundExample data file in favor of the per-node playground module
Patch release fixing ASTify Generate Failed outcomes when model JSON contains invalid LaTeX escapes, and adding AST tab recovery with editable editor and Validate for failed generations.
Added
- Loose JSON parsing for AST Builder responses to tolerate invalid escapes such as \circ in LaTeX
- Generate Failed AST tab recovery from effective execution logs with editable editor, info banner, and Validate
Fixed
- ASTify no longer marks content units as Generate Failed when the model response is readable but strict JSON.parse fails on LaTeX backslashes
Removed
Nothing removed in this release.
Patch release improving Content Review and Extraction Jobs table pagination, showing extracted AST on validation failure with manual edit and re-validate, and removing strict rawString echo checks from AST Builder validation.
Added
- Compact table pagination (first 5, current neighborhood, last 5) on Content Review and Extraction Jobs lists
- Content Review table page size increased to 25 rows
- AST tab always shows extracted AST after a successful ASTify call, with validation errors above the editor
- Editable AST editor and Validate action on validation failure, with automatic save when AST validation passes
- POST validate-ast API to re-validate and persist manually corrected content unit AST
Fixed
- AST Builder no longer fails validation when model echoes rawString with minor LaTeX escaping or delimiter differences
Removed
- AST_BUILDER_002 rawString exact-match check from AST Builder response validation
Patch release adding Mistral prompt prefix caching with cached-token cost tracking in execution logs, fixing PTMD batch output when Mistral returns multiline JSON, and allowing empty TABLE_CELL nodes for 2DHEADER tables during AST validation.
Added
- Mistral prompt_cache_key on revision-scoped runs with cached input token rates and Cache hit metadata in execution logs
Fixed
- PTMD batch editor no longer shows raw JSON when Mistral returns literal newlines inside ptmdData strings
- AST validation accepts empty TABLE_CELL children for structurally empty 2DHEADER table cells
Removed
Nothing removed in this release.
Patch release adding provider/model selection in the Prompt Console (OpenAI, Gemini, Mistral) with model-specific execution costs, and refining RawToPTMD Assertion-Reason rules to use Assertion/Reason labels in options.
Added
- Prompt Console model picker with provider catalog, per-model pricing display, and revision persistence
- Central AI provider executor for OpenAI, Gemini, and Mistral with unified execution logs
Fixed
- Prompt execution costs now use selected model pricing instead of global GPT-4o mini defaults
- RawToPTMD Assertion-Reason options now rewrite A/R shorthand to Assertion/Reason labels
Removed
Nothing removed in this release.
Patch release fixing Content Document stage load failures on large extraction jobs by slimming the content-artifacts list API and lazy-loading artifact details, resolving a Firebase build error, and updating app shell responsive width breakpoints.
Added
- ContentArtifactEJSummary list response for content-artifacts with per-artifact INR cost aggregation
- GET content-artifacts/[artifactId] detail endpoint for full AST and GPT execution logs
- Lazy-load content artifact details when accordion rows expand on the Content Document stage
Fixed
- Content Document stage blank UI and JSON parse failures on large jobs caused by ~33MB content-artifacts responses corrupted mid-stream
- Incorrect "Create Content Artifacts" empty state when artifact list fetch failed for AST-stage jobs; now shows retry
- Firebase production build TypeScript error from invalid ExtractionJobJourneyModal size prop
- App shell, navbar, and footer width breakpoints updated to 97% below 1600px and 80% at 1600px and above
Removed
Nothing removed in this release.
Patch release adding CategorizationBasedMCQ PTMD and AST support for classify-items-into-categories questions, extraction job status audit timeline with journey modal, and PracticeTET favicon branding.
Added
- CategorizationBasedMCQ PTMD type with @Reference(CATEGORIZATION, SIMPLE), compiler IR parsing, structure skeletons, and pass-through validators
- ASTLib nodes CATEGORIZATION, CATEGORIZATION_CATEGORY, CATEGORIZATION_ITEM, and CATEGORIZATION_OPTION with validators and ASTBuilderPrompt documentation
- Extraction job journey modal with status audit timeline, transition cards, active-stage indicator, and time-spent tracking
- Status audit recording on extraction job create, save, and status transitions with initial-save backfill for older jobs
- PracticeTET favicon and layout, navbar, and footer branding updates
Fixed
- Extraction job journey time-spent calculation now measures duration in the previous status correctly
Removed
Nothing removed in this release.
Minor release adding PTMD skeleton insertion on the Compile stage editor, new Rearrangement and Labelled Parts MCQ types with compiler support, matching ASTLib nodes and validators, and RawToPTMD prompt improvements.
Added
- PTMD skeleton insertion select on the Compile stage PTMD editor with structure templates for question types, sheet types, and reference blocks
- RearrangementBasedMCQ and LabelledPartsQuestion PTMD types with compiler and reference support
- ASTLib nodes REARRANGEMENT, REARRANGEMENT_ITEM, LABELLED_PARTS_OF_CONTENT, and LABELLED_PART with validators
- PTMD structure skeletons documentation for manual editing on the Compile stage
Fixed
- RawToPTMD prompt improvements
Removed
Nothing removed in this release.
Minor release delivering the end-to-end content extraction AST pipeline, publish-to-Content Review workflow, a new Content Review studio screen, and ASTLib validation coverage across core and complex node types.
Added
- Content Review publish flow from approved extraction jobs into Content/ContentRevision records
- Content Review studio list and revision detail screens
- Content Document Approve tab with insight cards, publish modal, and published content table
- Content Artifacts panel with accordions, content unit selector, Raw/AST/Executions tabs, and ASTify GPT integration
- Bulk ASTify modal with sequential processing, progress UI, and extraction job status sync
- ASTLib node types, validators, and renderers with vitest coverage across basic and complex AST nodes
- PTMD compiler validation, flexible MATCH_COLUMN headers, MATCH_OPTION node type, and PTMD scroll sync
- IR-to-ContentArtifactEJ adapter, Retry AST action, and Content Review architecture documentation
Fixed
- Accordion trigger hydration error in extraction job UI
- ASTBuilderPrompt, RawToPTMD prompt, and PTMD compiler statement rule handling
Removed
- referenceType concept from ContentArtifact schema, deprecated in documentation
Patch release documenting AST and QuestionDocument schemas, improving the PTMD Monaco editor and prompt, adding a content extraction stage CTA, and fixing archived extraction job actions.
Added
- AST approach and structure documentation
- QuestionDocument schema for ContentArtifactEJ (type = QUESTION)
- Content extraction job check and create content documents CTA on stage three
- PTMD Monaco editor syntax highlighting and improved PTMD prompt
- Batch-level error count in PTMD reference validation
- TEST PTMD raw markdown data file and strict solution sheet batch violation docs
Fixed
- Archived extraction jobs now disable actions on the extraction job flow screen
Removed
Nothing removed in this release.
Patch release adding archive flows for extraction jobs and prompts, a PTMD Generate tab batch filter popover, active and total PTMD batch cost display, expanded subject metadata defaults, and fixes for extraction job filtering and job name validation.
Added
- Archive and restore flows for extraction jobs and prompts with Show Archived toggle
- PTMD Generate tab batch filter popover with multiselect Batch Type and Batch Status filters
- PTMD stage cost chip showing Active and Total spend, with tooltip explaining each
- Server-side total PTMD batch cost aggregation including archived batch execution logs
- Marathi and SocialScience subject code options in tag select and allowed PTMD subjects
- Default document metadata fields meta.isPracticeSet = false and meta.paper = 1
Fixed
- Extraction job tag and status filtering now returns correct results when combined
- Extraction job name validation and editable job name sync with live extraction job code
Removed
- PTMD Generate tab batch type and status TagGroup filters replaced by filter popover
Introduces a three-phase PTMD compiler with Compile-to-IR workflow, extraction job status filters for the PTMD pipeline, AnswerKey batching with type-aware batch groups, and fixes for job status transitions and scoped batch marker insertion.
Added
- Three-phase PTMD compiler with parser, validator, and IR builder
- Compile tab replacing PTMD validation runs, with dry-run compile and IR JSON preview
- Save flow that persists PTMD and compiled IR with IR_SUCCESS or PTMD_GENERATED status
- PTMD Batched, PTMD Generated, and IR Success filters on the extraction jobs screen
- Document-based line indexing in PTMD compiler error reporting
- AnswerKey batching in raw markdown with single @Batch / @BatchEnd wrapper under AnswerSheet
- Batch type field and badges (QuestionSheet, AnswerKey, SolutionSheet) with type filter TagGroup
- Batch groups split by type first, then chunked to five entries without mixing sheet types
Fixed
- Job status now transitions to PTMD Generated when all batches complete, with server refresh after parallel batch generation
- Insert @Batch / @BatchEnd now updates only the target sheet and preserves existing batch markers in other sheets
Removed
- PTMD validation runs history UI and run validation API flow
- Legacy extraction job statuses PTML_TO_GENERATE, PTML_VALIDATED, and VALID_IR
Fix release adjusting raw markdown batch character limits, resolving the extraction jobs column picker runtime error, and raising the prompt template editor limit to 20K characters.
Added
Nothing added in this release.
Fixed
- Extraction jobs table column picker crash when toggling visible columns (cell/column count mismatch in resizable table)
- Raw markdown batch validation now uses a 5,000-character limit with line-based limits removed
- Auto batch marker insertion now splits at 2,000 characters instead of 1,800, without line-based splitting
- Prompt template and preview editor character limit increased from 5K to 20K
Removed
Nothing removed in this release.
Major release introducing the Prompt Management console, central GPT prompt execution with run history, and PTMD batch creation with GPT generation, effective execution selection, stitching, and cost tracking.
Added
- Prompt Management console with prompts table, search, filters, column picker, and column resizing
- Prompt console header with revision label, status label, and expandable details accordion
- Edit tab for prompt console with template editing, placeholders, layout handling, save, and new revision creation with validations
- Playground tab with placeholder color labelling and local run preview
- Common GPT prompt executor integrated with Prompts Playground runs and central execution logging
- Run history with request/response copying and recent runs display
- Client allowlisting in prompt revision basic details with execution context configuration
- PTMD batch creation from raw markdown with @BatchPlaceholder stitching
- PTMD batch generation with GPT executions, group-level parallel Generate, and cost tracking
- Effective GPT execution selection per batch with stitched PTMD updates when execution hash changes
- Prompt settings control on extraction PTMD stage with pending and completed batch filters
- Generate calls routed through central GPT util with execution logs stored in AIPromptExecutionLogs
- PTMD Batched and PTMD Ready extraction job statuses
- Unlock modals for protected raw markdown and PTMD editing flows
- Maths_Science and SocialScience_SocialStudies subject code tag category values
Fixed
Nothing fixed in this release.
Removed
Nothing removed in this release.
Extraction jobs list improvements including search, pagination, structured tags, filtering, batch count support, and a releases screen.
Added
- Search filtering across job names, exams, and tags
- Jobs pagination on the extraction jobs list
- Batch count support for extraction jobs
- Add tags, remove tags, and auto-extraction of tags from document metadata
- Tags column in the extraction jobs table
- Structured tags with category labels and custom tag creation UI
- Filter popover with tag and status filter types
- Releases screen for product version history
Fixed
Nothing fixed in this release.
Removed
Nothing removed in this release.