========================================================
  ⚠️ 请先「全部解压」，再运行 EveSyncCollector.exe
========================================================

如果你是在压缩包窗口里**直接双击** EveSyncCollector.exe，
程序会找不到它需要的配置文件 → 提示「需要凭证 / 无法注册」。

这不是程序坏了，是**还没解压**。

--------------------------------------------------------
 正确做法（一步）
--------------------------------------------------------

  在下载好的 .zip 上点**右键**
    →「解压到当前文件夹」或「全部解压」
  （WinRAR / 7-Zip / Windows 资源管理器自带的解压都行）

  然后**进入解压出来的文件夹**，再双击 EveSyncCollector.exe。

  判断有没有解压成功：
    · 窗口标题栏 / 地址栏里不再是 .zip
    · 能看到「请全部解压出来再运行exe.txt」（就是本文件）躺在 exe 旁边

--------------------------------------------------------
 为什么必须解压
--------------------------------------------------------

  程序首次运行要从**同目录**的 settings.json 里读服务器地址，
  还要在那里保存加密后的正式凭据。
  在 ZIP 里直接双击时，这个「同目录」是系统临时解出来的路径，
  程序读写不了 → 只能提示你要凭证。

  ⚠️ 另外：**一台电脑一个包**。
     包里的注册令牌是**一次性**的，在第一台电脑上用掉就废了。
     换电脑、或者把解压好的文件夹整个拷到别的电脑，都**不会**生效 ——
     这是故意的，防止包被转发混用。在新电脑上请**重新下载一次**。


========================================================
  EveSync 采集端 v0.2.18 · 使用说明
========================================================

一个托盘小程序，跑在「开着 EVE 的那台电脑」上。它做三件事：

  1. 后台读 EVE 的日志，把战斗 / 星系 / 舰船变化同步到态势面板
  2. Ctrl+Alt+S  —— **抓情报**（一个热键，自动识别下面两种）
                     · 在「本地」频道里 Ctrl+A / Ctrl+C → 抓名单
                     · 在「定向扫描」窗口 Ctrl+A / Ctrl+C → 抓 dscan
  3. 后台帮服务器补查缺战绩情报的角色（完全无感，不影响上面两件事）

单文件 exe，不需要装 .NET，也不需要管理员权限。


--------------------------------------------------------
 第一次使用（三步）
--------------------------------------------------------

第 1 步  拿凭据

  ★ 推荐直接从网页下载（不用手工配凭据）：

    浏览器打开   https://shadire.fun
    用 EVE 账号登录  →  点顶部「下载客户端（免配置）」
    →  解压、双击运行。**完。**

  这个包是服务端**按你的账号**现场生成的，里面已经写好了：
    · 服务器地址（从哪下载就连哪）
    · 一个**一次性注册令牌**（15 分钟有效）
  程序首次运行会自己用令牌换正式凭据（**加密保存**）、自己找日志目录，
  你**一个字都不用填**。

  ⚠️ 这个压缩包请勿转发 —— 里面的令牌虽然只能用一次、15 分钟就过期，
     但被别人抢先用掉的话，你得重新下载一次。

  ⚠️ **一台电脑一个包**：包里的令牌是**一次性**的，在第一台电脑上已经用掉了。
     换电脑（或把解压好的文件夹拷过去）都**不会**生效 —— 这是**故意的**，
     就是为了防止包被转发混用。
     要在新电脑上用，就**重新下载一次**这个包（每个包 15 分钟内有效）。

  ---- 手工粘贴凭据（只有管理员手工签发过才用得上，普通用户请忽略）----

  如果管理员单独给你签发了一条凭据，它是一整行，形如：
      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:yyyyyyyyyyyyyyyyyyyy

  右键托盘 →「设置…」→ 粘到「采集端凭证」→ 保存。

  注意：以前那种「邀请码」已经不能用了（自注册已关闭）。


第 2 步  放好文件

  把这三个文件放到同一个目录（比如 D:\EveSync\）：

      EveSyncCollector.exe          ← 主程序
      settings.json                 ← 配置（已预填服务器地址）
      请全部解压出来再运行exe.txt  ← 本文件（解压提示 + 使用说明）


第 3 步  启动

  双击 EveSyncCollector.exe —— **完，不用填任何东西**。
  （程序自己用包里的令牌换正式凭据、自己找日志目录。）

  托盘图标变绿 = 正常工作。


--------------------------------------------------------
 日常使用
--------------------------------------------------------

  什么都不用做         后台自动同步
  Ctrl+Alt+S           **抓情报**（自动识别是名单还是 dscan）
                       先在 EVE 里 Ctrl+A / Ctrl+C：
                         · 在「本地」频道里 → 抓名单
                         · 在「定向扫描」窗口里 → 抓 dscan
                       按完热键不用选，程序自己认。
  右键托盘 → 打开态势面板      看网页
  右键托盘 → 自检…            出问题时先看这个
  右键托盘 → 查看日志          看最近 300 行日志
  右键托盘 → 检查更新…        手动查一次新版本

  热键被占用会自动改绑（会弹气泡告知改成什么了）。


--------------------------------------------------------
 自动更新（v0.2.17 起）
--------------------------------------------------------

  程序每 30 分钟自己查一次服务端有没有新版本，有新版本就
  **在后台下载好、校验好**，然后**弹气泡问你**要不要重启切换。

  你点气泡 = 重启；不想动就关掉气泡，下次再问（不会自己重启）。
  确认后托盘图标会闪一下，随即用新版本重新起来 —— 热键、设置、
  自定义热键全部保持不变。

  想手动查：右键托盘 →「检查更新…」。

  更新采用「新旧版本目录并存」：新版本下在
    %LOCALAPPDATA%\EveSync\client\v<版本>\
  不会覆盖正在运行的文件，所以更新过程中断也不会有事。
  旧版本目录会保留最近两个，万一新版有问题还能退回去。

  出问题时最快的止血办法：把 %LOCALAPPDATA%\EveSync\client\ 里
  新版本目录整个删掉，再运行老版本即可（或重新下载完整包）。


--------------------------------------------------------
 出问题了
--------------------------------------------------------

  1. 先点「自检…」—— 它会告诉你是哪一环断了
     （日志目录 / 剪贴板 / 网络 / 凭据）

  2. 常见情况：

     托盘图标是灰的
        → 多半是凭据没填或已失效，重新去网页签发一个

     提示「采集端版本过低，请更新」
        → 服务端已不再接受旧版本上报（0.2.18 以前）。
          到面板右上角「下载采集端」重新下载，解压后覆盖旧 exe 再启动；
          设置、热键与凭据都会保留。

     抓名单提示「剪贴板里不是文本内容」
        → 你复制的东西不对，回 EVE 里重新全选复制

     面板上看不到数据
        → 先在 EVE 里跳一次星系、打一场架
          （日志是「有事才写」的，光登录站着不会有数据）

  日志与设置位置：
      %LOCALAPPDATA%\EveSync\
      （在文件管理器地址栏粘贴这个路径即可）


--------------------------------------------------------
 隐私
--------------------------------------------------------

  · 只读日志文件，不注入游戏、不读内存
  · 聊天内容一律不上报 —— 只上报符合情报格式的行
    （星系 + 角色 + 舰船/NV），普通聊天、私聊一个字都不传
  · dscan 只上报舰船，天体 / 空间站 / 集装箱 / 移动牵引装置等一律过滤
  · 凭据绑定到个人、并绑定到**这台电脑**（DPAPI 加密），可由管理员随时吊销


--------------------------------------------------------
 版本
--------------------------------------------------------

  本包为 v0.2.18。
  启动日志与「自检…」里都会显示版本号，排查时报这个号即可。

    0.2.0   剪贴板改原生 Win32、热键冲突自动改绑、名单归属改剪贴板优先
    0.2.3   dscan（只报舰船 + 按吨位排序）、声望判断与 KB 查询挪到客户端、
            凭据改网页签发
    0.2.4   默认服务器地址改为 https://shadire.fun；
            本地频道里没有敌对时也会上报人数（让面板及时刷新，不再看起来像过期）
    0.2.5   修复「抓名单/dscan 时星系被写错」：以前会用一条**几小时前**的
            「频道更换为本地」记录去覆盖当前星系，现在超过 60 分钟一律不采用
    0.2.7   彻底删掉星系覆盖层 —— **星系现在只由日志尾随器决定**
    0.2.8   ① 星系缓存只许前进（修「不管在哪个星系抓名单都被归到同一个旧星系」）
            ② 首次运行只跟新增日志（不再把整份历史传一遍）
            ③ 去掉「版本升级后重读历史聊天」
    0.2.9   ★ **热键合并成一个**：不用再分「抓名单」和「抓 dscan」——
              按热键后自动识别剪贴板里是哪一种，直接抓对应的那个。
              （判据：dscan 是 Tab 分隔的 4 列、首列是数字；名单是纯名字。）
            ★ **默认热键改为 `Ctrl+Alt+S`**（旧版是 `Ctrl+Shift+L`）。
            ★ **删掉「窗口标题兜底识别」** —— 实测 EVE 的窗口标题里
              根本没有星系名（形如 `EVE - 角色名`），这个功能从来没生效过。
            ★ **启动后自动开始监听**，不再需要勾选（设置里那两个勾选框已去掉）。
            ★ 设置界面里**只剩一个热键输入框**。
            ★ **凭据改为加密存储**（Windows DPAPI）。旧版保存的**明文凭据不再读取**，
              需要重新配一次（当时是去网页「我的凭据」签发后粘贴；该入口后来已删除，
              现在统一走「下载客户端（免配置）」）。
            ★ **过滤两类噪声聊天**：`HyperNet offer: xxx`（抽奖播报）与
              `xxx SKIN`（涂装名）—— 它们含舰船名，以前会被当成情报上报。
            ★ **修复「上报很慢」**：日志原来是**每写一行都开关一次文件**（还持全局锁），
              而程序在桌面上跑时杀毒软件会扫描每次写入 —— 实测能让整个程序卡住
              几十秒（连与网络无关的轮询循环都停了）。现在改为**常驻文件句柄**。
            ★ **下载即用**：从网页「下载客户端（免配置）」拿到的包里带了
              服务器地址 + 一次性注册令牌 → 首次运行自动换凭据（加密保存）、
              自动找日志目录，**不用填任何东西**。
            ★ 包体从 68 MB 精简到 63 MB（去掉调试符号与多余的语言资源）。
    0.2.10  ★ **修复「下载即用」对老用户失效**：本机**已经有配置**（装过旧客户端）时，
              以前包里的**一次性注册令牌会被静默忽略** → 采集端继续拿旧凭据上报 →
              一直提示「客户端凭据无效，请重新注册」，而服务端那条令牌其实
              **从来没被兑换过**。现在令牌会被**单独取出来使用**
              （本机的日志目录、热键等个性化设置保持不变），并记录「这个令牌已兑换过」，
              不会每次启动都重复兑换。
    0.2.11  ★ **只上报「安装之后」的新增数据**：首次运行会记下**安装时刻**，
              早于它的日志一律**丢弃**，不再上传。
              （例：22:47 首次运行 → 只传 22:47 之后产生的内容。）
              以前只靠「按行号预置水位」，而那招只覆盖当前最新的若干个文件 ——
              老文件后来被追加、重新进入扫描窗口时会**从第 0 行整份重读**，
              实测一次性灌了 780 条 40 小时前的记录，把服务器压到 504。
              现在有**时间戳闸门**兜底，行号水位怎么回退都不会再灌存量。
    0.2.12  ★ **修复「查看日志」打不开**：点「查看日志」会报
              `(读取日志失败：The process cannot access the file '…\logs\collector.log'
               because it is being used by another process.)`
              根因是 0.2.9 那次「日志句柄常驻」的性能优化引入的回归 ——
              写句柄一直占着文件，而读日志用的 `File.ReadAllLines` 只声明「允许别人读」，
              但 Windows 要求**新句柄必须允许已存在句柄的权限**（我们持有的是**写**句柄）
              → 被拒。现在读写两侧都用 `FileShare.ReadWrite`，可以一边写一边看。
    0.2.13  ★ **修复「按一次热键要等十几分钟才提交名单」**：以前「查 KB」是在
              **上报名单之前**同步跑的，而且单次请求超时 25 秒、没有任何总时长上限
              → 耗时 = 25 秒 × 需关注人数。实测 41 个人要 **17 分钟**（战斗早结束了），
              哪怕只有 **1** 个人要查，也要白等 26 秒。
              现在改成：**先把名单报上去**（「谁现在就在这个星系」时效性最强），
              再补查 KB，并且**整个 KB 阶段最多 15 秒**、单次请求最多 5 秒，
              超时就放弃剩下的人 —— 无论名单多长，都不会再拖住上报。
            ★ 顺便**把 KB 失败的原因写进日志**：以前失败被静默吞掉，
              日志里只有「已查 KB 0 人」，完全看不出是超时、被拒还是解析失败。
    0.2.14  ★ **「名单已提交」气泡改到名单上报的那一刻就弹**（用户要求）。
              v0.2.13 虽然已经把数据链路改成「先报名单、再补 KB」，
              但气泡仍排在查 KB **之后** —— 最坏要等 15 秒 KB 预算跑完才弹。
              现在按下热键后名单一报上去就立刻有反馈；
              KB 查完补报时**不再弹第二个气泡**（只写日志）。
              上报内容、过滤规则、KB 预算与 v0.2.13 完全一致，**行为零变化**。
    0.2.15  ★ **后台自动帮服务器补查「缺战绩情报」的角色**（用户提出）。
              原来只有按热键时才查 KB，而且只查**你本地名单里的人**；
              只在击杀邮件里出现过、从没进过名单的角色，永远没有战绩/联盟数据。
              现在客户端每 2 分钟向服务器领一批「需要查 KB 的角色」，
              在本机查 zKillboard 后回传（各客户端用各自的 IP，不给服务器添压力）。
              ★ 完全后台进行，**不影响**热键、日志上报与战斗记录；
                日志里会出现「KB 任务：领 N → 回传 M」，属正常。
              ★ 老服务器没有这个功能 → 自动跳过，不会报错。
    0.2.16  ★ **名单上报再提速**（用户反馈「还是不够快」，热键 → 气泡实测 3 秒）。
              · 服务端补了数据库索引 + 客户端加了两层缓存：
                同一个星系反复按热键时，名单里绝大部分人的声望判断
                直接命中本地缓存，**不再等任何网络请求**。
              · 声望名单改为后台每 4 分钟预热一次，按热键时基本是热的。
              · 日志新增一行「名单耗时：合计 …（剪贴板/归属/声望/ESI 过滤/提交）」，
                哪一段慢了一眼就能看出来。
              ★ 上报内容、过滤规则、KB 预算与 v0.2.15 完全一致，**行为零变化**。
    0.2.17  ★ **自动更新**（用户要求「免得每次都需要重新下载」）。
              程序每 30 分钟自己查一次，有新版就在后台下载、双校验 sha256，
              就绪后**弹气泡问你要不要重启切换** —— 未经你同意绝不自动重启。
              新版落在独立目录，老版本目录保留最近两个，可随时退回。
              ★ 热键、设置、日志目录、凭据在更新后**全部不变**。
            ★ **修复「下载后不解压直接双击 exe」导致无法注册**：现在这种运行方式
              会被识别出来，气泡与自检里明确提示「请先解压再运行」，
              并给出网页入口（而不是让你满世界找配置项）。
              ⚠️ **这一版需要你手动重新下载一次** —— 自动更新链路本身得先装上，
              之后的所有升级才全自动。
    0.2.18  版本号推进，**行为零变化**（采集端源码与 v0.2.17 完全一致）。
              这一版用于验证「新版推送」：v0.2.17 发布时只确认过更新端点能返回
              当时的包，还没验证过「版本变更后能不能正常推送到你电脑上」。
              如果你电脑上已经装着 v0.2.17 并开着，这一版应该会在后台
              自动下载好、弹气泡问你要不要重启切换 —— 那就是推送成功了。
              之后的所有升级都会这样自动完成，不用再手动下载。
            ★ 服务端现在**拒绝 0.2.18 以前的版本上报**（旧版会一次性重发
              几千条历史聊天，把服务器压垮）。旧版会在气泡与自检里提示升级。
