* Wed Jul 01 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- Fix NMR T1 / phase-inversion-cycling timing regression (introduced 8.1,
  commit 5185cd09). In XPrimaryDriver::finishWritingRaw the `skipped` latch was
  hoisted out of the iterate_commit closure and captured by reference, so it was
  never reset between CAS retries; a first-attempt XSkippedRecordError then
  suppressed record() on a subsequent successful retry, silently dropping a valid
  primary (DSO/pulser) record. That stalled the XNMRPulseAnalyzer average and
  hence the completed-average onRecord cascade that drives the PIC invertPhase
  toggle and the T1 setNextP1 pulser reprogram. Reset skipped/time_recorded/err
  at the top of the closure to restore the pre-refactor per-retry semantics; the
  secondary-driver path re-declares these inside its for(;;) loop and was
  unaffected.

* Tue Jun 30 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- graph: fix crash when a XWaveNGraph column is read before it is filled.
  getColumn()/precision() dereferenced a null m_cols slot (a column exists
  from setCols()/setColCount() but stays null until setColumn()); e.g.
  probing an NMR spectrum from Python/MCP before a scan completes now
  returns an empty buffer and the fallback precision instead of segfaulting.

* Wed Jun 24 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- Thamway NMR (USB): fix process abort when the device is closed (USB link
  lost / interface stopped) concurrently with a bulk transfer. asyncBulkWrite
  / asyncBulkRead now throw a catchable XInterfaceError on a null device
  handle instead of calling libusb_submit_transfer(), which hit an internal
  assertion and abort()ed the whole process (seen from the XThamwayPROT
  status-poll thread).
- Thamway NMR: back off 1 s in the status-poll loop after an interface error
  so a closed device is not hammered on repeated retries.

* Sat Jun 20 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- STM: harden snapshot isolation by migrating large/variable-size Payload
  heap members (camera/ODMR images, math-tool masks, X2DImagePlot image,
  DSO reference/FIR waveforms, NMR FT buffers, XComboNode strings) to
  shared_ptr<const T>, so in-place mutation is a compile error and older
  snapshots keep an immutable view; make FFT/FIR exec() const (per-call
  scratch, new-array fftw_execute on a shared immutable plan) so the
  transform objects can be shared across snapshots and threads.
- optics: prevent SIGABRT on quit from eGrabber static destruction — give
  the s_gentl / s_discovery singletons a no-throw deleter that swallows
  GenTL close exceptions, so teardown at exit() no longer aborts via
  std::terminate.

* Fri Jun 19 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- AI/MCP safety guidance: document instrument-protection rules across the
  manual, kame_python_api.md, and MCP server instructions so an agent
  observes them by default — NMR RF-power duty limits (PW1/PW2/CombPW <=
  min(Tau*0.3, 15) us, RT >= 15 ms) and Thamway PROT Level guard; cryogenic
  TargetTemp above ~295 K requires confirmation and can overshoot >=10%;
  motor moves may be irreversible and Position is often open-loop, and
  GoHomeMotor runs until a home sensor triggers (runaway if none installed).
- manual: add per-driver scripting node names for all controllable drivers
  (DC source, DMM, DSO, lock-in, magnet PS, SG, network analyzer, temp
  controller, flow controller, motor, turbo pump, laser, NMR pulser, the
  NMR analysis chain, auto LC tuner, camera, and spectrometer), plus
  operational recipes for Motor (Target starts the move; poll Ready) and
  Auto LC Tuner (Target starts tuning; poll Tuning; do not drive STM motors
  mid-tune).
- drivers: fix four node-name bugs affecting name-based access (Python,
  .kam load, Node Browser): magnetps "OutpuField" -> "OutputField";
  pumpcontroller runtime node "RotationSpeed" (collision) -> "Runtime";
  digitalcamera EM-gain "CameraGain" (collision) -> "EMGain";
  opticalspectrometer "TimeTorStrobeSignal" -> "TimeToStrobeSignal".
- optics: guard camera Payload.rawCounts()/darkCounts() against uncaptured
  frames — they dereferenced an empty count buffer and aborted the whole
  process from the Python thread; now throw a clean Python exception.
- kame: optionally emit an aggregate STM commit-count footer
  ("# stm_total_tx_commits:") when saving a .kam file, for measuring live
  commit throughput; gated on the --logging debug-log mode so production
  saves stay bit-for-bit identical with zero per-node cost when off.

* Thu Jun 18 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- manual: flesh out the Function Generator section with node names, units,
  combo choices, and the three 0-sentinel conventions (BurstCycles 0=INFinity,
  PulseWidth 0=use Duty, PulsePeriod 0=follow Freq) so kame_manual is
  actionable for AI control.
- kamepoolalloc (Linux LD_PRELOAD robustness): intercept the aligned-allocation
  family (memalign/posix_memalign/aligned_alloc) and reallocarray, and
  co-interpose malloc_usable_size, routing them through the pool and resolving
  real-libc entries via dlsym(RTLD_NEXT); fixes musl/Alpine hang (real-libc
  bypass had only a glibc path, so overrides tail-recursed) and musl SIGSEGVs
  (rptest/rocksdb aligned allocs, teardown owner force-walk poke), redis-server
  SEGV from malloc_usable_size on pool pointers, and Fedora GCC/libstdc++ 14+
  build errors from missing <cstdlib>/<cstdint> includes.

* Mon Jun 15 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- MCP/Python: fix the MCP server launcher to pick the Jupyter shebang
  interpreter (the one that actually has mcp/jupyter_client), probe candidates
  with the server's real imports, and wait for the port to LISTEN before
  declaring success (reaping the child on failure so it cannot linger as a
  zombie). Reuse the previous port+token from ~/.kame_mcp_url so .mcp.json is
  stable across restarts, killing our own verified stale server to reclaim the
  port; KAME_MCP_PORT / KAME_MCP_TOKEN override. Windows parity via
  tasklist/taskkill.
- Python: sleep() no longer crashes in execute_code_async worker threads —
  resolve the scripting-thread TLS via getattr and fall back to a plain
  interruptible wait off scripting threads. MCP execute_code returns compact
  PNG figures (dpi=100, tight bbox).
- IPython tab: clickable "Quick launch" links (Jupyter notebook / Claude Code
  terminal / Claude app); kame: links route through XPython::handleLink,
  others open via QDesktopServices (also revives the dead log/notebook links).
  Notebook launch prompts for the workspace folder rather than the app-binary
  cwd. Kernel startup Status changed "No connection" -> "idle".
- build: link CMAKE_DL_LIBS in the in-tree kamepoolalloc/kamestm test targets
  (4 places) so the Linux malloc_usable_size co-interpose's dlsym resolves on
  glibc < 2.34; fixes undefined-reference-to-dlsym link failure on Ohtaka.

* Fri Jun 12 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- kamestm (Jun 9-30): memoize the Snapshot/Transaction payload subscript with a
  per-lookup memo, tuned across several revisions (widen to fully-associative
  slots, MRU tiering, hot/cold layout split) and finally simplified to a single
  self-validating Payload* kept plain non-atomic since the lookup path is
  single-threaded; skip the final-level weak->strong promotion on the hint walk
  and shrink Packet by making m_subpackets an intrusive local_shared_ptr
  (-8 B/Packet). Behavior-neutral throughput work.
- kamestm negotiation (Jun 9-30): move the negotiate sleep/wake off
  std::condition_variable to XWaitCell (__ulock on macOS), with env knobs
  KAME_NEG_SLEEP_US_PER_MS (sleep-chunk granularity) and
  KAME_STM_CAS_BOUNDED_RETRY (bounded WEAK retry on spurious failure); a
  sole-runner no longer voluntarily yields in the low-contention shortcut.
- atomic_smart_ptr (Jun 9-30): add opt-in biased reference counting, per-type
  opt-in and default OFF (no change to existing types), plus a
  force_incomplete_ref opt-out for circular/incomplete template-id members.
- kamepoolalloc (Jun 9-30): hot/cold split of operator new/delete for a
  frameless freelist fast path (41% fewer hot-path instructions), a
  size->bucket lookup table extended over the full bucketed range, and
  word-cache made default ON; all gated/tuning changes are default-behavior
  neutral.
- verification (Jun 9-30): extensive ongoing TLA+/GenMC work -- pre-submission
  fidelity dossier (spec<->C++ action correspondence ranked by confidence),
  parameterized-cutoff liveness, hard-link non-atomic re-verification, and
  memory-ordering (cds) tests.

* Thu Jun 11 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- arbfunc (LXI 3390): make burst cycle count settable from the UI via a
  new BurstCycles field (BURS:NCYC; 0 = INFinity), read back on connect.
- arbfunc (LXI 3390): enable the PulseWidth and PulsePeriod fields with a
  0-sentinel convention resolving the width/duty exclusivity — width > 0
  drives FUNC:PULSE:WIDTH (skips DCYC), period > 0 overrides 1/Freq; 0
  keeps the legacy duty- and Freq-driven behavior.
- scripting: show the executing notebook cell in the XScriptingThread
  Status outside sleep() via IPython pre_run_cell/post_run_cell hooks
  ("run Cell In[N]: ..." / "idle (Cell In[N] done|ERROR)"), clear stale
  Actions on cell start, fix the In[N] off-by-one, and make isRunning() a
  prefix match so suffixed labels still count as running.

* Wed Jun 10 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- MCP server: add Jupyter notebook cell editing (notebook_status /
  notebook_read / notebook_edit) via the Jupyter contents REST API; a second
  ZMQ connection watches iopub broadcasts to report the currently executing
  cell even while the kernel is busy, and edits refuse to touch the running
  cell.
- MCP server: make execute_code_async jobs interruptible — add stop_job
  tool and an mcp_checkpoint(progress) helper that publishes progress and
  cooperatively stops the job (get_result now reports progress and a
  "stopped" status).
- MCP server: add the user's manual as Markdown (doc/manual/kame-8-en.md,
  converted from the docx) served section-wise by a new kame_manual tool.
- docs/MCP: steer AI image analysis to the raw-count Python functor / math
  tools; X2DImagePlot to_png() is display-only, legitimate for viewing and
  binary segmentation / mask generation but not for quantitative pixel
  reads. Fix pytestdriver.py NumPySum functor to the 7-arg masked signature.

* Tue Jun 09 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- graph: fix drag-zoom on an axis flashing and instantly reverting on macOS
  trackpads set to two-finger secondary click; Qt 6.8 synthesizes an extra
  right press/release on finger-lift whose near-zero movement hit the
  single-click autoscale branch. Debounce the synthetic SelFinish (within
  200ms/5px of a committed drag-zoom) and accept() mouse press/move/release
  events.

* Mon Jun  8 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- kamepoolalloc: the atomic_shared_ptr orphan-chunk reclaim chain is now the
  default chunk-recycle mechanism; the §36 raw Treiber stack is retired.

  A chunk left non-empty by an exited owner thread is pushed onto a per-template
  lock-free atomic_shared_ptr orphan chain (orphan_chain_push); an allocating
  thread later adopts it (orphan_chain_pop + re-own, reusing its free slots) and
  a sweep pass (orphan_chain_scrub) reclaims it once fully drained. This replaces
  the §36 ABA-tagged Treiber stack, which leaked drained orphans (never freed
  while stacked). The chain is built on kamepoolalloc/atomic_smart_ptr.h — the
  same lock-free reference-counted smart pointer as the STM, relocated there
  (§36b) as the shared home for both subsystems.

  Adopt safety (TLA+): a re-owned chunk carries an owner-ref — a self-referential
  local_shared_ptr the chunk holds to itself (m_owner_self_ref) — so the owner's
  free becomes refcount-mediated (reset the self-ref → disposer) instead of a
  direct deallocate_chunk that ignored outstanding refs. OrphanChain_adopt.tla
  pinned down the gap this closes (Inv_NoBadOwnerFree: the owner could free a
  chunk a concurrent sweeper still load_shared-pinned — a UAF that 21.3M-op
  ASan/TSan stress could NOT reproduce; only the model catches it). Kept as a
  standing regression guard: tests/tlaplus/run_orphan_chain.sh (10 OrphanChain_*
  model/cfg checks; the BIT_OWNED disposer gate is proven load-bearing).

  Also: §74 — allocate_chunk<ALLOC>() de-duplicated onto the shared claim_chunk()
  (the single region-walk + mmap + bitmap-claim site, shared with the dedicated
  large path). Width-aware RADIX_VA_LIMIT (32-bit clean). Verified on Linux
  (g++ 13.3): TSAN/ASan race- and UAF-free, alloc_thread_churn reserved plateau,
  full ctest; macOS build + ctest + alloc_stress (residual 0) + 64 B hot-path
  bench unchanged (the orphan machinery is entirely cold-path). kame.pro /
  tests.pri now reference the relocated atomic_*.h from kamepoolalloc/
  (atomic_smart_ptr.h added — the inline-compiled allocator includes it
  unconditionally now that the chain is the default).

* Sat May  3 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- TLA+ formal models: three fixes and ohtaka verification results.

  (1) BundleUnbundle_2level_LLfree_dynamic.tla — BundlePhase1 deadlock
  fix for release_superfine config. When a child is released mid-collection
  (ActiveChildren shrinks), Thread A's first disjunct
  (∃c ∈ ActiveChildren : subwrappers[c] = Null) goes FALSE with all
  remaining children already collected, leaving no enabled action.
  Fix: second disjunct (∀c ∈ ActiveChildren : subwrappers[c] ≠ Null)
  drops stale released-child entries and advances to bundle_phase2; Phase 2
  CAS fails (parent updated by release) → BundleRetryPC → ReadParent
  picks up the new parent wrapper. C++-faithful: same retry path as C++
  (prestamp CAS → collection loop → Phase 2 CAS fail → snap_read retry).
  Verified: release_superfine_live 2-thread exhaustive run on ohtaka —
  413,884,516 distinct states / depth 320 / 7h 13min / counter 15–55 /
  5,972 terminal emits / queue 0 (exhaustion) — Safety + liveness PASS.

  (2) BundleUnbundle_3level_LLfree.tla — InnerPhase2 restart fix.
  QuiescentCheck violated at depth 61 on ohtaka (spec 8fb19385, 3L
  superfine confA, 2 leaf + 1 root). Root cause: InnerPhase2 (Phase 2
  CAS for inner child = Parent) used UNCHANGED local on failure, leaving
  subwrappers[Parent] non-Null. BundlePhase1 on restart saw
  subwrappers[Parent] ≠ Null and skipped re-collecting Parent, proceeding
  to BundlePhase2 with stale subpackets (pre-CommitChild payload value) →
  lost increment. Fix: same pattern as InnerPhase3/InnerPhase4 — clear
  outer bundle state (wrapper, subwrappers, subpackets) on failure, eagerly
  tag bundleNode (Grand) in addition to inner child (Parent). C++-faithful:
  bundle_subpacket returning DISTURBED from inner bundle Phase 2 causes
  the outer Phase 1 child_retry to continue without updating
  subwrappers_org[i], re-reading Parent fresh — equivalent to clearing and
  re-collecting. All three inner-phase failure paths (InnerPhase2/3/4) now
  consistently clear outer bundle state on DISTURBED. Sanity checks:
  1-thread PASS (47 states); 2-thread coarse PASS (1,497,098 states /
  depth 98 / 1:35 + liveness). 3L superfine confA/B re-submitted to ohtaka.

  (3) Ohtaka results recorded:
  3L 3thr superfine confC live: 640,894,951 states / depth 88 / 15:25:00
    / counter 4–15 / 1,140 terminal emits — Safety + liveness PASS.
    First formal proof of 3-level 3-thread superfine liveness.
  2L-dyn 3thr-A live (Ins={1},Root={2},Leaf={3}): 53,397 states / depth 68
    / 7 s / counter 10–15 / 42 terminals — PASS + liveness.
  2L-dyn 3thr-B live (Ins={1},Root={2,3},Leaf={}): 149,137 states / depth
    82 / 14 s / counter 8–15 / 22 terminals — PASS + liveness.
  2L-dyn release superfine 2t live: 413,884,516 states / depth 320 / 7:13
    / counter 15–55 / 5,972 terminals — PASS + liveness (see item 1).
  Dynamic spec 2-thread verification now complete: coarse/superfine ×
  no-release/release, all Safety + liveness PASS.

  See tests/tlaplus/doc/verification_log.md for full results table.

* Thu Apr 30 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- TLA+ formal models (tests/tlaplus/BundleUnbundle_3level_LLfree.tla,
  BundleUnbundle_2level_LLfree.tla): C++-fidelity fixes that close the
  gap between TLC verification and the C++ STM implementation. After
  these, every cfg passes both safety (TerminalPayloadCheck and friends)
  and liveness (EventuallyAllDone), and the generated C11 stress test
  no longer hangs.
  (1) BundlePhase1 coarse path inner-bundle: drop the
  linkage[n].hasPriority filter on grandchild CAS. C++ Phase 3 of an
  inner recursive bundle (transaction_impl.h:2487-2511) ALWAYS CASes
  each child to a fresh bundled_ref wrapper regardless of prior state;
  the filter caused TLA+ to leave already-bundled grandchildren
  untouched, allowing a peer's stale snapshotForUnbundle pointer to
  CAS-succeed and produce a lost-increment race that does not occur
  in C++.
  (2) GenSerial: replaced ad-hoc globalSerial-based uniqueness with
  C++-faithful TID-encoded base-B Lamport (mirrors transaction.h:
  547-576 SerialGenerator::gen). serial = counter * SerialBase + TID;
  GenSerial uses TLS counter (serial[t]) plus the wrapper's
  m_bundle_serial passed in, advances counter past last_serial, then
  increments and re-encodes with TID. Two threads with the same
  counter produce different serial values via different TID lower
  digits, mirroring C++ pointer distinctness. The globalSerial
  variable is removed; SerialBound and DebugSerialBound are neutered
  to TRUE for cfg back-compat.
  (3) BundlePhase3 disturbed restart (3-level coarse + fine):
  regenerate bundleSer via GenSerial when looping back to
  bundle_phase1. C++ bundle() retry loop allocates new
  PacketWrappers with fresh bundle_serial per iteration; without
  regen the retried Phase 3 emits structurally identical wrappers
  and a peer's stale pointer compares equal.
  (4) UnbundleWalk casTargets: always root-first regardless of
  UnbundleWalkAtomic. C++ walkUpChainImpl is recursive — the deepest
  call (root) emplace_back's into cas_infos first. Leaf-first in
  fine mode let a peer CommitGrand interject between t1's Parent CAS
  and t1's Grand CAS, never seeing Grand changed → stale-snapshot
  CAS succeeds → lost increment.
  (5) InnerPhase3 / outer BundlePhase3 fine success path: update
  innerSubWs[gc] / subwrappers[c] to the new wrapper. TLA+-specific:
  C++ pointer identity automatically invalidates the failure-branch
  guard after a successful CAS, but TLA+ value equality lets the
  failure branch falsely re-fire on the just-CAS'd entry, creating a
  single-thread state-space explosion under Lamport.
- TLA+ verification status (all PASS, laptop -Xmx14g):
  3-level 1-thread fine  : 46 distinct, depth 29, < 1 s, counter 7.
  3-level coarse 2t      : 1.5 M distinct, depth 98, 1:53, counter 6–22.
  3-level superfine 2t   : 12.1 M distinct, depth 140, 18:39, counter 22–26.
  2-level micro (fine)   : 804 K distinct, depth 89, 54 s, counter 6–18.
  2-level superfine      : 2.5 M distinct, depth 129, 3:06, counter 6–23.
  2-level phase0only     : 927 K distinct, depth 87, 52 s, counter 6–18.
  2-level phase3only     : 2.4 M distinct, depth 129, 2:31, counter 6–24.
  3-level off (Priv=FALSE): diverges (killed at 118M states, §4–§5).
  Lamport counter = serial ÷ (1 + |Threads|). See doc/verification_log.md.

* Mon Apr 27 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- STM core: K=0 NUMA scaling (8.5 M → 314 M c/s on ohtaka 128c, ×37).
  Two structural cacheline-contention bottlenecks removed:
  (a) s_running global atomic counter — replaced with per-thread
  PaddedCounter held in TLS shared_ptr; global registry is an
  atomic_shared_ptr<vector<weak_ptr>> COW-published on first use,
  pruning expired entries on each registration. numThreadsRunning()
  sums across registered threads (called only from negotiate paths).
  (b) KAME pool allocator — per-thread chunk pinning. Slow-path
  compare_exchange-claims an unclaimed chunk via m_thread_pinned_count
  (0→1) and caches it in TLS s_my_chunk; subsequent allocate() calls
  bypass the bit0-lock CAS on s_chunks_of_type[]. Pin counters are
  registered with a namespace-scope thread_local cleanup object
  (tls_alloc_pin_cleanup) so chunks are returned to the global pool
  on thread exit. allocate_pooled's non-atomic oldv==0 fast-write
  removed (always-CAS) so the chunk bitmap stays thread-safe even
  when multiple threads share a chunk transiently. release_allocator
  gated on m_thread_pinned_count == 0.
- STM core: KAME_CACHE_LINE macro (ABI-driven: x86_64/Cortex 64,
  Apple Silicon/POWER 128, A64FX 256). Applied to RunnerCounterEntry,
  s_privileged_tidstamp, NegotiateSleepSlot, s_max_c_obs — replacing
  the previous fixed alignas(64) which under-padded on Apple Silicon
  (128-byte cacheline) and POWER.
- STM core: fair_mode_blocks_me() compares only the TID half of the
  packed tid+stamp slot, not the full stamp. The previous full-stamp
  inequality self-deadlocked when a nested Tx (e.g. an outer Tx's
  retry path triggering ~Node()→releaseAll() with its own
  iterate_commit_if) ran on the privilege-holding thread: the inner
  Tx carried a different started_time and was wrongly fair-mode
  blocked by its own slot. Confirmed via lldb backtrace of a
  transaction_dynamic_node_test hang (frame #15-16: Snapshot ctor
  → fast_vector destructor → ~Node → releaseAll → nested Tx waiting
  in negotiate_sleep). Diagnosis was previously masked at PRIV_AGE
  ≥20 ms because the race window was rarely entered; surfaced when
  the threshold was lowered.
- STM core: KAME_STM_PRIV_AGE_NORMAL_US single-knob configuration
  (verdict gate and preempt floor unified). With the
  fair_mode_blocks_me TID-fix in place the threshold can be set in
  the sub-millisecond range without reintroducing the 1ms
  test_dyn churn-deadlock. OS-aware default: 750 µs on POSIX
  (Mac/Linux/ohtaka — sweep winner on Mac M3 Air for K=10 N=128:
  1.25 M → 2.48 M c/s), 10 ms on Windows (default scheduler quantum
  ≈15.6 ms forces a higher floor). Override at build time with
  -DKAME_STM_PRIV_AGE_NORMAL_US=N. min_privilege_age_us(LOWEST) =
  30 ms, (UI_DEFERRABLE) = 50 ms unchanged.
- KAME allocator: ALLOC_PAGE_SIZE arch-aware default (Apple arm64
  16 KiB, POWER 64 KiB, else 4 KiB). The previous fixed 4 KiB caused
  silent mprotect() failure on macOS arm64 once chunk-size growth
  produced a non-16 KiB-aligned size (500 KiB at the 4th GROW step),
  manifesting as SIGBUS on the next placement-new write. mprotect
  failures now abort with diagnostic (errno + page-alignment of addr
  and size) instead of being lost to assert(no-op under NDEBUG).
- STM core: low-contention sleep shortcut. When the process-wide
  numThreadsRunning() ≤ 2 the privileged-TID escape cannot help —
  its age-difference threshold needs ≥3-thread spread to develop —
  and the standard 1 ms CV sleep chunk becomes the K=1 N=2
  throughput ceiling, limiting per-thread rate to ~1 kHz for
  sub-µs commits. Replaced with std::this_thread::yield() when
  numThreadsRunning() ≤ 2 && ms ≤ 1 so Greedy CM (older Tx wins)
  drives a tight CAS-retry alternation. Gated on the global
  runner count to match the privilege slot's process-wide scope.
- STM core: C_obs lower bound (KAME_STM_C_OBS_MIN, default 2).
  At C_obs=1 the √C lottery threshold collapses to 1.0
  (always-fire), causing notify_n_contenders() to be called on
  every iteration even though only one or two threads are
  actually involved. The wake-broadcast overhead dominates K=1
  N=2-style anti-symmetric workloads. Floor C_obs at 2 in the
  lottery formula so the threshold becomes 0.5 (= the natural
  rate for 2-thread alternation) without inflating contender
  counts elsewhere. On Mac M3 Air, K=1 N=2 (3-level) jumps from
  1.3 M → 5.7 M c/s (×4.5); on iMac Pro from 597 K → 1614 K
  c/s (×2.7). K=1 N=8/32/128 also improve +17–50%; K=10 / K=0
  cells unaffected; test_dyn × 20 hang-free.
- KAME allocator: kame.app startup-crash fix on macOS Apple Silicon.
  ICU/Foundation allocate via libsystem malloc during early process
  startup (before main() reaches activateAllocator()), then free
  those pointers after the pool has been activated. Two defensive
  changes prevent the pool deallocate path from dereferencing
  uninitialized state on those non-pool pointers:
  (a) deallocate_pooled_or_free() now mirrors new_redirected()'s
  g_sys_image_loaded gate — pre-activation deletes go straight to
  std::free, since the pool's mmap'd regions don't exist yet.
  (b) deallocate_<>() validates s_chunks[cidx] before the virtual
  call: ((uintptr_t)palloc <= 1) returns false (== "not our pointer"),
  catching both the nullptr (chunk released) and the (PoolAllocatorBase*)1u
  in-creation sentinel that allocate_chunk's CAS sets between slot
  claim and final pointer assignment. Crash trace was
  icu::Locale::init → operator delete[] → deallocate_<0,262144>
  bad-vtable-access, surfaced after per-thread chunk pinning made
  chunk creation/release more frequent.
- tests/transaction_payload_integrity_3level_mixed_test: KAME_FIRSTTOUCH
  env-var opt-in. With KAME_FIRSTTOUCH=1, leaf nodes are allocated
  inside the worker thread (first-touch on its NUMA node) instead of
  on the main thread; default 0 preserves the original main-thread
  pattern used by paper figures. Allocator-pinning largely subsumes
  this on ohtaka, but the knob is retained for ablation studies.

* Sun Apr 26 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- STM core: livelock-free fair-mode privilege escape. Globally
  registered "privileged TID+stamp" (s_privileged_tidstamp): when the
  livelock probe fires verdict=LIVELOCK on the Greedy CM winner (oldest
  Tx, all linkage tags claimed) it CAS-claims the slot. Other threads
  see fair_mode_blocks_me() and yield via negotiate(). Age-preempt: a
  challenger Tx older than the holder by ≥ min_privilege_age_us(prio)
  CAS-overrides the slot. release_privileged_tidstamp() is CAS-based
  (only clears if our stamp still resides) so a preempted holder's
  release does not erase the preemptor's claim.
- STM core: ScopedNegotiateLinkage RAII helper centralises the
  negotiate-before-CAS / tag-on-disturb / commit pattern. Applied at
  every CAS-retry / spin loop site: Node::snapshot, Node::bundle outer
  + Phase 1 child_retry, Node::commit, Node::insert(online_after_insertion),
  Node::eraseSerials, Node::unbundle (cas_infos + final sublinkage).
  TagMode::OnEntry (eager tag at iter top) / OnExit (lazy on dtor
  unless commit() called); retry==-1 sentinel for unconditional tag
  mode. commit_after_cas(started_time) shorthand combines
  tags_successful_cas + commit at sites where the scope's linkage is
  the CAS target.
- STM core: retry==0 yield. negotiate_after_retry_pause self-gates at
  retry==0 — fast-return unless fair_mode_blocks_me reports another
  Tx holds the privileged slot, in which case we run retry_pause +
  negotiate to yield. Required for the livelock-free guarantee
  (otherwise retry==0 hammers race the privileged Tx's commit CAS).
- STM core: tag_as_contender uses Option B (relaxed store + acquire
  verify). Eliminates the younger-overrides-older race that produced
  multi-Tx 0-commits stalls in the 3-level mixed test under heavy
  contention; if our store is overwritten between the store and
  verify, we skip the m_tagged_linkages push (the surviving stamp's
  owner is responsible for its own drop).
- STM core: KAME_STM_ASSERT_PRIVILEGE invariant check (default 0;
  enable with -DKAME_STM_ASSERT_PRIVILEGE=1). The
  ScopedNegotiateLinkage dtor asserts when the scope held privilege
  on entry AND still holds it on exit without commit() — i.e. the
  privileged Tx failed a CAS / loop iteration without making forward
  progress, breaking the livelock-free guarantee. Catches any future
  regression in the negotiate / tag_as_contender coverage.
- STM core: cache-line align (alignas(64)) on the global atomics
  s_privileged_tidstamp / s_running / s_max_c_obs to avoid
  false-sharing under N=128 contention.
- Removed KAME_STM_TAG_ON_DISTURB ablation knob: the disturb-path
  tag_as_contender is now unconditional (required for the age-preempt
  visibility invariant on every contended linkage).
- kame.pri: bump CONFIG from c++11 → c++17. The STM core extensively
  uses C++17 inline static class members and inline thread_local
  variables (already accepted as extensions by clang under -std=c++11
  but warning-free under c++17).
- kame app + modules: use std::allocator instead of the legacy
  lock-free pool. `DEFINES += USE_STD_ALLOCATOR` is added to
  `kame.pri` (modules inherit via `include(../kame.pri)`). The pool
  predates the current STM design; std is preferred for portability
  and correctness with the new fair-mode / RAII-negotiate machinery.
  Tests retain the pool allocator (via `tests/CMakeLists.txt`'s
  `USE_KAME_ALLOCATOR=ON` default on macOS/Linux) so the pool path
  stays exercised. Override per-build with
  `cmake .. -DUSE_KAME_ALLOCATOR=OFF`.

* Thu Apr 17 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- TLA+ BundleUnbundle (Layer 2): systematic comparison of fine-grained model
  against C++ transaction_impl.h. Identified 9 differences; 6 implemented as
  "superfine" mode (C++-faithful failure handling), 1 in fine (#3 no-rollback),
  2 documented as fidelity notes (#7 serial reuse, #8 serial source).
  superfine covers: pre-bundle serial CAS (#1), inner bundle phases (#2),
  Phase3 serial/parent DISTURBED check (#4), casTargets root-first order (#5),
  Phase1 retry-same-child (#6). These are C++ performance optimizations that
  don't affect protocol correctness (verified by fine-mode model checking).
- TLA+ BundleUnbundle: Phase3 fine failure no longer rolls back children (#3).
  Matches C++ behavior: re-collection re-adopts bundled children via
  CollectSubpacket's bundledBy==node path. State space unchanged (1.2M).
- TLA+ BundleUnbundle: MaxSerial cannot be replaced by natural-number serials.
  Commit retry loops (iterBudget not consumed) create unbounded serial growth
  without modular wrap-around; state space becomes an infinite DAG.

* Wed Apr 16 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- TLA+ BundleUnbundle (Layer 2): fix BundlePhase3 fine-grained allDone check.
  Previous check (~hasPriority) incorrectly counted children bundled by OTHER
  threads as done. Now verifies children match BundledRefWrapper(node, ser)
  for THIS bundle's serial. Found via 2-level fine model checking.
- TLA+ BundleUnbundle: increase MaxSerial from 128 to 1024 (3-level) and
  512 (2-level). Fine-grained mode generates ~64 serials per commit cycle
  due to CAS retries; MaxSerial/2 must exceed worst-case consumption.
- TLA+ atomic_shared_ptr (Layer 0): add iterBudget for deterministic
  termination. Per-thread operation counter guards new operations but not
  Reset (must release references). TerminalCheck invariant verifies final
  state: installed object has refcount=1, all others freed.

* Mon Apr 14 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (8.1)
- Fix XDriver documentation: timeAwared() is acquisition start time, not
  operator-visible time. Corrected in README.md, CLAUDE.md, kame_python_api.md.
- License changed to GPL2+ from LGPL2+, in most of codes.

* Wed Apr 09 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- TLA+ formal verification: apply Gemini-identified model fixes.
  atomic_shared_ptr: fix overflow guard deadlock, multiset thr_holds for
  correct repeated-scan refcounting, raise MaxGlobalRC in step3 cfg.
  stm_commit: fix CommitSerializes invariant (MAX→SUM).
  BundleUnbundle: drop modular serial arithmetic, use monotonic increment
  with StateConstraint (consistent with 2-level model).
- TLA+ atomic_shared_ptr: simplify reserve_scan_ two-step read into
  single atomic step (matches C++ and GenMC models).

* Tue Apr 08 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (8.1)
- Arbitrary mask contour lines: non-highlighted state draws left/right
  boundary lines with median-based xmin/xmax per band (~128 bands),
  closed at top/bottom. Lines break at empty bands.
  Highlighted state: filled texture overlay (unchanged).
- Picking for arbitrary mask uses quad approximation (no texture),
  fixing broken text textures caused by GL texture misuse in pick pass.
- Label placed at mask top-center for arbitrary masks.
- Rect BB suppressed for arbitrary mask (contour replaces it).
- Math tool API: rename Begin/End to First/Last (inclusive endpoint naming).
  1D tools: first()/last(), 2D tools: firstX()/firstY()/lastX()/lastY().
  .kam backward compatibility via _KamNode aliases in xpythonsupport.py.
- Add XGraph2DMathTool::setArbitraryMask() — atomically sets MaskType to
  Arbitrary and writes the mask bitmap in one iterate_commit.
  Exposed to Python via pybind11 on the registered concrete types.
- Register C++ concrete 2D math tool types (XGraph2DMathToolSum,
  XGraph2DMathToolAverage) so Python dynamic_cast() resolves properly.
- Add imageWidth()/imageHeight() to X2DImagePlot Python bindings.
- Fix OSO ghost artifacts on tool release: OnScreenObject::invalidate()
  flag checked by isValid(); clearOnScreenObjects() invalidates before clear.
- Fix Snapshot-based update() in XGraph1DMathToolX/XGraph2DMathToolX:
  read functor and mask from Snapshot(*this) instead of tr[*this] to
  prevent driver transaction CoW from overwriting user-set mask/MaskType.
- Arbitrary mask highlight: render as GL alpha texture on single quad
  (eliminates overlapping-quad butterfly artifacts). Y-axis inversion
  handled via screen-space comparison. Depth test disabled during draw.
- Fix +1 dimension mismatch between OSO display and computation ROI
  in updateAdditionalOnScreenObjects.
- Fix libpng sRGB warning: strip color space from grayscale QImage in to_png().
- MCP server: streamline to 6 tools (remove read_node, set_node, read_scalar,
  list_children, list_scalars); replace list_children with recursive tree tool;
  compact kame_status output.
- Fix xpythonsupport.py: MCP venv path detection (cross-platform, search up
  from KAME_ResourceDir); fix _sys -> sys typo.

* Mon Apr 07 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- 2D math tools: add configurable mask shape (Rectangle / Ellipse / Arbitrary).
  Each XGraph2DMathTool now has an XComboNode maskType() selecting the
  mask applied within the rectangular selection. Ellipse inscribes an
  ellipse; only pixels inside it contribute to Sum/Average/etc.
  Arbitrary lets Python set the mask via Payload.setMask()/mask().
  Mask is stored in Payload::m_mask; pixels() counts from the stored mask
  for all shapes. regenerateMask(tr) called on coord/type changes.
  Connector popup adds a "Mask Shape" submenu per tool.
  OnScreenRectObject::EllipseTool draws the inscribed ellipse (48 segs).
  Python 2D functors now receive a 7th arg (mask: uint8 numpy array).
- 2D math tool highlight: OnPlotMaskObject renders mask-based highlight
  overlay using horizontal row-spans, correctly visualising all shapes.
- Fix: OnPlotObject/OnAxisObject z-offset was never applied (for-loop
  iterated by value instead of reference).
- Fix: .kam loading hang when creating Graph2DMathTool — MaskType combo
  items were populated via the outer measurement transaction, which could
  not see the non-transactionally created child node.

* Mon Apr 06 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (8.0)
- Smart window placement: new driver/graph windows cascade automatically on
  first show via FrmKameMain::eventFilter. QForm template auto-installs the
  filter for all top-level windows. showNormal()+raise() still used for
  restoring minimized windows on driver list click.
- NI USB-GPIB: fix missing mutex_unlock on early ENOMEM return in ni_usb_write;
  return -EIO instead of 0 on short bulk write.
- NI USB-GPIB: prevent duplicate interrupt URB polling thread in win_compat.h.
- Version bump to 8.0.
- RawStreamRecordReader: auto-rewind at EOF on forward playback so FastForward
  works without pressing First; add NULL check for m_pGFD in execute thread.
- MCP server for AI-assisted experiment automation (kame_mcp_server.py).
  Connects to the embedded IPython kernel via jupyter_client, exposing
  10 tools: kame_api, execute_code, execute_code_async, get_result,
  read_node (bulk comma-separated paths), set_node, read_scalar,
  list_children, list_scalars, kame_status.
  execute_code returns matplotlib plots as MCP ImageContent (displayed
  inline in Claude Code CLI/desktop/web); %matplotlib inline is set
  automatically on first kernel connection.
  execute_code_async runs long experiments (sweeps, scans) in a background
  thread; results stored in kernel globals, polled via get_result.
  Kernel connection is reused across tool calls (was reconnecting each time).
  Tool-generated code uses IPython expression results (not print) to avoid
  KAME's HTML stdout redirect; HTML object reprs are filtered out.
  Includes kame_python_api.md reference with correct Snapshot/node patterns,
  Root children table, and XScalarEntry["Value"] access.
  When launching a Jupyter notebook, KAME auto-generates .mcp.json in the
  notebook workspace with auto-detected Python path for zero-configuration
  Claude Code integration. No side effects when MCP is not used.
  Graceful error message when mcp/jupyter_client packages are missing.

* Wed Apr 02 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (8.0-beta3)
- XCalibratedEntry: add FLAG_AVOID_DUP to onSelectionChanged listener so that
  duplicate deferred events from Source and Curve onValueChanged are coalesced.
  Fixes proxy being released and recreated when both fire in quick succession
  (e.g. during .kam loading), which cleared the axis selector's resolved value.
- XPointerItemNode: use fresh list snapshot for pending-label resolution too
  (not just re-broadcast), so entries from nested insertions are visible.
- Comprehensive bug audit: 20 fixes across 12 files.
- xnodeconnector: fix bitwise OR (|) that should be logical OR (||) in popup status check.
- xnodeconnector: fix uninitialized m_pWindow when constructor receives nullptr.
- xnodeconnector: prevent QColorDialog signal from being connected multiple times.
- xnodeconnector: NULL -> nullptr in disconnect() call.
- tds: fix array underflow yin[ch_cnt-1] when ch_cnt==0; reorder NR_P parsing before YMU/YOF.
- tds: increase snprintf format buffer from 9 to 16 bytes.
- xpythonsupport: scope GIL release to blocking wait only in kame_mainthread, fixing Python
  object operations (status.is(), PyErr_SetString) performed without GIL.
- xpythonsupport: initialize *ret = py::none() before try block in mainthread_callback to
  prevent returning uninitialized py::object on exception.
- xpythonsupport.py: fix thread ID comparison — use native_id instead of str(Thread).
- xpythonsupport.py: skip comment lines during .kam Ruby-to-Python translation.
- pythondriver: re-enable GIL acquire in Payload::local() (was commented out).
- pythondriver: null-check shared_ptrs before pushing to garbage queue in Payload destructor.
- secondarydriverinterface: bounds-check std::find() result before dereference in onItemChanged.
- allocator_prv: add virtual destructor to PoolAllocatorBase.
- analyzer: null-check m_entries.lock() in XValGraph (onAxisChanged, onVisualization, onStoreChanged)
  and XCalibratedEntry (onSelectionChanged).
- analyzer: capture m_entry before retry loop in onSourceDriverRecord to avoid race condition.
- cyfxusb_libusb: safe bounds check for USB string descriptor buffer.
- lecroy: cast count to size_t in buffer size calculation to prevent integer overflow.
- xpythonmodule: catch pybind11::cast_error in payload down-caster loop.
- tests/CMakeLists: fix test name typo (negotioation -> negotiation).

* Tue Apr 01 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- XPointerItemNode: lsnOnListChanged now takes a fresh list snapshot before forwarding the
  onListChanged event, so that entries created by nested signal handlers (e.g. CalibratedEntry
  proxy inserted during pending-label resolution) are visible to FLAG_AVOID_DUP listeners
  such as axis combo boxes.
- Event: added isStrictlyNewerThan() and operator== on Snapshot for more precise FLAG_AVOID_DUP
  deduplication (prefer new event when serials are equal).

* Tue Mar 31 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.9.1)
- (8.0-beta2)
- STM: SerialGenerator serial layout changed to 48-bit counter (upper) + 16-bit thread ID (lower);
  gen(last_serial) advances the thread-local counter past the last committed serial of the node
  being read, so snapshot serials carry temporal information about the data they observe.
  Snapshot::operator< and Snapshot::serial() added for temporal ordering.
  Event::serial() exposes the snapshot serial for signal ordering (SFINAE fallback to 0 for
  non-Snapshot talkers).
- .kam loading: fixed crash when createByTypename() returns None for unrecognised driver types
  (version skew); silently falls back to _KamFakeNode so loading continues.
- kame.pro: commented out for 4res in mac.

* Sun Mar 29 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.9)
- (8.0-beta1)
- CalibratedEntry: new XCalibratedEntry node derives a scalar entry from another entry via a calibration curve; proxy entry is inserted into XScalarEntryList and works with TextWriter and graph XYZ selectors.
- CalibrationTable: cspline calibration table is now fully editable in the UI; log-scale axes for XResistanceThermometer; XGenericCalibration added.
- XPointerItemNode: deferred label resolution — autoselects item after list is populated (e.g. after .kam loading).
- Python: fixed GIL freeze on startup (M4 / fast machines); Python thread releases GIL while waiting for driver modules to load before running xpythonsupport.py.
- Python: IPython kernel initialisation is faster again; deferred scripts (pydrivers.py etc.) run on first kame_pybind_one_iteration() tick after the kernel is up.
- Scripting: fixed potential infinite lock in Ruby/Python scripting threads under heavy STM collision.
- Stability: fixed crash during .kam loading under heavy STM collision — stale QToolButton pointer in XWaveNGraph now guarded with QPointer.
- Stability: replaced try/catch(NodeNotFoundError) containment checks with shot.isUpperOf() to avoid masking outer exception handlers.
- Graph: X/Y/Z axis selectors (combo boxes showing scalar entries) are now embedded directly in each graph window.
- CalibratedEntry: new UI panel to manage source/curve selection for calibrated entries.
- UI: driver list column widths resize to contents.
- .kam loading: Python-based loader replaces Ruby when Python is available; significantly faster due to lower-latency main-thread dispatch via kame_mainthread() vs. Qt event queue.

* Thu Mar 26 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.8.1-1)
- usermode-linux-gpib: Fix for read with eos and serial poll. Now working well.
- jupyter: Stop button now works; routes SIGINT to the KAME process instead of the dummy subprocess.
- jupyter: Restart button no longer breaks the connection to the embedded kernel (async override + re-patch).
- usermode-linux-gpib: Fix for USB bulk transfer stalls on macOS; 40ms sleep after interrupt poll timeout reduces event-lock contention.
- DSO: MathTool support added.
- Graph: thicker data trace lines, neutral night-mode background, improved colour palette, grid alpha hierarchy (major/minor), wider font size range.
- 2D image display: gamma correction now applied on screen matching dump output; gamma slider works via Metal/sRGB-aware pre-encoding.
- UI: tab order corrected in dsoform, networkanalyzerform, nmrpulseform; QGroupBox stylesheet; English grammar fixes in several UI strings.

* Wed Mar 25 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.8.0-1)
- gpib: In OSX, NI USB-GPIB-HS(+) can work without kernel driver. usermode linux-gpib was embedded.
- gpib: many improvements in Prologix USB-GPIB.
- MathTools: storing/loading in .kam is possible.
- small bug fixes by claude code.

* Wed Mar 18 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.7.2-1)
- python: fix deadlock using local() in Payload.
- Lakeshore 340: fix for a power range combbox.

* Thu Mar 12 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.7.1-1)
- python: fix bool() and float() conversions from XBoolNode, XDoubleNode.
- QCheckBox: suppress foolish click at inactive window.
- Ocean Optics/Insight spectrometers: HR2000 works.
- Scalar entries from MathTools: the same timestamp as those from driver's entries.

* Fri Jan 30 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.7.0-1)
- tcp: Proper timeout on connection, reading, writing., sharing the same EOS setting with serialport.
- tcp: Faster and stable reading.
- interfacelistconnector: suggests serial ports in popup menu.
- cyfxusb: Discovers newly connected USB devices when "Device" combobox is clicked.
- cyfxusb: Detects disconnection and reconnection.
- cyfxusb_win32: fallbacks to libusb if no device found with ezusb.sys/cyusb3.sys.
- cyfxusb_libusb: fix abort behaviour during concurrent async read to the same ep.
- cyfxusb_libusb: several work-a-round for WinUSB device, but not working yet.
- xitemnodebase, xqcomboxconnector: onItemRefreshRequested().
- usertempcontrol: SI930X, worked with TCP/IP.
- opengl: GL_TRIANGLE_FAN instead of GL_QUADS

* Fri Jan 16 2026 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.6.0-1)
- Graph: popup and highlighting on math tools.
- Ocean Optics/Insight spectrometers: works with >0.5s exposure. USB2000 works.

* Mon Dec 22 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.5.0-1)
- Graph: fix for cheap intel integrated graphics. GLselect no longer used. Changing to color picking technique.

* Sun Dec 14 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.4.0-1)
- Win32: default compiler is now changed to clang++, with llvm-mingw64 build of Qt.
- win32-clang-g++: use dllexport instead of export-all-symbols.
- Fujikin MFC: suppressing communication errors for recent MFC.
- SI930* temp. monitor.: experimental yet.
- Ruby: fix for possible crash after touch().
- ODMR: many improvements and 2D imaging.
- Prologix: putting waits for better stability.

* Wed Oct 15 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.3.1-1)
- Fix for thread safety regarding math tools.
- Lakeshore 218 temp monitor
- Many improvements on ODMR

* Tue Jul 29 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.3.0-1)
- Displays fitted curves for math tools.
- Fix for compilation issues with some versions of pybind11 and ruby.
- Many improvements on digital camera and ODMR

* Tue May 27 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.2.5-1)
- Improved terminating procedure/close menu behavior.
- Fix for Prologix GPIB for drivers without serial poll.
- Scanner variants for Lakeshore 370/372
- better channel configs in Lakeshore 350/370/372
- Fix for status update in PROT.

* Wed Apr 2 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.2.4-1)
- 7.2.3 may crashe in race condition.

* Tue Jan 28 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.2.3-1)
- 7.2.2 crashes in win32.

* Sat Jan 25 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.2.2-1)
- hyperlinks in IPython messages.
- Better icons.

* Mon Jan 20 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.2.1-1)
- Redirecting stdout/err to display area in notebook.

* Sun Jan 19 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.2.0-1)
- The first MDI child window is now for IPython.

* Sat Jan 18 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.8-1)
- Binding for Jupyter notebook.

* Sat Jan 18 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.7-1)
- Fix for stdio behvior of python line interpreter.

* Wed Jan 15 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.6-1)
- Support for IPython kernel and popen for Jupyter console/qtconsole.

* Sat Jan 11 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.5-1)
- Fix for 4-terminal method.
- Python driver: 4-terminal method with multi-setting.

* Tue Jan 7 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.4-1)
- Fix for mathtool and multi-entry support
- pdb can be used under the terminal
- Python driver: 4-terminal method.

* Thu Jan 2 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.3-1)
- Ruby 3.1 works well with mac(in debug mode) and mingw64.

* Wed Jan 1 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.2-1)
- Fix for init. issue in ruby >= 3., fine with 3.3 in Mac.
- Ruby 3.1 works with mingw64 when launched from Qt creator.
- Selectable scripting shell.

* Wed Jan 1 2025 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.1.0-1)
- Compiles with ruby 3.3. Works with 3.2 in Mac.
- Python scripting for several drivers, 1D/2D Math tools.

* Sat Nov 23 2024 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.0.2-1)
- Fix for terrible bug.

* Fri Nov 22 2024 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (7.0.0-1)
- Python scripting is now possible. 
- Prologix GPIB-USB controler, set default for GPIB when NI488.2 is not found.
- Fix for bugs in JAI.
- Experimental: Lakeshore M81

* Thu Oct 17 2024 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (6.1.1-1)
- Euresys: fix for startup

* Sun Oct 6 2024 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (6.1.0-1)
- CopperMountain: fix for byte order issue for newer revisions.
- Oriental Motor CVD2B/5B STM drivers
- Filter wheel driver and color imager
- Fix stability/usablitiy for math tools
- Fix for digital camera, text collapse issue, aspect ratio issue
- Ruby pressure scales for optical specrometer
- Ocean insight/optics USB4000
- Sigma optics PAMC104 piezo motor driver
- (experimental) LDC-37**, LDX-32**, Euresys eGrabber, Optotune ICC4C2000

* Tue Dec 19 2023 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (6.0.0-1)
- Runs with mingw64.
- Fix for message window in win32.
- Firewire digitalcameras in maxosx.
- ODMR staffs.
- Math tools on graphs. ex. center of gravity.
- NMRPulse: displays areas for calculations
- SG: more modulation features for agilent E-series SGs.
 
* Tue Jun 27 2023 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.8.6-1)
- foures: bug fix for multi channel simultaneous measurement

* Sun Jun 25 2023 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.8.5-1)
- LXI3390: starts working
- foures: bug fix regarding XTime (implicit bool to double)
- compiles with recent mingw32
- autolctuner: supports preset values

* Mon Jun 12 2023 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.8.4-1)
- E44xB SCPI SG
- Experimental: ODMR
- LivreVNA
- Staged autotuner
- Experimental: Coherent Stingray
- LXI 3390
- nmrfspectrum: bug fix

* Fri Dec 9 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.8.3-1)
- DAQmxPulser: fix bug happened @5.8.2
- Signal Recovery 7260 lockin amp
- LIA: improve wait strategy
- FlexAR: fix init. issue.

* Sun Nov 13 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.8.2-1)
- NMRPulser: signals for ODMR
- ThamwayUSB: improved initialization process
- autotuner: fix bugs after ver5.6
- twoaxis: Fix for race condition
- fix compilation with old compilers.

* Mon Oct 17 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.8-1)
- OceanOptics/Seabreeze HR2000+/4000 optical spectromters
- Thamway: Worked with M1 mac. USB routines shared w/ oceanoptics.
- CAM: several fixes.
- Interfaces: fix bugs after STOP

* Sat Jun 25 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.7.1-1)
- DMM: support for multi channels, Keithley 2851, 2700.
- CAM: better UI

* Thu Jun 9 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.7-1)
- CAM: fixed bugs.

* Thu May 19 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.6-1)
- Flex AR: Support of pushing mode. Fix bug for STOP button.
- CAM: CAM using STMs.

* Sat Apr 16 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.5.2-1)
- NIDAQmx: PCIe-6374/6376 experimental support

* Sun Feb 13 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.5.1-1)
- Mac: Universal binary ready
- thamway: fix bug on loading libusb

* Sun Feb 13 2022 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.5-1)
- Native arm support for M1 Mac

* Tue Dec 28 2021 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.4-1)
- worked w/ C++17 and Qt 6 w/ Qt5 compatibility module
- graph: 3D viewpoint can be reset by clicking right button.
- magnetps: Fix behavior for sweep rate during persistent mode
- TempControl: Fix behavior for "stabilized" value regarding "I"
- NMR: tSVD fourier spectral analysis (experimental) 

* Sun Dec 20 2020 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.3.2-1)
- NMRT1: Fix for "Flatten generator", behavior near P1Max.
- AutoLCTuner: improved strategy during tuning
- Fix for threading on starting a driver
- Fix for MonteCarlo

* Sun Apr 26 2020 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.3.1-1)
- Pfeiffer TPG361/362 Gauge (RS485). 

* Sun Dec 1 2019 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.3-1)
- Density mapping for T1,T2 by Tikhonov regularization. 

* Fri Sep 6 2018 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.2.2-1)
- Workaround for Qt5.12
- NMREcho: Fix for background warning, new warning against large voltage.
- NMRT1: T2 measurement by CPMG
- ThamwayRealtimeDSO: Fix for trigger position
- new driver: two-axis goniometric stage

* Sun Nov 25 2018 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.2.1-2)
- Mac: Fix for text/draw collapse on MDI windows.

* Sat Nov 24 2018 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.2.1-1)
- Mac: Workaround for huge memory (pseudo) leakage with QLabel/QLineEdit.  
- NMRFSpectrum: fix for saving time

* Wed Nov 21 2018 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.2.0-1)
- Mac: userside memory allocator is introduced again.
- Mac: repairs Info.plist and icon.
- Better window initial positions when it appears.
- Thamway: libusb support is improved in mac.
- Thamway: QAM works fine now.
- Autolctuner: fiting improved, compatible with Flex AR.
- Copper Mountain TR1300/1,5048,4530 Network Analyzer
- Lakshore 350: Fix for prop. setting.

* Mon Sep 17 2018 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.1.5-1)
- Pfeiffer Turbo molecular pump controller TC110 
- Autolctuner: fiting improved.
- VNWA3E TCP/IP interface for recent firmwares.
- pulseanalyzer: obsolete

* Wed Jun 27 2018 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.1.4-1)
- Compatible with Qt-5.11
- Fixed bug for formatprint with threads.

* Mon Oct 16 2017 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.1.3-1)
- Compatible with OSX High Sierra
- thamwayrealtimedso: improved stability.
- qdppms: better slow sweep.
- Agilent/HP4282A LCR meter.

* Wed Aug 16 2017 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.1.2-1)
- nmrpulser: improved stability for softtrigerring
- lcautotuner: better behavior
- graphlist: fox for multiple creation
- xwavengraph: appropriate precisions for waves, threaded dumping.
-KE6482 picoam meter

* Fri Jul 14 2017 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.1.0-1)
- Floating tool boxes.
- NMR: Autotuner becomes much better.
- gsl >= 2 is required for better fitting.

* Fri Jun 23 2017 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.0.1-1)
- Thamway USB: minor fix for PROTII.

* Thu Jun 22 2017 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (5.0.0-1)
- interface: starting is handled by thread.
- graph: theme colors, night, daylight. Night is default.
- graph: rewrote persistent view.
- ppms: software slow ramp rate for field. fix for units.
- usb: async. transfer is default for bulk transfers.
- nmr: fix for clear behavior.
- Thamway: many fixes for PROT3.
- Thamway USB: init. of FX devices are deferred.
- thamwaypuler: fix for startup behavior
- ruby: displays sleeping status
- ruby: timestamp of stdout/err.
- ruby: SAFE=1 is abondoned due to 777 permission folders. 

* Wed May 10 2017 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.3.0-1)
- stdout/err log into a file during execution of script.
- nmrpulsercore: Fix initial values for spin boxes.
- Thamway PROT3 compatibility (experimental)
- Thamway USB devices operated also with cyusb3.sys
- Thamway QAM pulser.
- (experimental) Real-time DSO for digital demodulation.

* Thu Jan 19 2017 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.8-1)
- Lakeshore 350 temp. controller

* Fri Dec 9 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.7-1)
- ezusb: works well in OSX
- OSX: disables AppNap and machine sleep.

* Fri Nov 11 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.6-1)
- Enables NI488.2, and USB interfaces for thamway instruments on OSX
- xtime.cpp: Gets rid of spin lock again.
- thamwaydso: Fixed for channel names and init. valuse of records, timewidth.
- Now compiles with GSL > 2.0
- OSX: uses standard glu.h

* Sun Nov 6 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.5-1)
- Fixed unstability that appeared as of 4.2.1, regarding memory leaks of dwm
- Fixed priority issue for test driver.

* Sun Nov 6 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.4-1)
- Reduces CPU usgae

* Fri Sep 2 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.3-1)
- NIDAQDSO: Fix for changes made at 4.2.2
- NIDAQ: can be placed directly at C:\

* Thu Sep 1 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.2-1)
- DSO using Digilent Waveform

* Sun Aug 7 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.1-1)
- Roll backs some of buggy transaction.h from 4.1.14.
- Repainting strategy of graph is improved.
- Refactors signals.
- Fix bugs for f-sweep NMR specrtrum regarding autotuning.

* Wed Aug 3 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.2.0-1)
- Fix severe bugs regarding SSE on mingw32. adds -mstackrealign compile option.
- Uses QOpenGLWidget for QT > 5.4 instead of the obsolete QGLWidget. Adds -lopengl32 -lglut32 for mingw32.
- Abondons nooverpaint/nodirectrender options.
- Refactors signal/slot.

* Wed Jul 27 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.16-1)
- Fix severe bugs for 4.1.14 and 15. (note: not fixed yet)

* Feb Jul 12 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.15-1)
- nmrfspectrum: Cyclic sweep mode.
- Faster transaction.
- nmrrealx: Tracks peak freq.

* Wed Jun 29 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.14-1)
- std::atomic of mingw is buggy? Back to the original one.

* Thu Jun 23 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.13-1)
- Faster transaction.
- OrientalMotor Flex: better recovery from errors.
- QD PPMS: adds controls.
- nmrspectrum: reads field values from QD PPMS.

* Thu Mar 10 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.12-1)
- QD PPMS monitor: adds user temp
- dcsource: scalar entry.

* Sun Feb 7 2016 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.11-1)
- xwavengraph: avoids IO during dumping transaction.
- QD PPMS monitor

* Sun Sep 13 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.10-1)
- Baudrate for Modbus RTU (Flex AR/CRK) is defaulted to 57600bps.
- OMRON E5*C controller via Modbus RTU.

* Tue Aug 18 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.9-1)
- Fix chart.
- Fix for old LS340.

* Fri Jun 19 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.8-1)
- Space as delimiter for text files, again.
- Faster XXYPlot.

* Fri Jun 19 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.7-1)
- Tab as delimiter for text files.

* Wed Jun 17 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.6-1)
- revives gpib_reset() for oxford.

* Mon Jun 15 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.5-1)
- Rewrites XCharInterface

* Thu Jun 11 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.4-1)
- Allows retrys for fujikinprotocol.
- Fix for behavior during stopping interface.
- Fix for NI DSO that has more than 2 channels.

* Sat Jun 6 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.3-1)
- Gas flow contorl for ITC503
- Suppresses error messages from gsl.
- Fix for SerialEOS.

* Thu May 28 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.2-1)
- Fix for Non-latin1 filepaths
- Fix for Cry-o-con M62 RS232

* Tue May 26 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.1-1)
- Fix for Cryo-o-con M62 with early firmware.
- LR-600 (experimental)

* Mon May 18 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.1.0-1)
- Fix for Cryogenic SMS ver 7
- Fix for Windows Serial Ports
- Fix for OS X Yosemite
- Fix for window focus on WIndows
- NMRPulse: makes lines conc colored
- NIDAQmxpulser: Suppresses error while stopping GateCtr for Pausing Bit.

* Fri Apr 17 2015 Kentaro Kitagawa <kitagawa@phys.s.u-tokyo.ac.jp>
- (4.0.14-1)
- Fix for SG SML
- Fix for NQR I=9/2 relax. function

* Fri Oct 3 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.12-1)
- Fix for PROT/USB pulser.
- Fix for AgilentE5061

* Sun Aug 31 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.11-1)
- Wraps ruby.h
- LoadLibararyA() instead of libtool for win.

* Thu Aug 28 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.10-1)
- Much faster transactions.
- NMR:Tune strategy for fspectrum
- NMRT1: fix for autophase.

* Sun Aug 24 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.9-1)
- Fix for atomic ops.
- launching kame now possible with MSVC
- Fix for PROT.
- Enables SSE2 for mac/win.
- Fix for NIDAQ under win.

* Wed Aug 20 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.8-1)
- enables overpaint by default

* Wed Aug 20 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.7-1)
- Thamway NMR PROT built-in signal generator (USB/TCP)
- Thamway NMR pulser PG series (USB/GPIB/TCP)
- Thamway A/D conversion board DV14U25 (USB) 
- Fix Lecroy DSO communications.
- XCustomCharInterface

* Sun Aug 17 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.6-1)
- Overpaint option for OpenGL
- Improved i18n for QT
- Sophisticated font size for graphs.
- Win32 build becomes free from boost.

* Mon Aug 11 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.5-1)
- Beta 5
- Thamway impedance analyzer
- R&S SML/SMV signal generator

* Sun Aug 10 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.4-1)
- Beta 4
- Works with windows binary.

* Fri Aug 8 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.3-1)
- Fix for daqmxpulser.
- Keepalive TCP and fix for signals.

* Wed Aug 6 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.2-1)
- Fix for sliders.
- GUI looks better.

* Sun Aug 3 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.1-1)
- Fix for XTime(Win).
- Tcp/IP for win.
- Message window.

* Fri Aug 1 2014 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (4.0.0-1)
- Beta 1
- Windows/MacOSX builds without Qt nor FTGL.

* Sat Jul 28 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.7-1)
- autotuner: Improved.

* Thu Apr 25 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.6-2)
- nmrpulser: On-line start/stop to keep coherency to DSO, when Digital RF is on.
- nidaqdso.cpp: bug fix for pulser creation. 

* Fri Mar 8 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.5-1)
- secondarydriverinterface: does negotiation.
- flowcontroller: valves gets working.
- serial, levelmeter: supports echo backs.

* Tue Feb 19 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.4-1)
- autotuner: better tuning.

* Sun Feb 17 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.3-1)
- charinterface: changes default EOS from serial to LF.

* Sat Feb 16 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.2-3)
- Better autolctuner.
- Fix for Cryocon M32/62.

* Tue Feb 12 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.1-1)
- Along with clang++.
- Much faster .kam loading. (isThreadSafeDuringCreationByTypename()) 

* Sun Feb 10 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.3.0-1)
- textwriter: logger.

* Sat Feb 9 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.23-1)
- nmrrelax: Flatten P1 distribution.
- nmrrelax: Modifies fitting initialization.

* Tue Feb 5 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.22-1)
- autolctuner: works better.
- flowcontroller: Fujikin FCST1000 mass flow controllers.

* Sun Feb 3 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.21-1)
- tempcontrol: multi-loops.

* Sat Feb 2 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.20-1)
- xnode.h: avoids double signals in str().

* Thu Jan 17 2013 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.19-1)
- usertempcontrol: LakeShore 370.

* Wed Dec 19 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.18-1)
- nmr: Freq. sweep w/ autolctuner.
- sg: DSTech. DPL-3.2XGF

* Wed Nov 14 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.17-1)
- TCP/IP interface.
- DG8SAQ VNWA3E/Custom Network Analyzer.

* Tue Oct 30 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.16-1)
- AutoLCTuner.

* Sun Oct 7 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.15-1)
- Improves stability.

* Sat Sep 8 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.14-1)
- Popups msg when it fails to open file.
- Improves stability.

* Sun Jul 15 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.13-1)
- motor: ORIENTALMOTOR FLEX CRK/AR/DG2.
- graphpaintergl: includes <GL/glu.h>

* Wed Jul 11 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.12-1)
- fourres: Resistance mesasurement with switching polarity method.
- dcsource: ADVANTEST TR6144/R6142/R6144.

* Tue Jun 12 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.11-1)
- usermagnetps.cpp: For Cryogenic SMS ver 4.

* Fri Jun 8 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.10-1)
- pulseanalyzer: Fix bug. during off state.
- graph, chart: Incresing maxcount, and do not clear after changing it.

* Tue May 15 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.9-1)
- magnetps: Oscillating approach.

* Sun May 13 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.8-1)
- magnetps: Limit rates, Secondary PS, safe conditions.

* Sat May 12 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.7-1)
- counter: Mutoh counter.
- tempcontrol: Keithley 2700/7700.
- recoder.cpp: Fix bug that previous values are written to last line.

* Thu Apr 26 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.6-1)
- userlockinamp: NF LI5640

* Thu Apr 26 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.5-1)
- pulserdrivernidaqmx: Fix for non-thread-safe startup.

* Wed Apr 25 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.4-1)
- counter: Mutoh Digital Counter NPS, for encoders.

* Sat Apr 21 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.3-1)
- pulseanalyzer: NMR Built-in Network Analyzer using Pulse Analyzer mode.
- secondarydriverinterface: avoid multiple delegates.

* Fri Apr 20 2012 Kentaro Kitagawa <kitag@kochi-u.ac.jp>
- (3.2.2-1)
- usermagnetps: Cryogenic SMS.
- pulsercore: Pulse Analyzer mode.

* Sat Feb 25 2012 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.2.1-1)
- main.cpp: Adds error handler for GSL.

* Wed Oct 12 2011 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.2.0-1)
- nmrpulser: Checks sanity of P1.
- nmrrelax: Does not skip when previous P1 is out of range.
- nmrpulse: Fix for the issue that scalar entries were based on previous dataset.  
- Fix for strange std::fill behavior for complex classes in clang++. 

* Thu Sep 29 2011 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.96-1)
- Partially uses c++0x.
- Support for clang++.
- Shared libraries are now moved to the system default location (works fine with MacPorts).

* Mon Jul 11 2011 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.14-1)
- pulsedriver: anti-alias for AO.
- pulsedrivernidaqmx: ring buffer and integrated AO/DO buffering.

* Thu Jul 7 2011 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.15-1)
- Fixed icon references.

* Thu Jul 7 2011 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.12-1)
- pulsedrivernidaqmx: refined pulse generation.

* Mon Jul 4 2011 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.10-1)
- for Fedora 14

* Fri Sep 10 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.9-1)
- for Fedora 13

* Tue Jun 8 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.7-1)
- nidaqdso.cpp: Fix buffer size for recent computers.
- xwavengraph.cpp: Fix for possible crash.

* Fri Jun 4 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.5-1)
- nidaqmxdso.cpp: fix for recent machines.

* Thu Apr 29 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.4-1)
- allocator.cpp: fixed-/variable-size lock-free allocators for less than 4KiB.

* Sun Apr 18 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.3-1)
- allocator.cpp: Lock-free new()/delete() by memory pools.
- atomic_shared_ptr.h: Faster local_shared_ptr.
- xschedular.h, transaction_signal.h: Suppress unnecessary events also for the main thread when AVOID_DUP flag is set.

* Mon Apr 12 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.2-1)
- analyzer.cpp: Fix for XValGraph.
- Get rid of obsolete functions.

* Fri Apr 9 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.1-1)
- No more mask/unmask for Talker/Listener.
- puserdrivernidaqmx.cpp: Surpress warning during stopPulseGen().
- nmrspectrumbase_impl.h: Fix for coarse resolution.
- transaction_signal.h: Fix memory leaks.
- graph.cpp: Fix auto frequency for axes.

* Wed Apr 7 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.1.0-1)
- transaction.h, xnode.h: Apply lock-free software transactional memory to most of all internals.

* Wed Jan 6 2010 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (3.0.0-1)
- dso.cpp, nmrpulse.cpp: Averaging restarts when a clear button is invoked.
- pulserdriver.cpp: Fix phase cycling for a stimulated echo. 
- The first stable release for 3.0.

* Mon Dec 14 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.8-1)
- gpib.cpp: Fix for NI488.2.

* Fri Nov 27 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.7-2)
- graphpaintergl.cpp: Fix drawing strategy for mac.

* Sun Nov 22 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.7-1)
- Portfile for MacPorts.
- now NI488 can be also used as a GPIB driver.
- x86_64.
- graphpaintergl.cpp: uses QString::toWCharArray instead of the complex iconv().

* Wed Nov 11 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.6-1)
- recordreader.cpp: changes # of threads to 1 for reading records.

* Mon Nov 2 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.5-1)
- Gets rid of XRawThermometer.

* Sat Oct 31 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.4-1)
- Lakeshore340: reading of raw sensor values.

* Thu Oct 29 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.3-1)
- Rearrange UI designs.

* Wed Oct 28 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.1-1)
- No more interval in QTimer's event during processing the main-thread envents.

* Thu Oct 22 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.9.0-1)
- The first working version with Qt4/Kde4.
- cmake.
- Core modules are moved to modules/core.
- Rearranged UIs.

* Fri Oct 16 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.26-1)
- Fix bug in atomic operations.

* Sat Apr 25 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.25-1)
- The first release for Fedora 10.
- dso.cpp, nidaqdso.cpp: Fix for the case where no trace is selected.

* Sat Mar 14 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.24-1)
- nmr: convolute dark PSD by rect window.

* Fri Mar 13 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.23-1)
- nmr: calculate dark side (PSD of noise inferred from background).

* Sat Mar 7 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.22-1)
- nmrspectrumbase: selectable bandwidth.

* Thu Mar 5 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.21-1)
- nmr: clear averaging buffers on starting secondary measurement.
- nmrpulse: check multi-echo settings.
- nmrpulse: solver can be chosen for periodic noise reduction.

* Sat Feb 14 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.20-1)
- pulserdriver.cpp: phase cycle, now 4-cycle available for multiple/stimulated echo sequence.

* Sat Jan 3 2009 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.19-1)
- nmrspectrumbase.cpp: Fix weighting.

* Thu Oct 17 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.18-1)
- dso.cpp: Fix for reading errors.
- lecroy.cpp: Increase timeout.

* Tue Sep 23 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.17-1)
- nmrspectrumbase.cpp: Get rid of noisy parts.
- nmrpulse.cpp: Improve multiecho.

* Fri Sep 12 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.16-1)
- nmrspectrumbase.cpp: Improve autophasing.

* Wed Sep 10 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.15-1)
- nmrfspectrum.cpp: Burst mode.

* Wed Sep 10 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.14-1)
- nmrspectrumbase.cpp: Fix bugs.

* Thu Sep 4 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.13-1)
- freqestleastsquare.cpp: Faster estimation.

* Sun Aug 31 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.12-2)
- math: For IC, detection of number of data points in frequency domain.

* Wed Aug 29 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.12-1)
- nmr, math: Frequency estimater by least square fit with IC.

* Wed Aug 27 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.11-1)
- nmr/spectrumbase: IFT, padding for time domain.
- math/spectrumsolver: rectangular windowing for freq. estimation/MEM.
- sg: No serial poll before writing for HP.

* Thu Jul 10 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.10-1)
- nmr/spectrumbase: Fix for sparse acquision.
- dcsource: No serial poll for YK7651.

* Mon Jul 7 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.9-1)
- nmr/spectrumbase: Fix for sparse acquision.

* Tue Jul 1 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.8-1)
- math: Fix peak detections in spectrum solvers.
- nmr: Impliment digital IF. Catch errors of spectrum solvers.

* Fri Jun 27 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.7-2)
- kame.rules: For udev, ttyUSB*, ttyS*.
- charinterface.cpp: Fox for scanf().

* Sat Jun 21 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.7-1)
- Lecroy/Iwatsu X-Stream DSO.
- tds.cpp: Fix for trigger source.
- gpib.cpp: Fix for partial reading.

* Fri Feb 8 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.6-1)
- Sanwa PC500/5000.

* Fri Jan 25 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.5-1)
- spectrumsolver: Least-Square Phase Estimation.
- spectrumsolver: Combined MEM.

* Mon Jan 21 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.3-1)
- graphpainter: fix for selecting yaxis.
- nmrpulse, nmrspectrumbase, mem: Search for peaks.
- freqest: Freq. estimation. MUSIC.

* Tue Jan 15 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.2-1)
- math : new folder.
- FFTW ver 3.
- nmrspectrum : Abs. plot. Fix for handling weights.

* Fri Jan 11 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.1-2)
- nmrrelax : Convolution w/o FFT.

* Thu Jan 10 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.1-1)
- nmrrelax : Window. Auto-window. Direct Fourier.
- nmrspectrumbase : Its own FFT.

* Thu Jan 3 2008 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.3.0-1)
- nmrpulse, nmrspectrumbase : DSO plots, MEM/AR for DNR & spectra.
- nmrrelax.cpp : Im plot.

* Thu Nov 29 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.20-1)
- nmrpulse : rewrite DNR. Reflect extraAvg while increasing.

* Tue Nov 20 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.19-1)
- Fast read/write 64bit in 32bit machines.
- SSE2 by default.
- Rearrange main form.
- Fix for dead locks.

* Mon Nov 19 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.18-1)
- rubylineshell.
- pulserdrivercore: fix for pregating.

* Fri Nov 16 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.17-1)
- Replace admin dir.
- kame/Makefile.am: simplified.
- configure.in.in: fix for ruby.h.
- node browser.
- node: remember parent.
- nmrcore: merge sgcore and pulsercore.

* Sun Nov 11 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.16-1)
- secondarydriver: Improved stability regarding dead-locks.
- pulserdriver: Improved pre-gating.
- g++-4 for FTGL w/ -fpermissive.
- atomic_prv_x86.h: 64bit support.

* Mon Oct 22 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.15-1)
- network analyzers.
- nmrspectrum, nmrfspectrum: code refactoring & auto scale.

* Sat Oct 20 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.14-1)
- userdmm: HP3478A.

* Mon Sep 10 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.13-1)
- graph: Fix for autoscale faults.

* Sun Jul 29 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.12-2)
- pulserdriver: Arrange for FID.
- nmrrelax: St.E. mode. 2-parameter fitting.

* Fri Jul 27 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.12-1)
- pulserdriver: New option: conserve stimulated echo phase.

* Wed Jul 11 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.11-2)
- xwavengraph: Never use autoscale for weighting axes.

* Thu Jul 5 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.11-1)
- graph: Legends.

* Mon Jul 1 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.10-1)
- xwavengraph: New API for a single y-axis multi-plots.

* Thu Jun 28 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.9-1)
- nmrrelax: increase limit of samples.
- drver: visualize() after aborting.

* Tue Jun 26 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.8-2)
- recordreader: Use multi-thread for time sync again.
- nmrpulse: Much better phase-inversion-cycling.

* Mon Jun 25 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.8-1)
- recordreader: Use single thread for time sync.
- nidaqmx: Create objects w/o NIDAQmx.h somehow.

* Sun Jun 24 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.7-4)
- pulserdriver: Add QSW soft-switching-off functionality.

* Mon Jun 18 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.7-2)
- usertempcontrol: Fix Lakeshore340.
- nmrpulsernidaxmx: Never pause while ASW is active.
- levelmeter: ILM oxford helium level meter. LakeShore LM500 level meter.

* Wed Jun 13 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.7-1)
- usertempcontrol: Neocera LTC21.

* Mon Jun 11 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.6-2)
- rwlock.cpp: Fix for XRecursiveRWLock.

* Thu May 17 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.6-1)
- pulserdrivernidaqmx.cpp: Fix pausing feature for fast sps. Fix possible failure of synchronization.

* Wed May 16 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.5-2)
- nidaqmxdriver.cpp: NI-622x.

* Mon May 14 2007 Kentaro Kitagawa <kitag@issp.u-tokyo.ac.jp>
- (2.2.5-1)
- dcsource: YK7651 supports range.

* Wed Apr 18 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.2.4-1)
- driver.h: Use try lock to avoid deadlocks.

* Tue Apr 14 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.2.3-1)
- nmrpulse.cpp: Handle clear request correctly.
- dcsource: Multi-channel source.
- tempcontrol: Software PID.

* Tue Apr 10 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.2.2-2)
- Disable spinlock.
- Fix montecarlo.

* Mon Apr 2 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.2.2-1)
- Fix for the first software-trigger setup.
- Faster mutex.

* Sun Mar 18 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.2.1-1)
- Fix nidaqmxpulser.
- Get rid of extra new line in xrubysupport.rb.

* Thu Mar 15 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.2-1)
- Dynamic module loading.
- packages: modules-standard (for general drivers with gpib, etc.),
	modules-nmr (NMR drivers), modules-nidaq (NI-DAQmx support).
- Fix SH2 pulser.

* Mon Mar 12 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.5-1)
- Ruby: $SAFE = 3 and begin .. rescue for loading .kame files.
- xnidaqmxpulser.cpp : increase buf size to 2sec.

* Sun Mar 11 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.4-1)
- Fixed TDS.
- Change xsignal.h API.
- Fix scheduler.

* Sat Mar 10 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.3-2)
- Fixed potential crash in nmrpulse.cpp.
- Roll phsase inversion cycle strategy back.

* Fri Mar 9 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.3-1)
- Fixed oxford drivers.
- Fixed phase inversion cycles.

* Tue Mar 7 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.2-4)
- Software trigger.
- Rewritten atomic stuffs.

* Fri Mar 2 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.2-3)
- Support for NI PCI-6115.

* Wed Feb 28 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.2-1)
- NIDAQmx support as NMR pulser and DSO.

* Sat Feb 3 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.0-3)
- introduce XCharDeviceDriver::{open(),close()}, XPrimaryDriver::afterStop()

* Fri Feb 2 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.1.0-2)
- chardevicedriver.h, oxforddriver.h : use such like XCharDeviceDriver<...> for driver w/ one character-based interface.

* Sun Jan 21 2007 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.13-2)
- kame.spec : modified for FedoraCore6.

* Wed Nov 1 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.12-2)
- xrubysupport.{cpp,rb} : Ignore errors on loading .kam.

* Mon Oct 30 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.12-1)
- driver : completely skip after XSkippedRecordError.
- dso, nmrpulse : move averaging rotation to nmrpulse.
- nmrpulse.cpp : Use inversion echoes to cancel background out.

* Wed May 24 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- pulserdriver : Q-Switch support.

* Sun May 14 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.11-1)
- nmrrelaxfit.cpp : more relaxation curves.
- usertempcontrol.cpp : fix crashing.
- support.cpp : new func. formatString().

* Fri May 12 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.10-4)
- Use mutex and deepcopy for i18n(). Use KAME::i18n() to redirect i18n().

* Thu May 11 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.10-3)
- XNIGPIBPort: fix the case for CMPL without END.
- primarydriver.cpp : fix for gcc-4.0

* Tue May 9 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.10-2)
- Switch to Fedra Core 5

* Wed May 3 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.10-1m)
- pulserdriversh.cpp : preliminary induced emission.
- get rid of QString stuff more.

* Tue Mar 7 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.9-1m)
- xnode.cpp, xlistnode.cpp, ... : Use RCU (Read-Copy-Update) to handle children.
- xlistnode.cpp : fix move().

* Sat Mar 5 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.8-1m)
- xlistnode.cpp : move(), change order.
- xnodeconnector.cpp : XListQConnector, dragging.

* Thu Mar 3 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.7-1m)
- bug fix. : Use QDeepCopy<QString> when needed.

* Thu Mar 2 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.6-1m)
- support.cpp : FormatDouble, Use "%.12g" as a default.
- xnode.h : Abondon childLock()/childUnlock().
- caltable.cpp : Display thermometer.

* Wed Mar 1 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.5-1m)
- cspline.cpp : cubic spline approximation.
- thermometer.cpp : new thermometer XApproxThermometer.
- xnodeconnector.cpp : fix display LCD.
- graphform.ui : derived from QMainWidget.
- xrubysupport.cpp : fix unnamed nodes.

* Tue Feb 28 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.4-1m)
- dso.cpp : FIR filter before recording.
- serial.cpp : change init. seq.
- userlockinamp.cpp : SR830 read freq on starting.
- tempcontrol.cpp : make single reading working.

* Sat Feb 11 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.3-2m)
- serial.cpp : revise checking of read count.
- support.cpp : use mutex for debug printings.
- pulserdriversh.cpp : sync with firm 1.2.

* Wed Feb 8 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.3-1m)
- serial.cpp : when read buffer is not empty before writing, throw instead of tcflush().

* Fri Feb 3 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.2-1m)
- dso.cpp, pulserdriver.cpp : change phase cycling sequences
	 and accumulate waves to correct averaging sterategy.

* Thu Feb 2 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0.1-1m)
- atomic_smart_fix.h : fix memory leak using CAS2.

* Wed Feb 1 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- atomic_queue.h : bug fix. uninitialized counter.

* Tue Jan 31 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- pulserdriver{sh,h8}.cpp : try to continue when turning-on is failed.
- atomic_smart_ptr.h : atomic_shared_ptr<>.compareAndSwap()

* Mon Jan 30 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-1.0.2m)
- atomic_smart_ptr.h : atomic_shared_ptr<>, lock-free scanning without CAS2.
- entrylistconnector.cpp : fix handling of transaction.
- analyzer.cpp : bug fix.
- atomic_queue.h : bug fix.

* Sun Jan 29 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-1.0.1m)
- atomic_queue.h : atomic queue, but reserved size is fixed.

* Fri Jan 27 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-1.0.1m)
- atomic.h, xtime.cpp : use assembly on powerPC as well.

* Thu Jan 26 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-1m)
- The first release of 2.0!
- Thanks for testers, Y. Ihara and Takeya.
- (bug) FTGL? : 2byte-chars cause crash.

* Tue Jan 24 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.8m)
- 2.0rc2
- xsignal.cpp : cease to read std::deque without mutex locking.
- atomic.h : atomic<>, memory barrierred wrapper to word-size type.
- todo : use QDeepCopy<QString> properly.

* Sat Jan 21 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- atomic_smart_ptr.h : atomic version of shared_ptr, scoped_ptr.
- fast_smart_ptr.h : faster version of shared_ptr, weak_ptr etc.
- xtime.h : timeStampInUsec(), use RDTSC in x86.
- XTalker<>::empty() : a hint to omit talking.

* Thu Jan 19 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- atomic_prv.h : atomicCompareAndSwap2(), 2 words CAS only for x86.
- atomic.h : implement wait-free atomic_shared_ptr<>. 2 words CAS is needed to make it wait-free.

* Wed Jan 18 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.7m)
- 2.0rc1
- driverlistconnector.cpp : onRecordRedirected() is moved to tcons,
	 because label (a member of tcons) must exist when the function is called. 
- atomic.h : atomic_scoped_ptr<> which supports atomic swap for destructive reading.
- atomic_prv.h : memoryBarrier() etc.
- xsignal.h : apply atomic_scoped_ptr<>, scoped_ptr<>.
	 Now argument is not shared among thransactions.
- graphpaintergl.cpp : Use QGLContext instead of QGLWidget.

* Tue Jan 17 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.6m)
- 2.0beta3
- atomic.h : various atomic operations. atomic_shared_ptr<>.
- xsignal.h : apply atomic_shared_ptr<>
- xnode.h : apply atomic_shared_ptr<>
- thread.h : XScopedLock<>, XScopedReadLock<>, XScopedWriteLock<>.
	better handlings of muteces.
- xnodeconnector.cpp : no need of XThreadLocal<> for containing shared_ptr.

* Fri Jan 13 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.5m)
- 2.0beta2
- xnode.cpp : use typeid() for getTypename()
- XML : xmlsupport is deprecated.
- configure : --with-malloc-debug option is added to use MallocDebug.app in MacOS X.
- kame.cpp : fix terrible memory leak.
- nmrrelaxfit.cpp : do_nlls(), fix memory leak.

* Thu Jan 12 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.4m)
- gpib.cpp : use wait before read, write.
- serial.cpp : time-out is enabled (3s).
- support.cpp : leak detector is enabled when boehm gc and libgccpp are avaliable.
	use class kame_gc as a base to detect leaks.
- xnode.cpp : definitions of XValueNode<> stuff is now in source.

* Mon Jan 9 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.3m)
- xnode.h : setValidator(), validator throws exception when input string is ill to convert
- support.h : formatDoubleValidator(), checks format string

* Sat Jan 7 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.2m)
- nmrfspectrum.cpp : new driver
- support.cpp: formatDouble(), cease to use qt's conversion from double to QString(),
	 because some versions of qt is buggy.

* Fri Jan 6 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9.1m)
- tools : script to make lite package which does not have NMR stuff.
- APIs : const modifiers.
- signalgenerator.cpp : new driver

* Wed Jan 4 2006 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (2.0-0.9m)
- 2.0beta1
- graphpaintergl.cpp : use UCS-4 instead of wchar_t for iconv to avoid locale dependency
- users/lia, users/magnetps, users/tempcontrol, most of users/nmr : ready
- support.cpp : impliment XKameError, base of exception classes
- driver : now GUI can create/release drivers
- interfacelistconnector.cpp : individual RUN/STOP button
- xwavengraph.cpp : change icon after the first dump.
- xnodeconnector.cpp : XFileStream is abadoned.
- i18n : in progress.
- APIs : fixed, i guess.

* Wed Dec 21 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- 2.0alpha2
- graph : Remove XChart
- analyzer, graph : use XDriver::time() as x axis of XValChart
- support.cpp : impliment formatDouble()
- XTextWriter : LastLine node

* Tue Dec 20 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- 2.0alpha1
- API : almost fixed
- all : revised, rewriten
- include FTGL tree for convrnience
- users/dmm, users/dso : ready
- graphwidget.cpp : TODO, event loop is busy while mouse is moving on

* Fri Oct 7 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.9-1m)
- Makefile.am : fix to be configured under the other dirs
- *.ui : fix for qt-3.3.5
- thermometers.{cpp,h} : New thermometer Scientific Instruments

* Wed Oct 5 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-16m)
- lockinamp : support freq. change
- AUTOHEADER may be autoheader-2.53 

* Thu Aug 13 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-14m)
- pulserdriversh.cpp : fix potential deadlock

* Thu Aug 13 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-13m)
- pulserdriversh.cpp : fix for long period (>60sec)
- kame : works with Mac OS X

* Thu Jan 22 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-12m)
- pulserdriver{h8, sh}.cpp : fix gate2 handlings for small tau

* Thu Jan 19 2005 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-11m)
- usertempcontrol.cpp: new driver: Cryo-con M32

* Thu Dec 13 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-10m)
- itcp.cpp: improve scheduling
- graph.cpp: avoid loop of redrawRequest

* Thu Dec 11 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-9m)
- itcp.cpp: Scheduling changed. Lock until old queue (>90 ms before)  gets cleared

* Thu Dec 11 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-8m)
- graph: bug fixes

* Thu Dec 10 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-7m)
- graph: reduce memory usage

* Thu Dec 10 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-6m)
- magnetps.cpp: PS w/o PCS supported
- graphpainter.cpp: quick help

* Thu Dec 10 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-5m)
- Kick out buggy QGLWidget::renderText. Apply FTGLPixmapFont instead.
- Mikachanfont which has no embeded fixed scale fonts is prefered.

* Thu Dec 6 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-4m)
- Gzip format is applied for raw stream binary

* Thu Dec 4 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-3m)
- support selection in 3D plot

* Thu Dec 1 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-2m)
- 3D plot functionality

* Thu Nov 29 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8.2-1m)
- 1.8.2
- support for OpenGL graphs, but still only for 2D plots

* Thu Nov 25 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8-2m)
- revise spec

* Thu Nov 25 2004 Kentaro Kitagawa <kitagawa@scphys.kyoto-u.ac.jp>
- (1.8-1m)
- The first release.