| S.No | Version | Particulars (what changed) | Expected output |
|---|---|---|---|
| 1 | 0.5.59 |
First PHP charts stack: landing, Google/dev login, TradingView Advanced Charts,
Dhan tip.php (~21 sessions) then history.php.
Live path pointed at empty wsUrl and SSE /api/stream.php
(synthetic ticks, named SSE events the client did not read).
Phase 3 wrapped TradingView UDF against /api/tip.php (not a UDF server).
|
Chart HTML and historical tip could load when Dhan token was set. Forming candle / live LTP did not update. Browser WebSocket never opened. |
| 2 | 0.5.60 |
Stock Hunter live pattern, Dhan instead of Kite:
CLI daemon cron/dhan_ticker_daemon.php polls Dhan LTP and writes
data/cache/ticks.json. Charts poll /api/ticks.php (~400ms)
and subscribeBars builds the current IST candle from LTP.
Custom datafeed only: tip first, then full history on scroll/warm — UDF wrapper removed.
systemd unit bc-dhan-ticker started on VPS deploy.
Empty data/dhan.json no longer hides the token in config/env.php.
|
Header live badge moves to Live when ticks are fresh (<2s).
Current 5m (or selected TF) candle updates with real Dhan LTP during market hours.
First paint still comes from tip; left-scroll uses history API.
Token is read from data/dhan.json or config/env.php.
If Dhan returns 401, paste a fresh daily token at /admin/dhan.php
(the wipe backup did not contain a live token; a leftover JWT from 21 Sep was expired).
|
| 3 | 0.5.61 |
CRUDE OIL / MCX: TradingView session is now 0900-2330 (not NSE 09:15–15:30).
Dhan status: failed (401/429) is treated as an error instead of an empty successful cache.
Empty Dhan payloads are not written to tip cache. Health treats MCX as open until 23:30 IST.
|
/charts?symbol=CRUDE OIL can paint evening candles. After a valid Dhan token,
tip + live LTP work through the MCX session. Invalid token still shows a fallback tip instead of the empty UFO screen.
|
| 4 | 0.5.62 |
Live ticks: Dhan marketfeed was called as one mixed body with string IDs
(IDX_I + MCX_COMM) → HTTP 814 Invalid Request.
Now one request per segment with integer security IDs, using
/v2/marketfeed/ohlc first (same as KI ticker), LTP as fallback.
|
Header badge Live, CRUDE OIL last candle updates, watchlist LTP
when quotes are in ticks.json.
|
| 5 | 0.5.63 | One Dhan OHLC call per loop (integer IDs, all segments together) so MCX CRUDE is not dropped after the index call hits rate-limit 429. Removed extra LTP fallback spam. |
ticks.json includes CRUDE OIL LTP; chart badge Live; forming candle moves.
|
| 6 | 0.5.64 |
CRUDE OIL is Dhan security 569900 (CRUDEOIL OCT FUT). Forming 5m candle now
comes from Dhan /v2/charts/intraday today (open/high/low/volume), with LTP
only updating close/wicks — not a new bar built from snapshot session OHLC.
Chart title shows the October contract name.
|
Last candle O/H/L/C/V should track Dhan’s OCT FUT 5m (small lag ~1–6s). Volume on the forming bar is non-zero. Live LTP still from marketfeed OHLC. |
| 7 | 0.5.70 |
Live path is one PHP CLI process talking to DhanHQ MarketFeed WebSocket
(wss://api-feed.dhan.co v2 binary packets). Same process builds 1/3/5/10/15/30/60m
candles in memory and fans out to browsers on /ws/live.
getBars (tip + history) returns closed Dhan candles only — open bucket
is stripped so history and live meet on the same candle. Session/weekend holes no longer
return false noData. File ticks.json is a snapshot for watchlist/fallback only.
No Python.
|
Chart first paint still from tip cache. After subscribe, the current candle moves tick-by-tick with Dhan Quote/Full volume. Switching 5m→15m→1m reuses the same MarketFeed. Badge Live / Live WS. PHP CLI + a valid daily Dhan token. No Python. |
| 8 | 0.5.71 |
Same MarketFeed now covers the full watchlist (indices + sectors + F&O, cap 250)
and live candles for 1 / 3 / 5 / 10 / 15 / 30 / 60 / 1D from each tick.
Daily history uses Dhan /v2/charts/historical. Watchlist LTP comes from
the live quote map. Instrument map is segment:security_id so NIFTY 13
and ABB 13 do not collide.
|
23 Sep 2026 ~22:45 IST on VPS: feed dhan-marketfeed-ws, n=229 instruments (watchlist catalog).
CRUDE OIL LTP 8796, security 569900, CRUDEOIL OCT FUT, tick seq=273, quote age 13ms.
Live bars present for 1m / 5m / 15m / 60m / 1D (1D bucket distinct from intraday).
One Dhan socket; timeframe switch does not reconnect. Watchlist rows pick up LTP from the same quotes.
|
| 9 | 0.5.72 | Fast paint: tip returns last ~160 bars; FILE cache 4h; no session lock on tip/history; Redis connect fail is 150ms then skipped for 60s. Browser MEM/sessionStorage paints symbol/TF switch instantly. 3/10/30m (and thin 60m) are aggregated from Dhan native 1/5/15/60 — Dhan does not serve a full 30m series. Prewarm NIFTY / BANK NIFTY / CRUDE for 5/15/30/60 after first chart. Dropped LogBot + candle-monitor from the chart page. | Cold tip target ≤250ms when FILE/MEM hits. Crude → NIFTY should paint from session cache after first visit. 30m/60m should show a full session history (aggregated 5m), not a handful of Dhan 30m bars. Header cache metric: FILE / MEM / SESS / DHAN+AGG30. |
| 10 | 0.5.73 |
VC-style chart boot without a MySQL warehouse. First paint: MEM → sessionStorage →
IndexedDB (≤80ms) → Dhan REST tip (FILE then /v2/charts/intraday|historical).
charts.php releases the PHP session before HTML. APIs skip sessions.
Cron warm_history.php refreshes FILE packs for NIFTY / BANK / CRUDE / SENSEX
native 1/5/15/60 from Dhan REST every 10 minutes. Service worker caches
charting_library only. Live Log HUD restored (ki_logbot.js, header Log).
|
Repeat visits and symbol switches paint from IDB/MEM without waiting on Dhan. Closed history still matches Dhan REST (never SQL). Header cache: IDB / MEM / SESS / FILE / DHAN. Live Log overlay tracks tip ms and ticks. Library second load is cache/SW. |
| 11 | 0.5.74 | Cold path is one FILE tip, not a chain. Live Bot COLD LOG no longer records prewarm/scroll/Dhan paging as “cold”. TradingView left-scroll no longer fires 90-day Dhan REST on open. Debug beacons only on errors. Logbot script loads after first paint so it does not sit on the critical path. | Header tip is time-to-first-candle after the TV library. FILE/SESS/MEM should stay in ms–low hundreds of ms. COLD LOG gets one row per symbol open, then stops. Scroll past the FILE pack is noData, not a multi-minute Dhan wait. |
| 12 | 0.5.75 |
Live Bot auto-test wiring: setSymbol actually switches the widget;
tv.speed is switch latency not page-age; page.tv_ready /
first-candle marks; subscribe attaches a seed forming tip; WS flags
__kiWsConnected. Auto-test pool is indices+sectors (FILE-warmed), not
200 F&O names that miss FILE and sit on Dhan REST for tens of seconds.
|
Start on Live Bot should get page tv.ready, hist in ms on FILE hits, live seed while NSE is closed, scroll pages that return immediately at pack edge. Header tip on symbol change is ms since the switch, not 30–80s of wall clock. |
| 13 | 0.5.76 |
First paint uses the last ~220 FILE bars; the rest stay in MEM for left-scroll.
Emits tv.deep.prefetch + scroll getBars.ok with count/first_t.
Logbot loads after the TV library. Guest /charts skips PHP session.
Auto-test prefetch wait 800ms; pan timestamp is set before setVisibleRange.
|
Live Bot Start: page libs/tv.ready without an 18s logbot parse; hist FILE/MEM;
live seed; scroll pages return older MEM bars instead of 14s timeout_no_scroll_bars.
Full run should be tens of seconds, not ~200s.
|
| 14 | 0.5.77 | Tip always last 3 trading days from shared 5m pack (agg to 15/30) so CRUDE 5m/15m match. Block DEMO synthetic paint. History backfills incomplete FILE slices; deep HIST-FILE warm. Diag rebuilt: version badge, tip/history/feed/speed cards, symbol×TF matrix with gaps + fallback flags. IDB tip store bumped to v2. |
Header /charts and /diag.php both show v0.5.77. CRUDE 15m tip = 3 trading days,
same OHLC family as 5m. Diag matrix: tip OK + hist OK, fallback=none, same-day gaps=0.
Scroll-left continuous without DEMO candles.
|
| 15 | 0.5.78 | 60m tip/history also aggregates from the shared 5m FILE (no separate cold Dhan 60m pack). Fixes diag matrix red cells for CRUDE / FIN NIFTY / sectors on 60m. |
Diag matrix: all symbols green tip+hist on 5/15/30/60. Charts header v0.5.78.
|
| 16 | 0.5.79 |
History bridge loads before older chunks; hole detector backfills gaps >4d;
resetData after bridge so 15m NIFTY no longer jumps Sep 4→21. Scroll refuses
sparse MEM pages until the bridge is fetched.
|
NIFTY 50 15m: tip 3 days continuous with prior sessions (7,8,9…18 then 21). Header v0.5.79.
|
| 17 | 0.5.80 |
Day-break marks on the time axis (getTimescaleMarks + session breaks).
Diag adds Continuity card + matrix cont pill (last-before-tip ↔ tip-first, max 4d gap).
Bridge window in diag widened to 40d; client clears stale tip session cache.
|
NIFTY 50 15m scroll: …18 Sep then tip 21–23. Diag Continuity = YES (not only tip/hist green).
Day numbers visible on the timescale. Header v0.5.80.
|
| 18 | 0.5.81 |
Match VC Stocks charts: tip/history always load continuous 5m, then client-aggregate 15/30/60
(same trading days on every TF). Freeze chart LTP before NSE 09:15 (watchlist can still update).
Live-health market_open is NSE-only (not MCX 09:00). IDB tip store v3.
|
15m scroll shows the same days as 5m (…11,15,16,17,18 then 21–23). Candles do not move before 09:15.
Badge shows Pre-open. Real FILE/DHAN bars only (no DEMO). Header v0.5.81.
|
| 19 | 0.5.82 |
Freeze watchlist LTP outside session (not only chart candles). Day breaks via VC
sessions.vertlines.sessBreaks overrides + weekday session string.
|
Nifty watchlist LTP static until 09:15; vertical day-break lines on the chart. Header v0.5.82.
|
| 20 | 0.5.83 | Watchlist: integer LTP for indices/sectors/F&O; % change vs previous close; alias shared security IDs (BANK NIFTY↔BANK, FIN NIFTY↔FINANCIAL SERVICES); OHLC seed on marketfeed connect so chg is available at open. |
Every watchlist row shows LTP (no decimals) and +/−%. Live WS already running before/at 09:15.
Header v0.5.83.
|
| 21 | 0.5.84 |
Calmer live tip (VC Stocks style): coalesce chart onTick to ~500ms, skip unchanged
price for 900ms, build OHLC from smoothed LTP (not every Dhan packet / server bar).
WS broadcast soft-throttle ~4 Hz/symbol.
|
Forming candle moves like TradingView / VC — not tick-by-tick jitter. Header v0.5.84.
|
| 22 | 0.5.85 | Fix overnight gap-fill: new session bar opens at day open / LTP, not previous close. Heals the giant red candle that spanned yesterday close → today open. |
Gap down shows empty space like TradingView/Dhan; first candle is a normal open bar. Header v0.5.85.
|
| 23 | 0.5.86 | Live switch fix: WS broadcast matches alias labels (BANK NIFTY↔BANK, FIN NIFTY↔FINANCIAL SERVICES) so Bank Nifty candles move without refresh. |
Switching Indices → Bank Nifty keeps Live updates. Header v0.5.86.
|
| 24 | 0.5.87 |
No DEMO/STALE/synthetic candle paint. Tip miss or error falls through to
history.php only. Parallel hist prefetch for faster scroll-left;
hybrid LTP coalesce ~150ms; Live Bot CANDLES/HIST panel (days, bridge, prefetch).
|
Empty tip never paints stagnant DEMO. Chart fills from history API.
Crude/indices scroll-left warms faster. Header v0.5.87.
|
| 25 | 0.5.88 |
Disable stacked timescale day circles. Add 45m + 4h. Live Bot TF matrix
(1/3/5/15/30/45/60/240/1D) with tip-day + bar-count audit. Live tip accepts
server/ltp-smooth. Scroll not gated on live; soft
reset only once when first paint was sparse (less flicker).
|
Clean bottom dates on 60m. Auto-test covers all TFs. Live/scroll no longer
false-fail when WS is live. Header v0.5.88.
|
| 26 | 0.5.89 |
Watchlist click always invalidates tip cache, fetches fresh tip, then
setSymbol+resetData. Removed MEM-TRIM lagged paint.
During session, tip must include today's recent bars (matches Dhan day candles).
LTP path unchanged.
|
Clicking any WL symbol paints full current-day candles without needing a
browser refresh. No empty/lagged MEM-TRIM panes. Header v0.5.89.
|
| 27 | 0.5.90 |
Tip FILE TTL 90s in session (was 4h) + stale-last-bar re-fetch.
WL switch uses tip?refresh=1. Warm cron every 2m.
|
Current-day 5m candles stay close to Dhan without a hard refresh.
Header v0.5.90.
|
| 28 | 0.5.91 | Bank Nifty ticks only alias to BANK/BANK NIFTY (not PSU BANK). Symbol switch replaces tip (sanitize wild OHLC), no softReset flicker. Autobot AGG short_days soft-only. |
PSU BANK chart stays ~8k; no Bank Nifty high spike. WL clicks no longer
flicker wrong↔right. Header v0.5.91.
|
| 29 | 0.5.92 | First paint = tip→history only (no SESS/IDB/AGG authority). Clear all local tip caches on switch. No LTP seed/realtime bar until same-symbol hist exists. Reject cross-symbol LTP vs hist close. |
Watchlist click always shows real candles (or hist fallback), never a blank
one-candle cliff. Header v0.5.92.
|
| 30 | 0.5.93 | Tip→hist continuity: histNet merges fresh 5m before AGG; scroll serves warm pool without waiting on bridgeReady; TF switch reuses 5m/1m pool; no wipe of shared 5m on setSymbol; soft-reset after bridge; faster 1m parallel prefetch; 1m hist lookback 60d. |
10m/15m/… scroll shows Sep18 continuously after tip (not jump to Sep11/Jul).
1m left-scroll warms faster. All symbols. Header v0.5.93.
|
| 31 | 0.5.94 | Live Bot Start: full TF matrix incl. 10m; tip 3d → bridge wait → auto scroll←; fails on day gaps (tip→Sep11 style); random WL indices/sectors/custom/FNO; Copy test log + ingest auto-test.report. |
Click Live Bot → Start for automatic tip/scroll/speed audit across all TFs.
Header v0.5.94.
|
| 32 | 0.5.95 |
Baseline checkpoint — working well, minor known issues.
Live Bot scroll scoring fixes; Redis tip middleware; option-chain modal on charts
(click CE/PE → OPT:{sid}); Sensex options on BSE_FNO;
tighter LTP/sanitize guards against Nifty-into-equity High spikes;
OC under-switch Redis TTL + prefetch.
Minor: occasional cold scroll wait before deep hist is warm; rare cross-tick heal until refresh.
|
Charts, live ticks, tip, option chain pop-up, and Sensex premium tip work in production.
Header v0.5.95. Use as the last “stable enough” line before warehouse warm.
|
| 33 | 0.5.96 |
Architecture: fast tip (~3 trading days) unchanged for first paint.
On every symbol open, background /api/warm.php ensures a ~30 trading-day
5m warehouse target (check FILE/Redis → fetch only if short → store).
Client merges warm 5m into MEM/AGG; scroll/TF prefer local warehouse.
Warm never resets TradingView live series.
|
Open any chart → tip paints immediately → ~30d 5m warms quietly for that symbol.
Left-scroll / TF change read warm store when ready. Header v0.5.96.
|
| 34 | 0.5.97 |
Diagnostics UI for the tip→warm architecture: live “Simulate chart open”
(tip then /api/warm), warehouse warm card, multi-symbol open board,
speed includes warm ms. Use in incognito to verify first paint + background warm.
|
Open /diag — green steps = tip fast + warm ready. Header v0.5.97.
|
| 35 | 0.5.98 | First paint uses last 3 trading days (not last 220 bars) so 15m/30m/60m no longer open on a deep left edge (e.g. 4 Sep). Full diag simulation table: indices + sectors + F&O — tip cold/warm per TF, dates vs calendar, gaps, warm 30d, history continuity, live WS. Button Simulate all symbols. |
Switch TF → tip window ~22–24 Sep. Diag table shows PASS/FAIL per symbol.
Header v0.5.98.
|
| 36 | 0.5.99 |
Trading-day continuity framework (holiday-aware, incl. 14 Sep Ganesh):
warm/Pass now requires continuous IST sessions, not just day-count.
Client REPLACEs all AGG TFs (15/30/60…) from the full 5m warehouse after tip/warm
(fixes tip-only AGG race that left date gaps on Crude / PSU Bank / Realty).
Faster left-scroll (60d extend, no bridgeReady gate). Diag Cont column lists
missing trading days per TF — PASS fails if any TF has holes.
|
15m/30m scroll shows continuous trading days (weekends/holidays only).
Diag Cont = CONT with no miss …. Header v0.5.99.
|
| 37 | 0.5.100 |
Never paint tip→hist holes on chart (e.g. Sep 4 → Sep 22 blank on 15m).
continuousRightSegment drops the gappy left edge until warm fills;
then forced resetData. Clears stale session/IDB (bc_bridge_v=100,
IDB v4). Spike sanitize on scroll. Header must show v0.5.100 (hard refresh).
|
15m NIFTY: continuous days after tip→warm; no blank mid-chart; no ~7k wick.
Old v0.5.89 clients auto-clear cache on load.
|
| 38 | 0.5.101 |
History coverage now detects internal trading-day holes (not only edges)
and Dhan-fills them (+HOLEFILL), persisting native 5m. Diag Cont fails on tip→hist blanks.
WL symbol switch always tip?refresh=1 and force-reloads candles (fixes FIN NIFTY
flat/tiny 5m bars until F5).
|
15m/30m: no Sep4→Sep22 gap after scroll. Switch Sensex→FIN NIFTY: proper 5m OHLC without refresh.
Header v0.5.101.
|
| 39 | 0.5.102 |
Stop discarding REDIS-STALE/FILE-STALE tip bars on first paint
(regex treated STALE like DEMO). That forced hist fallback and broken 5m until hard refresh.
Middleware stale tip is real OHLC — paint it; only block DEMO/SYNTH.
|
FIN NIFTY 5m: correct candles on open/switch without F5 (header may still show REDIS-STALE). Overnight Sep23→Sep24 open gap is real market gap-down (~470pts), not a hole. |
| 40 | 0.5.103 | Expert architecture: generation-tokened tip/hist/warm/subscribe (stale gen dropped); merge only at canonical 5m then REPLACE AGG (no independent 15m/30m merge); diag splits SERVER PASS vs CHART PASS (5m bridge + AGG15/30 + OHLC); header shows gen / bridge / holes. |
Symbol/TF switch never applies old async results. Diag Pass requires chart_path ok.
Header v0.5.103 with gen counter ticking on switch.
|
| 41 | 0.5.104 |
Align watchlist-switch presentation with hard refresh: after setSymbol
and canonical data replacement, focus the visible range on the current IST session.
TradingView then autoscales to today's candles. Overnight gap data remains unchanged.
|
Sensex/NIFTY → FIN NIFTY switch shows normal-sized current-session 5m candles without F5; zooming out still shows the legitimate Sep23→Sep24 price gap. |
| 42 | 0.5.105 |
Apply current-session focus on both chart startup (gen —) and
symbol switches. Reapply once after the initial TradingView paint settles.
|
Direct URL / hard refresh and watchlist switching now use the same current-day viewport and price autoscale. |
| 43 | 0.5.106 |
Rollback: restored the exact chart frontend and chart-page
configuration from the recorded v0.5.95 working baseline.
Removed the later warehouse/generation/viewport chart lifecycle changes.
Compatibility retained for valid current FILE-STALE/REDIS-STALE OHLC.
|
Tip-first candles, history scroll, symbol switching, and live subscription follow the v0.5.95 production behavior. |
| 44 | 0.5.107 |
Frontend watchlist trace: pointer-down, click, switch generation/path,
tip request/response, cache source, TradingView apply, first bar paint,
and live subscription. Trace ring is exposed as window.__BC_SWITCH_TRACE
and mirrored into Live Bot.
|
Header immediately shows LOADING after a click. Repeated clicks
on the same pending symbol are ignored instead of restarting its request.
|
| 45 | 0.5.108 | Tight cache: fresh tip is authoritative for the right edge — MEM bars from the tip's first bar onward are replaced (not merged) on 5m and all derived TFs; deep history is kept. History pages only fill missing times. MEM paint on switch-back requires a fresh last bar; after paint the chart is verified against the refreshed tip and reset once if the latest day differs. Local cache schema bumped so old stale tips are dropped. |
Switching away and back shows correctly formed latest-day candles without F5.
Trace events: cache.mem.reject, cache.edge.verify,
cache.edge.reset.
|
| 46 | 0.5.122 |
TypeScript migrate: chart shell source of truth is
frontend/src/charts/ (session.ts, bars.ts,
bc_idb.ts, main.ts). esbuild emits
public/assets/js/charts.js + bc_idb.js.
deploy.sh runs npm run build before rsync.
Do not edit the built JS by hand.
|
Header shows v0.5.122. Chart behavior unchanged vs prior tip/L1 path;
hard-refresh loads the built bundle (banner comment in charts.js).
|
| 47 | 0.5.123 |
Hotfix: TS migrate strip dropped histCache,
TICKS_URL, and LIVE_WS_URL declarations —
getBars threw ReferenceError: histCache is not defined
so tip never painted (blank chart, tip —).
|
Hard-refresh → tip ms + cache label populate; CRUDE/NIFTY candles paint again. |
| 48 | 0.5.124 |
MCX candle continuity: enable session gap-fill for CRUDE
(09:00–23:30 IST) after price-regime trim; client fillSessionGaps
+ intraday hole detect/backfill so missing 5m prints pad like TradingView
instead of leaving a cliff between sparse tip bars.
|
CRUDE 5m shows a bar every 5m through the session (flat vol=0 pads only where Dhan/L1 skipped). Overnight 23:30→09:00 still gaps. Tip denser after refresh. |
| 49 | 0.5.125 |
MCX session collapse: replace 24x7 with
0900-2330:23456 on BC_MCX so Charting Library
collapses overnight (no blank 24:00→02:00 runway) while keeping evening
bars in-session. Subsession matches regular MCX hours.
|
CRUDE chart axis ends near session close; next open abuts prior close.
Hard-refresh v0.5.125.
|
| 50 | 0.5.126 |
CRUDE right-edge fix + 2-cache tip: PG/L1 stopped at 21:50;
warehouse-only blocked Dhan today-fill so tip invented vol=0 flats at 9031
while LTP recovered (~9125) — visual cliff. Now: always DHAN-TODAY when
edge/vol0 stale; no forward invent; strip trailing flats; tip read path is
L1 Redis + PG only. Logbot candle.gap audits
holes / vol0 / LTP divergence.
|
Hard-refresh CRUDE: tip past 21:50 has real volume bars matching recovery;
cache like L1-REDIS+TODAY(DHAN-TODAY); Live Bot flags gap if edge lags LTP.
|
| 51 | 0.5.127 |
Live orphan-bar guard: after play/zoom, tip could lag (~22:30)
while LTP kept painting a lone far-right candle. TickHub now tip-first
reconcileSymbol, 15s edgeIsLagging watch, and
blocks inventing a new bucket more than 1.5 steps ahead of tip.
|
Hard-refresh v0.5.127. Play/zoom CRUDE: no orphan tick far right of tip;
Live Bot candle.gap / ws.reconcile when edge heals.
|
| 52 | 0.5.128 |
Universal TF candles + OpenAlgo CandleBuilder: tip heal
always pulls base 5m (or 1m), derives 3/10/15/30/45/60/240 from the same
window, syncs lastBars + builders for every TF, fires TV
onResetCacheNeededCallback. Live LTP uses session-aligned
CandleBuilder (day-delta volume, open-from-prev-close, maxJump 1.5).
|
Hard-refresh v0.5.128. Switch 5→15→30 on CRUDE: same timeline,
no TF-specific right-edge gap; logbot edge_healed_universal.
|
| 53 | 0.5.129 |
Anti-flicker first paint: commit tip edge once
(commitPaintBars + paint.committed) before live
seed; defer subscribeBars seed and TickHub reconcile; suppress
resetData / tip.refresh force-reset during 2.2s paint grace —
fixes the ~250ms wrong tall candle → snap.
|
Hard-refresh v0.5.129. Reload CRUDE 5m: first candle should stay
stable (no flash then correct). Logbot paint.committed /
paint.grace.*.
|
| 54 | 0.5.153 |
Fri 25 Sep 2026 — path confirmed working (prod audit).
Universal mid-session continuity (all symbols): tip/history stitch
open → prev.close + live openFromPrevClose;
overnight / session-open gaps stay real. Depth hist is
Dhan charts → Kite Connect fallback (kite_ready).
Continuity watch heals full watchlist (PG promote + broker). Live path:
Dhan marketfeed WS → go-relay → chart; no Dhan charts for live candles.
Multi-TF from shared 5m tip pool (1/3/5/15/30/60… derived client-side).
|
Verified on VPS 25 Sep evening:
tip cache TIP for core symbols in ~40–100ms (NIFTY/BANK/SBIN/INFY/TCS/CRUDE);
NIFTY/BANK/RELIANCE/SBIN/INFY/TCS 30 trading-day 5m tip;
mid-session open/close jumps = 0 after stitch (incl. CRUDE 14:10–14:15);
multi-TF tip OK (e.g. NIFTY 15m/30m from tip); sector stocks largely warm
(235/328 at 30d, rest ~20–24d usable); Kite + Dhan creds both live;
ticker + go-relay + continuity timer active.
Hard-refresh v0.5.153.
|
| 55 | 0.5.155 |
Fri 25 Sep 2026 — Admin Data Warehouse + aggregate-only multi-TF.
New /admin/warehouse.php: categories Sector analysis / F&O /
Nifty 50 / Nifty 500; per-symbol Download of 5m OHLCV into
Postgres only (range 2026-01-01 → today); status =
Data downloaded only at ~full-window coverage; month-chunk progress bar.
Charts tip depth raised so warehouse symbols paint the full downloaded year.
Multi-TF policy (space-safe): store 5m only in PG;
aggregate 10 / 15 / 30 / 45 / 60 / 240 on tip/client (ms);
leave 1m / 3m for later (not derived from 5m). No multi-TF materialize into DB.
|
Admin → Data warehouse → Download a symbol → status reaches Data downloaded
when days ≈ need (≥90%). Open that symbol on /charts: ~1y of 5m;
switch 15m–4h stays fast via aggregate from 5m tip (no extra PG rows).
Hard-refresh v0.5.155.
|
| 56 | 0.5.156 |
Sat 26 Sep 2026 — Fast tip shelf (~45d) + all-TF Redis + year on scroll.
Redis tip no longer ships the full warehouse year on first paint.
Hot shelf = ~45 trading days for every offered TF (5/10/15/30/45/60/240…)
pre-built in Redis so TF switches hit tip directly.
Full year stays in Postgres; history.php loads deeper pages when you
pan left (deferred prefetch so first paint stays snappy).
|
Hard-refresh v0.5.156. Open a warehouse symbol on /charts:
first paint should feel near-instant (~45d tip); switch 15m/30m/1h without lag;
scroll left to load the rest of the year from HIST.
|
| 57 | 0.5.157 |
Sat 26 Sep 2026 — Warehouse Indices + single smooth tip paint.
Data Warehouse category Indices: Nifty 50, Bank Nifty, Fin Nifty,
Sensex, Crude Oil (download 5m Jan 1 → today into Postgres).
Charts: deep tip (~45d) paints once — no second
resetData / bridge flicker on weekend or thin-today.
|
Admin → Data warehouse → Indices → Download each index.
Hard-refresh v0.5.157 on /charts: symbol open should
paint once smoothly (no double load).
|
| 58 | 0.5.158 | Sat 26 Sep 2026 — Drop 1m/3m; fast Postgres scroll past tip. Chart resolutions = 5 / 10 / 15 / 30 / 45 / 60 / 240 / 1D (all from 5m warehouse clock). Removed 1m and 3m. Scroll left past ~45d tip: HIST loads from Postgres in ~50-day pages (no Redis year cache); gap-fill skipped on wide pages for snappy pan. |
Hard-refresh v0.5.158. Confirm 1m/3m gone from TF menu.
Open a warehouse symbol, pan left past tip — deeper history should
appear quickly in steps from Postgres.
|
| 59 | 0.5.163 |
Sat 26 Sep 2026 — WL tip quotes; Live|Market closed; no double tip.
Watchlist LTP / day-% from tip Redis/file (works when Dhan/Kite WS is down).
Header badge = market session only (Live | Market closed);
feed/WS detail stays on backend (market on /api/watchlist.php).
Layout restore skips re-setSymbol when the boot symbol already matches.
|
Hard-refresh v0.5.163. With WS disconnected, watchlist still shows LTP/%.
Badge never says Feed wait / WS reconnect. Reload chart once (not twice).
|
| 60 | 0.5.164 |
Sat 26 Sep 2026 — No refresh blink; orange accent trial.
First paint = last ~3 sessions (no post-paint setVisibleRange jump).
Boot layout restore skips w.load sector state (was full candle blink).
Accent swatch next to theme: blue ↔ orange chrome.
|
Hard-refresh v0.5.164: reload page — candles should not flash/redraw.
Click the round accent swatch to try orange buttons.
|
| 61 | 0.5.165 |
Sat 26 Sep 2026 — Search, +/✓ custom, closed WL tab, slim header.
Header: removed active-symbol chip; added DB symbol search; TV Compare disabled.
Watchlist +: stays on tab, becomes ✓ (click again to remove). Closed dock =
vertical blue WATCHLIST edge tab. Accent swatch removed. Header shorter.
|
Hard-refresh v0.5.165. Search RELIANCE from header. Add stock with +
without jumping to Custom. Collapse WL — right edge shows WATCHLIST tab.
|
| 62 | 0.5.166 |
Sat 26 Sep 2026 — WL overlay + TradingView symbol search.
Watchlist floats over the chart (right edge) — no longer shrinks chart width.
Collapsed = vertical WATCHLIST tab. Symbol search uses Charting Library
header search (searchSymbols → catalog API). Custom header search removed.
|
Hard-refresh v0.5.166. Open/close WL — chart stays full-bleed underneath.
Use TV toolbar search magnifier for symbols.
|
| 63 | 0.5.167 | Sat 26 Sep 2026 — Side-docked WATCHLIST rail (not overlay). Collapsed watchlist is a 40px rail beside the chart (chart shrinks). Vertical WATCHLIST label + expand arrow. Open panel is flex sibling, not absolute overlay. |
Hard-refresh v0.5.167. Collapse WL — price axis stays clear; rail sits
to the right of the chart. Click rail to expand.
|
| 64 | 0.5.168 | Narrower WATCHLIST rail (26px) and open panel (~300px). | Hard-refresh v0.5.168 — collapsed right bar is thinner. |
| 65 | 0.5.169 | Sat 26 Sep 2026 — Volume always on; smooth left-pan; responsive. Volume study forced on chart ready. First paint ~15 sessions + non-blocking HIST on scroll-left. Breakpoints: desktop / laptop / tablet side-dock / phone bottom sheet. |
Hard-refresh v0.5.169. Volume histogram visible. Pan left should feel
continuous. Check phone + tablet layouts.
|
| 66 | 0.5.170 |
Sat 26 Sep 2026 — Fix Volume: one pane + real bars.
Stop stacking Volume on refresh (dedupe + no default create). Enable
ohlcv plots; range proxy when tip volume is 0 (indices).
|
Hard-refresh v0.5.170. Exactly one Volume pane with histogram bars
(FINNIFTY / equities). Refresh must not add more Volume panes.
|
| 67 | 0.5.171 | Sat 26 Sep 2026 — Mobile header + watchlist sheet. Slim 40px phone header. Watchlist is a compact push bottom sheet (no overlay); tap handle to expand; auto-closes after picking a symbol. |
Hard-refresh v0.5.171 on phone. Header should be one tight row.
Open WL → chart shrinks above sheet; pick a symbol → sheet closes.
|
| 68 | 0.5.172 |
Sat 26 Sep 2026 — Dhan-style watchlist dropdown.
List picker (Indices / Sectors / F&O + custom lists). Create / rename /
copy / clear / delete. Columns Symbol · LTP · Chg · Chg%. Custom quotes via
?symbols=.
|
Hard-refresh v0.5.172. Open list dropdown, switch lists, create
“My List”, add via +, confirm LTP/Chg/Chg% on equities.
|
| 69 | 0.5.173 | Sat 26 Sep 2026 — WL names + custom tabs 1/2/3. Wider symbol column (full names). Custom lists as numbered tabs under search; dropdown keeps Indices / Sectors / F&O only. |
Hard-refresh v0.5.173. Names readable (e.g. FINNIFTY). Tabs 1·2·3
under search switch custom lists.
|
| 70 | 0.5.174 | Sat 26 Sep 2026 — Custom list add UX + rename. Smaller 1/2/3 tabs; double-click (or Rename) to name a list. Empty list shows Add symbol CTA + search suggestions to add stocks. |
Hard-refresh v0.5.174. Open tab 1 → Add symbol → type RELIANCE →
tap result. Double-click tab to rename.
|
| 71 | 0.5.175 | Sat 26 Sep 2026 — Indicator favorites, strict autosave, OC header. ★ float dock (bottom-right) + stars in Indicators dialog. Autosave shows Saving… / ✓ Saved popup. Option chain sticky header no longer overlaps on scroll. |
Hard-refresh v0.5.175. Tap ★ → apply EMA. Change interval → see
Saving popup. Open option chain and scroll — header stays clean.
|
| 72 | 0.5.176 | Sat 26 Sep 2026 — Solid OC header + autosave toast fix. Option chain header uses fully opaque backgrounds (no bleed-through). Autosave forced always-on; center Saving… / ✓ Saved popup above modals. |
Hard-refresh v0.5.176. Scroll option chain — header solid.
Change timeframe or add indicator — center Saving popup appears.
|
| 73 | 0.5.177 | Sat 26 Sep 2026 — Autosave on all page changes. Indicators add/remove, layouts, watchlist add/remove/rename, favorites, theme & settings all trigger Saving / ✓ Saved (or Watchlist/Favorites saved). |
Hard-refresh v0.5.177. Add EMA → Saving. Remove from watchlist →
Watchlist saved. Star/unstar favorite → Favorites saved.
|
| 74 | 0.5.178 | Sat 26 Sep 2026 — Restore on refresh + header autosave badge. Saved indicators/drawings restore after refresh. Autosave status shows in the header (not over the chart). |
Hard-refresh v0.5.178. Add EMA → wait for ✓ Saved in header →
refresh — EMA still there. Saving text appears next to Live badge.
|
| 75 | 0.5.179 | Sat 26 Sep 2026 — Small header save + smooth theme boot. Compact Saving/Saved in header. Theme loads once without light↔dark flicker on refresh (boot mask + single layout restore). |
Hard-refresh v0.5.179 on light and dark. Chart should appear in
the correct theme without flashing the other.
|
| 76 | 0.5.180 | Sat 26 Sep 2026 — Fix empty chart on theme toggle. Theme switch no longer leaves charts blank (boot hide mask was sticking). |
Hard-refresh v0.5.180. Toggle light ↔ dark — chart stays visible
with indicators. Refresh still smooth.
|
| 77 | 0.5.181 | Sat 26 Sep 2026 — Fast option-chain chart open. OC strike/CE/PE click paints instantly from LTP, then merges tip+history so available bars show (not empty / seed-only). Stock/index + live WS unchanged. |
Hard-refresh v0.5.181. Open option chain → click ATM CE — chart
appears immediately, then fills with history when available.
|
| 78 | 0.5.182 | Sat 26 Sep 2026 — Fix OC “No data here” + ATM tip prefetch. Option seed paint bypasses equity continuity gates. Prefetch tip for ATM±wing while OC is open. OTM with 0 LTP still seeds (bid/ask/0.05) instead of blank. |
Hard-refresh v0.5.182. Open OC (wait ~1s) → click ATM CE (instant).
Click far OTM — should still show a chart, not “No data here”.
|
| 79 | 0.5.183 |
Sat 26 Sep 2026 — OC weekend blank + click logs.
Option seed uses last weekday session buckets (Sat/Sun no longer blank TV).
OC clicks force sector pane. Skip OPT hist.bridge storm. Beacon
[oc] click/paint/noData to js_debug.log.
|
Hard-refresh v0.5.183. Open OC → click ATM CE. Chart should paint
immediately even on weekend. Check console for [oc] click /
[oc] path.opt-quote / [oc] paint.
|
| 80 | 0.5.184 | Sat 26 Sep 2026 — OC click speed. Removed warm.php + ticks.php from option click (were 2–9s). OPT paints LTP seed immediately; tip uses warm (no refresh=1); skip OPT hist year-page storm. |
Hard-refresh v0.5.184. Open OC → click any CE/PE — chart should
appear in under ~200ms, then deepen quietly.
|
| 81 | 0.5.185 |
Sat 26 Sep 2026 — OC tip batch cache.
Opening option chain preloads ATM±wing CE/PE tips into browser MEM via
/api/oc-tip-batch.php. Click uses OPT-MEM (cached
tip) instead of a 2-bar quote seed.
|
Hard-refresh v0.5.185. Open OC, wait ~2–3s for cache (console
[oc] cache.ready), then click any nearby CE/PE — should paint
instantly from cache.
|
| 82 | 0.5.186 |
Sat 26 Sep 2026 — Intraday WebSocket Logbot.
New green badge above Live Bot: Intraday WS. Auto-logs live
MarketFeed WS, option-chain WS, and OC click→path→paint (also
idws.* in LATEST.jsonl). Hide with ?wsbot=0.
|
Hard-refresh v0.5.186. Click green Intraday WS badge
(above Live Bot) → open OC → click CE/PE → watch path / tip ms / WS status.
|
| 83 | 0.5.187 |
Sat 26 Sep 2026 — Stop OPT scroll storm + HIST hang.
Option left-scroll returns noData outside tip MEM (no more
OPT-MEM-EDGE loop). OPT histNet hard-timeout 1.5s. Click deepen is tip-only
(no 11–19s HIST + resetData).
|
Hard-refresh v0.5.187. Open OC → click CE/PE. Intraday WS should
show path OPT-MEM quickly; no flood of OPT-MEM-EDGE; no 10s+ HIST on click.
|
| 84 | 0.5.188 |
Sat 26 Sep 2026 — OPT seed→tip redraw + OC click debounce.
Tip deepen now resetData when seed (≤8) → real tip (≥20). Never
overwrite richer MEM with 2-bar seed. OC pickSide debounced 400ms. Intraday WS
no longer logs every oc.tick.
|
Hard-refresh v0.5.188. Click one CE — single select in logs; chart
should show candles after tip (~200ms), not blank loading.
|
| 85 | 0.5.189 | Sat 26 Sep 2026 — OPT viewport like Nifty/Crude. After OPT-MEM / tip deepen, fit visible range to last tip bars (not empty weekend “today”). Skip thin LIVE-SEED overwriting seed. ATM CE/PE should show candles the same way index charts open. |
Hard-refresh v0.5.189. Open OC → click ATM CE. Expect
viewport.fit + candles on last session (Fri if weekend).
|
| 86 | 0.5.190 | Sat 26 Sep 2026 — OPT tip weekend seed → “No data here”. Option tips were stamped Sat (outside NSE session). Seed last trading day (Fri) like Nifty; drop weekend bars server + client. |
Hard-refresh v0.5.190. Click any CE/PE — candles on Friday
session (not blank “No data here”).
|
| 87 | 0.5.191 | Sat 26 Sep 2026 — Watchlist/ticker day % + slower tape. After-hours Dhan glued session close onto prev_close (chg 0%). Fill % from tip prior-day close; blue up / dark-red down; tape ~110s + polish. |
Hard-refresh v0.5.191. Watchlist + market tape show real
day % (not +0.00%); up blue, down dark red; tape scrolls slower.
|
| 88 | 0.5.192 | Sat 26 Sep 2026 — Bullish green = #4caf50. Drop blue day-% / mint candle mix. Candles, watchlist %, ticker %, CTAs use TV picker green; mint kept only as soft secondary token. |
Hard-refresh v0.5.192. Up candles + % should be
#4caf50 green (not blue).
|
| 89 | 0.5.193 | Sat 26 Sep 2026 — OC click noise. Keep option chain open on strike pick (no WS close/remount). Remove listeners on destroy so clicks don’t stack. Stronger pick debounce. |
Hard-refresh v0.5.193. Click several CE/PE with OC open —
one oc.select each, no oc.ws.close between picks.
|
| 90 | 0.5.194 | Sat 26 Sep 2026 — Landing / settings / privacy green. Front page, settings, privacy & terms, onboarding use charts dark (#121212) + bullish green #4caf50 (no blue/gold accents). |
Hard-refresh /, /settings, /privacy
— green CTAs and headings on dark panels.
|
| 91 | 0.5.195 | Sat 26 Sep 2026 — OC closes on pick; OPT tip = 3 sessions. Strike click closes the chain and shows the CE/PE chart. Prefetch + tip seed last 3 trading days (~225×5m) for the ATM wing — full sessions, not a half day. |
Hard-refresh v0.5.195. Click CE → OC closes, chart shows
Wed–Fri (or last 3 sessions).
|
| 92 | 0.5.196 | Sat 26 Sep 2026 — Bar Replay. Header Replay button: click a candle to start, then play / pause / step / speed (0.5×–8×). Live ticks muted until you hit Live. |
Hard-refresh v0.5.196. Replay → click a bar → play. Esc
or Live exits to realtime.
|
| 93 | 0.5.197 | Sat 26 Sep 2026 — OPT tip-first, no 2↔228 fit race. Cold CE/PE loads tip (3 sessions) before paint — no OPT-QUOTE flash. Viewport fit ignores thin seeds. ATM±5 get 3d batch; outer wing 1d. |
Hard-refresh v0.5.197. Click CE → one paint ~228 bars,
stable zoom (no 2-bar then jump).
|
| 94 | 0.5.198 | Sat 26 Sep 2026 — Replay pick line + truncate right side. Green vertical line follows hover while picking. On click, bars to the right are cleared (histCache truncate + resetData) so play advances. |
Hard-refresh v0.5.198. Replay → hover (green line) → click
bar → right side disappears → play.
|
| 95 | 0.5.199 | Sat 26 Sep 2026 — OPT batch: kill Sat poison, force 3 weekdays. L1 tips mixed Sat bars → client strip left 2 days or blank charts. Batch/tip now drop weekends and reseed every wing strike to 3 sessions. |
Hard-refresh v0.5.199. Open OC → wait cache.ready → click
any CE/PE — ~3 weekday days, no blank strikes.
|
| 96 | 0.5.200 | Sat 26 Sep 2026 — Replay: thin line only, no auto-play. Drop TV vertical_line shape (was painting a green fill on the right). Hover guide is a 2px line; after pick wait for Play. |
Hard-refresh v0.5.200. Replay → thin green line → click →
right clears (no green block) → press Play.
|
| 97 | 0.5.207 | Sat 26 Sep 2026 — Warehouse futures & commodities. Admin Data warehouse categories: Index futures, Stock futures, Commodities (MCX). Front-month seeds from instrument master; click category → table → Download into Postgres. |
Open /admin/warehouse → pick Index futures / Stock futures /
Commodities → rows load with Download. Version v0.5.207.
|
| 98 | 0.5.222 |
Sun 27 Sep 2026 — Staging (.tech) and Production (.com) split.
bharatcharts.tech is now the staging / testing site: every change
is deployed there first (deploy/deploy.sh).
bharatcharts.com is the production site: it only changes when a release
verified on .tech is promoted (deploy/deploy-prod.sh, rollback with
--rollback). Separate folders on the VPS:
/var/www/bharat-charts-php (.tech) and /var/www/bharat-charts-prod (.com).
Separate per site: code folder, config/env.php (site URL, Google login
callback, dev login off on .com), user accounts data/users.json
(.com seeded once from .tech), login sessions, PHP worker pool, logs, SSL certificate.
Shared (market data only): Redis, Postgres price bars, data/cache,
data/warehouse, stock logos and the Dhan / Kite tokens — one Dhan feed per VPS
(Dhan limits live connections per account).
Both domains moved to Cloudflare (real visitor IPs restored in nginx). PHP workers raised 5 → 40 and nginx connections 768 → 4096 (fixes "This site can't be reached / took too long" when all 5 workers were busy). .tech sends noindex so Google only lists .com.
Footers show the current domain instead of a hardcoded .tech.
|
https://bharatcharts.com serves the same app as .tech (response header
X-BC-Env: production; .tech sends staging). Changes appear on .tech after a
deploy and on .com only after "deploy to production". Existing users can sign in on .com with
Google; accounts created on one site do not appear on the other.
|
| 99 | 0.5.223 |
Sun 27 Sep 2026 — Two brokers: primary + standby per job (phase 1).
Roles: Kite = primary for live prices (WebSocket) and option chain,
Dhan = primary for historical candles; each job keeps the other broker on standby.
Roles live in data/broker_roles.json and are changed from
/admin/providers.php (new Data providers page).
Automatic failover: 3 outage errors in a row (bad/expired token, rate limit, server error, timeout) → that broker sits out 5 min and the standby serves; then one retry. Per-symbol "no data" errors (Dhan DH-905) do not trigger a switch. Tokens with an expiry countdown (Dhan from the token itself, Kite at 06:00 IST) and a red admin banner when a token expires within 2 h or a job runs on standby. Broker logins only on bharatcharts.tech: Kite "Log in with Kite" returns to
/admin/kite-callback.php and saves the token automatically; production
(bharatcharts.com) uses the same shared token files and its broker pages are read-only.
Phase 2 (Kite option chain) and phase 3 (Kite live WebSocket) not built yet — until then live prices and option chain run on their standby, Dhan. Promoted to production ( bharatcharts.com) on Sun 27 Sep 2026 16:09 IST —
first release served from /var/www/bharat-charts-prod.
|
/admin/providers.php shows both tokens with expiry, the order and active broker per job,
and health. "Test history" probes RELIANCE 5m. Charts history comes from Dhan, and from Kite when
Dhan is down or rate-limited. On .com the admin broker pages link to .tech instead of offering forms.
|
| 100 | 0.5.224 |
Sun 27 Sep 2026 — Clean production charts; version moved to admin.
New APP_ENV setting (staging on .tech, production on .com,
set automatically by deploy-prod.sh).
On bharatcharts.com the charts page no longer shows the test tools:
KI Live Bot, Intraday WebSocket bot, the top-right version pill and the top-right
"Market closed / Live" badge. bharatcharts.tech keeps all of them for testing.
The version is now shown in the admin sidebar on both sites (version · Staging/Production · domain · link to this log). |
.com /charts: no Live Bot / WS bot panels, no version or market badge in the header, and no
bot traffic to /api/logbot/ingest. .tech /charts unchanged.
Admin sidebar (both) shows e.g. v0.5.224 · Production.
|
| 101 | 0.5.225 |
Sun 27 Sep 2026 — Replay close / mobile fixes; mobile watchlist scroll.
Bar replay: the Pause button is now white instead of red. New ✕ close button on the replay
bar and on the "pick a candle" hint. Esc now also works when the chart itself has keyboard focus
(it used to be swallowed by the chart frame). On phones a single tap on a candle starts replay, and the
replay bar sits above the bottom navigation.
Mobile watchlist: scrolling the list no longer opens the stock your finger started on — a stock opens only on a real tap. Desktop mouse clicks still switch instantly. |
Desktop: Replay → pick candle → Play (white Pause) → Esc or ✕ returns to live, even after clicking the chart. Phone: Replay → tap candle → ✕ closes. Watchlist tab: swipe through the list without opening stocks. |
| 102 | 0.5.226 | Sun 27 Sep 2026 — Market ticker: top gainers / losers with logos. The scrolling ticker under the header now shows the indices first, then the day's top 20 gainers and top 20 losers from F&O and Nifty 50 stocks, alternating gainer / loser. Stock logos appear next to the symbol wherever one has been uploaded in admin; stocks without a logo just show the name. The mover list is re-picked every 5 minutes and swapped in when the tape loops, so it doesn't jump. |
/charts: ticker shows logos + a green / red alternating mix; clicking an item still opens the chart.
PROD: 0.5.225 + 0.5.226 promoted to bharatcharts.com on 27 Sep 2026 18:37. |
| 103 | 0.5.227 |
Sun 27 Sep 2026 — Default watchlist page + ad slot.
The watchlist now always opens on a locked Default page with NIFTY 50, FIN NIFTY, BANK NIFTY,
SENSEX and CRUDE OIL (fixed order). Your own pages sit beside it: tap + to create one (up to 5),
double-click a page to rename it, and use the list menu to clear or delete it. Old empty "1 / 2 / 3"
slots are removed; lists that had stocks or a custom name are kept.
A Stock Hunter display-ad placeholder (300 × 250) sits at the bottom of the Default page; the real ad is wired in later. |
Reload /charts → Default is selected even if another list was open last time; + adds a page.
|
| 104 | 0.5.228 |
Sun 27 Sep 2026 — Smooth page load.
Opening /charts without a symbol now starts directly on your saved layout's chart instead of
loading NIFTY 50 first and switching. The loading cover fades out instead of popping, the chart
reveals sooner when there is no saved layout, and the top ticker fades in on first load.
Moving between Home, Charts, Option chain, Settings, Privacy and Onboarding now cross-fades
(View Transitions) instead of flashing.
On short screens the Stock Hunter ad box on the Default watchlist shrinks rather than squeezing the rows. |
Open /charts from the home page → chart eases in on the saved symbol; click between pages → soft fade.
PROD: 0.5.227 + 0.5.228 promoted to bharatcharts.com on 27 Sep 2026 18:55. |
| 105 | 0.5.229 |
Sun 27 Sep 2026 — Backup broker.
Dhan stays the main source for live prices and the option chain, and Kite (Zerodha) is now a live backup.
If Dhan disconnects or stops sending prices, the live feed switches to Kite straight away and moves back
to Dhan once it recovers. The option chain does the same on any Dhan error.
The option chain no longer opens a second Dhan connection, which was triggering Dhan's "too many requests" block; its strike prices now stream through the main live feed. The Dhan access token renews itself automatically. Kite needs one click each morning ("Log in with Kite"); the token is then saved automatically, and admin shows a reminder until it's done. Admin → Data providers shows which broker is serving each job right now, plus a log of every switch, renewal and login. |
Admin → Data providers → "Right now" shows Dhan; the activity log lists each token renewal and Kite login.
PROD: promoted to bharatcharts.com on 27 Sep 2026 19:39; .com reads the same broker logins, roles and activity log as .tech. |
| 106 | 0.5.230 | Sun 27 Sep 2026 — Steadier option chain. Option chain calls to Dhan are now spaced safely inside Dhan's once-every-3-seconds limit across every process on the server, so Dhan stops answering "too many requests". If Dhan does refuse a single call, the chain fetched a few seconds earlier is shown instead of briefly switching to the Kite backup. |
Admin → Data providers activity log no longer shows Dhan ⇄ Kite option-chain flips every ~2 minutes.
PROD: promoted to bharatcharts.com on 27 Sep 2026 19:46. |
| 107 | 0.5.231 |
Sun 27 Sep 2026 — Option chain LTP beside strike + 3-day option charts.
In the option chain, the Call LTP and Put LTP columns now sit right next to the Strike column
instead of at the far edges (desktop and mobile, on the Option chain page and the charts panel).
Clicking any strike, Call or Put, now opens a chart with the last three full trading sessions of 1-minute candles, not just the time since the strike was first streamed. Every strike of the two nearest expiries for NIFTY, BANK NIFTY, FIN NIFTY and SENSEX is filled in the background after the close and before the open, so charts open straight from the cache; any other strike is filled on its first click. Live candles continue from the live feed. |
Option chain → click any strike → chart shows three sessions (e.g. 23, 24, 25 Sep) plus live. |
| 108 | 0.5.232 | Sun 27 Sep 2026 — Complete history for every option strike. Option strikes are no longer limited to three days. Every traded Call and Put of the five nearest expiries for NIFTY, BANK NIFTY, FIN NIFTY and SENSEX is downloaded from its first trading day and saved in our database, then topped up after each session. Clicking a strike opens the last seven sessions straight from the cache; scrolling left loads older candles from our database, back to the contract's first trade. Expired expiries are deleted automatically and new ones are downloaded as they appear; every download, deletion and futures roll is recorded in the Data Warehouse log. Broker calls are now paced across all jobs (Dhan up to 4 per second, Kite up to 3 per second). | Option chain → NIFTY 29 Sep → 23200 CE → chart opens with seven sessions; scroll left to reach early July. |
| 109 | 0.5.233 |
Sun 27 Sep 2026 — Option chains served from our own store.
The option chains for NIFTY, BANK NIFTY, FIN NIFTY and SENSEX (nearest five expiries each) are now
kept up to date in the background, so switching index or expiry opens instantly from the store instead
of waiting on the broker, and a failed load retries on its own. Live prices stream for the strikes
around the money on every chain, not just the last one opened. During market hours a snapshot of
each chain (20 strikes either side of the money) is saved every five minutes and kept for 30 days.
Admin → Data warehouse has a new “Option chain” section: every chain with its strike count, how fresh it is, how much strike history is downloaded, plus “Download now” buttons and an activity log of every automatic download, expiry deletion, new expiry and futures roll. |
Option chain → switch between the four indices and expiries → each opens at once with live prices. Admin → Data warehouse → Category “Option chain” → table + log. |
| 110 | 0.5.234 | Sun 27 Sep 2026 — Option strikes load on demand; no bulk downloads. The complete-history download from 0.5.232 is removed and everything it saved has been deleted. Clicking a strike now fetches its last seven sessions from the broker history API once and keeps them in the cache, so the next open is instant; today’s candles come from the live feed. Scrolling further back loads older candles straight from the broker API without saving them. Cached strike candles older than seven sessions are cleaned up automatically. | Option chain → click any strike → seven sessions plus live; scroll left for older days. |
| 111 | 0.5.235 | Sun 27 Sep 2026 — Near-the-money strikes pre-cached. The last seven sessions of the ten strikes either side of the money (Calls and Puts) on the two nearest expiries of NIFTY, BANK NIFTY, FIN NIFTY and SENSEX are cached before the market opens and topped up every 30 minutes during the day as the market moves, so those charts open instantly with today’s candles continuing from the live feed. The Option chain section in Admin → Data warehouse has been removed. |
Option chain → NIFTY nearest expiry → click any strike near the money → chart opens at once.
PROD — promoted to bharatcharts.com on 27 Sep 2026, 21:28 IST. |
| 112 | 0.5.236 | Sun 27 Sep 2026 — Option chain opens without waiting for the expiry list. The list of expiry dates is now kept for six hours (it only changes weekly) and refreshed before the open and after the close, so opening the option chain for any index no longer waits on the broker. |
Option chain → switch to FIN NIFTY or SENSEX → opens at once.
PROD — promoted to bharatcharts.com on 27 Sep 2026, 21:33 IST. |
| 113 | 0.5.237 |
Sun 27 Sep 2026 — Broker load cut and balanced between Dhan and Kite.
The 2-minute background job that re-downloaded the same index and stock candles day and night is gone —
the live feed already builds and saves every 1-minute candle. Background history (gap repair, option
pre-cache) now uses Kite first; Dhan keeps live prices, the option chain and your chart clicks. A Dhan
rate limit now pauses that kind of Dhan request briefly (Kite fills in) instead of retrying, and change %
uses Dhan's own previous-close figure for every stock (92 stocks were missing it). Stock prices in the
watchlist no longer flip to the futures price, and the option chain asks Dhan at a gentler pace.
PROD: promoted to bharatcharts.com on 27 Sep 2026, 22:37 IST. |
Admin → Data providers → "Requests today" shows how many calls each broker made. |
| 114 | 0.5.238 | Mon 28 Sep 2026 — Smooth market ticker + live market test. The ticker under the header no longer jumps or flickers when prices refresh: it scrolls at a steady speed, keeps its place when a price gets wider, and swaps in new gainers/losers only while the indices are on screen. Logos no longer blink on refresh. The Intraday WS panel (bottom right) has a new "Live market test" tab that checks option strikes around ATM, indices, F&O, sectors, Nifty 50 and Nifty 500 in one run: page load speed, live WebSocket, one year of candles in the database, candles saved from the live feed today (gaps and lag), chart load time, and a real chart open on a sample. Stock charts such as RELIANCE, SBIN and HDFCBANK now load the stock's own history — they were loading the September future's candles underneath the stock's live price. | /charts → Intraday WS (bottom right) → Live market test → Run test (or open /charts?livetest=1). |
| 115 | 0.5.239 | Mon 28 Sep 2026 — Every symbol live, history from 1 Jan 2026. The live feed now streams all Nifty 500 stocks plus every index, stock and commodity future (about 1,370 instruments; 230 Nifty 500 names and all futures were missing before). Postgres was filled with 5-minute candles from 1 Jan 2026 for every watchlist and warehouse symbol; futures start at their contract listing. Stock charts no longer mix in futures candles (78 stocks had futures rows under their name from July). Missed live minutes are re-fetched from broker 1-minute history every 10 minutes in market hours, and the whole warehouse is topped up every evening. Since August, F&O stocks stop at 15:15 (closing auction); the live test and repair jobs no longer count 15:15–15:30 as missing, and charts stop re-downloading them after 15:15. A deploy during market hours no longer restarts the live feed unless its code changed. 15 Jan 2026 (Maharashtra election) added as an NSE holiday. | /charts → Intraday WS → Live market test → Run test: depth is now counted from 1 Jan 2026. |
| 116 | 0.5.239 | Mon 28 Sep 2026 — PROD: 0.5.239 live on bharatcharts.com. Every symbol on the live feed, history from 1 Jan 2026, stock charts free of futures candles, automatic gap repair, and F&O stocks ending at 15:15 (closing auction). | bharatcharts.com/charts |
| 117 | 0.5.240 | Mon 28 Sep 2026 — New homepage hero. The homepage is less green: buttons are white/outline and the secondary accent is soft indigo; green is kept for the logo, "free", ₹0 and rising prices. The globe and the tilted terminal mockup are gone — the right side now shows five feature tiles (unlimited indicators with a live-ticking chart, option chain OI, multiple grids, bar replay, price alerts). The description talks about benefits, the buttons read "Open terminal" and "Login to charts" (also top right), and the feature strip lists ₹0 forever, Unlimited indicators, Multiple grids, Dedicated watchlist, Replay, Alerts and Option chain. | bharatcharts.tech (signed out) |
| 118 | 0.5.241 | Mon 28 Sep 2026 — Homepage: terminal photo and feature cards. The right side of the homepage now shows the Bharat Charts trader-desk photo, blended into the page (it fades into the background instead of sitting in a box). The background looks like a trading terminal: faint candles, price levels with a last-price tag and a session time axis. "Login to charts" has a login icon, the top menu says "Features" instead of "The workspace", and the feature list is eight cards in two rows of four with colourful icons — Heatmap added. | bharatcharts.tech (signed out) |
| 119 | 0.5.242 | Mon 28 Sep 2026 — Homepage: motion and live prices. The terminal photo sits further in, lined up with the page instead of hugging the right edge, and it now moves: it fades in on load, drifts slowly, catches a passing light sweep and tilts gently with the mouse. Floating cards on the photo show live NIFTY 50 and BANK NIFTY prices and how many instruments are streaming. The background candles scroll slowly, and the eight feature icons animate when they come into view, on hover, and one after another while the section is on screen. | bharatcharts.tech (signed out) |
| 120 | 0.5.243 | Mon 28 Sep 2026 — Homepage: clearer headline. The moving candles no longer run behind the headline and buttons, so the text on the left stands out on a clean background; the candles now show only around the terminal photo. The word "free" in the headline uses a teal-to-lime green gradient with a soft shine that passes over it every few seconds. | bharatcharts.tech (signed out) |
| 121 | 0.5.244 | Mon 28 Sep 2026 — First candle of the day fixed. The 09:15 candle had a huge wick (NIFTY 50 low 22,495 instead of 22,972) because prices from the 09:00–09:08 pre-open auction were counted in it. Pre-open prices now only move the quote, never a candle. Today's 09:15–09:19 candles for every symbol were replaced with the broker's own candles. The live-gap repair no longer spends a broker call on every quiet minute of thinly traded stocks. | /charts → NIFTY 50 → 1m or 5m → the 09:15 candle matches the broker. |
| 122 | 0.5.245 | Mon 28 Sep 2026 — Live prices stay tick by tick. The live feed kept losing its broker connection every 20–60 seconds because it could not read prices fast enough, which caused missing minutes and candles that differed from the broker. The feed now does far less work per price and gets priority over background jobs, so it stays connected and candles match the broker minute for minute. Real new highs are no longer mistaken for bad prices. After each session, today's candles are also re-checked against the broker's own candles. | /charts → NIFTY 50 → 1m — the price moves several times a second without refreshing. |
| 123 | 0.5.246 | Mon 28 Sep 2026 — Watchlist live, candles match the broker, no holes. Every symbol in the watchlist and the scrolling market tape now updates live (about four times a second) instead of every 12 seconds. Candles are no longer reshaped to start at the previous candle's close, so open, high, low and close are the broker's own, and the chart keeps moving even while it fills a gap. Restarting the live feed no longer loses the minute in progress, and minutes lost market-wide are re-fetched from the broker for every symbol, options included. Indices, sector indices and NIFTY 50 stocks are re-checked against the broker's own 1-minute candles every 10 minutes. | /charts — watch the right-hand watchlist prices change without refreshing; the chart's last candle matches the watchlist price. |
| 124 | 0.5.247 | Mon 28 Sep 2026 — Charts open in well under a second. Opening a stock used to download its candles twice, one after the other. It now downloads them once, so a chart appears in about a third of a second instead of about one second. On a computer, resting the mouse on a watchlist or ticker row starts loading that chart, so clicking it shows the chart almost instantly. Option contracts that had silently dropped out of the live feed are back, and the list they are kept in can no longer be wiped by two updates at once. | /charts — click any stock in the watchlist; the candles appear almost immediately. |
| 125 | 0.5.248 | Mon 28 Sep 2026 — Chart candles keep moving with the watchlist. The last candle on a chart could stop updating while the watchlist prices kept changing. The chart now follows the same live prices without stalling: if a candle goes quiet for more than two seconds while the price is moving, it is pushed onto the chart straight away, and if a chart doesn't finish loading in three seconds it reloads itself. After a lost connection the chart reloads cleanly. Crude Oil (and other symbols the feed sends under a different name) now update on the chart, not just in the watchlist. Minutes with no trades are now left empty, exactly like the broker's own charts, instead of being filled with flat candles. The admin overview shows, for each symbol, how many missed minutes were repaired today. | /charts — open any stock at 5m or 15m; the last candle moves together with the watchlist price. |
| 126 | 0.5.249 | Mon 28 Sep 2026 — Charts no longer stop updating until you refresh. After a short internet drop, or when the chart's history was topped up in the background, a chart could stop receiving live prices: the price kept moving in the watchlist but the candle stayed put until the page was refreshed. The chart now reconnects itself every time, and if it is ever left without live prices for three seconds it reloads on its own. Coming back to a tab you had left open catches the chart up straight away. Watchlist prices now show two decimals, the same as the chart, so 22,832.95 no longer reads as 22833. | /charts — open NIFTY 50 at 5m, turn Wi-Fi off for ten seconds and back on; the candle keeps moving without a refresh. |
| 127 | 0.5.250 | Mon 28 Sep 2026 — Faster option chain with live prices, and live option charts. The option chain opens with the table already filled in, instead of waiting for two separate loads. Prices update smoothly many times a second without the page stuttering, and the rest of the table (OI, volume, IV, bid/ask) refreshes every five seconds without jumping. Before, prices that weren't getting live updates never changed at all. Switching between NIFTY, BANK NIFTY, FIN NIFTY and SENSEX takes one load, and reopening the option chain from a chart is instant. Option charts (a Call or Put opened from the chain) are now live: their candles used to sit still between refreshes. Links that open a chart for a specific symbol (for example clicking a strike on the option chain page) now open that symbol instead of your last saved chart. If the main live-price connection keeps getting cut off, prices now switch to the backup source within seconds instead of stopping for minutes. | /option-chain — prices near the ATM strike change every second; click a Call price and its chart candle moves with it. |
| 221 | 0.5.342 PROD |
Mon 12 Oct 2026 — Continuous forming candles + instant watchlist open.
PROD: promoted to bharatcharts.com on 12 Oct 2026, 11:10 IST. Chart tip requests are queued (click first, hover last) so one tip storm cannot starve the symbol you just clicked. Cash watchlist seeds are flat at LTP (no day high/low wick). Tip deepen and wick “shrink resets” no longer force a full chart reload unless closed bars actually healed gaps. Server tip stays on Redis/Postgres unless you force refresh (no Dhan overlay on every click). Nginx tip limit eased to 5/s with max 3 in flight after the client queue landed (site stays protected from outages). |
/charts — click many watchlist rows: chart flips immediately; forming candle keeps updating without needing a refresh for clean candles; LTP tracks the live feed. |
| 220 | 0.5.340 PROD | Wed 7 Oct 2026 — Email marketing edit + resend. Sent campaigns are editable again (subject, HTML, audience). Resend merges recipient stats. Custom audience picker: filter leads by cold / warm / hot tag before selecting. | /admin/email-marketing.php — Edit on a sent campaign; pick filtered leads under Custom → Send again. |
| 219 | 0.5.339 PROD |
Wed 7 Oct 2026 — Watchlist sid collision fix (ABB ↔ NIFTY).
Dhan reuses security_id across segments (13 = NIFTY IDX + ABB EQ).
Live quote stamps and tip fallbacks now require segment+sid, not sid alone.
Absurd watchlist LTPs (±50% day change) are no longer seeded into the chart on click,
which stopped the giant red spike candle and frozen / discontinuous bars on some stocks.
|
/charts?symbol=ABB — watchlist LTP ~7k (not ~22k); chart scale stays around equity price; candles keep updating like other F&O names. Same on .tech and .com. |
| 218 | 0.5.338 | Wed 7 Oct 2026 — Instant switch + gap heal. Watchlist click paints the live bar only (no fake open→now gap); tip/hist that fills morning holes always resetData. Debounced warm.php so rapid clicks don't stall every page link. Tip skips live Dhan overlay when host load is high. | /charts — click several watchlist names; chart should flip immediately and morning candles fill without needing a browser refresh. |
| 217 | 0.5.336 |
Wed 7 Oct 2026 — October bot on staging.
New purple October badge on /charts (.tech only). Runs watchlist/search
instant open, option chain, intraday gaps, tip vs LTP, and 15m vs 5m candle-colour checks.
Auto-run with ?october=1.
|
https://bharatcharts.tech/charts?october=1 — purple October badge → Run October → Copy report. |
| 216 | 0.5.335 PROD | Wed 7 Oct 2026 — Production promote. Instant watchlist click + tip/hist race (0.5.335). |
https://bharatcharts.com/charts — click flips chart at once.
Rollback: deploy-prod.sh --rollback.
|
| 215 | 0.5.335 |
Wed 7 Oct 2026 — Instant watchlist click (no 30s freeze).
Click seeds LTP from the row and paints immediately; tip races Postgres
history.php so the chart never sits on the previous symbol.
Tip fetch aborts at 4.5s. Logos fall back to /api/logo.php.
Nifty 500 shows a loading state while the list arrives.
|
/charts — click any watchlist row: URL + chart flip at once; full bars fill within ~1s. |
| 213 | 0.5.333 |
Wed 7 Oct 2026 — Faster page/ticker + no live candle gaps.
Watchlist API is lite by default (no Nifty 500 / sector stocks on every poll);
Nifty 500 and sector stocks load on demand. Ticks mirrored to /dev/shm for
fast FPM reads. Tip overlays Dhan-native today for 5/15/60 with Redis cache (fixed
broken setex). New live buckets open from the prior bar close so forming
candles do not float a gap off tip edge.
|
/charts — page + market ticker paint quickly; PAYTM 5m session open matches Dhan (e.g. 1701); no orphan gap on the right-edge forming candle. Overnight session gaps remain real. |
| 214 | 0.5.333 PROD | Wed 7 Oct 2026 — Production promote. Faster page/ticker + no live candle gaps (0.5.333): lite watchlist, /dev/shm ticks, Dhan-native today overlay with Redis cache, live bucket open=prior close. |
https://bharatcharts.com/charts — ticker/watchlist load faster; PAYTM 5m matches Dhan open;
no orphan forming-candle gap. Rollback: deploy-prod.sh --rollback.
|
| 212 | 0.5.332 | Wed 7 Oct 2026 — Email marketing leads search + custom recipients. Leads tab has search and serial numbers. Campaigns can send to all, tagged, or a custom one-or-many list (checkboxes + paste). | /admin/email-marketing.php — Leads search; Create → Send to → Custom → pick one or many, then send. |
| 211 | 0.5.330 | Wed 7 Oct 2026 — Admin Email marketing (campaigns + analytics). New admin page to create HTML email campaigns for registered users: serial number, name, cold/warm/hot tags, draft/sent status, test send, and full send via Brevo. Leads tab tags users. Analytics tab shows delivery, open, bounce, and per-recipient status from the Brevo webhook. | /admin/email-marketing.php — create a draft, tag audience, send test, then send; Analytics updates after Brevo delivery/open events. |
| 210 | 0.5.329 PROD | Wed 7 Oct 2026 — Production promote. Instant watchlist chart switch + broker-native 15m/60m candles for today (0.5.329). |
https://bharatcharts.com — click watchlist → chart flips at once; PAYTM 15m matches Dhan candle colours.
Rollback: deploy-prod.sh --rollback.
|
| 209 | 0.5.329 | Wed 7 Oct 2026 — Watchlist click no longer freezes; 15m candles match Dhan. getBars was waiting on a forced tip refresh while the URL already showed the new symbol. Staged MEM/quote seed paints immediately; tip deepens behind. For 15m and 60m, today's session bars come from the broker's native candles (not 5m aggregation), so OPEN/colour match Dhan (e.g. PAYTM second candle green). | /charts — click any watchlist row → chart switches at once; PAYTM 15m second candle matches Dhan. |
| 208 | 0.5.328 PROD | Wed 7 Oct 2026 — Production promote. Staging → production. Fixes stale previous-close day % (TRENT ~12% ghost) and cold watchlist click paint (0.5.328). |
https://bharatcharts.com — TRENT % near 0 vs prior close ~2906; cold symbols flip chart at once.
Rollback: deploy-prod.sh --rollback.
|
| 207 | 0.5.328 | Wed 7 Oct 2026 — Correct day % when feed previous close is stale; cold clicks paint. Live feed sometimes keeps an older session close (TRENT showed ~12% from 2580 while yesterday closed ~2906). Watchlist now prefers tip's prior trading-day close when the feed disagrees, keeps that baseline sticky against live ticks, and still shows live LTP. Cold watchlist symbols seed a quote candle so the chart switches immediately while tip loads. | /charts — TRENT LTP matches market; % = (LTP − yesterday close) / yesterday close; clicking an uncached stock opens the chart without waiting. |
| 206 | 0.5.327 PROD |
Wed 7 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Instant watchlist chart switch
and LTP/% change from yesterday previous close (0.5.327).
|
https://bharatcharts.com — click a watchlist stock → chart opens at once;
% matches LTP vs prior close. Rollback: deploy-prod.sh --rollback.
|
| 205 | 0.5.327 | Wed 7 Oct 2026 — Watchlist click is instant; day % uses yesterday close. Clicking a stock no longer waits on a forced tip rebuild before the chart switches (URL already changed while the chart lagged). During 09:15–15:30 the change % is always computed from yesterday's previous close versus the live LTP, so the printed price and % stay in sync. | /charts — click any watchlist row → chart symbol changes immediately; LTP and % agree with prior-day close. |
| 204 | 0.5.326 PROD |
Mon 5 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Watchlist UX
(0.5.323–0.5.326): simplified custom watchlists, header + Add symbol,
catalog-only adds.
|
https://bharatcharts.com — custom watchlist flow matches staging.
Rollback: deploy-prod.sh --rollback.
|
| 203 | 0.5.326 | Mon 5 Oct 2026 — Add symbol stays in the header; catalog-only adds. Custom watchlists show + Add symbol in the column header (always visible while scrolling). Random tickers are rejected — only symbols resolved from the Bharat Charts catalog (via search) can be added. | /charts — custom list → header “+ Add symbol”; typing a fake symbol shows an alert, no add. |
| 202 | 0.5.325 | Mon 5 Oct 2026 — Add symbol on the list itself. After a custom watchlist has symbols, a clear + Add symbol button sits under the rows (same as the empty state). Opens the add-symbol popup. The confusing lone “+” in the column header is hidden on custom lists. | /charts — open a custom list with stocks → see “+ Add symbol” under the rows. |
| 201 | 0.5.324 | Mon 5 Oct 2026 — Watchlist simplified (no Workspace). Right dock is just Watchlist again. Built-ins stay: Default, Indices, Sectors, F&O, Nifty 50, Nifty 500. One + creates a named Custom watchlist, then opens Add symbol. Rename / Delete from the menu (or empty-state Rename). Everything auto-saves. | /charts — + → name “Custom watchlist” → Add symbol popup; rename/delete from menu; WL saved toast. |
| 200 | 0.5.323 | Mon 5 Oct 2026 — Workspace / Watchlist hierarchy, clearer create + add-symbol flow. Right dock is now Workspace (Market / Universes / Watchlists) above, and Watchlists tabs below. Removed the duplicate + on the tabs — create a list only via New list or the workspace menu. Empty lists and the header + open an Add symbol popup with search; creating a watchlist or adding/removing a symbol auto-saves (with the existing WL saved toast). | /charts — Workspace ▾ → Watchlists → New list → Add symbol popup; only one create path; WL saved toast. |
| 199 | 0.5.322 PROD |
Fri 2 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Replay cut wipe
+ keep chart zoom/pan on candle pick (0.5.321–0.5.322).
|
https://bharatcharts.com — Replay → pick candle: right side clears, view stays.
Rollback: deploy-prod.sh --rollback.
|
| 198 | 0.5.322 | Fri 2 Oct 2026 — Replay keeps your chart view. Selecting a candle for Bar Replay still wipes candles to the right, but no longer auto-zooms or pins the cut to the right edge. Zoom and pan stay as they were on the chart. | /charts — Replay → click a candle → right side clears; view stays the same as before the click. |
| 197 | 0.5.321 |
Fri 2 Oct 2026 — Replay cut wipe fix.
Picking a candle for Bar Replay now invalidates TradingView’s bar cache
before resetData, so candles to the right of the cut are cleared
and Play is ready. Candle pick uses native requestSelectBar when available.
|
/charts — Replay → click a candle → right-side candles wipe; replay bar shows ready to play. |
| 196 | 0.5.320 PROD |
Thu 1 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Live switch tip-first
+ silent today-fill before paint (0.5.320).
|
https://bharatcharts.com — mid-session symbol open shows continuous candles
(no gap flash). Rollback: deploy-prod.sh --rollback.
|
| 195 | 0.5.320 |
Thu 1 Oct 2026 — Continuous first paint (live).
During market hours, cash symbol switches never paint warm MEM first.
Forced tip?refresh=1 (ignore stale hover tip), silent today
session fill if tip edge still lags, then a single setSymbol.
|
Click any WL symbol mid-session — chart opens already continuous; no hole that fills a moment later. |
| 194 | 0.5.319 PROD |
Thu 1 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Tip-first when MEM
edge stale — no gap flash (0.5.319).
|
https://bharatcharts.com — WL click opens continuous candles (no hole flash).
Rollback: deploy-prod.sh --rollback.
|
| 193 | 0.5.319 |
Thu 1 Oct 2026 — Tip-first when MEM edge stale.
Instant MEM paint only if last bar is within ~2.5 buckets of now.
Otherwise wait for tip (hover prefetch reused), then one
setSymbol — no gap→heal flash. Live WS unchanged.
|
Click any watchlist symbol mid-session — chart opens with candles already continuous (brief wait if tip not prefetched). |
| 192 | 0.5.318 PROD |
Thu 1 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Mid-session candle-gap
heal on WL open (0.5.318).
|
https://bharatcharts.com — opening a stock mid-session should not leave a
candle hole until refresh. Rollback: deploy-prod.sh --rollback.
|
| 191 | 0.5.318 | Thu 1 Oct 2026 — Candle gap heal (first open). Stale warm MEM first paint could end mid-session while live/BB continued further right. Tip deepen now reloads TradingView when the right edge advances; grace-skipped resets are queued. Live WebSocket / onTick path unchanged. | Click any watchlist symbol mid-session — missing closed candles fill without a manual page refresh. |
| 190 | 0.5.317 PROD |
Thu 1 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Instant WL/search
symbol switch (0.5.317).
|
https://bharatcharts.com — watchlist/search clicks paint candles with the URL.
Rollback: deploy-prod.sh --rollback.
|
| 189 | 0.5.317 |
Thu 1 Oct 2026 — Instant symbol switch (WL / search).
Chart no longer waits on tipNet or a timed resetData after the URL
updates. Warm MEM/session (≥15 bars) paints immediately; getBars accepts the
staged handoff without continuity/LTP gates; search rows prefetch tip on hover.
|
Click any watchlist / search symbol — URL and candles flip together; deepen behind. |
| 188 | 0.5.316 |
Thu 1 Oct 2026 — Feedback field alignment.
Modal inputs/select/textarea use box-sizing: border-box +
max-width: 100% so they no longer spill past the card edge.
|
Feedback form fields sit fully inside the white modal on light theme. |
| 187 | 0.5.315 |
Thu 1 Oct 2026 — Feedback light theme + new logo.
Feedback modal title/select/textarea follow light theme tokens (no dark navy fields).
Site/email/favicon logos replaced with Downloads Bharat New Charts.png.
|
Light theme feedback form: white inputs; new wordmark on charts/home/email/favicon. |
| 186 | 0.5.314 PROD |
Thu 1 Oct 2026 — Production promote.
Staging → production (deploy-prod.sh). Carries Realtime Analytics
(0.5.314) and analytics tracking fix + GIFT NIFTY-only default WL (0.5.313).
|
https://bharatcharts.com — Admin Analytics LIVE refresh; Default WL has one GIFT NIFTY.
Rollback: deploy-prod.sh --rollback.
|
| 185 | 0.5.314 | Thu 1 Oct 2026 — Analytics Realtime. Admin Analytics auto-refreshes every ~2s (LIVE badge). Symbol changes on /charts beacon immediately so “Now on” updates without a manual refresh. | Keep Admin → Analytics open; switch symbols on /charts in another tab — online chip and Now on column update within a couple of seconds. |
| 184 | 0.5.313 |
Thu 1 Oct 2026 — Analytics tracking fix + GIFT WL.
Server records a page hit on every signed-in load (not JS-only). Stronger
presence heartbeats; admin Analytics lists all registered users and marks
online ≤10m. Default watchlist keeps GIFT NIFTY only (drops FUT alias).
|
Sign in with Google → open /charts → Admin → Analytics shows you online with time; Default WL has one GIFT row. |
| 183 | 0.5.312 |
Thu 1 Oct 2026 — Admin user analytics.
Track signed-in dwell time per page + charts symbol (15s heartbeats while visible).
New /admin/analytics.php: registered / active / online, page bars,
symbol heatmap, IST hour heatmap, per-user drill-down.
|
Sign in → browse /charts and switch symbols → Admin → Analytics shows time and top symbols. |
| 182 | 0.5.311 | Thu 1 Oct 2026 — GIFT Nifty + Feedback form. Default watchlist adds GIFT NIFTY and GIFT NIFTY FUT (NSE IX index feed; broker masters have no dated futures yet). Charts account menu opens a Feedback popup; submissions land in Admin → Feedback. |
Default tab shows GIFT symbols; Feedback menu sends a message visible in
/admin/feedback.php.
|
| 181 | 0.5.310 | Thu 1 Oct 2026 — Ownership & TradingView disclaimer. Home footer, charts account/mobile menu, and privacy page state that Bharat Charts is a Vardhan Capital product and uses the TradingView charting library as a widget. | Footer and Privacy & terms show the Vardhan Capital + TradingView attribution line. |
| 180 | 0.5.309 |
Thu 1 Oct 2026 — Brand logo refresh.
Replaced homepage / charts / email / admin wordmark and favicons with
Downloads BC Charts.png (transparent background, gold tagline,
B-mark favicon + apple-touch).
|
Homepage, /charts header, welcome email, and browser tab icon show the new BharatCharts logo without a white plate. |
| 179 | 0.5.308 |
Thu 1 Oct 2026 — Option Chain click + instant cash symbol switch.
Load option_chain.js before charts and retry-mount if needed (OC button
was a dead click after 0.5.307 defer). Watchlist/search switches flip TradingView
immediately and paint from MEM/session/cash warehouse tip — no wait on
refresh=1 tip before the chart changes.
|
Option Chain opens the strike popup; clicking ADANIENT (or any WL/search stock) updates the chart at once from cash tip without freezing on the prior symbol. |
| 178 | 0.5.307 |
Wed 30 Sep 2026 — Charts first-load speed.
Chart boots without waiting for the logos index. On reload, session/IDB tip paints
immediately while tip refreshes in the background. Cold tip no longer forces
refresh=1 (symbol switch still does). Option chain script is deferred.
|
Hard-reload /charts — candles appear without waiting on logos; second visit paints from local tip. |
| 177 | 0.5.306 | Wed 30 Sep 2026 — Alerts indicators + heatmap tiles. Alert Source lists more indicators (WMA, ADX, MFI, VWAP, Supertrend, extra MAs) and re-checks them every few seconds. Alert log can be cleared or deleted row-by-row. Heatmap tiles are larger; price and % change share the same bold size. | Alerts → Source shows the full indicator list; Log has Clear. Heatmap price matches % size. |
| 176 | 0.5.305 | Wed 30 Sep 2026 — Price-axis “+” for line + alert. Hover the price scale and click the plus button (or right-click the chart) to draw a horizontal line or open Create Alert at that price. No buy/sell trading options. | Charts — plus on the right scale opens Horizontal line / Add alert. |
| 175 | 0.5.304 | Wed 30 Sep 2026 — Logo backgrounds removed. Wordmark and B mark are transparent (no white plate) so they sit cleanly on dark headers; the tagline is gold so it stays readable. | Header/footer/charts logos blend into the dark UI with no white box. |
| 174 | 0.5.303 | Wed 30 Sep 2026 — Official Bharat Charts logo branding. Wordmark and B mark from the brand files now appear in the homepage header and footer, charts header, option chain, welcome email, admin, and account pages. Favicons and the apple-touch icon use the B mark. | Site chrome and browser tab show the gold/green Bharat Charts logo. |
| 173 | 0.5.302 | Wed 30 Sep 2026 — Kite (Zerodha) primary for live LTP and chart history. Live feed and user chart history prefer Kite so LTP, forming candles and past bars match Zerodha; Dhan is the instant backup. The marketfeed daemon follows admin live roles instead of hardcoding Dhan first. | Admin Data providers: live + history show Kite first; live active = kite; chart LTP/candles match Kite. |
| 172 | 0.5.301 | Wed 30 Sep 2026 — Forming candle stays broker-correct while open. TradingView onTick only widens wicks; when live OHLC is tighter we resetCache and getBars re-attaches the forming bar so structure matches continuously. | Forming 5m matches broker during the bar, not only after it closes. |
| 171 | 0.5.300 | Wed 30 Sep 2026 — Forming candle wick fix. Live higher-TF bars rebuild from the 1m window (no permanent flash wick). Chart client adopts server forming OHLC so a bad low can recover. | Forming 5m matches broker structure; closed candles unchanged. |
| 170 | 0.5.299 | Wed 30 Sep 2026 — Mobile header tools. Phone charts header now shows Replay, Alerts, Heatmap and Layout (icon buttons). Option Chain remains in the bottom nav. | Phone ≤640px: those four tools visible in the top bar on .tech and .com. |
| 169 | 0.5.298 | Wed 30 Sep 2026 — Admin Users: delete + activity log. Delete registered users; activity log records welcome email sent/failed, Brevo delivery events, and deletions. | /admin/users.php — Delete button + Activity log; Brevo webhook updates delivery status. |
| 168 | 0.5.297 |
Wed 30 Sep 2026 — Welcome email via Brevo.
First-time onboarding completion sends the welcome HTML email through Brevo’s
transactional API ([email protected]). Once per user.
|
New Google signup → finish onboarding → welcome mail arrives; later logins do not resend. |
| 167 | 0.5.296 |
Tue 29 Sep 2026 — Replay RHS fit (percentRightMargin).
TradingView was ignoring setVisibleRange when to sat past the last bar,
leaving a ~45h gap to "now". Fit now uses percentRightMargin so the
library pins the cut (last bar) to the right; Check waits for the Promise.
|
Replay → pick candle: right side empty, cut on RHS; bot cut_on_right PASS without Play. |
| 166 | 0.5.295 | Tue 29 Sep 2026 — Replay: selected candle snaps to the right. After pick, the view kept ending at "now" (empty right side). Fit now pins the cut at the right edge and retries until TradingView accepts it. | Replay → pick candle: cut on RHS immediately; bot cut_on_right PASS. |
| 165 | 0.5.294 |
Tue 29 Sep 2026 — Replay: stop 5m→15m MEM refill.
barsFromFivePool / persistFiveAndDerive were merging
full 5m history into 15m during Replay, so right-side candles came back.
Those writes are blocked; Check re-asserts truncate and RHS fit.
|
NIFTY 15 Replay → pick → Check: truncated PASS, cut_on_right PASS. |
| 164 | 0.5.293 | Tue 29 Sep 2026 — Replay truncate holds (15m fix). Tip/5m refresh was rebuilding higher TFs past the cut so right-side candles came back. Those writes are blocked during Replay; paint uses the cut prefix only and the selected bar is fitted to the right. Replay bot truncated + cut_on_right should PASS. | NIFTY 15 Replay → pick candle → Check: truncated PASS, cut_on_right PASS. |
| 163 | 0.5.292 |
Tue 29 Sep 2026 — Replay cut on the right + Replay bot.
Picking a candle removes everything to the right and puts that candle on the
right edge (same zoom width). Intraday WS panel has a Replay tab /
?replaybot=1 to Check truncated / cut-on-right / live muted / play-ahead.
|
Replay → pick candle: right side empty, cut on RHS; bot Check shows PASS. |
| 162 | 0.5.291 | Tue 29 Sep 2026 — Replay flicker + LTP audit fix. Selecting a candle no longer does a double chart reload (that caused flicker) or lets live LTP reseed the series. The view you had is restored once after paint; live prices stay on the tape only until you leave Replay. | Replay → pick candle: no flicker, no live candle jump; Play advances cleanly. |
| 161 | 0.5.290 | Tue 29 Sep 2026 — Replay view flexible again. Removed the forced lock that froze and flickered the chart after picking a candle. The view you had when you clicked is restored once; you can pan and zoom freely. Live prices stay muted during Replay. | Replay → pick candle: no flicker, view stays yours; Play still works. |
| 160 | 0.5.289 | Tue 29 Sep 2026 — Replay: live LTP fully muted, view locked. Live prices no longer reach the replay chart (queued ticks cleared too). After you pick a candle the view fits once and stays locked until Play; Play only pans when the candle would leave the right edge. | Replay → pick candle: view steady while tape moves; Play advances cleanly. |
| 159 | 0.5.288 | Tue 29 Sep 2026 — Replay play + fit fixed. After muting live LTP, Play could freeze (a leftover live edge blocked replay bars) and the view did not fill the screen. Replay bars now always reach the chart; selecting a candle soft-fits it to the right with your zoom. Live ticks stay muted during Replay. | Replay → pick candle → Play: candles advance and the view fills the pane. |
| 158 | 0.5.287 · PROD | Tue 29 Sep 2026 — Promoted to production. Staging 0.5.278–0.5.287 promoted to bharatcharts.com: header polish, multi-grid live fixes, Replay keeps zoom and ignores live ticks while replaying. | bharatcharts.com charts show v0.5.287; Replay behaves the same as on .tech. |
| 157 | 0.5.287 | Tue 29 Sep 2026 — Replay ignores live ticks. While Replay is on, live LTP no longer updates that chart. Before, each new tick could rewrite the live candle and reseeds after a reload, which jumped or zoomed the view even though the candle pick itself looked fine. | Replay → pick a candle: view stays put as live prices keep moving on the tape. |
| 156 | 0.5.286 | Tue 29 Sep 2026 — Replay keeps your zoom. Clicking Replay and picking a candle no longer force-zooms the chart. The same view you were looking at is restored after the cut; Play only pans when the candle would leave the right edge — candle width stays put. | Replay → click a candle: zoom unchanged; Play advances bars without fat candles. |
| 155 | 0.5.278 | Tue 29 Sep 2026 — Charts header polish. Removed the top-right Search icon (search remains in the watchlist and on phone via the bottom nav). Header actions use a unified modern style: Replay / Alerts / Heatmap / Option Chain in one tool cluster, and refresh + theme (sun/moon icons) + Layout grouped on the right. | Desktop header has no Search button; tool buttons look consistent; theme toggle shows sun/moon SVG. |
| 154 | 0.5.277 | Tue 29 Sep 2026 — Search logos + Default vs Indices watchlists. Symbol search now returns and shows uploaded logos (search panel, TV search, add-to-list suggestions). Default watchlist stays the short home list (NIFTY 50, FIN NIFTY, BANK NIFTY, SENSEX, CRUDE OIL). Indices is the broad list: those plus all sector indices — no longer a duplicate of Default. | Search PAYTM → logo in results; Default ≈ 5 rows; Indices shows many sector indices too. |
| 153 | 0.5.276 |
Tue 29 Sep 2026 — Multi-grid same LTP: real root cause fixed.
Grid live log showed both panes on PAYTM but only subs=1 — TradingView
reuses the same listenerGUID (PAYTM_#_regu) for every chart on that
symbol, so the second pane overwrote the first subscription. Subscriptions are now
namespaced per datafeed instance (df2::PAYTM_#_regu), so each pane keeps its
own live callback.
|
/charts?gridlog=1 → 2-pane same symbol: HUD shows subs=2 and deliver ok=2; both LTPs match. |
| 152 | 0.5.275 |
Tue 29 Sep 2026 — Multi-grid: separate datafeed per pane + live log.
Same-symbol panes still only updated on the right because both widgets shared one
datafeed instance (TradingView kept the latest subscription). Each pane now gets its
own datafeed object (still one TickHub). Also added a small Grid live log
(bottom-left; enable with ?gridlog=1 or it appears when 2+ chart subs) and
window.__bcGridDump() in the console.
|
Hard-refresh /charts?gridlog=1, open 2-pane same symbol: HUD shows subs=2 and deliver ok=2; both LTPs move together. |
| 151 | 0.5.274 | Tue 29 Sep 2026 — Multi-grid: both panes update live LTP together. Same-symbol panes still diverged because they shared one TradingView edge cursor — only the right pane kept advancing. Live bars now track a per-pane edge and are delivered to every subscriber on that symbol at once. | 2-pane grid, same stock on both: LTP and the forming candle move together on left and right. |
| 150 | 0.5.273 | Tue 29 Sep 2026 — Multi-grid same LTP + layout menu cleanup. Two panes on the same symbol were showing different last prices because live ticks only reached the first WebSocket listener (debounce skipped the rest). Live bars now fan out to every pane on that symbol. Removed the Symbol / Interval sync toggles from the layout picker (not needed). | Open a 2-pane grid with PAYTM on both — LTP and the forming candle must match; Layout menu no longer shows Symbol / Interval switches. |
| 149 | 0.5.272 | Tue 29 Sep 2026 — Multi-grid layouts + live WebSocket across every pane. Layout menu now matches TradingView-style grids (1 through 8 panes, side-by-side / stacked / large+stack variants). New Sync in layout toggles for Symbol and Interval. With Sync Symbol off, each pane can chart a different stock and still receive the same live WebSocket stream; with it on, a symbol change mirrors to every visible pane. Interval sync does the same for timeframes. Switching layouts no longer overwrites existing pane symbols unless Sync Symbol is enabled. | Open Layout → pick a 2 / 4 / 6 / 8 grid; put different symbols on panes and confirm both prices tick live; toggle Sync Symbol / Interval and confirm they mirror. |
| 148 | 0.5.271 · PROD |
Tue 29 Sep 2026 — Admin shows the deployment version on both .tech and .com.
The admin sidebar now shows a clear vX.Y.Z · Staging/Production pill under the brand,
and a new Deployment version page (/admin/version.php) hosts the full
version-log.html table inside the admin chrome. Overview also prints the running version.
Each site reports its own build, so you can tell staging and production apart at a glance.
|
/admin on bharatcharts.tech → pill says Staging; /admin on bharatcharts.com → Production; Deployment version page shows the full changelog for that host. |
| 147 | 0.5.270 · PROD |
Tue 29 Sep 2026 — Gap-down live candles no longer glue to previous close.
On a gap day the live WebSocket path was freezing the first candle's open at the first tick
(often ≈ yesterday's close) and never adopting the exchange day open from the quote / server bar —
so UNITDSPR painted a tall body from ~1420 down instead of opening near the day open (~1408) with a
real gap from prev close (1415.4). Live chart now forces session-open bucket open = day open, adopts
server.open on every tick, and merges day high/low while that bucket is forming.
Session-open repair no longer clips real lows/highs with a 2% wick cap when day H/L are known.
Feed also refuses a day-open that still equals prev_close once LTP has already gapped.
|
Gap-down stock at the open: first 5m candle open matches exchange day open (not prev close); empty gap above to yesterday's close like the broker chart; body follows real trades. |
| 146 | 0.5.269 | Tue 29 Sep 2026 — Option strike charts open with up to 7 days and faster clicks. Clicking a strike now paints from the Postgres cache only (no broker "heal" on the click path), so the chart opens in tens of milliseconds when the strike is already cached. The option-chain preload asks for up to 7 sessions (or whatever days that strike actually traded — thin strikes may only have 2–3). Scroll-left no longer shows a false 8-second "HIST-TIMEOUT" stall. Broker heal still runs in ATM / evening jobs, and rebuilds a day's 5m candles without briefly wiping the day first. The 09:15 option "yesterday close" wick fix is on disk for the next feed restart after the close (live WebSocket was not restarted during market hours). ATM pre-cache timer moved to :16/:46. | /charts → Option Chain → click ATM CE/PE; chart should show last available sessions (up to 7) quickly. |
| 145 | 0.5.268 | Tue 29 Sep 2026 — 9:15 check now covers option strikes and the option chain. The "Market open 09:15" panel in the Intraday WS bot now also checks 22 strikes around the ATM strike (5 either side, Call and Put) of the nearest expiry for NIFTY, BANK NIFTY, FIN NIFTY and SENSEX — 88 contracts. For each it checks that the 09:15 candle was saved, that the strike got a price after 09:15, and that no minutes are missing since the open. It shows a per-index summary and lists any strike with a problem. It also checks the option-chain feed on the server (how fresh it is, how many strikes are ticking, which broker the chain comes from), the option-chain service log (live feed drops, restarts, switches from Kite to Dhan), and, if the option chain is open in this browser, its live connection drops and last strike tick. The ticking table has new columns for BSE F&O (SENSEX options) and option-chain strikes. | /charts on bharatcharts.tech before 09:15, open the option chain → Intraday WS → Live market test. |
| 144 | 0.5.267 | Tue 29 Sep 2026 — WebSocket bot checks the 9:15 market open. The Intraday WS bot (bottom right on /charts, "Live market test" tab) now has a "Market open 09:15" panel. If /charts is open before 09:20 on a trading day it runs by itself: a check at 09:14:30, a price poll every 3 seconds from 09:14:48 to 09:17, and checks at 09:15:05, 09:16:10, 09:17:30 and 09:20. It shows which broker is live, whether the Dhan and Kite logins are valid, whether the pre-open refresh ran, any feed restarts, disconnects or switches to the backup, and whether fewer symbols were subscribed after 09:15 than before. It shows how many indices, stocks and F&O contracts had a new price by each moment after 09:15 and when each main index got its first tick. For all indices, sector indices and Nifty 50 it checks that the 09:15 candle was saved, opens at the exchange's day open, has no wick from the pre-open auction, and that no minutes are missing since the open. It also measures this browser: live connection drops, when the chart's first live candle moved after 09:15, chart stalls, delay from tick to chart, browser clock, smoothness, memory and page load. "9:15 check now" runs it any time; "Copy 9:15 report" copies the result. | /charts on bharatcharts.tech before 09:15 → Intraday WS → Live market test. |
| 143 | 0.5.266 · PROD | Tue 29 Sep 2026 — PROD: charts header on bharatcharts.com lines up like bharatcharts.tech on phones. On phones the header buttons (Replay, Alerts, Heatmap, Search, Refresh, Theme, account) now sit on the right on bharatcharts.com, the same as on bharatcharts.tech. They were bunched on the left because the market-status badge, which is only shown on the staging site, was what pushed them across. Desktop layout is unchanged. | |
| 142 | 0.5.265 · PROD | Mon 28 Sep 2026 — PROD: chart alerts now reach you even when Bharat Charts is closed. Once you allow notifications, every alert you create is also watched by the server, which checks it against live prices every 3 seconds (indicator alerts use the same 5-minute candles as the chart). When it triggers you get a notification on this device and on your other signed-in devices, even with the browser closed. If the chart is open at the time you still get only one notification. Alerts sent while you were away appear in the alert Log. The admin Push notifications page shows how many alerts are being watched, how many were sent today and whether the alert checker is running. Alert pop-ups now also work on Android. | |
| 141 | 0.5.264 · PROD | Mon 28 Sep 2026 — PROD: alerts stay on, and notifications that reach you with the site closed. An alert you create now stays active until you delete it; it no longer switches itself off after the first trigger. The Trigger choice is now "Every time" or "Once a day". The first time you open /charts the browser asks whether to allow notifications; once allowed, your device is registered for push notifications. Admins can send a notification to all subscribed users (or one user) from the new Admin → Push notifications page. Mentions of other charting products were removed from the alerts panel, and the Stock Hunter ad box at the bottom of the watchlist is gone for now. | |
| 140 | 0.5.263 · PROD | Mon 28 Sep 2026 — PROD: the new homepage is live on bharatcharts.com. The headline now reads "completely FREE" in capital letters, and the address shown on the feature screenshots is simply "bharatcharts.com". This release also takes everything from 0.5.255 to 0.5.262 to the main site: the new homepage (problem section, Introducing Bharat Charts, seven feature rows with real screenshots, reviews, FAQ, Contact us form, new Register panel and glass footer) and the fresher option chain prices from 0.5.255. | bharatcharts.com — homepage headline and feature screenshots; bharatcharts.tech shows the same. |
| 139 | 0.5.262 | Mon 28 Sep 2026 — Homepage: real screenshots for all seven features, with motion. Each feature row now shows a real Bharat Charts screenshot inside a browser-style window: Multiple grids, Unlimited indicators, Dedicated watchlist, Heatmap, Option chain, Alerts and Replay. When you scroll to a row the window opens from top to bottom, the picture gently zooms into place, a soft shine passes across it and a small glass label pops up (for example "4 charts, 1 screen" or "Live OI and IV"). A coloured glow in each feature's colour breathes behind the window. On a computer the window tilts slightly as you move the mouse over it. The picture side is now a bit wider so the screenshots are easier to see. Phones get a smaller window and label. | / (homepage) — scroll through the feature rows under "Introducing Bharat Charts". |
| 138 | 0.5.261 | Mon 28 Sep 2026 — Homepage: Contact us form, clean section edge, better mobile layout. New "Contact us" section above the final Register panel: name, email, phone (optional), topic and message. Messages are saved and can be read in Admin → Contact messages. "Contact" is added to the top menu (desktop and mobile) and "Contact us" to the footer. The white problem section no longer fades into the dark part; it now ends with clean rounded corners, like the white Reviews section. Mobile and tablet checked from 320px to 1280px wide: no sideways scrolling, the "developed by Vardhan Capital" line wraps neatly, empty picture boxes are smaller on tablets, and the Register buttons stack only on phones. | / (homepage) — scroll to Contact us and send a test message; /admin/contact.php to read it. |
| 137 | 0.5.260 | Mon 28 Sep 2026 — Homepage: softer fade, tighter spacing, glass chips on the picture, premium CTA and footer. The white problem section now ends with a short, soft fade into the dark part (no more big blue band), and the empty space around it and between the feature rows is smaller. The "Introducing Bharat Charts" picture now has four small floating glass labels: Live NSE prices, 8 charts on one screen, 100+ indicators and Free forever. The final "Register" panel has a new look: a slowly moving glowing border, soft coloured light, a faint chart in the background, a "Free forever · No card needed" tag and three ticks (Sign in with Google, No credit card, Works in your browser). The footer is now a frosted-glass card like the top menu, with links (Features, Reviews, FAQ, What's new, Privacy & terms, Help center), a Register button and a short "not investment advice" note. | / (homepage) — scroll from the problem section into "Introducing", then to the bottom of the page. |
| 136 | 0.5.259 | Mon 28 Sep 2026 — Homepage: reviews carousel, new FAQ, smoother fade into "Introducing". After the golden "₹0 forever" card there is now a white section with 11 review cards (star ratings of 4, 4.5 and 5) that slowly scroll from right to left and pause when you hover. These are sample reviews for now, marked as such, until real user reviews are added. Below them is a new FAQ with 8 questions: what Bharat Charts is, is it really free, what features you get, how many indicators, live prices, markets covered, install, and investment advice. Then the final "Register" panel and the footer. The old "How it starts" and "The offer" sections were removed, and the top menu now shows Features, Reviews and FAQ. The white problem section now fades slowly through a soft blue-violet into the dark "Introducing Bharat Charts" part instead of turning black suddenly. | / (homepage) — scroll past the problem section (smooth fade), then past the golden card to Reviews and FAQ. |
| 135 | 0.5.258 | Mon 28 Sep 2026 — Homepage: red warning on the problem section, eight feature rows, golden ₹0 forever. When you scroll to "Most free charts show you only half the picture", the section now flashes red like a warning: a blinking warning sign, the sample chart card shakes and glows red, the ✕ marks pulse and a red line scans across the chart. The white section now fades smoothly into the dark "Introducing Bharat Charts" part instead of ending with a hard edge. Under "Introducing Bharat Charts" it now says "A proud charting platform developed by Vardhan Capital" (the "Features" label was removed). The feature list below is now eight rows, one per feature, with a short heading, a line of text and three points each: Multiple grids, Unlimited indicators, Dedicated watchlist, Heatmap, Option chain, Alerts, Replay, and a golden "₹0 forever" card with a shining ₹0. The picture space on each row is kept empty for now; the real pictures will be added later. | / (homepage) — scroll to the white section (red warning), then down through the eight feature rows. |
| 134 | 0.5.257 | Mon 28 Sep 2026 — Homepage: real product picture, simpler words, tighter spacing, scroll motion. "Introducing Bharat Charts" now shows the real picture of a trader using Bharat Charts. The problem section uses simple words ("Most free charts show you only half the picture") and shows a sample free-plan chart with its limits: 15 minutes late, 1 chart only, an "Indicator limit reached" message and a "Pay to see more" lock. The four points under the picture have coloured icons. Buttons now say "Register for Bharat Charts" and "Register now for the terminal". Less empty space between the feature cards, the white section and the features below. New motion while scrolling: the product picture tilts up into place, the sample chart draws itself, text comes in from a soft blur and the feature pictures move gently. | / (homepage) — scroll slowly from the feature cards down to the features. |
| 133 | 0.5.256 | Mon 28 Sep 2026 — Homepage: "the gap" on white, and a new "Introducing Bharat Charts" block. After the feature cards, the page now moves from dark to a white section that explains why most free charts leave you flying blind: other chart platforms lock tools behind a paid plan and broker charts have limited functions. Next to it, a greyed-out "Other charts" card lists what you miss (one chart at a time, capped indicators, delayed data, paid replay and alerts) with an "incomplete picture" bar. The features section now opens with "Introducing Bharat Charts": a large product picture, a short description, four key points and an Open terminal button. The main hero button now says Register now. Section numbers (01, 02…) were removed from the section labels. | / (homepage) — scroll past the feature cards: white "Most free charts make you fly blind" section, then "Introducing Bharat Charts". |
| 132 | 0.5.255 | Mon 28 Sep 2026 — Option chain opens fresh and keeps itself up to date. Opening an option chain you weren't already watching could show prices and OI up to a minute old until you pressed refresh. It now fetches a fresh copy as it opens. Coming back to the tab or reconnecting to the internet refreshes it straight away. A live connection that has quietly stopped reconnects on its own. Prices in the table could also briefly jump to an older value whenever the live window moved with the ATM strike; old prices are now ignored. Strikes that didn't trade at all in the previous session (common for FIN NIFTY in-the-money calls) no longer show a misleading Chg% such as −87%. They show "—", because the exchange's "previous close" for them is from an older day. Option candles were checked against Kite for NIFTY, BANK NIFTY, FIN NIFTY and SENSEX and match minute-for-minute. A call chart with no candles for the previous day means that contract didn't trade that day; Kite's own chart is empty there too. | /option-chain — open FIN NIFTY: prices are current without pressing refresh; switch tabs and come back and it updates at once; untraded strikes show "—" in Chg%. |
| 131 | 0.5.254 |
Mon 28 Sep 2026 — Heatmap tiles show the stock name; Nifty 500 and Commodities added.
Every heatmap tile now shows the stock or index name next to its logo. Before, the name was squeezed out
of the tile, so you only saw the logo, change % and price. The Universe dropdown now also has
Nifty 500 (all 500 stocks) and Commodities (MCX futures such as Gold, Silver, Crude Oil, Natural Gas
and Copper). Clicking a commodity tile opens that commodity's chart with its own name in the chart legend
(Gold charts used to be labelled Crude Oil) and MCX trading hours up to 23:30.
PROD: 0.5.240 – 0.5.254 promoted to bharatcharts.com on 28 Sep 2026, 15:02 IST (new homepage, live candle and option chart fixes, Kite-first options, live watchlist, heatmap names). |
|
| 130 | 0.5.253 | Mon 28 Sep 2026 — Dotted last-price line on every chart. Every chart now shows a dotted horizontal line at the last traded price, with the price on the right axis. This covers stocks, indices, and Call/Put charts opened from the option chain. Before, the line could be missing if older saved chart settings had it switched off. | |
| 129 | 0.5.252 | Mon 28 Sep 2026 — Option charts show the exact exchange candles, with no gaps. Call and Put charts used to build today's candles from the live price stream. Some minutes were missing, many candles were slightly off, and the first candle of the day had its low cut short. Now the chart uses the broker's own candles, rechecks them every minute while the market is open, and fills in or corrects any candle that was missing or wrong. An open chart fixes itself within about a minute, so you no longer need to refresh. Minutes with no trades are left empty, the same as on the broker's chart. | |
| 128 | 0.5.251 | Mon 28 Sep 2026 — Option chain and option charts now come from Kite (Zerodha). Dhan kept refusing option chain requests for being too frequent, so the chain kept switching between sources. Options now come from Kite first, and Dhan takes over only if Kite is down or not logged in. Indices and stocks stay on Dhan first, with Kite as their backup. The option chain refreshes about every 4 seconds while it is open (it was every 7 seconds or more), and 121 strikes around ATM are shown. IV, delta, gamma, theta and vega are worked out from the current price, so they no longer lag behind the market. Opening a Call or Put chart loads its history from Kite. OI change is measured against the previous day's closing OI and starts showing from tomorrow's session (it was always blank before). Kite needs its once-a-day login on the admin Data providers page; without it the options go back to Dhan. | /option-chain — the ATM row's IV and delta change with the price; admin Data providers shows Option chain and Option charts with Kite first. |
| 132 | 0.5.346 | Mon 12 Oct 2026 — Latest today candles no longer stretch tall until refresh. Watchlist clicks could leave today's last candles looking oversized (open glued to day open when tip lagged). Live now opens flat at LTP on mid-session holes, tip-first heals today's bars with one soft redraw, and a poisoned open-bucket is cleared on symbol switch. | /charts — click stocks mid-session; latest candles match refresh without needing F5. |
| 133 | 0.5.349 | Tue 13 Oct 2026 — Mid-session candle gaps fill without refresh. Live ticks can only update the rightmost bar, so a lagging tip left a blank stretch after the open candle until F5. Charts now detect same-session tip lag / intraday holes and resync tip (+ today hist) then reload history so the missing closed bars appear automatically. | /charts — mid-session symbols no longer show an empty gap after the first today candle; holes heal without a manual refresh. |
| 134 | 0.5.350 | Tue 13 Oct 2026 — "Only first today candle" until refresh (GIFT / some stocks). Continuous MEM could paint as solid with yesterday + one live tip bar; overnight is not an intraday hole, so the gap healer skipped. Thin today now forces tip resync + hard history reload; LIVE-MEM solid requires enough today bars. | /charts — GIFT NIFTY and similar symbols show today's full session without needing F5. |
| 135 | 0.5.351 | Tue 13 Oct 2026 — Gaps when switching 5m ↔ 15m (and other TFs). Timeframe switches could paint a lagging AGG/exact tip (up to ~45 minutes behind), then live ticks jumped to now and left a blank stretch. Switches now require a fresh edge, extend stale 15/60 from the 5m pool, and tip-resync on interval change. | /charts — change 5m→15m or 15m→5m mid-session; today's candles stay continuous without refresh. |
| 136 | 0.5.352 | Tue 13 Oct 2026 — Mid-session holes without refresh (HINDUNILVR / equities). First paint could attach a lone live candle across missing closed buckets; live ticks then jumped ahead while the chart still showed a blank stretch. Now skips that attach, verifies after paint, blocks onTick across MEM gaps, and resyncs from the closed-bar edge. | /charts — equities mid-session stay continuous; gaps should self-heal within a few seconds. |
| 137 | 0.5.353 | Tue 13 Oct 2026 — No thin→heal flicker (PGHH / watchlist). Cache could paint yesterday + one “now” candle, then tip filled and the chart jumped. First paint now waits until today's session is dense (tip/hist), then paints once — no gap flash when switching symbols from the watchlist. | /charts — click PGHH or other equities mid-session; candles should appear continuous without a blank stretch then readjust. |
| 138 | 0.5.354 | Tue 13 Oct 2026 — Fast open (no blank COFORGE). Dense-wait was too strict (any hole blocked paint) and left a white chart while tip loaded. Only the classic thin flash (0–1 today bars) waits; tip paints immediately; blank wait capped ~700ms. | /charts — open COFORGE / equities from watchlist; chart should appear quickly with today's candles. |
| 139 | 0.5.355 | Tue 13 Oct 2026 — Hard-gate live across holes (RECLTD). TradingView onTick cannot insert missing closed bars; if resync was debounced the client still appended a lone “now” candle (gap until refresh). Live ticks are now always held across MEM/TV closed-edge holes until tip+resetData heals; gap heal no longer skipped after pan. | /charts — open RECLTD mid-session; if tip lags, chart should self-heal without a blank stretch + lone candle. |
| 140 | 0.5.356 |
Tue 13 Oct 2026 — October bot F&O walk (.tech).
Purple October panel: Run all F&O opens every F&O stock from the watchlist and checks
load speed, history depth, today bars, intraday gaps, and live edge lag. Auto:
?october=fno.
|
https://bharatcharts.tech/charts?october=fno — October badge → Run all F&O → Copy report. |
| 141 | 0.5.357 | Tue 13 Oct 2026 — Continuous candles under tip lag. When MEM/tip trails the open bucket, pad same-session closed buckets with continuity bars, keep the live candle forming on the open bucket, then tip-heal replaces pads with real OHLC. Faster edge watch (2.5s) and reconcile for large lag. | /charts — open cold F&O mid-session; series stays continuous (no frozen edge / lone now candle); October F&O walk should show live lag ≤2 after pad. |
| 142 | 0.5.358 | Tue 13 Oct 2026 — Thin-today / October harden. Tip-first and getBars thin flash escalate to tip cold + today hist; never solid-paint yesterday-only MEM. October F&O: tip probe latency alone caps at WARN when bars healthy; wait up to ~3.5s for thin/lag heal before grade. | /charts?october=fno — tip probes should not FAIL on 3–6s alone; PAYTM-style thin flash should heal or WARN, not mass FAIL. |
| 143 | 0.5.359 | Tue 13 Oct 2026 — October live-attach PASS. F&O walk: when today/edge/gaps look healthy, missing live LTP is PASS (painted, edge ok); brief ~1.4s wait for WS attach during stampede. Mid-session gaps=1 stays WARN. | /charts?october=fno — fewer “painted, no live yet” WARNs; remaining WARNs mostly gaps=1. |
| 144 | 0.5.359 PROD |
Tue 13 Oct 2026 — Production promote.
Staging → production: continuous candles under tip lag (0.5.357), thin-today escalate (0.5.358),
October live-attach PASS (0.5.359). Rollback: deploy/deploy-prod.sh --rollback.
|
https://bharatcharts.com/charts — continuous forming candles, fast open; version header 0.5.359. |
| 145 | 0.5.360 |
Wed 14 Oct 2026 — Solid edge healer (anti-flicker).
One tip-heal flight per symbol; stop pad→resetData thrash; hard reload only when
closed series actually grew / holes healed (20s cooldown). Edge watch 12s, lag≥2 steps.
First paint may still pad for continuity without triggering reload.
|
/charts — open stocks mid-session: no repeated gap→self-adjust→page flicker. |
| 146 | 0.5.361 | Wed 14 Oct 2026 — Dense MEM/tip gate (no gap-until-refresh). Solid first paint only when mid-session holes=0 and closed edge ≤1 step. Holey MEM skips LIVE-MEM; tip-first holds until stitch (force after ~700ms). Edge healer hard-reloads once when tip/MEM fills a painted hole. Redis tip cache kept for speed when dense. | /charts — mid-session open: continuous candles without stuck gap until refresh; no flicker thrash. |
| 147 | 0.5.362 | Wed 14 Oct 2026 — Simple continuous first paint. Never hand TradingView a holey live series: tip-cold + today stitch, then one paint. MEM/handoff/pool only when dense. If a sparse paint still happens, hard reload as soon as tip densifies (hole fills bypass 20s cooldown). | /charts — click any stock mid-session: continuous candles without needing page refresh. |
| 148 | 0.5.363 | Wed 14 Oct 2026 — Server candle builder (quiet-minute + tip lag fix). Flat-fill quiet 1m bars into PG; keep PG queue until commit; reconnect PDO on failure; tip roll dirty 5m buckets on every 1m close (no 270s throttle); seed last closed 1m from PG on daemon start. Client 0.5.362 density check stays as safety net. | Mid-session tip continuous; verify with 1m hole SQL (expect 0 rows after a full session). |
| 149 | 0.5.364 |
Wed 14 Oct 2026 — October bot continuity metrics.
F&O walk reports dense %, gaps0 %, solid/sparse, edge lag buckets, heal healed/needed,
paint/holes p50/p95. Harness snapshot adds dense/metrics.
Copy report includes a Continuity metrics block.
|
?october=fno → Run all F&O → Copy report → analyze dense/gaps/lag section.
|
| 150 | 0.5.365 | Wed 14 Oct 2026 — F&O auction false-gap fix. Closing auction 15:15→15:30 is not a mid-session hole. F&O session close for continuity is 15:15; hole detector + October tip probe skip that jump. Dense tips mark solid. |
Re-run ?october=fno — expect dense% / gaps0% near 100% (was ~63% from auction false positives).
|
| 151 | 0.5.366 |
Wed 14 Oct 2026 — Dense = today continuous.
First-paint dense/solid and October F&O metrics score mid-session holes on
today's session only (same as live-audit). One ancient tip/warehouse hole
no longer keeps ~35% of F&O as not-dense. Snapshot still exposes
holes_hist for deep-span diagnostics.
|
Hard-refresh ?october=fno — expect dense% / gaps0% near 100% while live;
tip probe holes=0 on today.
|
| 152 | 0.5.366 PROD |
Wed 14 Oct 2026 — PROD: promoted staging → production
(bharatcharts.com). Continuous F&O candles: today-dense gate, auction
skip, server flat-fill (0.5.361–0.5.366). Rollback:
deploy-prod.sh --rollback.
|
https://bharatcharts.com/charts — F&O open stays continuous (no gap until refresh).
|
| 153 | 0.5.367 |
Fri 16 Oct 2026 — Features-tour email campaign.
New draft on Email Marketing: watchlists, multi-timeframe, multi-grid layouts,
bar replay, indicators, alerts, heatmap, option chain. Audience defaults to
All users. Template
marketing_features_tour.html + seed entry.
|
Admin → Email Marketing → draft "Get more from Bharat Charts — features tour"; review, test-send, then send to all. |
| 154 | 0.5.368 | Fri 16 Oct 2026 — Email test + resend fixes. Test send saves latest HTML first and returns clear Brevo errors. After testing (or a prior send) you can Send again to All users or any Custom pick. Unlock button for campaigns stuck on sending. Failed saves keep the edit form open. | Open campaign → Send test → then Send again (All or Custom). Stuck sending → Unlock. |
| 155 | 0.5.369 |
Fri 16 Oct 2026 — Features-tour email visuals.
Redesigned marketing email with hero terminal shot + feature screenshots
(watchlist, grids/multi-TF, replay, indicators, alerts, heatmap, option chain).
Draft refreshed via seed --force.
|
Email Marketing → features tour draft shows product images; test-send to preview. |
| 156 | 0.5.370 |
Fri 16 Oct 2026 — Image-first features email.
Magazine-style layout (hero + 2×2 mosaic + full-bleed shots). Graphics from
/assets/img/email/ (drop your own screenshots there). Admin edit page
now has a live visual preview so images are visible without a test send.
|
Edit campaign → scroll to Visual preview; replace JPGs in assets/img/email/ then seed --force.
|
| 157 | 0.5.371 |
Fri 16 Oct 2026 — Email send resume.
Continue to remaining users after FPM timeout; CLI
cron/send_email_campaign.php. Finished Benefits campaign 25→264.
|
Partial send → Unlock / Continue remaining, or CLI --remaining.
|
| 158 | 0.5.372 |
Sat 17 Oct 2026 — Campaign analytics + weekend Replay email.
Analytics: open/read rate, click rate, CTOR, bounce rate; Brevo webhook treats
click as its own event. New draft “Weekend backtest — bar replay”
for all users.
|
Admin → Email Marketing → Analytics shows rates; Campaigns has weekend Replay draft to test/send. |
| 159 | 0.5.373 | Sat 17 Oct 2026 — Chunked campaign send. Browser sends in batches of 15 with auto-continue (progress bar + Stop). Avoids nginx/FPM 502 Bad Gateway on large audiences. CLI also loops in chunks. | Email Marketing → open campaign → Send campaign in chunks; keep tab open until done. |
| 160 | 0.5.374 |
Thu 22 Oct 2026 — Tip storm freeze fix.
Global tip concurrency cap (14 across all users) plus 8s nginx micro-cache
for /api/tip.php so duplicate symbol requests no longer seize
every PHP-FPM worker.
|
Site + admin stay responsive at market open; charts first paint may serve a tip up to 8s old, live WS updates after. |
| 161 | 0.5.375 |
Thu 22 Oct 2026 — Feed CPU + lag hardening.
Pure IST arithmetic on the per-tick hot path, cached session bounds,
ended-1m sweep only over ticked symbols, ticks disk write every 5s
(RAM mirror every 1s), lag percentiles in the ticks pack/API, and a
bc-feed-watchdog timer that restarts a stuck feed.
Tests in tests/live_feed_unit.php + live_feed_smoke.sh.
|
Lower VPS load; LTP lag stays ~1s; stale feed self-heals within ~30s. |
| 162 | 0.5.376 |
Thu 22 Oct 2026 — History tail guard.
If the Redis hot shelf lags during the session, /api/history.php
tops up closed bars from the Postgres warehouse (TIP+HIST) so a
chart never opens with a stale tail. Smoke tests now assert history freshness.
|
Opening any stock shows continuous closed candles up to the previous bucket; the live feed owns only the forming candle. |
| 163 | 0.5.377 |
Thu 22 Oct 2026 — Warehouse gap repair (15m/1h holes).
Audited all 1,661 warehouse symbols against the trading calendar and
backfilled 19 partial/missing symbol-days from Zerodha Kite (sector
indices 25 Sep / 05 Oct, MCX September futures 30 Sep, index alias
keys). New audit/repair tools in cron/ plus a coverage
test in tests/warehouse_coverage.sh.
|
No missing trading days at 15m/1h for majors on either site; remaining flags are exchange half-days and no-trade illiquid contracts. |
| 164 | 0.5.378 | Thu 22 Oct 2026 — Chart interior-hole fix. Left-scroll no longer answers a request with bars older than an interior hole (which cemented the hole into the chart series — e.g. RELIANCE jumping 7 Aug → 30 Sep despite complete database history), and the chart rebuilds once after the server heals such a hole. | Scrolling back on any symbol/timeframe shows continuous candles; already-open charts heal on the next scroll into the gap. |
| 165 | 0.5.379 | Thu 22 Oct 2026 — Higher-timeframe gap fix (deep paint). On 15m/30m/1h, jumping to an older window (e.g. Aug–Sep) could still show a multi-week hole (RELIANCE checked first): the chart library was answered with only the recent ~15 sessions and then never re-asked for the middle. First paint now returns the full requested window whenever the in-browser history pool is continuous and reaches that far back. Also verified F&O stocks correctly end at 15:15 (closing auction) — 72 five-minute bars/day vs 75 for indices is exchange structure, not missing data. | Open RELIANCE (or any stock) on 15m, 30m or 1h and jump/scroll to Aug–Sep 2026: candles are continuous with no multi-week hole. |
| 166 | 0.5.380 |
Fri 23 Oct 2026 — Instant watchlist chart open.
getBars no longer holds the first paint until tip is
dense (that left the previous symbol on screen). Sparse tip paints
immediately; tip-cold / today fill heal in the background. Also
paints MEM/seed before the tip race and allows 2 concurrent tip
fetches so click + getBars do not serialize.
|
Hard-refresh charts on .tech, click several watchlist
symbols — chart should flip on click (not after tip densifies).
|
| 167 | 0.5.381 |
Fri 23 Oct 2026 — Fix empty seed → tip wait.
LTP seed is only the open bucket; stripping it left
getBars empty so the chart waited on tip/hist (tip was
504 under FPM load). Keep forming seed, paint sparse staged MEM /
SESS/IDB mid-session, tip countback 400, tipMaxFly 1.
|
Hard-refresh .tech, click cold watchlist symbols —
chart flips immediately even when tip is slow.
|
| 168 | 0.5.382 | Fri 23 Oct 2026 — Warm watchlist tip cache. Cold clicks had no MEM/session/IDB shelf (Redis tip keys were sparse). Idle-warm tips for visible WL rows + 400ms hover prefetch into MEM/IDB so the next click paints instantly; IDB deepen on revisit. |
Hard-refresh .tech, wait ~10s on a watchlist, then
click a listed symbol — chart should open from cache.
|
| 169 | 0.5.383 | Fri 23 Oct 2026 — Stop gap flash from sparse first paint. Holey MEM/SESS/IDB/warm tips were painted for “instant” open and cemented mid-session candle gaps. First paint again requires dense tip (or 1-bar LTP seed only); warm cache only stores dense tips; sparse tip stitches before paint (2.5s cap). |
Hard-refresh .tech — clicked symbols should open
continuous (no mid-day holes). Instant when dense tip already warmed.
|
| 170 | 0.5.384 |
Fri 23 Oct 2026 — Unblock tip (warm + feed CPU).
Disable warm.php on click during live session (was
timing out FPM 12s → tip 504); server skips warm while market open;
nginx caps warm concurrency; marketfeed Nice/CPUQuota so FPM can
answer tip again.
|
Hard-refresh .tech — tip should answer in under a
second; WL clicks should feel snappy again.
|
| 171 | 0.5.385 |
Sat 24 Oct 2026 — Watchlist lead ad + Favorites move.
Favorites ★ moved to the chart top toolbar. Right-bottom under the
watchlist is a 300×250 ad slot; click opens a lead form
(name / mobile / email, prefilled from login). Submissions save to
data/leads.jsonl and show in Admin → Leads (date-wise IST).
|
Hard-refresh .tech charts — ★ is in the header; ad
placeholder under the watchlist; submit a lead and check
/admin/leads.php. Drop creative at
/assets/img/ads/intraday-lead-300x250.jpg.
|
| 172 | 0.5.386 | Sat 24 Oct 2026 — Colourful free-masterclass opt-in. Lead popup restyled (amber FREE badge, teal hero, perk chips, white form card, strong CTA). Copy: free masterclass on finding potential intraday stocks with Stock Hunter. |
Hard-refresh .tech, click the watchlist ad — popup
should look like a marketing opt-in, not a plain form.
|
| 173 | 0.5.387 | Sat 24 Oct 2026 — Lead popup contrast + graphics. Light-theme modal CSS was forcing a white card so title/perks were invisible. Hero now paints its own dark background; added chart infographic + scan/trend perk icons; CTA forced green. |
Hard-refresh .tech, open the ad — title, body, perks
and chart graphic must all be clearly readable.
|
| 174 | 0.5.388 | Sat 24 Oct 2026 — Lead thank-you card. After submit, show a thank-you screen (not auto-close): team will call/WhatsApp, email invite, reply within 1 business day; user closes with “Got it — back to charts”. |
Hard-refresh .tech, submit the ad form — thank-you
card stays until the user dismisses it.
|
| 175 | 0.5.391 |
Sat 24 Oct 2026 — Stock Hunter email + masterclass page.
Lead submit sends Brevo thank-you (what Stock Hunter is + 5 benefits
+ call/WhatsApp note + Kannada/Telugu links). New
/masterclass?lang=kn|te video bridge with YouTube embed;
WhatsApp CTA appears mid-video and at end
(STOCK_HUNTER_WHATSAPP_URL). Thank-you card has watch
buttons for both languages.
|
Submit the ad form on .tech — email arrives; thank-you
card opens Kannada/Telugu masterclass pages.
|
| 176 | 0.5.392 | Sat 24 Oct 2026 — Lead mail as transactional (Primary). Stock Hunter confirmation is now a short 1:1 receipt (plain HTML, no campaign chrome, no List-Unsubscribe, no “unsubscribe” footer). Subject: “We received your Stock Hunter request”. |
Submit the form on .tech with a Gmail address — new
mail should land closer to Primary than Promotions.
|
| 177 | 0.5.393 | Sat 24 Oct 2026 — Weekend practice newsletter. New campaign for all registered users: use the weekend to learn — HTF review, Replay backtest, multi layouts, heatmap, option chain. Send from CLI in 15-email chunks (not the admin web button). |
Seed on staging, send a test from Email marketing. After approve,
promote to .com and CLI-send remaining until audience is 0.
PROD: promoted staging → production on Sat 24 Oct 2026. |
| 178 | 0.5.394 |
Sat 24 Oct 2026 — Watchlist ad creative.
Right-side 300×250 slot now shows Ad image 1
(served as a 600×500 JPEG).
|
Hard-refresh charts on .tech and .com —
the designed image sits under the watchlist.
|
| 179 | 0.5.395 | Sat 24 Oct 2026 — Two watchlist ads, crossfade. Image 1 holds about 9 seconds, fades to image 2 for about 7 seconds, then repeats. | Hard-refresh charts — the right-bottom creative should fade between the two ads. |
| 180 | 0.5.396 | Sat 24 Oct 2026 — Ads hold for 15 minutes. Each watchlist creative stays up for 15 minutes, then fades to the other. | Hard-refresh charts. The first image should stay until the 15-minute mark. |
| 181 | 0.5.397 |
Mon 26 Oct 2026 — Live polls stay light.
A chart quote request reads one Redis key. Hover and watchlist warm no longer call ticks.php.
|
Charts and the homepage should answer without sitting in the PHP queue. |
| 182 | 0.5.397 PROD | Mon 26 Oct 2026 — Promoted to bharatcharts.com. Same live-poll fix as 0.5.397 on staging. |
Homepage and charts on .com should answer without waiting on the PHP queue.
|
| 183 | 0.5.398 | Mon 26 Oct 2026 — Minimal chart requests. One candle request for the symbol on screen, live prices on the WebSocket, watchlist refresh every 12 seconds. Hover and the visible-list candle warm-up are off. A quote poll runs only if the socket is down, plus one subscribe when an option is opened. | Opening charts should not fire a quote request per watchlist row. |
| 184 | 0.5.398 PROD | Mon 26 Oct 2026 — Promoted to bharatcharts.com. Same minimal chart requests as 0.5.398 on staging. |
Hard-refresh charts on .com. One candle request for the open symbol, live prices on the socket.
|
| 185 | 0.5.399 | Mon 26 Oct 2026 — Click and search paint the full session. Choosing a stock from the watchlist or search loads the recent candles, including today’s session, then the live socket moves the forming candle. | Open a stock from the watchlist or search. Today’s candles should be there without a refresh. |
| 186 | 0.5.399 PROD | Mon 26 Oct 2026 — Promoted to bharatcharts.com. Same full-session click and search as 0.5.399 on staging. |
Hard-refresh charts on .com. A watchlist or search pick should show today’s candles without another refresh.
|
| 187 | 0.5.400 |
Mon 26 Oct 2026 — Stock Hunter email draft + mini landing.
Marketing campaign for registered users (free masterclass / Stock Hunter framework).
CTA opens /stock-hunter with the same lead form as the watchlist ad.
|
Admin → Email marketing: open the Stock Hunter draft. Public: /stock-hunter.
|
| 188 | 0.5.400 PROD | Mon 26 Oct 2026 — Promoted to bharatcharts.com. Same Stock Hunter draft and mini landing as 0.5.400 on staging. |
Open /admin/email-marketing.php on .com for the draft; public form at /stock-hunter.
|
| 189 | 0.5.401 | Mon 26 Oct 2026 — Campaign delivery and open reports. Every campaign shows delivery rate, open rate, click rate, and bounce rate. A test is marked sent only after Brevo logs it. The free-plan 300-a-day cap is reported when the mailbox never gets the test. | Admin → Email marketing → Stats. Each row has delivery % and open %. Open a campaign for recipient and test-send detail. |
| 190 | 0.5.401 PROD | Mon 26 Oct 2026 — Promoted to bharatcharts.com. Campaign delivery rate, open rate, and the honest test-send result are on production. |
Admin → Email marketing on .com. Stats lists delivery % and open % for every past campaign.
|
| 191 | 0.5.402 |
Mon 26 Oct 2026 — Center masterclass banner.
Charts shows today’s Stock Hunter banner in the middle about 20 seconds after load,
then again 15 minutes after it is closed. Close, Escape, or the dimmed backdrop dismisses it.
A click opens the same free-masterclass form as the watchlist ad (center_banner).
After a successful registration it stays hidden on that browser.
|
Hard-refresh /charts on .tech. The banner pops up in the center.
Close it, then click it on the next showing — the existing registration form opens.
|
| 192 | 0.5.403 | Mon 26 Oct 2026 — Banner rotates every 5 active minutes. The center popup alternates today’s two Stock Hunter banners. After it is closed, it returns once the charts tab has been in front for 5 minutes. Time in a background tab does not count. A click still opens the same registration form. |
Hard-refresh /charts on .tech. Close the banner, keep the tab open,
and the other creative appears about 5 minutes later.
|
| 193 | 0.5.403 PROD | Mon 26 Oct 2026 — Promoted to bharatcharts.com. Same center masterclass popup as 0.5.403 on staging: two banners, close button, return after 5 minutes while the charts tab is in front, click opens the registration form. |
Hard-refresh charts on .com. The banner appears in the center, and the next showing uses the other creative.
|
| 194 | 0.5.404 |
Mon 26 Oct 2026 — Candle watcher on staging.
The October, log, and websocket page bots no longer load on .tech.
A headless watcher clicks random Nifty 50 names, watches the candle, refreshes, and saves screenshots plus a mismatch log.
|
Report lands in data/logbot/candle_eval/REPORT.md on the staging server after the run.
|
| 195 | 0.5.405 | Mon 26 Oct 2026 — Flat candle no longer sticks. A one-price placeholder cannot overwrite a candle that already has a high and low. When the latest closed bar is still a single price, the chart fetches the real bar and redraws it. |
On .tech, open a Nifty 50 name from the watchlist during the session.
The latest candle should show a high and low without a manual refresh.
|
| 196 | 0.5.405 PROD | Mon 26 Oct 2026 — Promoted to bharatcharts.com. The latest candle keeps its high and low after a watchlist click. A one-price placeholder cannot overwrite a real candle, and a flat closed bar is fetched and redrawn. |
Hard-refresh charts on .com and open a Nifty 50 name from the watchlist.
The latest candle should show a high and low without another refresh.
|
| 197 | 0.5.406 |
Fri 30 Oct 2026 — Admin Leads CSV download.
/admin/leads.php has a Download CSV button. Export includes all leads with
IST date/time, name, mobile, email, source, and account email (UTF-8 for Excel).
|
Open Admin → Leads on .tech, click Download CSV, and open the file.
Rows match the on-page list (newest first).
|
| 198 | 0.5.406 PROD | Fri 30 Oct 2026 — Promoted to bharatcharts.com. Admin Leads CSV download is live on production. |
Open Admin → Leads on .com and download the CSV.
|
| 199 | 0.5.407 |
Mon 2 Nov 2026 — Ad 2 creatives.
Second Stock Hunter ads swapped to the new bull creatives:
center popup masterclass-banner-2.jpg and watchlist
intraday-lead-2-300x250.jpg.
|
Hard-refresh /charts. The rotating center banner and watchlist 300×250
slot show the new Ad 2 images.
|
| 200 | 0.5.407 PROD | Mon 2 Nov 2026 — Promoted to bharatcharts.com. New Ad 2 bull creatives on the center masterclass popup and the watchlist 300×250 slot. |
Hard-refresh charts on .com. The second rotating ads show the new images.
|
| 201 | 0.5.408 |
Mon 2 Nov 2026 — Serve Ad 2 immediately.
Charts now loads the new bull creatives on first paint
(ad2-banner.jpg and ad2-square.jpg).
Ad images are no-cache at nginx so Cloudflare does not keep the old files.
|
Hard-refresh /charts. The watchlist ad and center popup show Ad 2 without waiting for rotation.
|
| 202 | 0.5.408 PROD | Mon 2 Nov 2026 — Promoted to bharatcharts.com. Ad 2 is the live creative on both ad slots; old image URLs are bypassed. |
Hard-refresh charts on .com. The watchlist 300×250 shows the square bull ad immediately.
|