1 var __create = Object.create;
2 var __defProp = Object.defineProperty;
3 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4 var __getOwnPropNames = Object.getOwnPropertyNames;
5 var __getProtoOf = Object.getPrototypeOf;
6 var __hasOwnProp = Object.prototype.hasOwnProperty;
7 var __export = (target, all) => {
8 for (var name in all)
9 __defProp(target, name, { get: all[name], enumerable: true });
10 };
11 var __copyProps = (to, from, except, desc) => {
12 if (from && typeof from === "object" || typeof from === "function") {
13 for (let key of __getOwnPropNames(from))
14 if (!__hasOwnProp.call(to, key) && key !== except)
15 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16 }
17 return to;
18 };
19 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20 // If the importer is in node compatibility mode or this is not an ESM
21 // file that has been converted to a CommonJS file using a Babel-
22 // compatible transform (i.e. "__esModule" has not been set), then set
23 // "default" to the CommonJS "module.exports" for node compatibility.
24 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25 mod
26 ));
27
28 // server/index.ts
29 var import_express2 = __toESM(require("express"), 1);
30
31 // server/routes.ts
32 var import_http = require("http");
33 var import_fs2 = __toESM(require("fs"), 1);
34 var import_path2 = __toESM(require("path"), 1);
35 var import_adm_zip = __toESM(require("adm-zip"), 1);
36
37 // shared/schema.ts
38 var schema_exports = {};
39 __export(schema_exports, {
40 deviceBrands: () => deviceBrands,
41 deviceComponents: () => deviceComponents,
42 deviceModels: () => deviceModels,
43 favorites: () => favorites,
44 guideCompatibility: () => guideCompatibility,
45 insertDeviceBrandSchema: () => insertDeviceBrandSchema,
46 insertDeviceComponentSchema: () => insertDeviceComponentSchema,
47 insertDeviceModelSchema: () => insertDeviceModelSchema,
48 insertFavoriteSchema: () => insertFavoriteSchema,
49 insertGuideCompatibilitySchema: () => insertGuideCompatibilitySchema,
50 insertRepairGuideSchema: () => insertRepairGuideSchema,
51 insertTroubleshootingFlowSchema: () => insertTroubleshootingFlowSchema,
52 insertUserSchema: () => insertUserSchema,
53 repairGuides: () => repairGuides,
54 sessions: () => sessions,
55 troubleshootingFlows: () => troubleshootingFlows,
56 users: () => users
57 });
58 var import_drizzle_orm = require("drizzle-orm");
59 var import_pg_core = require("drizzle-orm/pg-core");
60 var import_zod = require("zod");
61 var repairGuides = (0, import_pg_core.pgTable)("repair_guides", {
62 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
63 title: (0, import_pg_core.text)("title").notNull(),
64 description: (0, import_pg_core.text)("description").notNull(),
65 deviceType: (0, import_pg_core.text)("device_type").notNull(),
66 // "laptop" | "desktop"
67 category: (0, import_pg_core.text)("category").notNull(),
68 // "hardware" | "software" | "cleaning" | "upgrades"
69 difficulty: (0, import_pg_core.text)("difficulty").notNull(),
70 // "easy" | "medium" | "hard"
71 estimatedTime: (0, import_pg_core.text)("estimated_time").notNull(),
72 // "30-45 min"
73 toolsRequired: (0, import_pg_core.json)("tools_required").$type().notNull(),
74 safetyWarnings: (0, import_pg_core.json)("safety_warnings").$type().notNull(),
75 steps: (0, import_pg_core.json)("steps").$type().notNull(),
76 alternativeSolutions: (0, import_pg_core.text)("alternative_solutions"),
77 imageUrl: (0, import_pg_core.text)("image_url").notNull(),
78 viewCount: (0, import_pg_core.integer)("view_count").default(0),
79 downloadCount: (0, import_pg_core.integer)("download_count").default(0),
80 isBookmarked: (0, import_pg_core.boolean)("is_bookmarked").default(false)
81 });
82 var troubleshootingFlows = (0, import_pg_core.pgTable)("troubleshooting_flows", {
83 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
84 type: (0, import_pg_core.text)("type").notNull(),
85 // "power" | "performance" | "display"
86 title: (0, import_pg_core.text)("title").notNull(),
87 description: (0, import_pg_core.text)("description").notNull(),
88 steps: (0, import_pg_core.json)("steps").$type().notNull()
89 });
90 var deviceComponents = (0, import_pg_core.pgTable)("device_components", {
91 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
92 name: (0, import_pg_core.text)("name").notNull(),
93 description: (0, import_pg_core.text)("description").notNull(),
94 deviceType: (0, import_pg_core.text)("device_type").notNull(),
95 category: (0, import_pg_core.text)("category").notNull(),
96 safetyNotes: (0, import_pg_core.json)("safety_notes").$type().notNull()
97 });
98 var insertRepairGuideSchema = import_zod.z.object({
99 title: import_zod.z.string(),
100 description: import_zod.z.string(),
101 deviceType: import_zod.z.string(),
102 category: import_zod.z.string(),
103 difficulty: import_zod.z.string(),
104 estimatedTime: import_zod.z.string(),
105 toolsRequired: import_zod.z.array(import_zod.z.string()),
106 safetyWarnings: import_zod.z.array(import_zod.z.string()),
107 steps: import_zod.z.array(import_zod.z.object({
108 stepNumber: import_zod.z.number(),
109 title: import_zod.z.string(),
110 description: import_zod.z.string(),
111 imageUrl: import_zod.z.string().optional(),
112 phase: import_zod.z.string().optional(),
113 subSteps: import_zod.z.array(import_zod.z.string()).optional(),
114 torqueSpec: import_zod.z.string().optional(),
115 toolRequired: import_zod.z.string().optional(),
116 checkpoints: import_zod.z.array(import_zod.z.string()).optional(),
117 notes: import_zod.z.array(import_zod.z.string()).optional(),
118 warnings: import_zod.z.array(import_zod.z.string()).optional(),
119 tips: import_zod.z.array(import_zod.z.string()).optional()
120 })),
121 alternativeSolutions: import_zod.z.string().optional().nullable(),
122 imageUrl: import_zod.z.string(),
123 downloadCount: import_zod.z.number().optional()
124 });
125 var insertTroubleshootingFlowSchema = import_zod.z.object({
126 type: import_zod.z.string(),
127 title: import_zod.z.string(),
128 description: import_zod.z.string(),
129 steps: import_zod.z.array(import_zod.z.object({
130 id: import_zod.z.string(),
131 question: import_zod.z.string(),
132 answers: import_zod.z.array(import_zod.z.object({
133 text: import_zod.z.string(),
134 nextStepId: import_zod.z.string().optional(),
135 solutionId: import_zod.z.string().optional()
136 }))
137 }))
138 });
139 var insertDeviceComponentSchema = import_zod.z.object({
140 name: import_zod.z.string(),
141 description: import_zod.z.string(),
142 deviceType: import_zod.z.string(),
143 category: import_zod.z.string(),
144 safetyNotes: import_zod.z.array(import_zod.z.string())
145 });
146 var sessions = (0, import_pg_core.pgTable)(
147 "sessions",
148 {
149 sid: (0, import_pg_core.varchar)("sid").primaryKey(),
150 sess: (0, import_pg_core.jsonb)("sess").notNull(),
151 expire: (0, import_pg_core.timestamp)("expire").notNull()
152 },
153 (table) => [(0, import_pg_core.index)("IDX_session_expire").on(table.expire)]
154 );
155 var users = (0, import_pg_core.pgTable)("users", {
156 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
157 email: (0, import_pg_core.varchar)("email").unique().notNull(),
158 password: (0, import_pg_core.text)("password").notNull(),
159 firstName: (0, import_pg_core.varchar)("first_name"),
160 lastName: (0, import_pg_core.varchar)("last_name"),
161 profileImageUrl: (0, import_pg_core.varchar)("profile_image_url"),
162 role: (0, import_pg_core.varchar)("role").default("user"),
163 createdAt: (0, import_pg_core.timestamp)("created_at").defaultNow(),
164 updatedAt: (0, import_pg_core.timestamp)("updated_at").defaultNow()
165 });
166 var favorites = (0, import_pg_core.pgTable)("favorites", {
167 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
168 userId: (0, import_pg_core.varchar)("user_id").notNull().references(() => users.id, { onDelete: "cascade" }),
169 itemType: (0, import_pg_core.text)("item_type").notNull(),
170 itemId: (0, import_pg_core.varchar)("item_id").notNull(),
171 itemTitle: (0, import_pg_core.text)("item_title").notNull(),
172 itemImageUrl: (0, import_pg_core.text)("item_image_url"),
173 createdAt: (0, import_pg_core.timestamp)("created_at").defaultNow()
174 });
175 var deviceBrands = (0, import_pg_core.pgTable)("device_brands", {
176 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
177 name: (0, import_pg_core.varchar)("name").notNull(),
178 deviceType: (0, import_pg_core.text)("device_type").notNull(),
179 logoUrl: (0, import_pg_core.varchar)("logo_url"),
180 supportLevel: (0, import_pg_core.varchar)("support_level").notNull().default("community"),
181 popularity: (0, import_pg_core.integer)("popularity").default(0),
182 createdAt: (0, import_pg_core.timestamp)("created_at").defaultNow()
183 });
184 var deviceModels = (0, import_pg_core.pgTable)("device_models", {
185 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
186 brandId: (0, import_pg_core.varchar)("brand_id").notNull().references(() => deviceBrands.id),
187 name: (0, import_pg_core.varchar)("name").notNull(),
188 series: (0, import_pg_core.varchar)("series"),
189 year: (0, import_pg_core.integer)("year"),
190 specifications: (0, import_pg_core.jsonb)("specifications"),
191 commonIssues: (0, import_pg_core.jsonb)("common_issues").default(import_drizzle_orm.sql`'[]'::jsonb`),
192 guideCount: (0, import_pg_core.integer)("guide_count").default(0),
193 createdAt: (0, import_pg_core.timestamp)("created_at").defaultNow()
194 });
195 var guideCompatibility = (0, import_pg_core.pgTable)("guide_compatibility", {
196 id: (0, import_pg_core.varchar)("id").primaryKey().default(import_drizzle_orm.sql`gen_random_uuid()`),
197 guideId: (0, import_pg_core.varchar)("guide_id").notNull().references(() => repairGuides.id),
198 modelId: (0, import_pg_core.varchar)("model_id").notNull().references(() => deviceModels.id),
199 compatibility: (0, import_pg_core.varchar)("compatibility").notNull().default("compatible"),
200 notes: (0, import_pg_core.text)("notes"),
201 createdAt: (0, import_pg_core.timestamp)("created_at").defaultNow()
202 });
203 var insertUserSchema = import_zod.z.object({
204 email: import_zod.z.string().email(),
205 password: import_zod.z.string(),
206 firstName: import_zod.z.string().optional().nullable(),
207 lastName: import_zod.z.string().optional().nullable(),
208 profileImageUrl: import_zod.z.string().optional().nullable(),
209 role: import_zod.z.string().optional().default("user")
210 });
211 var insertFavoriteSchema = import_zod.z.object({
212 itemType: import_zod.z.string(),
213 itemId: import_zod.z.string(),
214 itemTitle: import_zod.z.string(),
215 itemImageUrl: import_zod.z.string().optional().nullable()
216 });
217 var insertDeviceBrandSchema = import_zod.z.object({
218 name: import_zod.z.string(),
219 deviceType: import_zod.z.string(),
220 logoUrl: import_zod.z.string().optional().nullable(),
221 supportLevel: import_zod.z.string().default("community"),
222 popularity: import_zod.z.number().optional().default(0)
223 });
224 var insertDeviceModelSchema = import_zod.z.object({
225 brandId: import_zod.z.string(),
226 name: import_zod.z.string(),
227 series: import_zod.z.string().optional().nullable(),
228 year: import_zod.z.number().optional().nullable(),
229 specifications: import_zod.z.any().optional().nullable(),
230 commonIssues: import_zod.z.any().optional().nullable(),
231 guideCount: import_zod.z.number().optional().default(0)
232 });
233 var insertGuideCompatibilitySchema = import_zod.z.object({
234 guideId: import_zod.z.string(),
235 modelId: import_zod.z.string(),
236 compatibility: import_zod.z.string().default("compatible"),
237 notes: import_zod.z.string().optional().nullable()
238 });
239
240 // server/db.ts
241 var import_serverless = require("@neondatabase/serverless");
242 var import_neon_serverless = require("drizzle-orm/neon-serverless");
243 var import_ws = __toESM(require("ws"), 1);
244 import_serverless.neonConfig.webSocketConstructor = import_ws.default;
245 var pool = process.env.DATABASE_URL ? new import_serverless.Pool({ connectionString: process.env.DATABASE_URL }) : null;
246 var db = pool ? (0, import_neon_serverless.drizzle)({ client: pool, schema: schema_exports }) : null;
247
248 // server/storage.ts
249 var import_drizzle_orm2 = require("drizzle-orm");
250 var import_bcrypt = __toESM(require("bcrypt"), 1);
251
252 // server/seed-data.ts
253 var curatedRepairGuides = [
254 // ==========================================
255 // HARDWARE CATEGORY (LAPTOP & DESKTOP)
256 // ==========================================
257 {
258 title: "Laptop Screen & Display Panel Replacement",
259 description: "Step-by-step technician procedure for disassembling the display bezel, disconnecting the 30/40-pin eDP cable, and mounting a replacement IPS or OLED screen panel.",
260 deviceType: "laptop",
261 category: "hardware",
262 difficulty: "hard",
263 estimatedTime: "45-60 min",
264 toolsRequired: ["Phillips #00 Screwdriver", "Plastic Spudger / Prying Pick", "Anti-Static Tweezers", "Double-Sided Bezel Adhesive Strips", "ESD Wrist Strap"],
265 safetyWarnings: [
266 "Disconnect main battery and AC power before touching any display ribbon cables to prevent blowing the backlight fuse on the logic board.",
267 "LCD/OLED panels are fragile glass substrates; never exert point pressure on corners.",
268 "Discharge static electricity prior to handling the eDP ribbon connector."
269 ],
270 steps: [
271 {
272 stepNumber: 1,
273 title: "Power Isolation & Battery Disconnection",
274 description: "Shut down the laptop completely. Remove the bottom chassis cover screws and unplug the internal battery connector from the motherboard.",
275 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800",
276 tips: ["Hold the power button for 15 seconds after disconnecting the battery to discharge residual board capacitance."]
277 },
278 {
279 stepNumber: 2,
280 title: "Display Bezel Separation",
281 description: "Insert a thin plastic spudger between the bezel and the back cover starting at the top corner. Gently release the perimeter retention clips working downwards toward the hinges.",
282 imageUrl: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
283 warnings: ["Be careful near the integrated webcam and microphone array at the top center to avoid damaging the ribbon cable."]
284 },
285 {
286 stepNumber: 3,
287 title: "Screen Panel Removal & Cable Detachment",
288 description: "Remove the four mounting screws or slowly pull the elastic adhesive pull-tabs. Carefully tilt the display panel forward and lift the metal locking bail on the 30-pin/40-pin eDP connector to slide it out.",
289 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
290 notes: ["Inspect the connector pins under magnification for any oxidation or bent pins."]
291 },
292 {
293 stepNumber: 4,
294 title: "New Panel Installation & Alignment Test",
295 description: "Align the new replacement panel, securely latch the eDP connector with adhesive tape, reconnect the battery for a quick post-test, and snap the bezel back into position.",
296 imageUrl: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800",
297 tips: ["Test backlight levels, refresh rate (e.g. 60Hz/120Hz/144Hz), and color calibration before applying final bezel adhesive."]
298 }
299 ],
300 alternativeSolutions: "If external displays work through HDMI/DisplayPort, verify if the issue is a damaged LVDS/eDP cable rather than a cracked panel.",
301 imageUrl: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
302 viewCount: 1420,
303 downloadCount: 380
304 },
305 {
306 title: "Laptop Battery Replacement & Calibration",
307 description: "Safely remove swollen or degraded lithium-ion polymer battery packs, install OEM-certified cells, and perform standard charging calibration cycles.",
308 deviceType: "laptop",
309 category: "hardware",
310 difficulty: "easy",
311 estimatedTime: "20-30 min",
312 toolsRequired: ["Phillips #00 & Torx T5 Screwdrivers", "Plastic Opening Tool", "Safety Glasses", "Fire-Safe Disposal Container"],
313 safetyWarnings: [
314 "Never puncture, bend, or apply metallic tools to lithium polymer battery pouches.",
315 "If the battery is swollen, do not compress it and work in a well-ventilated space."
316 ],
317 steps: [
318 {
319 stepNumber: 1,
320 title: "Chassis Opening & Visual Inspection",
321 description: "Remove bottom enclosure screws (noting varying screw lengths). Carefully pry off the cover to reveal the internal battery assembly.",
322 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800"
323 },
324 {
325 stepNumber: 2,
326 title: "Battery Cable Disconnection",
327 description: "Gently disconnect the multi-pin battery wire harness from the motherboard socket using a plastic spudger pulling parallel to the board.",
328 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
329 },
330 {
331 stepNumber: 3,
332 title: "Cell Removal & New Pack Installation",
333 description: "Remove battery bracket screws or pull release adhesive strips. Seat the fresh battery pack, screw down securely, and plug in the power harness.",
334 imageUrl: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800",
335 tips: ["Charge to 100% uninterrupted, then discharge to 5% before recharging to calibrate the battery gas gauge IC."]
336 }
337 ],
338 alternativeSolutions: "Generate a Windows battery report (`powercfg /batteryreport`) or check macOS System Information to check actual cycle count and full charge capacity before replacing.",
339 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800",
340 viewCount: 2150,
341 downloadCount: 512
342 },
343 {
344 title: "Desktop Dedicated GPU Installation & PCIe Reseating",
345 description: "Install, upgrade, or reseat high-performance PCI Express graphics cards, including supplementary 8-pin / 12VHPWR PCIe power cabling and anti-sag bracket installation.",
346 deviceType: "desktop",
347 category: "hardware",
348 difficulty: "easy",
349 estimatedTime: "20-30 min",
350 toolsRequired: ["Magnetic Phillips #2 Screwdriver", "PCIe Power Cables / 12VHPWR Adapter", "GPU Anti-Sag Support Bracket"],
351 safetyWarnings: [
352 "Switch off the PSU rocker switch and unplug the AC wall cable before opening desktop side panels.",
353 "Ensure 12VHPWR connectors are seated 100% flush with zero gap to prevent connector overheating."
354 ],
355 steps: [
356 {
357 stepNumber: 1,
358 title: "PCIe Slot Preparation & Bracket Removal",
359 description: "Unscrew and remove the rear expansion slot covers corresponding to your GPU width (typically 2 to 3.5 slots). Push open the motherboard PCIe slot retention latch.",
360 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
361 },
362 {
363 stepNumber: 2,
364 title: "Inserting the Graphics Card",
365 description: "Align the GPU with the top PCIe x16 slot (connected directly to CPU PCIe lanes) and press firmly downward until the retention latch clicks into place.",
366 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
367 tips: ["Always use the topmost PCIe x16 slot for full bandwidth and minimal latency."]
368 },
369 {
370 stepNumber: 3,
371 title: "Securing Screws & Power Routing",
372 description: "Secure the GPU bracket to the chassis frame with thumb screws. Connect dedicated PCIe 6+2 pin cables or 16-pin 12V-2x6 cable. Install the anti-sag bracket under the card corner.",
373 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
374 }
375 ],
376 alternativeSolutions: "If display output is absent, verify monitor DP/HDMI cable is connected directly to the GPU ports, NOT the motherboard I/O.",
377 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800",
378 viewCount: 1890,
379 downloadCount: 460
380 },
381 {
382 title: "Desktop Power Supply (PSU) Replacement & Modular Cable Routing",
383 description: "Replace faulty, buzzing, or under-powered desktop power supplies with modern ATX 3.0 / PCIe 5.0 certified modular units.",
384 deviceType: "desktop",
385 category: "hardware",
386 difficulty: "medium",
387 estimatedTime: "45-60 min",
388 toolsRequired: ["Phillips #2 Screwdriver", "Velcro Cable Ties / Flush Cutters", "PSU Paperclip Jump Tester / Digital Tester"],
389 safetyWarnings: [
390 "NEVER open or disassemble the PSU internal metal housing; high-voltage capacitors hold lethal charge for days.",
391 "NEVER mix modular cables between different PSU brands or models as pinouts vary and can fry components."
392 ],
393 steps: [
394 {
395 stepNumber: 1,
396 title: "Unplugging Component Power Cables",
397 description: "Disconnect the 24-pin Motherboard connector, 8-pin CPU EPS cables (top-left of motherboard), PCIe GPU power cables, and SATA/Molex peripherals.",
398 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
399 },
400 {
401 stepNumber: 2,
402 title: "PSU Unmounting & Removal",
403 description: "Remove the four mounting screws on the rear of the PC case. Slide the power supply unit out from the PSU basement or side chamber.",
404 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
405 },
406 {
407 stepNumber: 3,
408 title: "New PSU Setup & Reconnection",
409 description: "Plug only the required modular cables into the new PSU, slide into the case with the intake fan facing the dust filter vent, secure with screws, and reconnect all motherboard and GPU headers.",
410 imageUrl: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800"
411 }
412 ],
413 alternativeSolutions: "Use a paperclip jump test (shorting green pin 16 to ground pin 17 on the 24-pin ATX connector) to verify fan spin before declaring a PSU dead.",
414 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
415 viewCount: 1250,
416 downloadCount: 310
417 },
418 {
419 title: "Laptop Keyboard & Backlight Membrane Replacement",
420 description: "Replace liquid-damaged, sticky, or missing laptop keyboard assemblies, including ribbon flex seating and riveted palmrest swaps.",
421 deviceType: "laptop",
422 category: "hardware",
423 difficulty: "hard",
424 estimatedTime: "60-90 min",
425 toolsRequired: ["Phillips #00 Screwdriver", "Plastic Spudger", "Tweezers", "Hot Air Gun or Soldering Iron for plastic rivets (if applicable)"],
426 safetyWarnings: [
427 "Disconnect battery before unlatching keyboard ZIF (Zero Insertion Force) ribbon sockets.",
428 "Work delicately around trackpad and keyboard ribbon cables to prevent tearing fragile copper traces."
429 ],
430 steps: [
431 {
432 stepNumber: 1,
433 title: "Disassemble Bottom Cover & Internal Components",
434 description: "Remove bottom cover, battery, cooling fans, and motherboard if the keyboard is mounted beneath the logic board tray.",
435 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800"
436 },
437 {
438 stepNumber: 2,
439 title: "Keyboard Plate Separation",
440 description: "Unscrew keyboard retaining brackets or gently pry melted plastic retaining studs. Lift out the defective keyboard assembly.",
441 imageUrl: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800"
442 },
443 {
444 stepNumber: 3,
445 title: "Install Replacement & Ribbon Seating",
446 description: "Align the new keyboard into the palmrest frame, secure retention screws, and insert the data and backlight ribbon cables fully into the ZIF connectors before clamping the latch.",
447 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
448 }
449 ],
450 alternativeSolutions: "For single stuck or broken keycaps, individual scissor switches and keycaps can often be replaced without removing the whole assembly.",
451 imageUrl: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
452 viewCount: 1680,
453 downloadCount: 420
454 },
455 // ==========================================
456 // SOFTWARE CATEGORY (LAPTOP & DESKTOP)
457 // ==========================================
458 {
459 title: "Clean Windows 11 / Windows 10 OS Installation via UEFI USB",
460 description: "Complete guide to creating a bootable GPT UEFI installation USB media, configuring BIOS Secure Boot / TPM 2.0, partitioning storage, and completing a clean OS deployment.",
461 deviceType: "laptop",
462 category: "software",
463 difficulty: "medium",
464 estimatedTime: "30-45 min",
465 toolsRequired: ["8GB+ USB 3.0 Flash Drive", "Working PC for Media Creation Tool / Rufus", "Target Device"],
466 safetyWarnings: [
467 "A clean installation will erase all data on the target drive partition. Ensure critical files are backed up beforehand."
468 ],
469 steps: [
470 {
471 stepNumber: 1,
472 title: "Prepare Bootable Media",
473 description: "Download the official Microsoft Media Creation Tool or use Rufus to flash the Windows ISO onto a USB drive formatted with GPT partition scheme for UEFI target system.",
474 imageUrl: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800",
475 tips: ["Disable CSM (Compatibility Support Module) in BIOS for pure UEFI boot speed."]
476 },
477 {
478 stepNumber: 2,
479 title: "Configure BIOS/UEFI Settings",
480 description: "Power on target system while tapping Boot Menu key (F12, F11, F8, or Esc depending on brand). Ensure Secure Boot and TPM 2.0 / fTPM are enabled in BIOS settings.",
481 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800"
482 },
483 {
484 stepNumber: 3,
485 title: "Partition Drive & Run Setup",
486 description: "Select 'Custom: Install Windows only (advanced)'. Delete old OEM/system partitions on Drive 0 until 'Unallocated Space' remains, select it, and click Next to let Windows configure EFI, MSR, and Primary NTFS partitions.",
487 imageUrl: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800"
488 },
489 {
490 stepNumber: 4,
491 title: "Post-Install Drivers & Updates",
492 description: "Run Windows Update until no pending updates remain. Install manufacturer chipset, GPU, audio, and Wi-Fi drivers.",
493 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800"
494 }
495 ],
496 alternativeSolutions: "If you want to keep files and applications, perform an In-Place Upgrade or Windows Reset ('Keep my files') via Settings > System > Recovery.",
497 imageUrl: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800",
498 viewCount: 3100,
499 downloadCount: 890
500 },
501 {
502 title: "Blue Screen of Death (BSOD) Minidump Analysis & Driver Conflict Resolution",
503 description: "Diagnose kernel stop codes (CRITICAL_PROCESS_DIED, WHEA_UNCORRECTABLE_ERROR, IRQL_NOT_LESS_OR_EQUAL, MEMORY_MANAGEMENT) using WinDbg and BlueScreenView.",
504 deviceType: "desktop",
505 category: "software",
506 difficulty: "medium",
507 estimatedTime: "25-40 min",
508 toolsRequired: ["WinDbg (Windows Debugger)", "BlueScreenView / WhoCrashed", "Display Driver Uninstaller (DDU)"],
509 safetyWarnings: [
510 "Always reboot into Windows Safe Mode before running Display Driver Uninstaller (DDU) to prevent driver hook conflicts."
511 ],
512 steps: [
513 {
514 stepNumber: 1,
515 title: "Locate Memory Dump Files",
516 description: "Navigate to `C:\\Windows\\Minidump` to locate recent `.dmp` crash files generated during the Blue Screen event.",
517 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800"
518 },
519 {
520 stepNumber: 2,
521 title: "Analyze Crash Stack with WinDbg",
522 description: "Open the `.dmp` file in WinDbg and run the automated command `!analyze -v`. Inspect the `MODULE_NAME`, `FAULTING_IP`, and `PROCESS_NAME` to identify the failing driver (e.g. nvlddmkm.sys, ntoskrnl.exe, tcpip.sys).",
523 imageUrl: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800"
524 },
525 {
526 stepNumber: 3,
527 title: "Clean Driver Reinstallation",
528 description: "Boot into Safe Mode, run DDU to completely purge residual graphics or chipset driver files, reboot, and install clean WHQL-certified drivers from the manufacturer.",
529 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800"
530 }
531 ],
532 alternativeSolutions: "Run Windows Memory Diagnostic (`mdsched.exe`) or MemTest86 to rule out faulty physical RAM modules when MEMORY_MANAGEMENT stop codes occur.",
533 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800",
534 viewCount: 2450,
535 downloadCount: 680
536 },
537 {
538 title: "macOS Internet Recovery & Fresh Sequoia / Sonoma Installation",
539 description: "Step-by-step procedure for Apple Silicon (M1/M2/M3) and Intel Macs to wipe APFS volumes and reinstall macOS cleanly via Recovery Mode.",
540 deviceType: "laptop",
541 category: "software",
542 difficulty: "easy",
543 estimatedTime: "40-60 min",
544 toolsRequired: ["Reliable Wi-Fi or Ethernet connection", "Apple ID Credentials", "USB-C Power Adapter"],
545 safetyWarnings: [
546 "Ensure FileVault encryption recovery key or Apple ID password is on hand to bypass Activation Lock after erasing."
547 ],
548 steps: [
549 {
550 stepNumber: 1,
551 title: "Enter Recovery Mode",
552 description: "On Apple Silicon: Press and hold the power button until 'Loading startup options' appears, then select Options. On Intel Macs: Turn on and immediately hold Command (\u2318) + Option + R.",
553 imageUrl: "https://images.unsplash.com/photo-1517336714731-489689fd1ca8?auto=format&fit=crop&q=80&w=800"
554 },
555 {
556 stepNumber: 2,
557 title: "Format Drive in Disk Utility",
558 description: "Open Disk Utility, select View > Show All Devices. Click the internal SSD (e.g. APPLE SSD), click Erase, set Format to APFS and Scheme to GUID Partition Map, and confirm erase.",
559 imageUrl: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800"
560 },
561 {
562 stepNumber: 3,
563 title: "Reinstall macOS",
564 description: "Quit Disk Utility, select 'Reinstall macOS', accept software terms, select the freshly formatted APFS container, and let the installer complete all download and restart phases.",
565 imageUrl: "https://images.unsplash.com/photo-1517336714731-489689fd1ca8?auto=format&fit=crop&q=80&w=800"
566 }
567 ],
568 alternativeSolutions: "For enterprise deployments or fleet provisioning, build a bootable USB installer using the terminal command `createinstallmedia`.",
569 imageUrl: "https://images.unsplash.com/photo-1517336714731-489689fd1ca8?auto=format&fit=crop&q=80&w=800",
570 viewCount: 1980,
571 downloadCount: 540
572 },
573 {
574 title: "Windows DISM & SFC System File Integrity Repair",
575 description: "Repair corrupt Windows system files, corrupted update components, and broken side-by-side component stores using command line administrative tools.",
576 deviceType: "desktop",
577 category: "software",
578 difficulty: "easy",
579 estimatedTime: "15-25 min",
580 toolsRequired: ["Elevated Windows Terminal / Command Prompt (Admin)", "Active Internet Connection"],
581 safetyWarnings: [
582 "Do not power off or force reboot the computer while DISM /RestoreHealth is processing."
583 ],
584 steps: [
585 {
586 stepNumber: 1,
587 title: "Run DISM Component Store Verification",
588 description: "Open Terminal as Administrator. Run `DISM /Online /Cleanup-Image /ScanHealth` to check if component store corruption is detected.",
589 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800"
590 },
591 {
592 stepNumber: 2,
593 title: "Execute DISM Repair",
594 description: "Run `DISM /Online /Cleanup-Image /RestoreHealth`. Windows will download fresh system payload files from Windows Update servers to replace corrupted hashes.",
595 imageUrl: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800"
596 },
597 {
598 stepNumber: 3,
599 title: "Execute System File Checker (SFC)",
600 description: "Execute `sfc /scannow`. Verify the output reports 'Windows Resource Protection found corrupt files and successfully repaired them.' Reboot when done.",
601 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800"
602 }
603 ],
604 alternativeSolutions: "If DISM cannot find online sources, mount a Windows ISO and specify local source: `DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:D:\\sources\\install.wim:1 /limitaccess`.",
605 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800",
606 viewCount: 1650,
607 downloadCount: 470
608 },
609 // ==========================================
610 // CLEANING CATEGORY (LAPTOP & DESKTOP)
611 // ==========================================
612 {
613 title: "High-Performance CPU & GPU Thermal Paste Repaste",
614 description: "Remove degraded, crusty factory thermal interface material (TIM) and apply premium non-conductive thermal paste (Arctic MX-6, Noctua NT-H2, Thermal Grizzly Kryonaut) for 10-25\xB0C temperature drops.",
615 deviceType: "laptop",
616 category: "cleaning",
617 difficulty: "medium",
618 estimatedTime: "30-45 min",
619 toolsRequired: ["99% Isopropyl Alcohol (IPA)", "Lint-Free Microfiber Cloth / Coffee Filters", "Thermal Paste Tube", "Phillips / Torx Screwdrivers", "Plastic Spudger"],
620 safetyWarnings: [
621 "Use only non-conductive thermal compounds on exposed silicon dies; do not use liquid metal unless direct nickel coating is confirmed.",
622 "Tighten heatsink screws in diagonal numbered order (1-2-3-4) to ensure even mounting pressure and prevent die cracking."
623 ],
624 steps: [
625 {
626 stepNumber: 1,
627 title: "Remove Cooler & Heatsink Assembly",
628 description: "Loosen heatsink spring screws in reverse diagonal order (4-3-2-1). Gently twist the copper vapor chamber/heatsink to break the vacuum seal before lifting.",
629 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
630 },
631 {
632 stepNumber: 2,
633 title: "Clean Old Thermal Compound",
634 description: "Apply 99% IPA to a lint-free cloth and gently wipe old dried paste off the CPU/GPU silicon dies and copper coldplate until both surfaces are mirrored and residue-free.",
635 imageUrl: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
636 tips: ["Inspect thermal putty / pads on VRAM chips and VRM inductors; replace if torn or dried out."]
637 },
638 {
639 stepNumber: 3,
640 title: "Apply Fresh Paste & Remount Heatsink",
641 description: "Apply a pea-sized dot (or thin X-pattern for bare direct-die laptop CPUs) of thermal paste. Lower the heatsink flat and tighten screws in numbered diagonal order (1 to 4).",
642 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
643 }
644 ],
645 alternativeSolutions: "Consider phase-change thermal pads (e.g. Honeywell PTM7950) for long-lasting laptop thermal stability without pump-out degradation.",
646 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
647 viewCount: 2890,
648 downloadCount: 750
649 },
650 {
651 title: "Desktop Case & Power Supply Dust Filter Decontamination",
652 description: "Deep clean dusty radiator fins, fan blades, PSU mesh intakes, and chassis air filters to eliminate thermal throttling and acoustic fan whine.",
653 deviceType: "desktop",
654 category: "cleaning",
655 difficulty: "easy",
656 estimatedTime: "20-30 min",
657 toolsRequired: ["Electric Compressed Air Duster", "Soft Bristle Anti-Static Brush", "99% Isopropyl Alcohol", "Microfiber Towels"],
658 safetyWarnings: [
659 "Always hold fan blades stationary with a finger or zip-tie while blowing compressed air to prevent over-spinning the bearing and generating back-EMF voltage into the motherboard fan header."
660 ],
661 steps: [
662 {
663 stepNumber: 1,
664 title: "Remove Magnetic Mesh Filters",
665 description: "Slide out top, front, and bottom PSU dust filters. Rinse under warm water and allow to dry completely, or blow clean with electric duster.",
666 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
667 },
668 {
669 stepNumber: 2,
670 title: "Clean Radiators & Fan Blades",
671 description: "Hold each fan blade in place while blowing compressed air through the radiator fins from inside-out. Use an anti-static brush to dislodge stubborn cake on leading blade edges.",
672 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
673 },
674 {
675 stepNumber: 3,
676 title: "Motherboard & GPU Shroud Wipedown",
677 description: "Gently wipe PCB flat surfaces and GPU backplate with a lightly dampened microfiber cloth (99% IPA). Reassemble dust filters once 100% dry.",
678 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
679 }
680 ],
681 alternativeSolutions: "Perform this maintenance once every 6 months to maintain optimum thermal headroom and extend hardware longevity.",
682 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800",
683 viewCount: 1430,
684 downloadCount: 390
685 },
686 {
687 title: "Liquid Spill Emergency Protocol & Ultrasonic Board Cleaning",
688 description: "Immediate emergency protocol for laptops or keyboards exposed to coffee, water, soda, or juice to prevent galvanic corrosion and short circuits.",
689 deviceType: "laptop",
690 category: "cleaning",
691 difficulty: "hard",
692 estimatedTime: "90-120 min",
693 toolsRequired: ["99% Isopropyl Alcohol", "Ultrasonic Cleaner / Soft ESD Toothbrush", "Distilled Water", "Silica Gel Drying Packets"],
694 safetyWarnings: [
695 "NEVER connect power or attempt to boot a liquid-damaged laptop until all internal traces are completely dehydrated and deoxidized.",
696 "DO NOT use rice; starch dust enters cooling vents and causes further mechanical damage."
697 ],
698 steps: [
699 {
700 stepNumber: 1,
701 title: "Immediate Power Cut & Inversion",
702 description: "Force shutdown immediately (hold power 10s), unplug AC adapter, flip laptop into a tent position over a towel, and disconnect battery immediately.",
703 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800"
704 },
705 {
706 stepNumber: 2,
707 title: "Motherboard Extraction & Inspection",
708 description: "Disassemble the entire motherboard. Inspect under magnification for green/white copper oxidation and sugar/soda residue around SMD capacitors and ICs.",
709 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
710 },
711 {
712 stepNumber: 3,
713 title: "IPA Wash & Dehydration",
714 description: "Submerge board in 99% anhydrous Isopropyl Alcohol or ultrasonic bath to displace moisture and dissolve sticky residues. Dry in a heated dehydrator at 50\xB0C for 4 hours.",
715 imageUrl: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800"
716 }
717 ],
718 alternativeSolutions: "Test individual power rails (3.3V, 5V, 1.8V, VCORE) with a digital multimeter before reassembling the full chassis.",
719 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800",
720 viewCount: 2210,
721 downloadCount: 620
722 },
723 // ==========================================
724 // UPGRADES CATEGORY (LAPTOP & DESKTOP)
725 // ==========================================
726 {
727 title: "M.2 NVMe PCIe Gen4/Gen5 SSD Installation & OS Migration",
728 description: "Upgrade slow hard drives or small SSDs to ultra-fast M.2 NVMe solid state drives, including sector-by-sector cloning and heatsink mounting.",
729 deviceType: "laptop",
730 category: "upgrades",
731 difficulty: "easy",
732 estimatedTime: "25-35 min",
733 toolsRequired: ["Phillips #00 Screwdriver", "M.2 Mounting Standoff & Screw", "USB to NVMe Enclosure (for cloning)", "Cloning Software (Macrium Reflect / Clonezilla)"],
734 safetyWarnings: [
735 "Always ground yourself before touching naked flash memory chips to prevent ESD damage.",
736 "Insert M.2 drives at a 30-degree angle; do not force straight horizontally."
737 ],
738 steps: [
739 {
740 stepNumber: 1,
741 title: "Clone Existing Drive (Optional)",
742 description: "Insert the new NVMe drive into an external USB enclosure. Run Macrium Reflect or Clonezilla to clone all partitions including EFI and Recovery sectors.",
743 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800"
744 },
745 {
746 stepNumber: 2,
747 title: "Access M.2 PCIe Slot",
748 description: "Remove bottom cover/case side panel. Locate the M.2 2280 Key-M slot. Remove existing screw or thermal shield plate.",
749 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
750 },
751 {
752 stepNumber: 3,
753 title: "Install & Fasten NVMe Drive",
754 description: "Insert the SSD at a 30-degree angle until pins are fully seated in the slot. Press down gently and fasten the M.2 retaining screw. Reapply thermal pad and heat shield.",
755 imageUrl: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800",
756 tips: ["Peel off the protective plastic film from the motherboard M.2 thermal pad before screwing down the heatsink."]
757 }
758 ],
759 alternativeSolutions: "If BIOS doesn't detect the new drive, verify that SATA/NVMe mode is set to AHCI / NVMe rather than legacy RAID/RST.",
760 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
761 viewCount: 3450,
762 downloadCount: 980
763 },
764 {
765 title: "Dual-Channel DDR5 / DDR4 RAM Capacity & Speed Expansion",
766 description: "Install matched SODIMM (Laptop) or DIMM (Desktop) RAM kits to unlock dual-channel memory bandwidth, and enable XMP/EXPO profiles in BIOS for maximum FPS.",
767 deviceType: "desktop",
768 category: "upgrades",
769 difficulty: "easy",
770 estimatedTime: "15-20 min",
771 toolsRequired: ["Anti-Static Wrist Strap", "Phillips Screwdriver (if desktop case requires)"],
772 safetyWarnings: [
773 "Handle memory sticks by the outer PCB edges only; never touch the gold contact fingers."
774 ],
775 steps: [
776 {
777 stepNumber: 1,
778 title: "Identify Optimal Memory Channels",
779 description: "On 4-slot desktop motherboards, install two memory sticks into slots A2 and B2 (slots 2 and 4 from the CPU) for optimal signal integrity.",
780 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
781 },
782 {
783 stepNumber: 2,
784 title: "Slotting the Memory Sticks",
785 description: "Open the slot retention clips. Align the key notch on the RAM stick with the slot ridge. Press down firmly on both edges until both latches snap shut automatically.",
786 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
787 },
788 {
789 stepNumber: 3,
790 title: "Enable XMP / EXPO in BIOS",
791 description: "Power on, enter BIOS (Del / F2), locate Extreme Memory Profile (XMP) or AMD EXPO, enable Profile 1, save and exit to run at full advertised MHz (e.g. 6000MHz CL30).",
792 imageUrl: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800"
793 }
794 ],
795 alternativeSolutions: "Check Task Manager > Performance > Memory to confirm configured speed and that 'Slots used: 2 of 4' and 'Dual Channel' are active.",
796 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800",
797 viewCount: 2780,
798 downloadCount: 710
799 },
800 {
801 title: "Wi-Fi 6E / Wi-Fi 7 M.2 Tri-Band Card & Bluetooth 5.4 Upgrade",
802 description: "Swap legacy 802.11ac Wi-Fi cards for Intel AX210 / BE200 Wi-Fi 7 modules for 6GHz spectrum access, lower latency, and Bluetooth 5.4 audio.",
803 deviceType: "laptop",
804 category: "upgrades",
805 difficulty: "medium",
806 estimatedTime: "20-30 min",
807 toolsRequired: ["Phillips #00 Screwdriver", "Plastic Spudger / Tweezers for U.FL Antenna Connectors"],
808 safetyWarnings: [
809 "U.FL IPEX micro antenna snap connectors are delicate; apply vertical pressure directly above the post to avoid crushing the gold pin."
810 ],
811 steps: [
812 {
813 stepNumber: 1,
814 title: "Locate Existing WLAN Module",
815 description: "Disconnect laptop battery. Locate the M.2 2230 WLAN card, usually near the cooling fans or SSD.",
816 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800"
817 },
818 {
819 stepNumber: 2,
820 title: "Disconnect Antennas & Card Swap",
821 description: "Carefully pop off the Main (Black) and Aux (White) U.FL antenna cables using plastic tweezers. Remove the mounting screw and slide out old card.",
822 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
823 },
824 {
825 stepNumber: 3,
826 title: "Install New Module & Snap Antennas",
827 description: "Insert new Wi-Fi 6E/7 card, screw down, and snap the antenna connectors firmly onto the corresponding Main and Aux posts. Install Intel WLAN and Bluetooth drivers.",
828 imageUrl: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800"
829 }
830 ],
831 alternativeSolutions: "Download latest Wi-Fi drivers onto a USB flash drive BEFORE swapping the card to prevent being left without network access.",
832 imageUrl: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800",
833 viewCount: 1720,
834 downloadCount: 440
835 },
836 {
837 title: "Desktop All-in-One (AIO) 360mm Liquid CPU Cooler Installation",
838 description: "Install high-performance 240mm or 360mm AIO liquid coolers on Intel LGA1700/1851 and AMD Socket AM5/AM4 processors for maximum thermal headroom.",
839 deviceType: "desktop",
840 category: "upgrades",
841 difficulty: "medium",
842 estimatedTime: "45-60 min",
843 toolsRequired: ["Phillips #2 Screwdriver", "AIO Mounting Hardware & Backplate", "Thermal Paste (if not pre-applied)", "Fan Splitter / ARGB Hub"],
844 safetyWarnings: [
845 "CRITICAL: Always remember to peel off the clear plastic protective sticker from the AIO copper cold plate before mounting to CPU.",
846 "Mount the radiator above the pump level (e.g. top exhaust) to prevent air bubbles from getting trapped in the pump chamber."
847 ],
848 steps: [
849 {
850 stepNumber: 1,
851 title: "Install Motherboard Backplate & Standoffs",
852 description: "Fit the socket-specific backplate (Intel LGA1700 or AMD AM5 bracket) and hand-tighten the four double-threaded standoffs into the bracket holes.",
853 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
854 },
855 {
856 stepNumber: 2,
857 title: "Mount Radiator & Fans to Case",
858 description: "Fasten the 120mm fans to the radiator in push orientation, then mount the radiator assembly to the top or front case bracket using long radiator screws.",
859 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
860 },
861 {
862 stepNumber: 3,
863 title: "Mount Pump Block & Cable Connections",
864 description: "Peel protective film from copper coldplate, place pump block over the CPU, hand-tighten spring thumbscrews in diagonal X-pattern, and plug the pump tach wire into the `AIO_PUMP` or `CPU_FAN` header.",
865 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
866 }
867 ],
868 alternativeSolutions: "Set the pump speed to 100% constant PWM in BIOS for optimal coolant circulation and whisper-quiet operation.",
869 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800",
870 viewCount: 2190,
871 downloadCount: 580
872 }
873 ];
874 var comprehensiveTroubleshootingFlows = [
875 {
876 category: "power",
877 title: "Device Fails to Power On / No POST Diagnostics",
878 description: "Systematic diagnostic workflow to isolate AC adapter failure, drained CMOS battery, shorted motherboard power rail, or bad RAM modules.",
879 steps: [
880 {
881 stepNumber: 1,
882 description: "Does the power indicator LED light up or blink when connecting the AC charger?",
883 solutions: ["Perform a hard CMOS battery reset", "Test with a known-good AC power adapter", "Check DC-in power jack for physical damage or loose solder joints"]
884 },
885 {
886 stepNumber: 2,
887 description: "Do cooling fans spin, but the screen stays completely black with no BIOS splash screen?",
888 solutions: ["Reseat RAM modules one at a time", "Connect external monitor via HDMI to rule out display panel fault", "Clear motherboard RTC clock CMOS jumper"]
889 },
890 {
891 stepNumber: 3,
892 description: "Does the system immediately shut down after 2-5 seconds of powering on?",
893 solutions: ["Inspect CPU cooler mounting pressure and thermal paste", "Disconnect all non-essential USB and PCIe peripherals to test minimal POST", "Check motherboard VRM power delivery"]
894 }
895 ]
896 },
897 {
898 category: "performance",
899 title: "Thermal Throttling & Severe Fan Noise Diagnostics",
900 description: "Identify whether system slowdowns are caused by clogged heatsink fins, dried thermal paste, background crypto-miners, or failing fan bearings.",
901 steps: [
902 {
903 stepNumber: 1,
904 description: "Are CPU or GPU temperatures exceeding 90\xB0C under light to moderate workloads?",
905 solutions: ["Repaste CPU and GPU with Arctic MX-6 / Noctua thermal paste", "Blow compressed air through radiator exhaust fins to remove dust buildup", "Check fan RPM speed curves in BIOS or OEM management software"]
906 },
907 {
908 stepNumber: 2,
909 description: "Is CPU usage staying at 100% in Task Manager even when idle on desktop?",
910 solutions: ["Perform full Malwarebytes and Windows Defender offline scans", "Check Task Manager for rogue background processes (e.g. Windows Search indexer, crypto-miners)", "Run DISM and SFC file integrity scans"]
911 }
912 ]
913 },
914 {
915 category: "display",
916 title: "Display Artifacts, Flickering & Black Screen Troubleshooting",
917 description: "Determine if visual glitches, lines, or flickering originate from GPU driver corruption, loose eDP display cables, or cracked panel matrices.",
918 steps: [
919 {
920 stepNumber: 1,
921 description: "Do horizontal/vertical lines or flickering change when you move the laptop display hinge back and forth?",
922 solutions: ["Reseat or replace the eDP/LVDS display ribbon cable", "Inspect display hinge tension brackets for pinching the cable bundle"]
923 },
924 {
925 stepNumber: 2,
926 description: "Do colorful checkerboard artifacts or crashes occur primarily inside 3D games or GPU workloads?",
927 solutions: ["Perform clean GPU driver reinstallation using DDU in Safe Mode", "Check GPU VRAM temperatures and lower memory overclock", "Verify PCIe power cable seating"]
928 }
929 ]
930 }
931 ];
932 var comprehensiveDeviceComponents = [
933 {
934 name: "M.2 NVMe SSD",
935 description: "High-speed solid state drive utilizing PCI Express lanes and NVMe communication protocol for speeds up to 7,500 MB/s.",
936 deviceType: "laptop",
937 componentType: "storage",
938 commonIssues: ["Read-only mode after endurance depletion", "Thermal throttling under heavy writes", "Unformatted RAW partition"],
939 replacementDifficulty: "easy",
940 averageCost: "$45-180",
941 toolsRequired: ["Phillips #00 screwdriver", "Thermal pad"],
942 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
943 },
944 {
945 name: "SODIMM DDR5 RAM Module",
946 description: "Compact dual-inline memory module for laptops and mini-PCs with on-die ECC and dual 32-bit sub-channels.",
947 deviceType: "laptop",
948 componentType: "memory",
949 commonIssues: ["BSOD MEMORY_MANAGEMENT", "Unseated latch causing no-POST black screen", "Intermittent freezes"],
950 replacementDifficulty: "easy",
951 averageCost: "$35-120",
952 toolsRequired: ["Plastic spudger", "Anti-static wrist strap"],
953 imageUrl: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800"
954 },
955 {
956 name: "Dedicated PCIe Graphics Card (GPU)",
957 description: "High-performance graphics accelerator card for rendering 3D graphics, gaming, machine learning, and multi-display outputs.",
958 deviceType: "desktop",
959 componentType: "graphics",
960 commonIssues: ["Artifacting / VRAM corruption", "Driver timeout / TDR crashes", "Fan bearing noise"],
961 replacementDifficulty: "easy",
962 averageCost: "$250-1600",
963 toolsRequired: ["Phillips #2 screwdriver", "PCIe power cables", "Anti-sag bracket"],
964 imageUrl: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800"
965 },
966 {
967 name: "ATX Modular Power Supply Unit (PSU)",
968 description: "High-efficiency 80+ Gold / Platinum power supply converting 115V/230V AC to stable +12V, +5V, and +3.3V DC rails.",
969 deviceType: "desktop",
970 componentType: "power",
971 commonIssues: ["Instant shutdown under GPU transient spikes", "No 5VSB standby power", "Coil whine"],
972 replacementDifficulty: "medium",
973 averageCost: "$70-250",
974 toolsRequired: ["Phillips #2 screwdriver", "Modular cable kit"],
975 imageUrl: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800"
976 },
977 {
978 name: "Liquid Crystal / OLED Display Assembly",
979 description: "High-resolution laptop display panel offering 100% sRGB/DCI-P3 color gamut with eDP connection.",
980 deviceType: "laptop",
981 componentType: "display",
982 commonIssues: ["Cracked glass matrix", "Backlight bleed", "Dead pixels", "eDP cable micro-fractures"],
983 replacementDifficulty: "hard",
984 averageCost: "$60-220",
985 toolsRequired: ["Plastic prying picks", "Phillips #00", "Bezel adhesive strips"],
986 imageUrl: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800"
987 }
988 ];
989 var IMAGES = {
990 screenTeardown1: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800",
991 screenTeardown2: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
992 screenTeardown3: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
993 logicBoard: "https://images.unsplash.com/photo-1518770660439-4636190af475?auto=format&fit=crop&q=80&w=800",
994 battery: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800",
995 soldering: "https://images.unsplash.com/photo-1581092160607-ee22621dd758?auto=format&fit=crop&q=80&w=800",
996 biosScreen: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800",
997 terminal: "https://images.unsplash.com/photo-1526374965328-7f61d4dc18c5?auto=format&fit=crop&q=80&w=800",
998 osRecovery: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800",
999 thermalPaste: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
1000 cleaningBlower: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
1001 ultrasonic: "https://images.unsplash.com/photo-1581092335397-9583fe92d232?auto=format&fit=crop&q=80&w=800",
1002 nvmeSSD: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
1003 ramModule: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800",
1004 gpuAio: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800",
1005 desktopRig: "https://images.unsplash.com/photo-1587202372634-32705e3bf49c?auto=format&fit=crop&q=80&w=800"
1006 };
1007 var guideTemplates = [
1008 {
1009 category: "hardware",
1010 titleSuffix: "OLED/IPS Screen & Hinge Assembly Replacement",
1011 descSuffix: "Complete teardown procedure to disconnect eDP display cabling, unbolt magnesium hinge brackets, and install a brand-new factory display panel.",
1012 difficulty: "hard",
1013 estimatedTime: "45-60 min",
1014 tools: ["Phillips #00 Screwdriver", "Torx T5 Bit", "Plastic Spudger", "Pre-cut Bezel Adhesive Tape", "Anti-Static Wrist Strap"],
1015 warnings: ["Disconnect the main battery before touching internal display ribbon cables.", "Handle replacement display glass by perimeter edges only."],
1016 steps: [
1017 {
1018 stepNumber: 1,
1019 title: "Power Isolation & Battery Disconnection",
1020 description: "Remove bottom enclosure screws and disconnect internal battery harness from the logic board to prevent backlight circuit shorting.",
1021 imageUrl: IMAGES.screenTeardown1
1022 },
1023 {
1024 stepNumber: 2,
1025 title: "Display Hinge Bracket Unbolting",
1026 description: "Unscrew the left and right steel hinge anchor bolts and unroute Wi-Fi and webcam antenna cables from cable channels.",
1027 imageUrl: IMAGES.screenTeardown2
1028 },
1029 {
1030 stepNumber: 3,
1031 title: "Screen Bezel Separation & Panel Swap",
1032 description: "Gently pry bezel clips with a thin guitar pick, disconnect the 30/40-pin eDP connector, mount the new panel, and secure with fresh adhesive.",
1033 imageUrl: IMAGES.screenTeardown3
1034 }
1035 ],
1036 imageUrl: IMAGES.screenTeardown3
1037 },
1038 {
1039 category: "hardware",
1040 titleSuffix: "Motherboard & VRM Power Delivery Replacement",
1041 descSuffix: "Comprehensive logic board replacement, port realignment, and heatsink mounting procedure for technician-level system restoration.",
1042 difficulty: "hard",
1043 estimatedTime: "60-90 min",
1044 tools: ["Precision Screwdriver Kit", "Thermal Paste (Arctic MX-6)", "ESD Mat", "Magnetic Screw Tray"],
1045 warnings: ["Ground yourself on an ESD mat.", "Track all varying screw lengths carefully to prevent through-board chassis damage."],
1046 steps: [
1047 {
1048 stepNumber: 1,
1049 title: "Sub-assembly Removal",
1050 description: "Extract battery, cooling assembly, NVMe SSDs, Wi-Fi module, and disconnect all peripheral ribbon cables.",
1051 imageUrl: IMAGES.screenTeardown1
1052 },
1053 {
1054 stepNumber: 2,
1055 title: "Logic Board Extraction",
1056 description: "Unscrew logic board standoff screws, ease I/O ports out of chassis cutouts, and transfer TPM/CPU components as needed.",
1057 imageUrl: IMAGES.logicBoard
1058 },
1059 {
1060 stepNumber: 3,
1061 title: "New Board Installation & Post-Test",
1062 description: "Seat the replacement motherboard, reapply thermal compound, reconnect all flex cables, and verify POST in diagnostic mode.",
1063 imageUrl: IMAGES.soldering
1064 }
1065 ],
1066 imageUrl: IMAGES.logicBoard
1067 },
1068 {
1069 category: "hardware",
1070 titleSuffix: "OEM Battery Pack Replacement & BMS Calibration",
1071 descSuffix: "Safely remove degraded or swollen lithium-ion pouch cells, route new OEM battery harness, and execute charging calibration cycle.",
1072 difficulty: "easy",
1073 estimatedTime: "20-30 min",
1074 tools: ["Phillips #00 Screwdriver", "Plastic Pry Pick", "Safety Glasses", "Battery Adhesive Pull Tabs"],
1075 warnings: ["Never bend, puncture, or apply metal tools to lithium-polymer battery packs.", "Discharge battery below 25% prior to disassembly."],
1076 steps: [
1077 {
1078 stepNumber: 1,
1079 title: "Bottom Cover Removal",
1080 description: "Remove perimeter fasteners and release bottom casing to expose the internal battery compartment.",
1081 imageUrl: IMAGES.screenTeardown1
1082 },
1083 {
1084 stepNumber: 2,
1085 title: "Battery Connector & Adhesive Release",
1086 description: "Unplug the battery data/power harness from the motherboard. Slowly pull the stretch-release adhesive strips parallel to the chassis.",
1087 imageUrl: IMAGES.battery
1088 },
1089 {
1090 stepNumber: 3,
1091 title: "New Cell Installation & BMS Cycling",
1092 description: "Mount new OEM pack, connect ribbon securely, screw down brackets, and charge continuously to 100% followed by full discharge.",
1093 imageUrl: IMAGES.battery
1094 }
1095 ],
1096 imageUrl: IMAGES.battery
1097 },
1098 {
1099 category: "hardware",
1100 titleSuffix: "DC-In Power Jack & USB-C Port Board Replacement",
1101 descSuffix: "Diagnose intermittent charging and replace fractured DC-in power harness or daughterboard USB-C charging receptacles.",
1102 difficulty: "medium",
1103 estimatedTime: "35-45 min",
1104 tools: ["Torx T5 / Phillips #00", "Digital Multimeter", "Spudger", "Tweezers"],
1105 warnings: ["Verify absence of residual 19V/20V capacitor charge before touching port solder pads."],
1106 steps: [
1107 {
1108 stepNumber: 1,
1109 title: "Port Accessibility Isolation",
1110 description: "Disconnect internal battery, lift the left/right hinge bracket covering the charging port, and remove cable retention brackets.",
1111 imageUrl: IMAGES.screenTeardown2
1112 },
1113 {
1114 stepNumber: 2,
1115 title: "Port Harness Detachment",
1116 description: "Unplug the DC-in braided cable harness from the motherboard header or unbolt the modular Type-C daughterboard.",
1117 imageUrl: IMAGES.soldering
1118 },
1119 {
1120 stepNumber: 3,
1121 title: "Reassembly & Voltage Verification",
1122 description: "Install fresh OEM port module, secure hinge bolts to manufacturer torque specs, and probe 20V rail with multimeter.",
1123 imageUrl: IMAGES.logicBoard
1124 }
1125 ],
1126 imageUrl: IMAGES.soldering
1127 },
1128 {
1129 category: "hardware",
1130 titleSuffix: "Dual Cooling Fan & Copper Heatpipe Module Overhaul",
1131 descSuffix: "Replace noisy, rattling, or seized CPU/GPU blower fans and re-torque copper vapor chamber heatsink assembly.",
1132 difficulty: "medium",
1133 estimatedTime: "30-40 min",
1134 tools: ["Phillips #00 Screwdriver", "Thermal Paste", "Micro-Tweezers", "Can of Compressed Air"],
1135 warnings: ["Tighten heatsink screws in stamped numerical order (1 -> 2 -> 3 -> 4) to ensure uniform die pressure."],
1136 steps: [
1137 {
1138 stepNumber: 1,
1139 title: "Cooling Shroud Removal",
1140 description: "Disconnect 4-pin PWM fan headers, remove perimeter heatsink screws in reverse order, and lift copper assembly away from dies.",
1141 imageUrl: IMAGES.thermalPaste
1142 },
1143 {
1144 stepNumber: 2,
1145 title: "Blower Impeller Swap",
1146 description: "Unscrew fan motor brackets from heatpipe radiator fins and mount brand-new fluid-dynamic bearing fan units.",
1147 imageUrl: IMAGES.cleaningBlower
1148 },
1149 {
1150 stepNumber: 3,
1151 title: "Paste Refresh & Sequential Torque",
1152 description: "Wipe dies clean with 99% IPA, apply high-viscosity thermal paste, fasten screws sequentially, and plug in fan headers.",
1153 imageUrl: IMAGES.thermalPaste
1154 }
1155 ],
1156 imageUrl: IMAGES.thermalPaste
1157 },
1158 // SOFTWARE
1159 {
1160 category: "software",
1161 titleSuffix: "UEFI / BIOS Firmware Recovery & Crisis Flash Protocol",
1162 descSuffix: "Step-by-step procedure to flash, recover, or clear corrupted UEFI BIOS firmware using USB FlashBack or emergency key combinations.",
1163 difficulty: "medium",
1164 estimatedTime: "20-30 min",
1165 tools: ["FAT32 Formatted USB Flash Drive", "OEM BIOS Firmware File", "Stable AC Power Source"],
1166 warnings: ["NEVER unplug power or reboot while the firmware EEPROM is writing.", "Ensure battery has at least 50% charge before starting."],
1167 steps: [
1168 {
1169 stepNumber: 1,
1170 title: "Prepare Flash Drive",
1171 description: "Format USB drive to FAT32 with MBR partition scheme. Download latest verified OEM BIOS file and rename to the required hardware flashback string if using blind USB flash.",
1172 imageUrl: IMAGES.biosScreen
1173 },
1174 {
1175 stepNumber: 2,
1176 title: "Initiate BIOS Update Environment",
1177 description: "Boot into BIOS Setup (tap F2/Del) and open the built-in flash utility (EZ Flash / Q-Flash / M-Flash / Dell BIOS Update) or hold the chassis FlashBack button.",
1178 imageUrl: IMAGES.osRecovery
1179 },
1180 {
1181 stepNumber: 3,
1182 title: "Execute ROM Write & Reset CMOS",
1183 description: "Confirm ROM validation checksum. Allow the system to flash blocks 0-100% and reboot automatically into the updated microcode environment.",
1184 imageUrl: IMAGES.biosScreen
1185 }
1186 ],
1187 imageUrl: IMAGES.biosScreen
1188 },
1189 {
1190 category: "software",
1191 titleSuffix: "EFI Bootloader & BCD Partition Reconstruction",
1192 descSuffix: "Resolve 'No Bootable Device Found' and 0xc000000e boot errors by rebuilding the EFI system partition and Windows Boot Configuration Data.",
1193 difficulty: "medium",
1194 estimatedTime: "25-35 min",
1195 tools: ["Windows Recovery USB Media", "Command Prompt Environment"],
1196 warnings: ["Verify disk volume numbers with `diskpart` carefully before formatting any partition."],
1197 steps: [
1198 {
1199 stepNumber: 1,
1200 title: "Boot Recovery Environment",
1201 description: "Boot from Windows Recovery Media > Repair your computer > Troubleshoot > Advanced Options > Command Prompt.",
1202 imageUrl: IMAGES.terminal
1203 },
1204 {
1205 stepNumber: 2,
1206 title: "Assign Drive Letter to EFI Partition",
1207 description: "Run `diskpart`, `list volume`, select the ~100MB FAT32 system partition, run `assign letter=S:`, and exit diskpart.",
1208 imageUrl: IMAGES.osRecovery
1209 },
1210 {
1211 stepNumber: 3,
1212 title: "Rebuild BCD Store",
1213 description: "Execute `bcdboot C:\\Windows /s S: /f UEFI` to generate fresh UEFI boot files, and reboot.",
1214 imageUrl: IMAGES.terminal
1215 }
1216 ],
1217 imageUrl: IMAGES.terminal
1218 },
1219 {
1220 category: "software",
1221 titleSuffix: "BSOD Kernel Triage & Clean OS Driver Reinstallation",
1222 descSuffix: "Isolate recurring WHEA_UNCORRECTABLE_ERROR, IRQL_NOT_LESS_OR_EQUAL stop codes and perform clean DDU driver wipes in Safe Mode.",
1223 difficulty: "easy",
1224 estimatedTime: "20-30 min",
1225 tools: ["Display Driver Uninstaller (DDU)", "OEM WHQL Driver Package", "Safe Mode Boot Option"],
1226 warnings: ["Disconnect internet cable during DDU reinstallation to prevent Windows Update from installing generic drivers."],
1227 steps: [
1228 {
1229 stepNumber: 1,
1230 title: "Boot Safe Mode Without Networking",
1231 description: "Hold Shift while clicking Restart > Troubleshoot > Advanced Options > Startup Settings > Restart > Press 4 for Safe Mode.",
1232 imageUrl: IMAGES.osRecovery
1233 },
1234 {
1235 stepNumber: 2,
1236 title: "Run DDU Clean and Restart",
1237 description: "Launch Display Driver Uninstaller, select GPU (NVIDIA/AMD/Intel), click 'Clean and restart' to wipe registry keys and display caches.",
1238 imageUrl: IMAGES.terminal
1239 },
1240 {
1241 stepNumber: 3,
1242 title: "Install Clean WHQL Drivers",
1243 description: "Boot back to normal desktop, install official OEM driver package with Clean Install checked, and verify thermal sensors.",
1244 imageUrl: IMAGES.osRecovery
1245 }
1246 ],
1247 imageUrl: IMAGES.osRecovery
1248 },
1249 {
1250 category: "software",
1251 titleSuffix: "Secure Boot, TPM 2.0 & BitLocker State Restoration",
1252 descSuffix: "Re-initialize hardware TPM 2.0 security chips, resolve BitLocker recovery loops, and configure UEFI Secure Boot key databases.",
1253 difficulty: "medium",
1254 estimatedTime: "20-25 min",
1255 tools: ["BitLocker 48-digit Recovery Key", "BIOS Security Menu Access"],
1256 warnings: ["Ensure you have your 48-digit BitLocker key backed up before clearing TPM keys."],
1257 steps: [
1258 {
1259 stepNumber: 1,
1260 title: "BIOS Security Configuration",
1261 description: "Enter UEFI BIOS > Security > Intel PTT / AMD fTPM > Enable. Verify Secure Boot is set to Standard mode with factory default keys.",
1262 imageUrl: IMAGES.biosScreen
1263 },
1264 {
1265 stepNumber: 2,
1266 title: "Clear TPM / PTT State",
1267 description: "If system is stuck in an authentication loop, select 'Clear TPM' in BIOS and confirm cryptographic key reset.",
1268 imageUrl: IMAGES.terminal
1269 },
1270 {
1271 stepNumber: 3,
1272 title: "Windows Hello & PIN Re-enrollment",
1273 description: "Enter the BitLocker recovery key once, boot to Windows, and reconfigure your Windows Hello PIN and biometric fingerprint data.",
1274 imageUrl: IMAGES.osRecovery
1275 }
1276 ],
1277 imageUrl: IMAGES.biosScreen
1278 },
1279 // CLEANING
1280 {
1281 category: "cleaning",
1282 titleSuffix: "Thermal Module Deep Clean & Phase-Change Repasting",
1283 descSuffix: "Dissolve dried factory thermal interface material, clean copper heatsink fins, lubricate cooling fan bearings, and reapply high-performance TIM.",
1284 difficulty: "medium",
1285 estimatedTime: "30-45 min",
1286 tools: ["99% Isopropyl Alcohol", "Microfiber Cloths", "Thermal Paste / PTM7950", "Electric Compressed Air Blower", "Soft Brush"],
1287 warnings: ["Do not allow fan impellers to free-spin while blasting air.", "Tighten heatsink screws strictly in sequential order (1-2-3-4)."],
1288 steps: [
1289 {
1290 stepNumber: 1,
1291 title: "Cooler Removal & Fan Extraction",
1292 description: "Unscrew cooling module retaining screws in reverse order. Gently lift the copper assembly away from the CPU and GPU dies.",
1293 imageUrl: IMAGES.thermalPaste
1294 },
1295 {
1296 stepNumber: 2,
1297 title: "Chemical De-greasing & Radiator Fluff Removal",
1298 description: "Clean old crusty paste using 99% IPA until mirror finish. Blow pressurized air through the exhaust fin channels from the outside in.",
1299 imageUrl: IMAGES.cleaningBlower
1300 },
1301 {
1302 stepNumber: 3,
1303 title: "Reapplication & Reseating",
1304 description: "Apply fresh thermal compound, re-position the heatsink flat against the dies, tighten screws sequentially, and reconnect fan headers.",
1305 imageUrl: IMAGES.thermalPaste
1306 }
1307 ],
1308 imageUrl: IMAGES.thermalPaste
1309 },
1310 {
1311 category: "cleaning",
1312 titleSuffix: "Ultrasonic Bath & Liquid Spill Corrosion Decontamination",
1313 descSuffix: "Rescue water, coffee, or soda damaged motherboards through ultrasonic cleaning in 99% anhydrous alcohol and PCB baking.",
1314 difficulty: "hard",
1315 estimatedTime: "90-120 min",
1316 tools: ["Ultrasonic Cleaner", "99.9% Anhydrous Isopropyl Alcohol", "Soft Bristle ESD Brush", "Drying Oven (50\xB0C)"],
1317 warnings: ["Never submerge CMOS batteries, mechanical fans, or microphone modules in ultrasonic cleaner."],
1318 steps: [
1319 {
1320 stepNumber: 1,
1321 title: "Board Disassembly & Pre-wash Inspection",
1322 description: "Strip all socketed components, heatspreaders, and labels. Inspect under stereo microscope for green copper oxidation and burnt power traces.",
1323 imageUrl: IMAGES.ultrasonic
1324 },
1325 {
1326 stepNumber: 2,
1327 title: "Ultrasonic Degreasing Cycle",
1328 description: "Place motherboard in ultrasonic tank with 99% IPA solution. Run 8-minute sweep frequency cycle at 40kHz to dislodge flux and sugar minerals.",
1329 imageUrl: IMAGES.ultrasonic
1330 },
1331 {
1332 stepNumber: 3,
1333 title: "Dehydration & Micro-soldering Inspection",
1334 description: "Bake PCB in drying oven at 50\xB0C for 2 hours to evaporate internal moisture. Touch up corroded SMD pads with leaded solder and flux.",
1335 imageUrl: IMAGES.soldering
1336 }
1337 ],
1338 imageUrl: IMAGES.ultrasonic
1339 },
1340 {
1341 category: "cleaning",
1342 titleSuffix: "Keyboard Deck Crumb Flush & Sticky Key Switch Repair",
1343 descSuffix: "Dislodge dust debris, flush sticky tactile scissor clips with fast-evaporating contact cleaner, and restore uniform key travel.",
1344 difficulty: "easy",
1345 estimatedTime: "20-30 min",
1346 tools: ["Keycap Puller", "Electronic Contact Cleaner", "Microfiber Swabs", "Precision Spudger"],
1347 warnings: ["Do not use petroleum-based lubricants (WD-40) on membrane or scissor switches."],
1348 steps: [
1349 {
1350 stepNumber: 1,
1351 title: "Keycap Extraction & Clip Inspection",
1352 description: "Gently unlatch top retention tabs of sticky keycaps using a thin plastic spudger, avoiding damage to delicate plastic scissor hinges.",
1353 imageUrl: IMAGES.cleaningBlower
1354 },
1355 {
1356 stepNumber: 2,
1357 title: "Switch Degreasing & Solvent Application",
1358 description: "Apply quick-drying electronic contact cleaner around the rubber dome, depress switch 20 times, and wipe dislodged grime with microfiber swabs.",
1359 imageUrl: IMAGES.screenTeardown1
1360 },
1361 {
1362 stepNumber: 3,
1363 title: "Hinge Re-latching & Tactile Testing",
1364 description: "Snap scissor mechanisms back into chassis anchors, press keycap down firmly until two distinct clicks are heard, and test in key-tester utility.",
1365 imageUrl: IMAGES.cleaningBlower
1366 }
1367 ],
1368 imageUrl: IMAGES.cleaningBlower
1369 },
1370 {
1371 category: "cleaning",
1372 titleSuffix: "VRAM & MOSFET Thermal Pad Caliper Sizing & Renewal",
1373 descSuffix: "Measure exact millimeter gap tolerances (0.5mm, 1.0mm, 1.5mm) and install high thermal conductivity silicone pads on graphics cards and power stages.",
1374 difficulty: "medium",
1375 estimatedTime: "30-45 min",
1376 tools: ["Digital Vernier Caliper", "High-Performance Thermal Pads (12.8 W/mK)", "Precision Cutting Shears", "Alcohol Prep Pads"],
1377 warnings: ["Using overly thick pads causes poor CPU/GPU core contact, resulting in instantaneous thermal shutdowns."],
1378 steps: [
1379 {
1380 stepNumber: 1,
1381 title: "Heatsink Dismount & Old Pad Removal",
1382 description: "Separate heatsink from PCB, peel off compressed OEM thermal pads, and clean oil residue from memory chips using 99% IPA.",
1383 imageUrl: IMAGES.thermalPaste
1384 },
1385 {
1386 stepNumber: 2,
1387 title: "Caliper Gap Measurement & Pad Trimming",
1388 description: "Measure gap between chip packages and copper baseplates with vernier caliper. Cut replacement pads to 1:1 chip dimensions.",
1389 imageUrl: IMAGES.nvmeSSD
1390 },
1391 {
1392 stepNumber: 3,
1393 title: "Peel Protective Film & Mount",
1394 description: "Peel blue plastic backing from both pad faces, press onto VRAM chips, re-mount heatsink, and check core contact spread pattern.",
1395 imageUrl: IMAGES.thermalPaste
1396 }
1397 ],
1398 imageUrl: IMAGES.thermalPaste
1399 },
1400 // UPGRADES
1401 {
1402 category: "upgrades",
1403 titleSuffix: "PCIe 4.0 / 5.0 NVMe SSD Expansion & Sector Cloning",
1404 descSuffix: "Expand high-speed storage up to 4TB/8TB, attach thermal heatsinks, and clone the OS partition using sector-by-sector cloning.",
1405 difficulty: "easy",
1406 estimatedTime: "25-35 min",
1407 tools: ["Phillips #00 Screwdriver", "M.2 2280 NVMe SSD", "USB NVMe Enclosure", "Cloning Software"],
1408 warnings: ["Touch a grounded metallic object to discharge static electricity before inserting NVMe card."],
1409 steps: [
1410 {
1411 stepNumber: 1,
1412 title: "Clone Existing Drive",
1413 description: "Place the new NVMe SSD in an external USB-C enclosure and clone the active boot drive using sector-by-sector clone software.",
1414 imageUrl: IMAGES.nvmeSSD
1415 },
1416 {
1417 stepNumber: 2,
1418 title: "M.2 Slot Installation",
1419 description: "Insert the NVMe SSD into the motherboard M.2 Key-M slot at a 30-degree angle, press down gently, and tighten the M2x3mm retention screw.",
1420 imageUrl: IMAGES.nvmeSSD
1421 },
1422 {
1423 stepNumber: 3,
1424 title: "Verify UEFI Boot Priority & Trim",
1425 description: "Boot into BIOS, ensure the new drive is set as Primary Boot Option 1, boot into OS, and verify TRIM is enabled.",
1426 imageUrl: IMAGES.biosScreen
1427 }
1428 ],
1429 imageUrl: IMAGES.nvmeSSD
1430 },
1431 {
1432 category: "upgrades",
1433 titleSuffix: "DDR4 / DDR5 Dual-Channel High-Speed RAM Upgrade",
1434 descSuffix: "Maximize system multitasking and memory bandwidth by installing dual-rank matched SODIMM memory modules.",
1435 difficulty: "easy",
1436 estimatedTime: "15-20 min",
1437 tools: ["Plastic Spudger", "Matched DDR5 SODIMM Memory Kit", "Anti-Static Mat"],
1438 warnings: ["Ensure the laptop is completely powered off and the internal battery disconnected before touching memory slots."],
1439 steps: [
1440 {
1441 stepNumber: 1,
1442 title: "Remove Memory Shield & Eject Old RAM",
1443 description: "Prise away EMI metal shielding canopy. Spread the side metal retention clips outward to allow the SODIMM module to pop up at a 45-degree angle.",
1444 imageUrl: IMAGES.ramModule
1445 },
1446 {
1447 stepNumber: 2,
1448 title: "Insert New Dual-Rank SODIMM",
1449 description: "Align module notch with slot key, slide firmly into the socket at 45 degrees, and push flat until retaining clips lock with a tactile click.",
1450 imageUrl: IMAGES.ramModule
1451 },
1452 {
1453 stepNumber: 3,
1454 title: "POST Memory Training & MemTest86",
1455 description: "Power on the system. Allow 30-60 seconds for initial DDR5 memory training, verify full capacity in BIOS, and run diagnostics.",
1456 imageUrl: IMAGES.biosScreen
1457 }
1458 ],
1459 imageUrl: IMAGES.ramModule
1460 },
1461 {
1462 category: "upgrades",
1463 titleSuffix: "Wi-Fi 7 / Wi-Fi 6E BE200 M.2 Wireless Module & Antenna Upgrade",
1464 descSuffix: "Upgrade legacy networking to tri-band 320MHz channel width Wi-Fi 7 with Bluetooth 5.4 for sub-millisecond local network latencies.",
1465 difficulty: "easy",
1466 estimatedTime: "15-20 min",
1467 tools: ["Phillips #00 Screwdriver", "Plastic Spudger / Tweezers", "Wi-Fi 7 M.2 2230 Card"],
1468 warnings: ["Carefully press micro IPEX MHF4 antenna snaps straight down \u2014 never slide sideways to avoid bending connector pins."],
1469 steps: [
1470 {
1471 stepNumber: 1,
1472 title: "Locate M.2 Key-E Slot",
1473 description: "Disconnect internal battery and locate the M.2 Key-E 2230 slot beneath shielding or secondary drive bays.",
1474 imageUrl: IMAGES.screenTeardown1
1475 },
1476 {
1477 stepNumber: 2,
1478 title: "Antenna Latching (Main & Aux)",
1479 description: "Snap black (Main) and white/grey (Aux) antenna micro-leads onto the new Wi-Fi card gold pads using fingertips or nylon tweezers.",
1480 imageUrl: IMAGES.logicBoard
1481 },
1482 {
1483 stepNumber: 3,
1484 title: "Fasten Standoff & Install OEM Drivers",
1485 description: "Tighten M2 retention screw, close chassis, boot into OS, and install latest Intel / Qualcomm Wi-Fi 7 package.",
1486 imageUrl: IMAGES.osRecovery
1487 }
1488 ],
1489 imageUrl: IMAGES.logicBoard
1490 }
1491 ];
1492 var modelTargets = [
1493 // Apple
1494 { brand: "Apple", model: 'MacBook Pro 16" M3 Max', type: "laptop" },
1495 { brand: "Apple", model: 'MacBook Pro 14" M3 Pro', type: "laptop" },
1496 { brand: "Apple", model: 'MacBook Air 15" M2 / M3', type: "laptop" },
1497 { brand: "Apple", model: 'MacBook Air 13" M1 Legacy', type: "laptop" },
1498 { brand: "Apple", model: "Mac Studio M2 Ultra", type: "desktop" },
1499 { brand: "Apple", model: 'iMac 24" 4.5K Retina M3', type: "desktop" },
1500 { brand: "Apple", model: "Mac mini M2 Pro", type: "desktop" },
1501 // Dell
1502 { brand: "Dell", model: "XPS 15 9530", type: "laptop" },
1503 { brand: "Dell", model: "XPS 13 Plus 9320", type: "laptop" },
1504 { brand: "Dell", model: "Latitude 5440 Enterprise", type: "laptop" },
1505 { brand: "Dell", model: "Alienware m16 R2 Gaming", type: "laptop" },
1506 { brand: "Dell", model: "OptiPlex 7010 Micro", type: "desktop" },
1507 { brand: "Dell", model: "OptiPlex 5090 SFF", type: "desktop" },
1508 { brand: "Dell", model: "Alienware Aurora R16", type: "desktop" },
1509 // Lenovo
1510 { brand: "Lenovo", model: "ThinkPad X1 Carbon Gen 11", type: "laptop" },
1511 { brand: "Lenovo", model: "ThinkPad T14 Gen 4", type: "laptop" },
1512 { brand: "Lenovo", model: "Legion Pro 7i Gen 9", type: "laptop" },
1513 { brand: "Lenovo", model: "Yoga 9i Dual-Screen", type: "laptop" },
1514 { brand: "Lenovo", model: "ThinkCentre M90q Tiny", type: "desktop" },
1515 { brand: "Lenovo", model: "Legion Tower 7i", type: "desktop" },
1516 // HP
1517 { brand: "HP", model: "Spectre x360 14 (2024)", type: "laptop" },
1518 { brand: "HP", model: "EliteBook 840 G10", type: "laptop" },
1519 { brand: "HP", model: "OMEN Transcend 16", type: "laptop" },
1520 { brand: "HP", model: "OMEN 45L Cryo-Chamber", type: "desktop" },
1521 { brand: "HP", model: "ProDesk 600 G6 SFF", type: "desktop" },
1522 // ASUS
1523 { brand: "ASUS", model: "ROG Zephyrus G14 (2024)", type: "laptop" },
1524 { brand: "ASUS", model: "ZenBook 14 OLED UX3405", type: "laptop" },
1525 { brand: "ASUS", model: "ROG Strix SCAR 16", type: "laptop" },
1526 { brand: "ASUS", model: "ROG Strix G16CH Desktop", type: "desktop" },
1527 // Acer & MSI & Razer & Microsoft & Framework & Custom
1528 { brand: "Acer", model: "Predator Helios 16", type: "laptop" },
1529 { brand: "MSI", model: "Stealth 16 AI Studio", type: "laptop" },
1530 { brand: "Razer", model: "Blade 16 Dual-Mode", type: "laptop" },
1531 { brand: "Microsoft", model: "Surface Laptop 5", type: "laptop" },
1532 { brand: "Framework", model: "Framework Laptop 13 / 16 Modular", type: "laptop" },
1533 { brand: "Samsung", model: "Galaxy Book4 Ultra", type: "laptop" },
1534 { brand: "LG", model: "LG Gram 17 Pro", type: "laptop" },
1535 { brand: "Custom Built", model: "Custom Full/Mid ATX Gaming PC", type: "desktop" },
1536 { brand: "Custom Built", model: "Mini-ITX Small Form Factor SFF", type: "desktop" }
1537 ];
1538 function buildAllGuides() {
1539 const list = [...curatedRepairGuides];
1540 for (const target of modelTargets) {
1541 for (const template of guideTemplates) {
1542 list.push({
1543 title: `${target.model}: ${template.titleSuffix}`,
1544 description: `Dedicated ${template.category} service teardown and step-by-step repair guide for the ${target.brand} ${target.model}. ${template.descSuffix}`,
1545 deviceType: target.type,
1546 category: template.category,
1547 difficulty: template.difficulty,
1548 estimatedTime: template.estimatedTime,
1549 toolsRequired: template.tools,
1550 safetyWarnings: template.warnings,
1551 steps: template.steps,
1552 alternativeSolutions: `Reference ${target.brand} technical hardware maintenance manuals or contact certified technicians for warranty support.`,
1553 imageUrl: template.imageUrl
1554 });
1555 }
1556 }
1557 return list;
1558 }
1559 var comprehensiveRepairGuides = buildAllGuides();
1560 async function seedDatabase() {
1561 if (!db) {
1562 console.log("No PostgreSQL database configured. Using in-memory dataset.");
1563 return;
1564 }
1565 try {
1566 console.log(`Seeding ${comprehensiveRepairGuides.length} comprehensive repair guides into database...`);
1567 for (const guide of comprehensiveRepairGuides) {
1568 await db.insert(repairGuides).values({
1569 ...guide,
1570 viewCount: guide.viewCount || Math.floor(Math.random() * 1e3) + 200,
1571 downloadCount: guide.downloadCount || Math.floor(Math.random() * 300) + 50,
1572 isBookmarked: false
1573 }).onConflictDoNothing();
1574 }
1575 console.log("Database seeding finished.");
1576 } catch (error) {
1577 console.error("Error seeding database:", error);
1578 }
1579 }
1580
1581 // server/seed-guides.ts
1582 var IMAGES2 = {
1583 screenTeardown1: "https://images.unsplash.com/photo-1597733336794-12d05021d510?auto=format&fit=crop&q=80&w=800",
1584 screenTeardown2: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
1585 screenTeardown3: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
1586 logicBoard: "https://images.unsplash.com/photo-1518770660439-4636190af475?auto=format&fit=crop&q=80&w=800",
1587 battery: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800",
1588 soldering: "https://images.unsplash.com/photo-1581092160607-ee22621dd758?auto=format&fit=crop&q=80&w=800",
1589 biosScreen: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800",
1590 terminal: "https://images.unsplash.com/photo-1526374965328-7f61d4dc18c5?auto=format&fit=crop&q=80&w=800",
1591 osRecovery: "https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&q=80&w=800",
1592 thermalPaste: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
1593 cleaningBlower: "https://images.unsplash.com/photo-1588508065123-287b28e013da?auto=format&fit=crop&q=80&w=800",
1594 ultrasonic: "https://images.unsplash.com/photo-1581092335397-9583fe92d232?auto=format&fit=crop&q=80&w=800",
1595 nvmeSSD: "https://images.unsplash.com/photo-1591799264318-7e6ef8ddb7ea?auto=format&fit=crop&q=80&w=800",
1596 ramModule: "https://images.unsplash.com/photo-1540103547041-3929427b3708?auto=format&fit=crop&q=80&w=800",
1597 gpuAio: "https://images.unsplash.com/photo-1587202372775-e229f172b9d7?auto=format&fit=crop&q=80&w=800",
1598 desktopRig: "https://images.unsplash.com/photo-1587202372634-32705e3bf49c?auto=format&fit=crop&q=80&w=800"
1599 };
1600 var guideTemplates2 = [
1601 // ----------------------------------------------------
1602 // HARDWARE (5 Templates)
1603 // ----------------------------------------------------
1604 {
1605 category: "hardware",
1606 titleSuffix: "OLED/IPS Screen & Hinge Assembly Replacement",
1607 descSuffix: "Complete start-to-finish teardown procedure to isolate power, disconnect eDP display cabling, unbolt steel hinge brackets, and install a factory display panel.",
1608 difficulty: "hard",
1609 estimatedTime: "45-60 min",
1610 tools: ["Phillips #00 Screwdriver", "Torx T5 Precision Bit", "Plastic Spudger / Guitar Pick", "Pre-cut Bezel Adhesive Strips", "Anti-Static Wrist Strap", "Digital Caliper"],
1611 warnings: [
1612 "CRITICAL: Disconnect the main battery harness before touching internal display ribbon cables to prevent instant backlight fuse burnout (BL_PWR 19V rail shorting to 3.3V data lines).",
1613 "Handle the replacement display glass by perimeter edges only; never exert localized thumb pressure over the active matrix area.",
1614 "Track screw lengths precisely. Driving a long M2.5 screw into a shallow blind hole will crack the outer palmrest chassis."
1615 ],
1616 steps: [
1617 {
1618 stepNumber: 1,
1619 phase: "Phase 1: Pre-Disassembly Diagnostics & Power Isolation",
1620 title: "Power Drain, Static Grounding & Battery Decoupling",
1621 description: "Prior to any physical fastener removal, ensure the device is completely powered down (not in Modern Standby / Sleep mode). Disconnect the AC adapter, clip on your ESD grounding strap, remove the bottom cover perimeter screws, and physically detach the main battery power harness.",
1622 toolRequired: "Torx T5 / Phillips #00 & Plastic Pry Pick",
1623 torqueSpec: "0.20 Nm",
1624 subSteps: [
1625 "Power off machine and hold power button for 15 seconds to discharge motherboard filter capacitors.",
1626 "Remove all bottom cover perimeter screws (note differing screw lengths in a magnetic compartment tray).",
1627 "Use a plastic pry tool to release perimeter retaining clips, starting from the rear hinge exhaust vents.",
1628 "Locate the battery motherboard connector; slide the metal retention lock back and pull the harness straight out parallel to the board.",
1629 "Press the power button again for 5 seconds to drain any residual standby voltage on the +VBAT and +3.3V_ALW rails."
1630 ],
1631 warnings: ["Never use metallic tweezers or metal pry tools near battery pins to avoid catastrophic lithium-ion shorting."],
1632 tips: ["Take a high-resolution photo of the cable routing channels before disconnecting anything for exact reassembly reference."],
1633 checkpoints: ["Multimeter verification: 0.00V measured across main battery output pins."],
1634 imageUrl: IMAGES2.screenTeardown1
1635 },
1636 {
1637 stepNumber: 2,
1638 phase: "Phase 2: Hinge Bracket & Antenna Unrouting",
1639 title: "Display Hinge Anchor Unbolting & Antenna Cable Isolation",
1640 description: "Disconnect the embedded DisplayPort (eDP) 30/40-pin flex cable and Wi-Fi/Webcam coaxial leads. Flip open the display assembly to 90 degrees to access the heavy-duty steel hinge anchor brackets.",
1641 toolRequired: "Torx T5 / Phillips #00 & Micro-Tweezers",
1642 torqueSpec: "0.35 Nm",
1643 subSteps: [
1644 "Lift the protective Kapton tape covering the 30-pin/40-pin eDP connector.",
1645 "Flip up the metal locking bail on the eDP header and slide the ribbon cable straight back out of the socket.",
1646 "Carefully disconnect the Main (Black) and Aux (Gray) Wi-Fi coaxial antenna leads by lifting vertically with nylon tweezers.",
1647 "Unroute both antenna cables and the webcam flex cable from the chassis cable retention guides.",
1648 "Remove the 3-4 heavy-duty steel hinge screws on each side anchoring the display to the lower palmrest frame."
1649 ],
1650 warnings: ["Do not bend coaxial antenna micro-leads at 90-degree sharp angles; keep smooth 5mm bend radii."],
1651 tips: ["Work on an ESD mat to avoid scratching the pristine anodized aluminum display lid."],
1652 checkpoints: ["Confirm all flex cables and coax leads are completely free of the hinge channels before separating the assemblies."],
1653 imageUrl: IMAGES2.screenTeardown2
1654 },
1655 {
1656 stepNumber: 3,
1657 phase: "Phase 3: Bezel Separation & Display Panel Extraction",
1658 title: "Bezel Adhesive Release & LCD/OLED Panel Swap",
1659 description: "Separate the plastic/aluminum front bezel from the rear enclosure using heat-assisted adhesive softening and a thin plastic pry pick. Remove the panel stretch-release tape and seat the replacement panel.",
1660 toolRequired: "Plastic Spudger / Guitar Picks & Heat Gun (60\xB0C)",
1661 torqueSpec: "Hand-tight / Adhesive Mount",
1662 subSteps: [
1663 "Apply mild heat (50-60\xB0C) around the perimeter bezel to soften factory bonding adhesive.",
1664 "Insert a thin plastic guitar pick between the bezel and display lid, working gently around the perimeter to release snap clips.",
1665 "Grasp the black stretch-release adhesive pull tabs at the bottom edge of the panel with tweezers; pull horizontally and flat at a 15-degree angle.",
1666 "Lay the panel face down on a soft microfiber cloth to expose the reverse eDP connector.",
1667 "Peel back the connector tape, release the locking latch, and disconnect the defective LCD/OLED panel.",
1668 "Connect the replacement panel, secure the locking bail, and seal with fresh Kapton tape."
1669 ],
1670 warnings: ["Never pull stretch-release adhesive upward at a 90-degree angle or the tape will snap under the panel."],
1671 tips: ["Test the replacement panel in open-air bench mode before applying final perimeter bezel adhesive strips."],
1672 checkpoints: ["eDP connector is fully seated with gold contact pins evenly aligned and latch fully closed."],
1673 imageUrl: IMAGES2.screenTeardown3
1674 },
1675 {
1676 stepNumber: 4,
1677 phase: "Phase 4: Reassembly & Cable Channel Management",
1678 title: "Hinge Re-Torquing, Cable Routing & Bezel Reseating",
1679 description: "Reattach the display lid to the lower palmrest chassis, torque hinge bolts to manufacturer specifications, and meticulously route antenna leads through isolation guides.",
1680 toolRequired: "Torque Screwdriver & Spudger",
1681 torqueSpec: "0.35 Nm (Hinges), 0.20 Nm (Chassis)",
1682 subSteps: [
1683 "Align hinge brackets over chassis standoffs and loosely thread all anchor bolts before tightening.",
1684 "Torque hinge anchor screws sequentially to 0.35 Nm to guarantee smooth, symmetric hinge resistance.",
1685 "Route Wi-Fi coax and webcam leads through their designated plastic retention channels, ensuring no wire is pinched beneath the hinge plate.",
1686 "Re-seat the front bezel, pressing firmly around all edges until audible snap clicks verify complete engagement.",
1687 "Reattach the main battery power harness and snap the bottom chassis cover into position."
1688 ],
1689 warnings: ["Pinching the Wi-Fi coax lead under a metal hinge will short RF ground and drastically degrade wireless signal."],
1690 tips: ["Check hinge alignment by closing the laptop and inspecting the perimeter seam gap for uniform 0.8mm clearance."],
1691 checkpoints: ["Hinge opens smoothly with single-hand resistance without chassis creaking."],
1692 imageUrl: IMAGES2.screenTeardown2
1693 },
1694 {
1695 stepNumber: 5,
1696 phase: "Phase 5: Post-Repair Verification & Display Calibration",
1697 title: "Cold POST Boot, Pixel Inspection & Backlight Verification",
1698 description: "Power on the system for cold boot initialization. Execute hardware diagnostics, inspect for dead sub-pixels, verify high-refresh rate options, and test ambient light sensor auto-brightness.",
1699 toolRequired: "Display Calibration Utility & UEFI Hardware Diagnostics",
1700 torqueSpec: "N/A",
1701 subSteps: [
1702 "Connect OEM AC power adapter and press the power button to trigger cold boot POST.",
1703 "Enter BIOS Setup (F2/F12/Del) to confirm display panel EDID identification and native resolution.",
1704 "Boot into OS and run an RGB full-screen color test (Red, Green, Blue, White, Black) to verify zero stuck pixels or backlight bleed.",
1705 "Open Display Settings and verify maximum supported refresh rate (120Hz/165Hz/240Hz) and HDR color bit-depth.",
1706 "Cover ambient light sensor near webcam to confirm automatic display brightness dimming functionality."
1707 ],
1708 warnings: ["If backlight fails to illuminate, immediately power off and inspect eDP cable seating before replacing logic board fuses."],
1709 tips: ["Allow display to run at 100% brightness for 15 minutes to verify temperature stability on the LED driver IC."],
1710 checkpoints: ["Flawless picture output across 100% of the active display matrix with working brightness controls."],
1711 imageUrl: IMAGES2.screenTeardown3
1712 }
1713 ],
1714 imageUrl: IMAGES2.screenTeardown3
1715 },
1716 {
1717 category: "hardware",
1718 titleSuffix: "Motherboard & VRM Power Delivery Replacement",
1719 descSuffix: "Start-to-finish logic board teardown, thermal module dismount, port realignment, multi-rail voltage verification, and diagnostic POST restoration.",
1720 difficulty: "hard",
1721 estimatedTime: "60-90 min",
1722 tools: ["Precision Screwdriver Kit", "Thermal Paste (Arctic MX-6 / PTM7950)", "Digital Multimeter", "ESD Mat & Wrist Strap", "Magnetic Screw Organizing Tray"],
1723 warnings: [
1724 "Always observe strict ESD protocols. Logic boards contain highly static-sensitive MOSFETs and BGA silicon dies.",
1725 "Categorize all screws by length and standoff diameter. Inserting a long screw into a logic board standoff will puncture copper PCB power planes.",
1726 "Clean all heatsink mating surfaces with 99.9% anhydrous IPA before applying fresh thermal interface compound."
1727 ],
1728 steps: [
1729 {
1730 stepNumber: 1,
1731 phase: "Phase 1: Pre-Disassembly Diagnostics & Sub-assembly Extraction",
1732 title: "Chassis Depower, Battery Decoupling & Peripheral Removal",
1733 description: "Perform cold power drain, remove bottom enclosure, disconnect main battery harness, and remove modular sub-assemblies including NVMe SSDs, Wi-Fi module, cooling assembly, and RAM SODIMMs.",
1734 toolRequired: "Torx T5 / Phillips #00 & ESD Mat",
1735 torqueSpec: "0.20 Nm",
1736 subSteps: [
1737 "Power down unit, disconnect AC charger, and ground yourself on an ESD workstation.",
1738 "Remove bottom enclosure and disconnect the primary battery cable header.",
1739 "Extract NVMe SSDs (store in anti-static bag), unfasten Wi-Fi module, and remove DDR5 SODIMMs.",
1740 "Loosen heatsink spring screws in stamped reverse order (4 -> 3 -> 2 -> 1) and gently lift copper vapor chamber away from CPU/GPU dies.",
1741 "Disconnect all peripheral ribbon cables: Trackpad, Keyboard, IO Daughterboard, Audio Jack, Speakers, and Display eDP."
1742 ],
1743 warnings: ["Do not yank stubborn heatsinks; if dried paste sticks, gently twist clockwise and counterclockwise."],
1744 tips: ["Store each sub-component with its exact mounting screws in labeled magnetic compartments."],
1745 checkpoints: ["All ribbon connectors released from ZIF sockets without torn flex traces."],
1746 imageUrl: IMAGES2.screenTeardown1
1747 },
1748 {
1749 stepNumber: 2,
1750 phase: "Phase 2: Logic Board Extraction & Standoff Inspection",
1751 title: "Logic Board Extraction & Port Realignment",
1752 description: "Remove motherboard grounding and standoff screws. Carefully angle the board upward to clear external I/O ports from magnesium chassis cutouts.",
1753 toolRequired: "Phillips #00 & Plastic Spudger",
1754 torqueSpec: "0.25 Nm",
1755 subSteps: [
1756 "Remove all perimeter logic board screws and motherboard-to-chassis grounding plates.",
1757 "Check for hidden screws beneath black Mylar insulation tape or near the cooling exhaust fins.",
1758 "Gently lift the logic board from the right edge, easing USB-C, HDMI, and audio jacks out of chassis frame ports.",
1759 "Inspect chassis cavity for metal debris, loose standoffs, or deteriorated thermal pads.",
1760 "Transfer TPM module, BIOS security dongles, or daughterboard interconnects to the replacement board as required."
1761 ],
1762 warnings: ["Never flex or twist the motherboard PCB during extraction to avoid fracturing micro BGA solder balls."],
1763 tips: ["Check that thermal pads on the chassis bottom are intact and clean of dust before seating the new board."],
1764 checkpoints: ["Chassis standoffs are clean and straight with no stripped brass threads."],
1765 imageUrl: IMAGES2.logicBoard
1766 },
1767 {
1768 stepNumber: 3,
1769 phase: "Phase 3: New Motherboard Seating & Port Alignment",
1770 title: "Replacement Logic Board Installation & Flex Interconnects",
1771 description: "Seat the replacement motherboard, align I/O ports seamlessly with chassis cutouts, fasten standoff screws, and reconnect all peripheral ribbon cables.",
1772 toolRequired: "Phillips #00 & Nylon Tweezers",
1773 torqueSpec: "0.25 Nm",
1774 subSteps: [
1775 "Slide I/O ports into the left chassis bezel openings at a 15-degree angle, then lower the motherboard flat onto brass standoffs.",
1776 "Install and finger-tighten all motherboard mounting screws before applying final 0.25 Nm torque.",
1777 "Reconnect eDP display ribbon, locking bail, and secure with fresh Kapton tape.",
1778 "Insert all ZIF flex ribbons (Keyboard, Trackpad, Audio, USB) ensuring blue alignment tabs are seated flush against socket stops.",
1779 "Reinstall RAM SODIMMs into slot channels until side metal clips snap locked."
1780 ],
1781 warnings: ["Ensure no loose ribbon cables are trapped underneath the motherboard before screwing down standoffs."],
1782 tips: ["Use nylon tweezers to guide delicate flex cables into ZIF headers without creasing."],
1783 checkpoints: ["All I/O ports (USB, HDMI, Type-C) are centered with 0.5mm clearance in chassis cutouts."],
1784 imageUrl: IMAGES2.soldering
1785 },
1786 {
1787 stepNumber: 4,
1788 phase: "Phase 4: Thermal Interface Application & Heatsink Torquing",
1789 title: "Direct-Die Thermal Paste Application & Heatsink Installation",
1790 description: "Clean CPU and GPU silicon dies with 99% IPA, apply high-performance thermal compound or phase-change PTM7950, and torque heatsink screws in stamped sequence.",
1791 toolRequired: "99.9% IPA, Lint-free Wipes & Arctic MX-6",
1792 torqueSpec: "0.20 Nm (Sequential 1-2-3-4)",
1793 subSteps: [
1794 "Wipe silicon dies and copper heatsink contact blocks clean using 99% IPA until mirror finish.",
1795 "Apply a uniform direct-die layer of Arctic MX-6 or pre-cut PTM7950 phase-change pad.",
1796 "Inspect VRAM and VRM thermal pads; replace any torn pads with 12.8 W/mK pads of matching caliper thickness.",
1797 "Lower copper cooling assembly straight down onto dies without sliding sideways.",
1798 "Tighten heatsink captive screws strictly in stamped numerical sequence (1 -> 2 -> 3 -> 4) to ensure uniform die pressure."
1799 ],
1800 warnings: ["Uneven heatsink screw tightening will crack bare silicon die corners or cause severe thermal throttling."],
1801 tips: ["Plug in both 4-pin PWM fan headers before fastening the bottom cover."],
1802 checkpoints: ["Thermal paste spread covers 100% of active die surface without air bubbles."],
1803 imageUrl: IMAGES2.thermalPaste
1804 },
1805 {
1806 stepNumber: 5,
1807 phase: "Phase 5: Reassembly, Power-up & POST Diagnostic Verification",
1808 title: "Battery Connection, Chassis Closure & Multi-Rail Burn-In",
1809 description: "Reconnect battery harness, close chassis, and perform cold boot initialization, memory training, BIOS serial provisioning, and stress testing.",
1810 toolRequired: "OEM AC Adapter & Hardware Diagnostic Suite",
1811 torqueSpec: "0.20 Nm (Chassis)",
1812 subSteps: [
1813 "Reconnect main battery cable to motherboard header and seat safety latch.",
1814 "Fasten bottom enclosure and torque perimeter screws.",
1815 "Connect OEM AC power adapter; allow up to 45 seconds on first boot for DDR5 memory training and EC initialization.",
1816 "Enter BIOS Setup to verify CPU, RAM capacity, NVMe detection, and system serial numbers.",
1817 "Boot OS and run 15-minute Cinebench / FurMark thermal stress test to verify core temperatures remain <85\xB0C."
1818 ],
1819 warnings: ["If fans spin at 100% with black screen on first power-up, wait at least 90 seconds before interrupting memory training."],
1820 tips: ["Flash the latest verified OEM BIOS version to update firmware microcode for the replacement board."],
1821 checkpoints: ["System completes full cold POST boot in under 12 seconds with all hardware sensors reporting normal."],
1822 imageUrl: IMAGES2.biosScreen
1823 }
1824 ],
1825 imageUrl: IMAGES2.logicBoard
1826 },
1827 {
1828 category: "hardware",
1829 titleSuffix: "OEM Battery Pack Replacement & BMS Calibration",
1830 descSuffix: "Start-to-finish battery service: safely discharge, release industrial pull-tabs, route OEM harness, verify charging rails, and complete full BMS calibration cycle.",
1831 difficulty: "easy",
1832 estimatedTime: "25-35 min",
1833 tools: ["Phillips #00 Screwdriver", "Plastic Pry Pick", "Anti-Static Safety Glasses", "Battery Adhesive Pull Tabs", "Digital Multimeter"],
1834 warnings: [
1835 "Discharge existing battery below 25% prior to disassembly. Charged lithium-ion cells pose a significant fire hazard if accidentally punctured.",
1836 "Never use sharp metal tools or excessive leverage near lithium pouch cells.",
1837 "Properly recycle degraded battery packs at an authorized e-waste hazardous materials facility."
1838 ],
1839 steps: [
1840 {
1841 stepNumber: 1,
1842 phase: "Phase 1: Pre-Disassembly Diagnostics & Battery Discharge",
1843 title: "Battery Depletion & Enclosure Removal",
1844 description: "Discharge battery pack below 25% state-of-charge. Disconnect external power, remove chassis bottom cover, and inspect the internal battery compartment for swelling or fluid leakage.",
1845 toolRequired: "Torx T5 / Phillips #00 & Plastic Spudger",
1846 torqueSpec: "0.20 Nm",
1847 subSteps: [
1848 "Run laptop on battery power until charge drops below 20% to minimize thermal runaway risk.",
1849 "Power down completely and disconnect AC adapter.",
1850 "Remove bottom casing fasteners and release perimeter clips.",
1851 "Perform visual inspection: check for pillowing (swollen cells) or sweet chemical electrolyte odor."
1852 ],
1853 warnings: ["If battery is noticeably swollen, wear safety glasses and handle with extreme care."],
1854 tips: ["Keep a fire-safe battery bucket or dry sand nearby when handling compromised lithium cells."],
1855 checkpoints: ["Chassis opened cleanly with clear access to all battery bracket mounting screws."],
1856 imageUrl: IMAGES2.screenTeardown1
1857 },
1858 {
1859 stepNumber: 2,
1860 phase: "Phase 2: Harness Decoupling & Stretch Adhesive Release",
1861 title: "BMS Cable Disconnection & Adhesive Pull-Tab Release",
1862 description: "Disconnect the battery power/data ribbon from the motherboard header. Remove bracket screws and slowly extract stretch-release adhesive strips parallel to the chassis base.",
1863 toolRequired: "Plastic Pry Pick & Micro-Tweezers",
1864 torqueSpec: "Hand-release",
1865 subSteps: [
1866 "Slide back the metal retention collar on the battery motherboard connector and pull the harness straight out.",
1867 "Remove the 4-6 perimeter Phillips screws securing the battery frame brackets to the palmrest.",
1868 "Grasp the black tips of the stretch-release adhesive pull tabs with tweezers.",
1869 "Slowly pull the adhesive strip horizontally parallel to the bottom of the battery at a flat 10-15 degree angle.",
1870 "Continue pulling steadily until the adhesive tape stretches out completely, releasing the cell from the chassis tray."
1871 ],
1872 warnings: ["Do not pry upward against the battery with metal spudgers; prying will crease pouch cells and cause internal short circuits."],
1873 tips: ["If a pull-tab snaps, apply 3 drops of 99% IPA under the battery corner and gently floss underneath with dental floss or plastic string."],
1874 checkpoints: ["Old battery lifted free of chassis cavity without bending or puncturing."],
1875 imageUrl: IMAGES2.battery
1876 },
1877 {
1878 stepNumber: 3,
1879 phase: "Phase 3: OEM Battery Mounting & Harness Connection",
1880 title: "New Battery Pack Installation & Fastener Torquing",
1881 description: "Clean adhesive residue from chassis tray, apply fresh OEM battery mounting tape, align mounting posts, and seat the data/power harness into the logic board header.",
1882 toolRequired: "Phillips #00 & Lint-free Wipe",
1883 torqueSpec: "0.20 Nm",
1884 subSteps: [
1885 "Clean old adhesive residue from magnesium chassis floor with 99% IPA.",
1886 "Apply fresh pre-cut double-sided battery adhesive strips to the chassis mounting bay.",
1887 "Lower the new OEM battery into position, aligning chassis screw standoffs.",
1888 "Tighten all bracket mounting screws to 0.20 Nm in a cross pattern.",
1889 "Plug the battery cable firmly into the motherboard header and slide the locking collar forward."
1890 ],
1891 warnings: ["Verify battery connector pin polarity matches motherboard socket before pushing down."],
1892 tips: ["Ensure the battery data ribbon is not pinched beneath any plastic chassis alignment ribs."],
1893 checkpoints: ["Battery sits completely flat and rigid in the chassis tray with zero wobble."],
1894 imageUrl: IMAGES2.battery
1895 },
1896 {
1897 stepNumber: 4,
1898 phase: "Phase 4: Chassis Reassembly & Initial Power-On Test",
1899 title: "Enclosure Closure & Power Rail Handshake",
1900 description: "Reattach bottom enclosure, torque chassis fasteners, connect AC adapter, and verify charging LED indicator behavior.",
1901 toolRequired: "Torx T5 / Phillips #00",
1902 torqueSpec: "0.20 Nm",
1903 subSteps: [
1904 "Snap bottom enclosure into place around all edges.",
1905 "Install and torque all perimeter chassis screws.",
1906 "Connect OEM AC power adapter and observe charging indicator LED (Amber = Charging, White = Full).",
1907 "Power on system and boot into OS to verify battery health reporting in OS taskbar."
1908 ],
1909 warnings: ["If charging LED blinks rapidly (Error Code), disconnect power and verify battery cable seating."],
1910 tips: ["Check Battery Report via `powercfg /batteryreport` to verify full charge capacity matches design capacity."],
1911 checkpoints: ["Battery status in OS displays 'Plugged in, charging' with positive wattage draw."],
1912 imageUrl: IMAGES2.screenTeardown1
1913 },
1914 {
1915 stepNumber: 5,
1916 phase: "Phase 5: Post-Repair Battery Management System (BMS) Calibration",
1917 title: "Full Charge & Discharge Calibration Cycle",
1918 description: "Execute a complete 100% to 5% calibration cycle to calibrate the internal battery fuel gauge IC (Texas Instruments BQ-series) for pinpoint runtime accuracy.",
1919 toolRequired: "AC Charger & System Diagnostics",
1920 torqueSpec: "N/A",
1921 subSteps: [
1922 "Charge laptop uninterrupted until the battery reaches 100% and keep plugged in for an additional 2 hours.",
1923 "Unplug the AC adapter and use the system normally until battery drains below 5% and low-battery warning appears.",
1924 "Allow system to hibernate/shut down automatically and leave powered off for 1-2 hours.",
1925 "Plug the AC adapter back in and charge non-stop to 100% in a single continuous session.",
1926 "Verify that battery health and estimated remaining runtime metrics are synchronized accurately."
1927 ],
1928 warnings: ["Do not allow lithium batteries to remain at 0% for prolonged days to prevent copper shunting."],
1929 tips: ["Set battery charge threshold in OEM utility to 80% if machine is primarily used docked at a desk."],
1930 checkpoints: ["Fuel gauge shows 100% capacity with accurate runtime decay curve."],
1931 imageUrl: IMAGES2.battery
1932 }
1933 ],
1934 imageUrl: IMAGES2.battery
1935 },
1936 {
1937 category: "hardware",
1938 titleSuffix: "DC-In Power Jack & USB-C Port Board Replacement",
1939 descSuffix: "Start-to-finish power port replacement: diagnose voltage drops, decouple hinge brackets, replace fractured DC-in harness/Type-C daughterboard, and verify 20V PD rails.",
1940 difficulty: "medium",
1941 estimatedTime: "35-45 min",
1942 tools: ["Torx T5 / Phillips #00", "Digital Multimeter (True RMS)", "Plastic Spudger", "ESD Mat", "Micro-Tweezers"],
1943 warnings: [
1944 "Ensure all AC power and internal battery cables are detached before probing port solder joints.",
1945 "Check USB-C port pins for bent metallic VBUS pins that could short 20V to GND or D+/D- data lines."
1946 ],
1947 steps: [
1948 {
1949 stepNumber: 1,
1950 phase: "Phase 1: Pre-Disassembly Diagnostics & Battery Isolation",
1951 title: "Power Isolation & Chassis Opening",
1952 description: "Disconnect AC adapter, remove bottom enclosure, disconnect internal battery harness, and probe DC-in port with multimeter to isolate intermittent loose contact or fractured solder joints.",
1953 toolRequired: "Torx T5 / Phillips #00 & Multimeter",
1954 torqueSpec: "0.20 Nm",
1955 subSteps: [
1956 "Power off device and remove bottom enclosure screws.",
1957 "Disconnect the internal battery connector from the motherboard to isolate all internal power rails.",
1958 "Inspect the DC-in barrel jack or USB-C receptacle for loose center pins, cracked plastic housings, or burn discoloration."
1959 ],
1960 warnings: ["Never probe live 20V power pins with metal tools while the battery is connected."],
1961 tips: ["A wiggly charging connector that only charges at certain angles indicates fractured internal solder terminals."],
1962 checkpoints: ["Internal battery is completely detached and confirmed at 0.0V across motherboard header."],
1963 imageUrl: IMAGES2.screenTeardown1
1964 },
1965 {
1966 stepNumber: 2,
1967 phase: "Phase 2: Hinge Bracket Lift & Port Harness Extraction",
1968 title: "Hinge Disassembly & Port Board Extraction",
1969 description: "Unbolt the left display hinge bracket covering the power port, unroute braided harness from cable guides, and disconnect the port module from the logic board.",
1970 toolRequired: "Phillips #00 / Torx T5 & Spudger",
1971 torqueSpec: "0.35 Nm (Hinge)",
1972 subSteps: [
1973 "Remove the 2-3 steel hinge screws anchoring the hinge bracket over the DC-in port.",
1974 "Gently lift the hinge arm upward by 30 degrees to create vertical clearance.",
1975 "Unplug the 8-pin braided DC-in harness from the motherboard header, or remove the daughterboard ribbon cable.",
1976 "Lift the defective DC-in jack out of its molded chassis retention pocket."
1977 ],
1978 warnings: ["Do not over-flex the display lid while the hinge is unbolted to avoid cracking the lower chassis plastic."],
1979 tips: ["Keep the display lid supported with a foam block while the hinge screws are removed."],
1980 checkpoints: ["Defective port extracted cleanly without damaging neighboring Wi-Fi antenna routing."],
1981 imageUrl: IMAGES2.soldering
1982 },
1983 {
1984 stepNumber: 3,
1985 phase: "Phase 3: New Port Installation & Hinge Re-Torquing",
1986 title: "OEM Port Seating & Mechanical Hinge Securing",
1987 description: "Install replacement OEM charging port into chassis notch, plug connector into motherboard, lower hinge bracket, and torque screws to manufacturer specifications.",
1988 toolRequired: "Torque Screwdriver (0.35 Nm)",
1989 torqueSpec: "0.35 Nm (Hinge Anchor)",
1990 subSteps: [
1991 "Seat the new OEM port into the chassis notch, ensuring alignment tabs lock firmly into position.",
1992 "Plug the power harness into the motherboard header until the connector clicks locked.",
1993 "Lower the steel hinge bracket flush over the port assembly.",
1994 "Thread and torque hinge screws to 0.35 Nm to ensure zero mechanical play when inserting the charger."
1995 ],
1996 warnings: ["Ensure the braided power wires are tucked neatly inside chassis guides and not pinched under the hinge plate."],
1997 tips: ["Apply a drop of blue threadlocker (Loctite 242) to hinge screws to prevent loosening over time."],
1998 checkpoints: ["Charging port is rock-solid with zero wobble when inserting charger cable."],
1999 imageUrl: IMAGES2.logicBoard
2000 },
2001 {
2002 stepNumber: 4,
2003 phase: "Phase 4: Reassembly, Voltage Probing & Charging Verification",
2004 title: "Battery Reconnection, 20V PD Verification & Burn-In Test",
2005 description: "Reconnect battery, fasten bottom cover, plug in AC charger, and verify stable 19V/20V negotiation and positive battery charge current.",
2006 toolRequired: "USB-C Power Meter / Multimeter",
2007 torqueSpec: "0.20 Nm",
2008 subSteps: [
2009 "Reconnect internal battery harness to the motherboard.",
2010 "Fasten bottom enclosure screws securely.",
2011 "Connect USB-C power meter / AC charger and verify voltage negotiates immediately to 20.0V @ 3.25A / 5.0A (65W/100W/140W).",
2012 "Wiggle charging cable gently at 45-degree angles to verify stable, continuous charging connection with zero disconnects.",
2013 "Monitor battery charge percentage in OS for 15 minutes to confirm rapid charging rate."
2014 ],
2015 warnings: ["If voltage stays stuck at 5.0V on USB-C, inspect CC1/CC2 lines on the port daughterboard."],
2016 tips: ["Use an inline USB-C power meter to monitor real-time wattage draw during heavy load."],
2017 checkpoints: ["Full rated power delivery (20V @ 3.25A+) negotiated without thermal throttling."],
2018 imageUrl: IMAGES2.osRecovery
2019 }
2020 ],
2021 imageUrl: IMAGES2.soldering
2022 },
2023 {
2024 category: "hardware",
2025 titleSuffix: "Dual Cooling Fan & Copper Heatpipe Module Overhaul",
2026 descSuffix: "Start-to-finish thermal overhaul: isolate power, remove copper cooling assembly, replace noisy blower fans, clean fin stacks, and torque heatsink in sequential order.",
2027 difficulty: "medium",
2028 estimatedTime: "30-40 min",
2029 tools: ["Phillips #00 Screwdriver", "Thermal Paste (Arctic MX-6)", "Microfiber Cloths", "99% Isopropyl Alcohol", "Soft Anti-Static Brush"],
2030 warnings: [
2031 "Always tighten and loosen heatsink screws in numbered sequence (1-2-3-4) to prevent uneven die pressure and cracked silicon.",
2032 "Never allow high-pressure air to spin cooling fans freely; hold the impeller stationary to prevent induced voltage back-EMF."
2033 ],
2034 steps: [
2035 {
2036 stepNumber: 1,
2037 phase: "Phase 1: Pre-Disassembly Diagnostics & Battery Isolation",
2038 title: "Power Drain & Bottom Enclosure Removal",
2039 description: "Power down unit, disconnect AC adapter, remove bottom enclosure, disconnect battery harness, and inspect cooling blowers for hair, dust buildup, or bearing play.",
2040 toolRequired: "Torx T5 / Phillips #00 & Spudger",
2041 torqueSpec: "0.20 Nm",
2042 subSteps: [
2043 "Power off machine and disconnect AC power.",
2044 "Remove bottom casing fasteners and release retention clips.",
2045 "Disconnect the main battery connector from the motherboard to ensure safe working conditions.",
2046 "Inspect CPU and GPU blower fans for wobbling impeller blades or seized bearings."
2047 ],
2048 warnings: ["Disconnect battery before touching fan PWM headers to avoid shorting 5V fan rail."],
2049 tips: ["Spin the fan blade with your finger; a healthy fluid-dynamic bearing spins silently with zero friction."],
2050 checkpoints: ["Chassis opened and battery isolated with clear access to all cooling assembly screws."],
2051 imageUrl: IMAGES2.screenTeardown1
2052 },
2053 {
2054 stepNumber: 2,
2055 phase: "Phase 2: Cooling Assembly & Fan Removal",
2056 title: "Fan Header Disconnection & Heatsink Extraction",
2057 description: "Unplug 4-pin PWM fan headers, loosen heatsink screws in reverse numerical order, and gently lift the copper heatpipe assembly away from the motherboard.",
2058 toolRequired: "Phillips #00 & Nylon Tweezers",
2059 torqueSpec: "Reverse Sequence Loosening",
2060 subSteps: [
2061 "Unplug the 4-pin PWM fan headers from the logic board using nylon tweezers.",
2062 "Loosen the spring-loaded heatsink screws in reverse stamped sequence (4 -> 3 -> 2 -> 1).",
2063 "Remove the independent fan casing screws securing blowers to the magnesium chassis.",
2064 "Gently twist and lift the copper heatpipe assembly away from the CPU/GPU silicon dies."
2065 ],
2066 warnings: ["Never pry roughly against copper heatpipes; bending them creates vapor chamber capillary leaks."],
2067 tips: ["If old paste is hardened like cement, warm the heatsink slightly with a hairdryer before lifting."],
2068 checkpoints: ["Heatsink and fan modules removed cleanly without bending copper fins."],
2069 imageUrl: IMAGES2.thermalPaste
2070 },
2071 {
2072 stepNumber: 3,
2073 phase: "Phase 3: Exhaust Fin Decontamination & Fan Replacement",
2074 title: "Radiator Fin Blowout & New Fan Mounting",
2075 description: "Blow compressed air through exhaust radiator fins from the outside inward, wipe fan bays, and mount brand-new fluid-dynamic bearing fan units.",
2076 toolRequired: "Electric Air Blower & Soft Brush",
2077 torqueSpec: "0.20 Nm",
2078 subSteps: [
2079 "Blow compressed air through copper exhaust radiator fin stacks to dislodge felt-like dust mats.",
2080 "Clean old dried thermal compound from copper baseplates using 99% IPA until mirror finish.",
2081 "Unscrew old blower fans from the heatpipe shroud and mount new OEM fluid-dynamic bearing fans.",
2082 "Fasten fan-to-heatsink mounting screws to 0.20 Nm."
2083 ],
2084 warnings: ["Ensure no loose dust debris remains inside the chassis cavity."],
2085 tips: ["Check that the sponge foam airflow sealing gasket around the exhaust vents is intact."],
2086 checkpoints: ["Radiator fins are 100% transparent to light with zero dust blockages."],
2087 imageUrl: IMAGES2.cleaningBlower
2088 },
2089 {
2090 stepNumber: 4,
2091 phase: "Phase 4: Direct-Die Repasting & Sequential Torque",
2092 title: "Thermal Compound Application & Sequential Tightening",
2093 description: "Clean CPU/GPU dies with 99% IPA, apply high-performance thermal paste, seat heatsink, torque screws sequentially, and reconnect PWM fan headers.",
2094 toolRequired: "Arctic MX-6 & Torque Screwdriver",
2095 torqueSpec: "0.20 Nm (Sequential 1 -> 2 -> 3 -> 4)",
2096 subSteps: [
2097 "Clean CPU and GPU silicon dies with 99% IPA and lint-free wipes.",
2098 "Apply a pea-sized dot of Arctic MX-6 to the CPU die and an X-pattern to the larger GPU die.",
2099 "Inspect VRAM thermal pads, replacing any torn pads with 1.0mm 12.8 W/mK silicone pads.",
2100 "Lower heatsink assembly straight down onto the dies.",
2101 "Tighten screws in stamped numerical order (1 -> 2 -> 3 -> 4) to ensure uniform mounting pressure.",
2102 "Plug both 4-pin PWM fan headers firmly into motherboard sockets."
2103 ],
2104 warnings: ["Tightening heatsink screws out of order causes uneven paste spread and thermal throttling."],
2105 tips: ["Double check that both fan cables are fully plugged in before closing the bottom cover."],
2106 checkpoints: ["All heatsink screws torqued down snug and both fan cables securely connected."],
2107 imageUrl: IMAGES2.thermalPaste
2108 },
2109 {
2110 stepNumber: 5,
2111 phase: "Phase 5: Reassembly & Thermal Stress Benchmark",
2112 title: "Chassis Closure, Fan PWM RPM Test & Thermal Benchmark",
2113 description: "Reconnect battery, fasten bottom cover, boot into OS, verify fan tachometer RPM readings, and run 15-minute thermal load benchmark.",
2114 toolRequired: "HWiNFO64 & Cinebench / FurMark",
2115 torqueSpec: "0.20 Nm",
2116 subSteps: [
2117 "Reconnect internal battery harness and snap bottom enclosure into place.",
2118 "Fasten all perimeter chassis screws.",
2119 "Boot into OS and launch HWiNFO64 sensor monitor.",
2120 "Verify both CPU and GPU fan RPM sensors ramp up smoothly when initiating load.",
2121 "Run Cinebench R23 multi-core test; verify CPU temperatures stay under 85\xB0C with zero thermal throttling."
2122 ],
2123 warnings: ["If fans fail to spin under load, immediately power off and verify fan header connections."],
2124 tips: ["Create a custom fan curve in OEM software to optimize acoustics vs cooling performance."],
2125 checkpoints: ["CPU and GPU operate at maximum boost frequencies under 82\xB0C with whisper-quiet fan acoustics."],
2126 imageUrl: IMAGES2.osRecovery
2127 }
2128 ],
2129 imageUrl: IMAGES2.thermalPaste
2130 },
2131 // ----------------------------------------------------
2132 // SOFTWARE (4 Templates)
2133 // ----------------------------------------------------
2134 {
2135 category: "software",
2136 titleSuffix: "UEFI / BIOS Firmware Recovery & Crisis Flash Protocol",
2137 descSuffix: "Start-to-finish UEFI firmware restoration: prepare FAT32 crisis flash media, trigger hardware flashback protocols, clear corrupted NVRAM, and restore microcode integrity.",
2138 difficulty: "medium",
2139 estimatedTime: "20-30 min",
2140 tools: ["FAT32 Formatted USB Flash Drive (8GB/16GB)", "OEM BIOS Firmware Binary", "Stable AC Power Source", "Hardware FlashBack Button / Key Combinations"],
2141 warnings: [
2142 "NEVER unplug AC power or force reboot while the BIOS EEPROM write cycle is active (interruption results in bricked SPI ROM).",
2143 "Ensure battery has at least 50% charge and OEM AC adapter is plugged into a stable wall outlet."
2144 ],
2145 steps: [
2146 {
2147 stepNumber: 1,
2148 phase: "Phase 1: Crisis USB Preparation & ROM Renaming",
2149 title: "FAT32 MBR USB Drive Formatting & Firmware File Staging",
2150 description: "Format a clean USB flash drive to FAT32 with MBR partition table, download the verified OEM BIOS binary, and rename it to the hardware emergency FlashBack string.",
2151 toolRequired: "Rufus / Disk Management & USB Drive",
2152 torqueSpec: "N/A",
2153 subSteps: [
2154 "Insert an 8GB or 16GB USB drive into a working computer.",
2155 "Format the USB drive to FAT32 filesystem with MBR partition table (not GPT) and 4096-byte cluster size.",
2156 "Download the official OEM BIOS firmware update package from the manufacturer support portal.",
2157 "Extract the raw `.bin` or `.CAP` BIOS binary file onto the root directory of the USB drive.",
2158 "Rename the file to the specific vendor crisis string (e.g., `creative.rom`, `ASUS.CAP`, `bios.bin` per vendor specs)."
2159 ],
2160 warnings: ["Do not place BIOS binary in subfolders; it must sit on the USB root directory `E:\\`."],
2161 tips: ["Use USB 2.0 flash drives when possible, as legacy crisis BIOS loaders sometimes struggle with USB 3.2 controllers."],
2162 checkpoints: ["USB drive formatted to FAT32 MBR with single verified BIOS binary on root directory."],
2163 imageUrl: IMAGES2.biosScreen
2164 },
2165 {
2166 stepNumber: 2,
2167 phase: "Phase 2: CMOS Clear & Hardware FlashBack Trigger",
2168 title: "Hardware FlashBack Execution & Emergency Recovery",
2169 description: "Plug crisis drive into the dedicated BIOS FlashBack USB port, trigger the hardware recovery key combination, and observe status LED flashing cadence.",
2170 toolRequired: "OEM AC Power Adapter",
2171 torqueSpec: "N/A",
2172 subSteps: [
2173 "Connect AC power adapter to the bricked system (ensure battery is connected).",
2174 "Insert the prepared USB flash drive into the rear FlashBack USB port (or leftmost USB port).",
2175 "For desktop boards: Hold the BIOS FlashBack button for 3 seconds until the LED starts blinking.",
2176 "For laptops: Hold emergency recovery key combination (Dell: `Ctrl + Esc`, HP: `Win + B`, Lenovo: `Fn + R`) while inserting AC power and pressing Power button.",
2177 "Release keys once the screen flashes or fans spin at maximum RPM."
2178 ],
2179 warnings: ["Do not touch the system or remove USB drive while the FlashBack LED is blinking."],
2180 tips: ["The FlashBack LED blinks slowly initially (reading ROM) then blinks rapidly (erasing and programming EEPROM)."],
2181 checkpoints: ["FlashBack LED starts regular blinking cycle confirming active EEPROM write."],
2182 imageUrl: IMAGES2.osRecovery
2183 },
2184 {
2185 stepNumber: 3,
2186 phase: "Phase 3: EEPROM Write Cycle & Automated Reboot",
2187 title: "Microcode Programming, Verification & Automatic POST Cycle",
2188 description: "Allow the automated flash engine to erase, program, and verify all SPI ROM blocks (3-7 minutes) until the system initiates cold POST reboot.",
2189 toolRequired: "System Auto-Engine",
2190 torqueSpec: "N/A",
2191 subSteps: [
2192 "Wait 3 to 7 minutes while the system programs the main BIOS, EC microcode, and Intel ME / AMD PSP regions.",
2193 "Observe the flash completion indicator: FlashBack LED turns solid OFF and the system powers down.",
2194 "The system will automatically power on, cycle fans 2-3 times, and perform cold memory training.",
2195 "Wait for the OEM logo to appear on screen; tap F2/Del to enter BIOS Setup."
2196 ],
2197 warnings: ["Multiple automated reboots during first boot are completely normal as memory training runs."],
2198 tips: ["If screen stays black after 5 minutes, power off, remove RTC CMOS coin cell for 60 seconds, and retry."],
2199 checkpoints: ["System boots successfully into BIOS Setup with updated firmware version displayed."],
2200 imageUrl: IMAGES2.biosScreen
2201 },
2202 {
2203 stepNumber: 4,
2204 phase: "Phase 4: BIOS Security & Boot Configuration",
2205 title: "Load Factory Defaults, Secure Boot & TPM 2.0 Restoration",
2206 description: "Load Optimized Factory Defaults in BIOS, enable Intel PTT / AMD fTPM, configure Secure Boot keys, and set primary NVMe boot order.",
2207 toolRequired: "BIOS Interface",
2208 torqueSpec: "N/A",
2209 subSteps: [
2210 "Press `F9` (Load Optimized Defaults) in BIOS and press Enter to clear corrupted NVRAM variables.",
2211 "Navigate to `Security` > `Intel PTT` or `AMD fTPM` > Set to `Enabled`.",
2212 "Navigate to `Boot` / `Security` > `Secure Boot` > Set to `Enabled` (Standard Mode).",
2213 "Navigate to `Boot Order` > Set Windows Boot Manager on NVMe SSD as `Boot Option #1`.",
2214 "Press `F10` to Save Changes and Exit."
2215 ],
2216 warnings: ["Verify SATA/NVMe controller mode (AHCI vs RAID/VMD) matches the original installation or OS will BSOD with INACCESSIBLE_BOOT_DEVICE."],
2217 tips: ["Take a photo of BIOS configuration settings for your maintenance records."],
2218 checkpoints: ["BIOS settings saved and system boots directly into Windows desktop."],
2219 imageUrl: IMAGES2.terminal
2220 },
2221 {
2222 stepNumber: 5,
2223 phase: "Phase 5: Post-Repair Operating System Verification",
2224 title: "Windows Device Manager Check & Firmware Verification",
2225 description: "Boot into Windows, open System Information (`msinfo32`), verify BIOS Version/Date, inspect Device Manager for missing drivers, and test sleep/wake states.",
2226 toolRequired: "msinfo32 & Device Manager",
2227 torqueSpec: "N/A",
2228 subSteps: [
2229 "Press `Win + R`, type `msinfo32`, and press Enter.",
2230 "Verify BIOS Version/Date matches the newly flashed release.",
2231 "Open Device Manager (`devmgmt.msc`) and confirm zero yellow exclamation marks under Firmware or System Devices.",
2232 "Test System Sleep, Hibernation, and Cold Restart cycles to ensure rock-solid ACPI power state transitions."
2233 ],
2234 warnings: ["If Windows BitLocker prompts for a recovery key, enter the 48-digit key once to re-bind TPM PCR registers."],
2235 tips: ["Run `sfc /scannow` in Admin Command Prompt to ensure system files are pristine."],
2236 checkpoints: ["Windows operates flawlessly with verified updated BIOS firmware."],
2237 imageUrl: IMAGES2.osRecovery
2238 }
2239 ],
2240 imageUrl: IMAGES2.biosScreen
2241 },
2242 {
2243 category: "software",
2244 titleSuffix: "EFI Bootloader & BCD Partition Reconstruction",
2245 descSuffix: "Start-to-finish UEFI boot repair: rebuild corrupted 100MB FAT32 EFI system partitions, restore BCD stores, repair master boot records, and resolve 0xc000000e errors.",
2246 difficulty: "medium",
2247 estimatedTime: "25-35 min",
2248 tools: ["Windows 11/10 Recovery USB Installation Media", "Command Prompt (Diskpart, BCDboot, Bootrec)"],
2249 warnings: [
2250 "Exercise extreme caution when formatting volumes in Diskpart. Verify disk and partition volume numbers carefully to avoid wiping data drives."
2251 ],
2252 steps: [
2253 {
2254 stepNumber: 1,
2255 phase: "Phase 1: Boot Recovery Media & Command Environment",
2256 title: "Boot from Windows Recovery Media into Command Prompt",
2257 description: "Insert Windows Recovery USB, boot into UEFI installation environment, navigate to Advanced Troubleshooting, and open Administrative Command Prompt.",
2258 toolRequired: "Windows Recovery USB Media",
2259 torqueSpec: "N/A",
2260 subSteps: [
2261 "Insert Windows Installation / Recovery USB drive into target machine.",
2262 "Power on and tap F12/F11/F8 to open UEFI Boot Menu; select UEFI USB drive.",
2263 "On the Windows Setup screen, click `Next` > click `Repair your computer` in bottom-left corner.",
2264 "Select `Troubleshoot` > select `Advanced Options` > select `Command Prompt`."
2265 ],
2266 warnings: ["Do not click 'Install Now' as that initiates fresh operating system overwrite."],
2267 tips: ["Command Prompt runs under drive letter `X:\\Sources` in Windows Preinstallation Environment (WinPE)."],
2268 checkpoints: ["Administrative Command Prompt window open at `X:\\windows\\system32>`."],
2269 imageUrl: IMAGES2.terminal
2270 },
2271 {
2272 stepNumber: 2,
2273 phase: "Phase 2: Diskpart Partition Triage & Drive Letter Assignment",
2274 title: "Locate OS Partition & Assign Letter to Hidden EFI Volume",
2275 description: "Run `diskpart` utility to identify the Windows OS volume (usually C: or D:) and mount the hidden ~100MB FAT32 EFI System Partition as drive `S:`.",
2276 toolRequired: "Diskpart CLI Utility",
2277 torqueSpec: "N/A",
2278 subSteps: [
2279 "Type `diskpart` and press Enter.",
2280 "Type `list volume` to view all partitions, filesystems, and assigned letters.",
2281 "Identify the Windows OS volume (NTFS, ~500GB/1TB) and note its drive letter (e.g. `C:` or `D:`).",
2282 "Locate the ~100MB FAT32 System partition (Volume label often 'System' or blank).",
2283 "Type `select volume X` (replace X with the ~100MB FAT32 volume number).",
2284 "Type `assign letter=S:` to mount the EFI partition.",
2285 "Type `exit` to return to standard command prompt."
2286 ],
2287 warnings: ["Never format the main NTFS OS partition containing your user data."],
2288 tips: ["If the EFI partition is formatted in RAW or corrupted, format it to FAT32 via `format fs=fat32 quick label=System`."],
2289 checkpoints: ["EFI partition successfully mounted with drive letter `S:`."],
2290 imageUrl: IMAGES2.osRecovery
2291 },
2292 {
2293 stepNumber: 3,
2294 phase: "Phase 3: BCD Store Reconstruction & Boot File Generation",
2295 title: "Rebuild UEFI BCD Store via BCDBoot",
2296 description: "Execute `bcdboot` command to inject fresh UEFI boot files from the Windows directory into the mounted EFI partition `S:`.",
2297 toolRequired: "BCDBoot CLI Tool",
2298 torqueSpec: "N/A",
2299 subSteps: [
2300 "Navigate to S: drive by typing `S:` and press Enter.",
2301 "Navigate to EFI folder: `cd EFI\\Microsoft\\Boot` (if folder exists).",
2302 "Execute the master boot file generation command: `bcdboot C:\\Windows /s S: /f UEFI /v`.",
2303 "Verify the terminal output confirms: `Boot files successfully created.`"
2304 ],
2305 warnings: ["If Windows partition is mounted as D:, change path to `bcdboot D:\\Windows /s S: /f UEFI`."],
2306 tips: ["The `/f UEFI` parameter ensures modern UEFI bootloader files are created, bypassing legacy MBR."],
2307 checkpoints: ["Terminal returns 'Boot files successfully created.'"],
2308 imageUrl: IMAGES2.terminal
2309 },
2310 {
2311 stepNumber: 4,
2312 phase: "Phase 4: Master Boot Record & NVRAM Entry Verification",
2313 title: "Bootrec Scans & UEFI Boot Order Re-registration",
2314 description: "Execute boot sector repair commands and scan for installed Windows installations to ensure complete registry integration.",
2315 toolRequired: "Bootrec CLI Utility",
2316 torqueSpec: "N/A",
2317 subSteps: [
2318 "Type `bootrec /fixmbr` and press Enter.",
2319 "Type `bootrec /fixboot` and press Enter (if Access Denied, `bcdboot` already repaired the store).",
2320 "Type `bootrec /scanos` and confirm it identifies `Total identified Windows installations: 1`.",
2321 "Type `exit` and close Command Prompt."
2322 ],
2323 warnings: ["Ensure you remove the USB flash drive before rebooting."],
2324 tips: ["If multiple Windows installs exist, `bootrec /rebuildbcd` allows selecting which OS to add to the menu."],
2325 checkpoints: ["Scanned OS count = 1 with zero unlinked volumes."],
2326 imageUrl: IMAGES2.terminal
2327 },
2328 {
2329 stepNumber: 5,
2330 phase: "Phase 5: Post-Repair Cold Boot & OS Startup Verification",
2331 title: "Reboot, UEFI Boot Priority & Windows Desktop Boot",
2332 description: "Remove recovery USB, power cycle machine, enter BIOS to verify 'Windows Boot Manager' priority, and boot seamlessly into Windows desktop.",
2333 toolRequired: "System Auto-Engine",
2334 torqueSpec: "N/A",
2335 subSteps: [
2336 "Remove the USB recovery drive.",
2337 "Click `Continue (Exit and continue to Windows)`.",
2338 "If needed, enter BIOS and ensure `Windows Boot Manager` on NVMe SSD is Top Priority.",
2339 "Allow system to boot directly into Windows lock screen without any BSOD or recovery prompts.",
2340 "Open Command Prompt as Administrator and run `bcdedit /enum` to verify all EFI paths are pristine."
2341 ],
2342 warnings: ["If BitLocker prompts on first boot, enter the 48-digit key to allow TPM to re-lock to the new BCD signature."],
2343 tips: ["Create a system restore point once boot stability is confirmed."],
2344 checkpoints: ["Windows boots seamlessly in under 10 seconds."],
2345 imageUrl: IMAGES2.osRecovery
2346 }
2347 ],
2348 imageUrl: IMAGES2.terminal
2349 },
2350 {
2351 category: "software",
2352 titleSuffix: "BSOD Kernel Triage & Clean OS Driver Reinstallation",
2353 descSuffix: "Start-to-finish BSOD resolution: analyze minidump stack traces (WinDbg), execute DDU clean driver wipes in Safe Mode, and install verified WHQL driver packages.",
2354 difficulty: "easy",
2355 estimatedTime: "20-30 min",
2356 tools: ["Display Driver Uninstaller (DDU)", "OEM WHQL Driver Package", "WinDbg Preview", "Windows Safe Mode"],
2357 warnings: [
2358 "Disconnect your ethernet cable and Wi-Fi during DDU reinstallation to prevent Windows Update from automatically downloading generic display drivers."
2359 ],
2360 steps: [
2361 {
2362 stepNumber: 1,
2363 phase: "Phase 1: Minidump Analysis & Driver Fault Isolation",
2364 title: "WinDbg Kernel Minidump Triage & Crash Root-Cause Analysis",
2365 description: "Examine Windows kernel crash dumps in `C:\\Windows\\Minidump` using WinDbg to pinpoint the offending driver module (e.g. nvlddmkm.sys, amdkmdag.sys, rtpx64.sys).",
2366 toolRequired: "WinDbg Preview / BlueScreenView",
2367 torqueSpec: "N/A",
2368 subSteps: [
2369 "Open WinDbg Preview as Administrator.",
2370 "Click `File` > `Open Dump File` and browse to `C:\\Windows\\Minidump\\*.dmp`.",
2371 "Type `!analyze -v` in the command prompt and press Enter.",
2372 "Examine the `BUGCHECK_CODE`, `MODULE_NAME`, and `FAILURE_BUCKET_ID` lines to identify the offending `.sys` driver."
2373 ],
2374 warnings: ["If minidump points to `ntoskrnl.exe` or `hardware`, run PassMark MemTest86 to check for bad RAM."],
2375 tips: ["Look at the IMAGE_NAME line to see the exact driver file responsible for the crash."],
2376 checkpoints: ["Faulty kernel driver identified (e.g. GPU, Audio, Wi-Fi driver)."],
2377 imageUrl: IMAGES2.terminal
2378 },
2379 {
2380 stepNumber: 2,
2381 phase: "Phase 2: Safe Mode Boot & Network Isolation",
2382 title: "Network Disconnection & Clean Safe Mode Boot",
2383 description: "Disconnect active internet connections, stage the latest verified OEM WHQL driver installer, and boot Windows into Safe Mode without networking.",
2384 toolRequired: "Windows Advanced Startup",
2385 torqueSpec: "N/A",
2386 subSteps: [
2387 "Download the latest official WHQL driver package from NVIDIA, AMD, or Intel and save to Desktop.",
2388 "Download Display Driver Uninstaller (DDU) and extract to Desktop.",
2389 "Disconnect ethernet cable and turn off Wi-Fi.",
2390 "Hold `Shift` key while clicking `Start` > `Power` > `Restart`.",
2391 "Navigate to `Troubleshoot` > `Advanced Options` > `Startup Settings` > click `Restart` > press `4` for Safe Mode."
2392 ],
2393 warnings: ["Keeping internet connected during driver wiping causes Windows Update to inject conflicting driver DLLs."],
2394 tips: ["Safe Mode prevents GPU drivers from loading into active memory, allowing clean registry deletion."],
2395 checkpoints: ["Windows booted into Safe Mode (black desktop with 'Safe Mode' in corners)."],
2396 imageUrl: IMAGES2.osRecovery
2397 },
2398 {
2399 stepNumber: 3,
2400 phase: "Phase 3: DDU Deep Registry Clean & Cache Purge",
2401 title: "Display Driver Uninstaller (DDU) Deep Clean Execution",
2402 description: "Run DDU in Safe Mode to wipe all driver binaries, registry entries, display caches, and shader pipelines.",
2403 toolRequired: "Display Driver Uninstaller (DDU)",
2404 torqueSpec: "N/A",
2405 subSteps: [
2406 "Launch `Display Driver Uninstaller.exe` as Administrator.",
2407 "Under 'Select device type', select `GPU` (or `Audio` if fixing sound crashes).",
2408 "Select the device manufacturer (`NVIDIA`, `AMD`, or `Intel`).",
2409 "Click `Clean and restart` button.",
2410 "Allow DDU to purge registry keys, system32 driver stores, and reboot Windows automatically."
2411 ],
2412 warnings: ["Do not interrupt DDU while it is purging registry keys."],
2413 tips: ["Check 'Remove C:\\NVIDIA and C:\\AMD folders' in DDU settings for a 100% clean baseline."],
2414 checkpoints: ["System completes clean wipe and restarts into standard Windows resolution."],
2415 imageUrl: IMAGES2.terminal
2416 },
2417 {
2418 stepNumber: 4,
2419 phase: "Phase 4: Clean WHQL Driver Installation",
2420 title: "Official OEM Driver Installation with Clean Setup",
2421 description: "Run the pre-downloaded official driver setup wizard, check 'Perform Clean Install', and install verified signed drivers.",
2422 toolRequired: "OEM WHQL Setup Package",
2423 torqueSpec: "N/A",
2424 subSteps: [
2425 "Launch the driver installer package (e.g. NVIDIA / AMD / Intel setup).",
2426 "Select `Custom (Advanced)` installation options.",
2427 "Check the box: `Perform a clean installation` (resets all driver profiles to factory defaults).",
2428 "Complete installation and restart the computer."
2429 ],
2430 warnings: ["Do not install beta or non-WHQL drivers on mission-critical technician workstations."],
2431 tips: ["Reconnect internet only AFTER the driver setup has fully completed and rebooted."],
2432 checkpoints: ["Driver installed with native display resolution and multi-monitor support active."],
2433 imageUrl: IMAGES2.osRecovery
2434 },
2435 {
2436 stepNumber: 5,
2437 phase: "Phase 5: Post-Repair Stability Verification & Stress Testing",
2438 title: "Stress Testing, DISM System File Scan & Event Viewer Check",
2439 description: "Reconnect internet, run DISM / SFC scans, launch FurMark / 3DMark benchmark for 20 minutes, and verify Event Viewer has zero WHEA errors.",
2440 toolRequired: "SFC, DISM & FurMark Benchmark",
2441 torqueSpec: "N/A",
2442 subSteps: [
2443 "Open Admin Command Prompt and run `DISM /Online /Cleanup-Image /RestoreHealth` followed by `sfc /scannow`.",
2444 "Launch FurMark / 3DMark and run full GPU/CPU stress test for 15 minutes.",
2445 "Open Event Viewer (`eventvwr.msc`) > `Windows Logs` > `System` and filter for `Critical` and `Error` events.",
2446 "Verify zero WHEA-Logger or display driver crash entries appear."
2447 ],
2448 warnings: ["If BSOD recurs under load, perform hardware memory testing with PassMark MemTest86."],
2449 tips: ["Keep a clean system restore point created after driver stabilization."],
2450 checkpoints: ["System passes 15-minute 100% load stress test with 0 crashes or artifacting."],
2451 imageUrl: IMAGES2.terminal
2452 }
2453 ],
2454 imageUrl: IMAGES2.osRecovery
2455 },
2456 {
2457 category: "software",
2458 titleSuffix: "Secure Boot, TPM 2.0 & BitLocker State Restoration",
2459 descSuffix: "Start-to-finish security chip restoration: re-initialize hardware TPM 2.0 / Intel PTT, clear corrupted cryptographic PCR banks, and resolve BitLocker recovery loops.",
2460 difficulty: "medium",
2461 estimatedTime: "20-25 min",
2462 tools: ["BitLocker 48-digit Recovery Key", "BIOS Security Menu Access", "TPM.msc Management Console"],
2463 warnings: [
2464 "CRITICAL: You MUST have your 48-digit Microsoft BitLocker Recovery Key backed up before clearing TPM cryptographic security keys."
2465 ],
2466 steps: [
2467 {
2468 stepNumber: 1,
2469 phase: "Phase 1: BitLocker Key Verification & Backup",
2470 title: "Verify BitLocker Recovery Key & Retrieve 48-Digit Token",
2471 description: "Log into your Microsoft account or enterprise Active Directory portal to retrieve and verify the 48-digit BitLocker recovery key for the target drive.",
2472 toolRequired: "Microsoft Account Portal / Printout",
2473 torqueSpec: "N/A",
2474 subSteps: [
2475 "Visit `account.microsoft.com/devices/recoverykey` on a phone or secondary PC.",
2476 "Locate the Recovery Key matching the `Key ID` displayed on the blue BitLocker recovery screen.",
2477 "Write down the complete 48-digit numerical recovery token."
2478 ],
2479 warnings: ["Never clear TPM if you do not have the BitLocker recovery key; data will be permanently inaccessible."],
2480 tips: ["Print a physical copy of your BitLocker recovery key to store in a secure lockbox."],
2481 checkpoints: ["48-digit recovery key verified against matching Key ID."],
2482 imageUrl: IMAGES2.biosScreen
2483 },
2484 {
2485 stepNumber: 2,
2486 phase: "Phase 2: BIOS TPM 2.0 & Secure Boot Configuration",
2487 title: "Enable Intel PTT / AMD fTPM & Reset Secure Boot Keys",
2488 description: "Enter UEFI BIOS, navigate to Security settings, enable Intel Platform Trust Technology (PTT) / AMD fTPM, and restore factory default Secure Boot keys.",
2489 toolRequired: "BIOS Security Interface",
2490 torqueSpec: "N/A",
2491 subSteps: [
2492 "Power on system and tap F2/Del to enter BIOS Setup.",
2493 "Navigate to `Security` > `Intel PTT` or `AMD fTPM` > Set to `Enabled`.",
2494 "Navigate to `Secure Boot` > Set to `Enabled` > Select `Restore Factory Default Keys` (PK, KEK, db, dbx).",
2495 "Save changes and exit BIOS."
2496 ],
2497 warnings: ["Do not disable Secure Boot on Windows 11 systems or OS security features will fail to load."],
2498 tips: ["If TPM state is stuck, select 'Clear TPM' option inside BIOS Setup."],
2499 checkpoints: ["TPM 2.0 and Secure Boot enabled in Standard factory mode."],
2500 imageUrl: IMAGES2.terminal
2501 },
2502 {
2503 stepNumber: 3,
2504 phase: "Phase 3: BitLocker Recovery Key Entry & PCR Re-bind",
2505 title: "Enter Recovery Key & Re-bind Platform Configuration Registers",
2506 description: "Enter the 48-digit BitLocker key on the startup prompt, boot into Windows, and allow the system to re-bind TPM PCR registers.",
2507 toolRequired: "Keyboard Input",
2508 torqueSpec: "N/A",
2509 subSteps: [
2510 "On the blue BitLocker screen, type the 48-digit recovery key using the number keys.",
2511 "Press Enter to unlock the encrypted drive.",
2512 "Allow Windows to boot normally into the login screen.",
2513 "Log into Windows with administrator credentials."
2514 ],
2515 warnings: ["If key is rejected, verify numerical keypad NumLock state."],
2516 tips: ["Windows will automatically re-seal the encryption key into the TPM chip on successful logon."],
2517 checkpoints: ["Windows boots seamlessly to desktop."],
2518 imageUrl: IMAGES2.osRecovery
2519 },
2520 {
2521 stepNumber: 4,
2522 phase: "Phase 4: TPM State Verification & Windows Hello Re-enrollment",
2523 title: "TPM Console Verification & Windows Hello PIN Reset",
2524 description: "Open `tpm.msc` to confirm 'The TPM is ready for use', reset Windows Hello biometric / PIN credentials, and confirm encryption health.",
2525 toolRequired: "tpm.msc & Windows Settings",
2526 torqueSpec: "N/A",
2527 subSteps: [
2528 "Press `Win + R`, type `tpm.msc`, and press Enter.",
2529 "Confirm status reads: `The TPM is ready for use` with Specification Version `2.0`.",
2530 "Open `Settings` > `Accounts` > `Sign-in options` > `PIN (Windows Hello)`.",
2531 "Click `Remove` and re-create a new Windows Hello PIN to re-enroll cryptographic keys.",
2532 "Re-scan fingerprint or facial recognition biometrics."
2533 ],
2534 warnings: ["Do not skip PIN re-creation or future sign-in prompts may freeze."],
2535 tips: ["Run `manage-bde -status` in Admin Command Prompt to verify BitLocker protection is 100% active."],
2536 checkpoints: ["TPM 2.0 active and Windows Hello PIN functioning flawlessly."],
2537 imageUrl: IMAGES2.terminal
2538 }
2539 ],
2540 imageUrl: IMAGES2.biosScreen
2541 },
2542 // ----------------------------------------------------
2543 // CLEANING (4 Templates)
2544 // ----------------------------------------------------
2545 {
2546 category: "cleaning",
2547 titleSuffix: "Thermal Module Deep Clean & Phase-Change Repasting",
2548 descSuffix: "Start-to-finish thermal restoration: chemical TIM de-greasing, copper radiator fin blowout, phase-change PTM7950 pad application, and sequential torque calibration.",
2549 difficulty: "medium",
2550 estimatedTime: "30-45 min",
2551 tools: ["99.9% Anhydrous Isopropyl Alcohol", "Microfiber Swabs", "Honeywell PTM7950 / Arctic MX-6", "Electric Compressed Air Blower", "Torx T5 / Phillips #00"],
2552 warnings: [
2553 "Never scrape nickel-plated or bare copper heatsink baseplates with metallic blades; microscopic gouges create air pockets and hotspots.",
2554 "Tighten heatsink screws strictly in stamped numerical order (1-2-3-4) to prevent cracking bare silicon CPU/GPU dies."
2555 ],
2556 steps: [
2557 {
2558 stepNumber: 1,
2559 phase: "Phase 1: Pre-Disassembly Diagnostics & Power Isolation",
2560 title: "Chassis Depower & Battery Harness Decoupling",
2561 description: "Power down laptop, disconnect AC charger, remove bottom enclosure, and disconnect the main battery power harness to prevent electrical shorts.",
2562 toolRequired: "Torx T5 / Phillips #00 & Spudger",
2563 torqueSpec: "0.20 Nm",
2564 subSteps: [
2565 "Shut down computer, unplug AC adapter, and put on ESD wrist strap.",
2566 "Remove bottom casing screws and pop perimeter retaining clips.",
2567 "Disconnect the internal battery connector from the motherboard.",
2568 "Hold power button for 10 seconds to drain residual filter capacitors."
2569 ],
2570 warnings: ["Never work on cooling assemblies while the battery is connected."],
2571 tips: ["Keep a magnetic screw tray handy to organize heatsink vs chassis fasteners."],
2572 checkpoints: ["Battery disconnected and confirmed at 0V across logic board."],
2573 imageUrl: IMAGES2.screenTeardown1
2574 },
2575 {
2576 stepNumber: 2,
2577 phase: "Phase 2: Cooling Assembly Removal & Chemical Degreasing",
2578 title: "Heatsink Dismount & 99% IPA Paste Dissolution",
2579 description: "Disconnect fan headers, loosen heatsink screws in reverse order (4-3-2-1), lift copper assembly, and dissolve crusty old paste with 99% IPA.",
2580 toolRequired: "Phillips #00, 99.9% IPA & Microfiber Wipes",
2581 torqueSpec: "Reverse Sequence Loosening",
2582 subSteps: [
2583 "Unplug fan PWM cables from motherboard.",
2584 "Loosen spring-loaded screws in reverse order (4 -> 3 -> 2 -> 1).",
2585 "Gently lift heatsink straight up from the silicon dies.",
2586 "Saturate a lint-free wipe with 99.9% IPA and dissolve dried crusty thermal paste from CPU/GPU silicon dies and copper baseplates until mirror clean.",
2587 "Use a soft ESD swab dipped in IPA to clean residual paste from around SMD capacitors on the processor substrate."
2588 ],
2589 warnings: ["Do not knock off tiny surface-mount capacitors around the processor die with excessive pressure."],
2590 tips: ["99.9% anhydrous IPA evaporates completely in seconds without leaving water moisture."],
2591 checkpoints: ["Silicon dies and copper contact plates are 100% mirror clean with zero residue."],
2592 imageUrl: IMAGES2.thermalPaste
2593 },
2594 {
2595 stepNumber: 3,
2596 phase: "Phase 3: Exhaust Radiator Fin Decontamination",
2597 title: "Pressurized Fin Stack Blowout & Impeller Degreasing",
2598 description: "Blow compressed air through copper exhaust radiator fin stacks from the outside inward, remove lint mats, and clean blower impellers.",
2599 toolRequired: "Electric Air Blower & Soft Brush",
2600 torqueSpec: "N/A",
2601 subSteps: [
2602 "Hold fan impellers stationary with a finger to prevent over-spinning.",
2603 "Direct high-pressure air blast through exhaust fins from the exterior towards the interior to dislodge trapped lint mats.",
2604 "Use a soft ESD brush to wipe micro-dust from individual fan impeller blades.",
2605 "Wipe internal fan intake shrouds clean with microfiber cloth."
2606 ],
2607 warnings: ["Over-spinning fans with air guns destroys fluid-dynamic bearings and generates reverse EMF voltage."],
2608 tips: ["Inspect fin stacks against a light source to verify all air channels are 100% unobstructed."],
2609 checkpoints: ["Fin stacks completely clean with zero lint or dust build-up."],
2610 imageUrl: IMAGES2.cleaningBlower
2611 },
2612 {
2613 stepNumber: 4,
2614 phase: "Phase 4: Phase-Change PTM7950 / Paste Application & Torquing",
2615 title: "Phase-Change TIM Application & Sequential Heatsink Tightening",
2616 description: "Apply pre-cut Honeywell PTM7950 phase-change pad or Arctic MX-6, renew VRAM thermal pads, lower heatsink, and torque screws sequentially (1-2-3-4).",
2617 toolRequired: "PTM7950 / Arctic MX-6 & Torque Screwdriver",
2618 torqueSpec: "0.20 Nm (Sequential 1 -> 2 -> 3 -> 4)",
2619 subSteps: [
2620 "Cut PTM7950 phase-change pad to exact dimensions of CPU and GPU silicon dies.",
2621 "Peel bottom protective film, apply pad to die, press gently, and peel top protective film.",
2622 "Inspect VRAM thermal pads; replace any torn pads with 12.8 W/mK silicone pads of matching caliper thickness.",
2623 "Lower copper cooling assembly straight down onto the dies.",
2624 "Tighten screws in stamped numerical order (1 -> 2 -> 3 -> 4) to ensure uniform die pressure.",
2625 "Plug both 4-pin PWM fan headers firmly into motherboard sockets."
2626 ],
2627 warnings: ["Do not forget to peel the clear plastic film from both sides of the PTM7950 pad."],
2628 tips: ["Chill PTM7950 pad in the refrigerator for 5 minutes before peeling plastic film for effortless application."],
2629 checkpoints: ["Heatsink mounted flat with screws fully seated in sequence and fan headers connected."],
2630 imageUrl: IMAGES2.thermalPaste
2631 },
2632 {
2633 stepNumber: 5,
2634 phase: "Phase 5: Reassembly & Thermal Stress Burn-In Verification",
2635 title: "Enclosure Assembly, Fan RPM Verification & Load Benchmarking",
2636 description: "Reconnect battery, close bottom cover, boot into OS, verify fan tachometers, and run a 20-minute Cinebench R23 multi-core thermal stress benchmark.",
2637 toolRequired: "HWiNFO64 & Cinebench R23",
2638 torqueSpec: "0.20 Nm",
2639 subSteps: [
2640 "Reconnect internal battery harness and fasten bottom chassis enclosure.",
2641 "Boot into Windows and launch HWiNFO64.",
2642 "Check idle temperatures: CPU should idle between 38\xB0C and 46\xB0C.",
2643 "Run Cinebench R23 10-minute throttle loop; verify CPU temperatures stabilize under 84\xB0C with zero thermal throttling.",
2644 "Verify fan acoustics are smooth and quiet with zero bearing rattle."
2645 ],
2646 warnings: ["If CPU instantly hits 100\xB0C under load, immediately power off and verify heatsink mounting contact."],
2647 tips: ["PTM7950 undergoes a phase change above 45\xB0C, improving thermal conductivity further after the first heat cycle."],
2648 checkpoints: ["Temperatures reduced by 12-20\xB0C compared to pre-maintenance baseline."],
2649 imageUrl: IMAGES2.osRecovery
2650 }
2651 ],
2652 imageUrl: IMAGES2.thermalPaste
2653 },
2654 {
2655 category: "cleaning",
2656 titleSuffix: "Ultrasonic Bath & Liquid Spill Corrosion Decontamination",
2657 descSuffix: "Start-to-finish board-level fluid restoration: power isolation, ultrasonic sweep cleaning in 99.9% anhydrous alcohol, oven dehydration, and micro-soldering touch-up.",
2658 difficulty: "hard",
2659 estimatedTime: "90-120 min",
2660 tools: ["Heated Ultrasonic Cleaner (40kHz)", "99.9% Anhydrous Isopropyl Alcohol", "Stereo Microscope", "Dehydration Oven (50\xB0C)", "Micro-Soldering Station"],
2661 warnings: [
2662 "NEVER submerge mechanical cooling fans, CMOS coin cells, microphone capsules, or camera modules in an ultrasonic cleaner.",
2663 "Do not power on a liquid-damaged board until full dehydration bake cycle and multi-rail resistance tests have passed."
2664 ],
2665 steps: [
2666 {
2667 stepNumber: 1,
2668 phase: "Phase 1: Emergency Power Cut & Board Strip-Down",
2669 title: "Immediate Power Isolation & Complete Component Stripping",
2670 description: "Instantly disconnect main battery and RTC CMOS battery. Strip all socketed components, heatsinks, RAM, SSDs, and plastic insulation shields.",
2671 toolRequired: "Torx T5 / Phillips #00 & ESD Mat",
2672 torqueSpec: "0.20 Nm",
2673 subSteps: [
2674 "Immediately disconnect the battery harness and unplug RTC CMOS coin cell.",
2675 "Remove logic board from chassis.",
2676 "Remove cooling heatsink, fans, NVMe SSDs, Wi-Fi card, RAM SODIMMs, and CMOS battery.",
2677 "Peel off all black Mylar insulation tape and plastic stickers that could trap fluid underneath."
2678 ],
2679 warnings: ["Never attempt to turn on a wet laptop to 'see if it still works'; power turns water into instant electrolytic corrosion."],
2680 tips: ["Take close-up photos of corroded areas under the microscope before cleaning to record suspect power rails."],
2681 checkpoints: ["Motherboard completely stripped down to bare PCB with zero socketed peripherals."],
2682 imageUrl: IMAGES2.logicBoard
2683 },
2684 {
2685 stepNumber: 2,
2686 phase: "Phase 2: Microscopic Inspection & Pre-Wash Scrub",
2687 title: "Stereo Microscope Inspection & Localized Flux Scrub",
2688 description: "Inspect PCB under 40x stereo microscope for green copper carbonate oxidation, white calcium deposits, and burnt SMD power capacitors.",
2689 toolRequired: "Stereo Microscope & ESD Soft Brush",
2690 torqueSpec: "N/A",
2691 subSteps: [
2692 "Examine power delivery stages (VRM, DC-in, Charging IC) under microscope.",
2693 "Spot-treat heavy sugary syrup or coffee deposits with specialized PCB flux remover and a soft ESD brush.",
2694 "Desolder any visibly charred SMD ceramic capacitors that have shorted across power rails."
2695 ],
2696 warnings: ["Do not use wire brushes that can dislodge micro 0201 SMD resistors."],
2697 tips: ["Mark corroded regions with a fine-tip paint marker on the PCB margin for targeted post-wash inspection."],
2698 checkpoints: ["Heavy surface mineral crust dislodged prior to ultrasonic immersion."],
2699 imageUrl: IMAGES2.soldering
2700 },
2701 {
2702 stepNumber: 3,
2703 phase: "Phase 3: Ultrasonic Sweep Degreasing Cycle",
2704 title: "Ultrasonic Anhydrous Solvent Cleaning at 40kHz",
2705 description: "Place the motherboard in an ultrasonic cleaner basket submerged in 99.9% anhydrous IPA / PCB cleaning solution. Run an 8-minute sweep frequency cycle.",
2706 toolRequired: "Heated Ultrasonic Cleaner",
2707 torqueSpec: "N/A",
2708 subSteps: [
2709 "Fill ultrasonic cleaner tank with fresh 99.9% anhydrous isopropyl alcohol or specialized PCB wash solution.",
2710 "Place motherboard in the stainless steel suspension basket (never allow PCB to touch tank floor directly).",
2711 "Run an 8-minute sweep frequency cycle at 40kHz with heating set to 40\xB0C.",
2712 "Ultrasonic cavitation bubbles dislodge microscopic corrosion and flux minerals from beneath BGA chips (CPU, GPU, Chipset)."
2713 ],
2714 warnings: ["Ensure ultrasonic tank is well-ventilated; avoid open flames near alcohol vapors."],
2715 tips: ["Sweep frequency prevents standing waves from damaging delicate silicon wire bonds inside IC packages."],
2716 checkpoints: ["All green oxidation and sticky residues removed from underneath surface mount packages."],
2717 imageUrl: IMAGES2.ultrasonic
2718 },
2719 {
2720 stepNumber: 4,
2721 phase: "Phase 4: Oven Dehydration & Micro-Soldering Rework",
2722 title: "Oven Baking Dehydration (50\xB0C) & Solder Pad Restoration",
2723 description: "Bake motherboard in dehydration oven at 50\xB0C for 2 hours to evaporate all trapped solvent. Inspect under microscope and touch up corroded solder joints with leaded solder.",
2724 toolRequired: "Dehydration Oven & Soldering Iron",
2725 torqueSpec: "N/A",
2726 subSteps: [
2727 "Bake the PCB in a controlled drying oven at 50\xB0C (122\xB0F) for 2 to 3 hours to ensure 100% moisture evaporation from beneath BGA chips.",
2728 "Remove board and inspect under microscope.",
2729 "Apply tacky rosin flux (Amtech NC-559) to dull/corroded SMD pins.",
2730 "Touch up corroded solder joints with a fine J-tip soldering iron and 63/37 leaded solder to restore shiny metallurgical bonds.",
2731 "Measure resistance to ground on main power rails (+19V_VIN, +5V_ALW, +3.3V_ALW, +1.8V, VCORE); ensure no rail is shorted (<10\u03A9)."
2732 ],
2733 warnings: ["Never apply power if any major power rail measures 0\u03A9 short to ground."],
2734 tips: ["Replace any discolored 0402 pull-up resistors whose resistance values have drifted by more than 10%."],
2735 checkpoints: ["All major power rails pass resistance-to-ground checks (>100\u03A9 on standby rails)."],
2736 imageUrl: IMAGES2.soldering
2737 },
2738 {
2739 stepNumber: 5,
2740 phase: "Phase 5: Bench POST Test, Reassembly & Return-to-Service QA",
2741 title: "Open-Air Bench Test, Full Reassembly & 24-Hour Burn-In",
2742 description: "Perform open-air diagnostic POST boot with lab bench power supply, verify keyboard/trackpad functions, reassemble into chassis, and run 24-hour stability burn-in.",
2743 toolRequired: "DC Bench Power Supply & Diagnostic Suite",
2744 torqueSpec: "0.20 Nm",
2745 subSteps: [
2746 "Perform first power-on on the bench using a current-limited DC bench power supply set to 20V @ 1.5A.",
2747 "Observe current draw: normal standby should read 0.01A-0.03A; power-on should ramp smoothly to 0.8A-1.5A.",
2748 "Verify display output, re-install RAM, SSD, and cooling assembly with fresh thermal paste.",
2749 "Assemble motherboard back into chassis, reconnect all peripherals, and torque all screws.",
2750 "Boot into OS and run 24-hour diagnostic burn-in loop (audio, USB ports, Wi-Fi, battery charging, sleep states)."
2751 ],
2752 warnings: ["If DC bench supply trips current limit (>3.0A at 1V), isolate shorted capacitor using thermal camera."],
2753 tips: ["Apply conformal coating over repaired traces near board perimeter to prevent future humidity oxidation."],
2754 checkpoints: ["System completes 100% functional validation with all peripherals operating normally."],
2755 imageUrl: IMAGES2.osRecovery
2756 }
2757 ],
2758 imageUrl: IMAGES2.ultrasonic
2759 },
2760 {
2761 category: "cleaning",
2762 titleSuffix: "Keyboard Deck Crumb Flush & Sticky Key Switch Repair",
2763 descSuffix: "Start-to-finish scissor-switch servicing: safe keycap extraction, tactile dome degreasing with fast-evaporating contact cleaner, hinge latching, and matrix testing.",
2764 difficulty: "easy",
2765 estimatedTime: "20-30 min",
2766 tools: ["Precision Keycap Pry Tool", "Electronic Quick-Drying Contact Cleaner", "Microfiber Swabs", "Plastic Dental Pick", "Keyboard Matrix Tester Utility"],
2767 warnings: [
2768 "Never use petroleum-based lubricants (WD-40) on membrane or scissor switches; solvents dissolve silicone rubber domes.",
2769 "Delicate plastic scissor hinge clips snap easily if pried from the bottom; always unhook from the top retention tabs first."
2770 ],
2771 steps: [
2772 {
2773 stepNumber: 1,
2774 phase: "Phase 1: Power Isolation & Defective Key Isolation",
2775 title: "Keyboard Testing & Top-Latch Keycap Extraction",
2776 description: "Run an online keyboard matrix test to identify stuck or chattering keys, power down the system, and gently unhook keycaps from the top retention hinge.",
2777 toolRequired: "Keycap Pry Tool & Matrix Tester",
2778 torqueSpec: "Hand-release",
2779 subSteps: [
2780 "Open an online keyboard tester utility to map all stuck, unresponsive, or sticky keys.",
2781 "Shut down computer and disconnect AC power.",
2782 "Insert a thin plastic pry tool under the top edge of the sticky keycap.",
2783 "Gently lever upward to unhook the top two plastic clips from the scissor mechanism without bending the hinge."
2784 ],
2785 warnings: ["Never pull keycaps violently from the center or bottom to avoid snapping the tiny 0.5mm hinge pivot pins."],
2786 tips: ["On spacebars and wide keys, note the metal stabilizer wire orientation before unclipping."],
2787 checkpoints: ["Keycap released cleanly leaving scissor mechanism intact on the chassis tray."],
2788 imageUrl: IMAGES2.cleaningBlower
2789 },
2790 {
2791 stepNumber: 2,
2792 phase: "Phase 2: Chemical Switch Degreasing & Solvent Application",
2793 title: "Tactile Dome Degreasing & Fast-Evaporating Solvent Flush",
2794 description: "Apply quick-drying electronic contact cleaner around the silicone rubber dome, depress switch 20 times to flush out sugar grime, and absorb residue.",
2795 toolRequired: "Electronic Contact Cleaner & Swabs",
2796 torqueSpec: "N/A",
2797 subSteps: [
2798 "Blow compressed air around the exposed scissor mechanism to dislodge crumbs and hair.",
2799 "Spray a controlled micro-burst of zero-residue electronic contact cleaner directly around the silicone dome.",
2800 "Depress the rubber dome 20-30 times rapidly to allow the solvent to dissolve sticky residue inside the scissor sliders.",
2801 "Absorb dislodged grime and solvent using a microfiber swab."
2802 ],
2803 warnings: ["Do not flood the keyboard with excessive liquid solvent; use controlled, targeted micro-bursts."],
2804 tips: ["Electronic contact cleaner evaporates in under 30 seconds leaving zero conductive residue."],
2805 checkpoints: ["Scissor mechanism moves up and down freely with zero sticky resistance."],
2806 imageUrl: IMAGES2.screenTeardown1
2807 },
2808 {
2809 stepNumber: 3,
2810 phase: "Phase 3: Hinge Re-latching & Tactile Testing",
2811 title: "Scissor Mechanism Alignment & Keycap Snap-In",
2812 description: "Align keycap over the scissor mechanism, hook bottom tabs, and press firmly on the center until two audible clicks verify dual-latch engagement.",
2813 toolRequired: "Hand assembly",
2814 torqueSpec: "Tactile snap",
2815 subSteps: [
2816 "Clean the underside of the keycap with an alcohol prep pad.",
2817 "Position keycap square over the scissor hinge.",
2818 "Engage the bottom hinge hooks first, then press down firmly in the center until you feel and hear two distinct snap clicks.",
2819 "Test tactile travel: key should have crisp, uniform 1.3mm travel with immediate spring rebound."
2820 ],
2821 warnings: ["Do not force keycaps down at an angle; if it resists, verify scissor hinge orientation."],
2822 tips: ["If a scissor hinge came unhooked from the metal chassis tray, re-hook the bottom metal tabs first."],
2823 checkpoints: ["Keycap sits level with neighboring keys with crisp tactile actuation."],
2824 imageUrl: IMAGES2.cleaningBlower
2825 },
2826 {
2827 stepNumber: 4,
2828 phase: "Phase 4: Post-Repair Keyboard Matrix Validation",
2829 title: "Full 100% Keyboard Matrix Testing & Chattering Check",
2830 description: "Power on laptop, launch keyboard tester utility, test every individual key for actuation, and verify zero key chattering (double-typing).",
2831 toolRequired: "Keyboard Matrix Tester Utility",
2832 torqueSpec: "N/A",
2833 subSteps: [
2834 "Power on laptop and boot into OS.",
2835 "Open keyboard matrix testing software.",
2836 "Press every key on the keyboard, verifying 100% green registration.",
2837 "Type rapid test sentences in a text editor to verify zero key bounce or duplicate characters.",
2838 "Test keyboard backlight brightness levels (Low, Medium, High, Off)."
2839 ],
2840 warnings: ["If a key registers multiple times per press (chattering), apply one more contact cleaner flush."],
2841 tips: ["Set keyboard repeat delay in OS settings to short for optimal typing responsiveness."],
2842 checkpoints: ["All keys actuate with 100% reliability and crisp tactile response."],
2843 imageUrl: IMAGES2.terminal
2844 }
2845 ],
2846 imageUrl: IMAGES2.cleaningBlower
2847 },
2848 {
2849 category: "cleaning",
2850 titleSuffix: "VRAM & MOSFET Thermal Pad Caliper Sizing & Renewal",
2851 descSuffix: "Start-to-finish thermal pad overhaul: caliper millimeter gap measuring (0.5mm/1.0mm/1.5mm), durometer selection, precision cutting, and core contact spread verification.",
2852 difficulty: "medium",
2853 estimatedTime: "30-45 min",
2854 tools: ["Digital Vernier Caliper", "High-Performance Thermal Pads (12.8 W/mK)", "Precision Cutting Shears", "99% Isopropyl Alcohol", "Torque Screwdriver"],
2855 warnings: [
2856 "Using overly thick thermal pads prevents the heatsink from contacting the CPU/GPU silicon dies, leading to instant 105\xB0C thermal shutdowns.",
2857 "Always peel the protective plastic backing film from BOTH sides of the replacement thermal pads."
2858 ],
2859 steps: [
2860 {
2861 stepNumber: 1,
2862 phase: "Phase 1: Pre-Disassembly Diagnostics & Heatsink Removal",
2863 title: "Power Drain, Heatsink Dismount & Old Pad Inspection",
2864 description: "Power off machine, decouple battery, remove heatsink assembly, and inspect compressed factory thermal pads on VRAM chips and MOSFET power stages.",
2865 toolRequired: "Torx T5 / Phillips #00 & Spudger",
2866 torqueSpec: "0.20 Nm",
2867 subSteps: [
2868 "Power down system, disconnect AC charger, and disconnect internal battery harness.",
2869 "Loosen heatsink screws in reverse stamped sequence (4 -> 3 -> 2 -> 1).",
2870 "Lift copper heatsink module straight up.",
2871 "Inspect old thermal pads for oil leakage, hardening, or tearing across GDDR6 memory and VRM chokes."
2872 ],
2873 warnings: ["Do not discard old pads immediately; keep them for thickness comparison."],
2874 tips: ["Factory thermal pads often dry out and sweat silicone oil after 2 years of thermal cycling."],
2875 checkpoints: ["Heatsink extracted cleanly with all chip locations mapped."],
2876 imageUrl: IMAGES2.thermalPaste
2877 },
2878 {
2879 stepNumber: 2,
2880 phase: "Phase 2: Vernier Caliper Thickness & Gap Measurement",
2881 title: "Millimeter Gap Tolerancing & Precision Pad Cutting",
2882 description: "Measure gap between chip packages and copper baseplates using a digital caliper. Cut replacement 12.8 W/mK silicone pads to exact 1:1 chip dimensions.",
2883 toolRequired: "Digital Vernier Caliper & Precision Shears",
2884 torqueSpec: "N/A",
2885 subSteps: [
2886 "Measure uncompressed edge of old thermal pads with digital caliper (typically 0.5mm, 1.0mm, or 1.5mm).",
2887 "Select replacement thermal pads with high thermal conductivity (12.8 W/mK) and soft durometer (30-40 Shore 00).",
2888 "Cut replacement pad strips to match exact 1:1 rectangular dimensions of VRAM and MOSFET packages using sharp shears.",
2889 "Clean old silicone oil residue from memory chips and copper heatsink contact pads with 99% IPA."
2890 ],
2891 warnings: ["Never stack two 0.5mm pads to make 1.0mm as the trapped air interface drastically increases thermal resistance."],
2892 tips: ["Using softer durometer pads allows easier compression when tightening heatsink screws."],
2893 checkpoints: ["All pad pieces cut to precise chip sizes with correct millimeter thickness."],
2894 imageUrl: IMAGES2.nvmeSSD
2895 },
2896 {
2897 stepNumber: 3,
2898 phase: "Phase 3: Dual-Sided Film Peeling & Component Placement",
2899 title: "Peel Protective Films & Press Pads onto Target Chips",
2900 description: "Peel blue protective backing from both faces of each pad, press onto VRAM memory and VRM power stages, and verify zero overlap with neighboring passives.",
2901 toolRequired: "Micro-Tweezers & Lint-Free Gloves",
2902 torqueSpec: "Hand placement",
2903 subSteps: [
2904 "Peel the bottom protective plastic film from each pad.",
2905 "Position pad accurately onto each GDDR6 memory chip and VRM MOSFET choke.",
2906 "Press lightly with a gloved finger to adhere pad to the chip package.",
2907 "Peel the top clear protective film from the upper face of all installed pads.",
2908 "Apply Arctic MX-6 thermal compound to the central CPU and GPU silicon dies."
2909 ],
2910 warnings: ["Leaving the top clear protective film on thermal pads will insulate heat and cause VRAM to burn out."],
2911 tips: ["Count the peeled plastic backing pieces to ensure 100% of films were removed."],
2912 checkpoints: ["All thermal pads installed with both protective films peeled and dies repasted."],
2913 imageUrl: IMAGES2.thermalPaste
2914 },
2915 {
2916 stepNumber: 4,
2917 phase: "Phase 4: Heatsink Mounting, Torque & Spread Inspection",
2918 title: "Sequential Heatsink Torquing & Core Die Contact Verification",
2919 description: "Lower heatsink assembly flat, torque screws in stamped sequence (1-2-3-4), and inspect from side angle to confirm zero gap between heatsink and CPU/GPU dies.",
2920 toolRequired: "Torque Screwdriver & Inspection Light",
2921 torqueSpec: "0.20 Nm (Sequential 1-2-3-4)",
2922 subSteps: [
2923 "Lower copper cooling assembly straight down onto the board without twisting.",
2924 "Tighten screws in stamped numerical sequence (1 -> 2 -> 3 -> 4) to 0.20 Nm.",
2925 "Inspect the gap between copper baseplate and CPU/GPU silicon dies using a flashlight.",
2926 "Verify the thermal pads have compressed by ~25-30% and the central copper coldplate is sitting 100% flush against the silicon die.",
2927 "Plug in both fan PWM cables."
2928 ],
2929 warnings: ["If heatsink rocks or tilts, an oversized thermal pad is preventing proper die seating; remove and downsize by 0.5mm."],
2930 tips: ["Perform a dry test-mount with thermal paste to inspect the paste spread pattern on the die."],
2931 checkpoints: ["100% flush die contact verified with zero heatsink tilt."],
2932 imageUrl: IMAGES2.thermalPaste
2933 },
2934 {
2935 stepNumber: 5,
2936 phase: "Phase 5: Reassembly & VRAM Thermal Stress Verification",
2937 title: "Chassis Assembly & FurMark / VRAM Temperature Logging",
2938 description: "Reconnect battery, fasten bottom enclosure, boot into Windows, launch HWiNFO64, and log GPU Memory Junction & Hotspot temperatures under 15-minute load.",
2939 toolRequired: "HWiNFO64 & FurMark / 3DMark",
2940 torqueSpec: "0.20 Nm",
2941 subSteps: [
2942 "Reconnect internal battery harness and screw down bottom casing.",
2943 "Boot into Windows and launch HWiNFO64 sensor logger.",
2944 "Run FurMark GPU stress test for 15 minutes.",
2945 "Monitor `GPU Memory Junction Temperature` (should stay <85\xB0C) and `GPU Hotspot Temperature` (delta over GPU Core should be <15\xB0C).",
2946 "Confirm zero artifacts, throttling, or driver crashes."
2947 ],
2948 warnings: ["If GPU Memory Junction exceeds 100\xB0C, immediately shut down and inspect pad thickness."],
2949 tips: ["A healthy thermal pad upgrade lowers VRAM temperatures by 15-25\xB0C under heavy raytracing workloads."],
2950 checkpoints: ["GPU Core <72\xB0C and VRAM Memory <80\xB0C under maximum sustained load."],
2951 imageUrl: IMAGES2.osRecovery
2952 }
2953 ],
2954 imageUrl: IMAGES2.thermalPaste
2955 },
2956 // ----------------------------------------------------
2957 // UPGRADES (3 Templates)
2958 // ----------------------------------------------------
2959 {
2960 category: "upgrades",
2961 titleSuffix: "PCIe 4.0 / 5.0 NVMe SSD Expansion & Sector Cloning",
2962 descSuffix: "Start-to-finish high-speed storage upgrade: external enclosure cloning, 30-degree M.2 slot insertion, thermal heatsink mounting, UEFI boot priority, and TRIM optimization.",
2963 difficulty: "easy",
2964 estimatedTime: "25-35 min",
2965 tools: ["Phillips #00 Precision Screwdriver", "M.2 2280 NVMe SSD", "USB-C External NVMe Enclosure", "Drive Cloning Software (Macrium Reflect / Clonezilla)", "Thermal Pad"],
2966 warnings: [
2967 "Touch a grounded metal chassis or wear an ESD wrist strap before handling bare NVMe SSD circuit boards.",
2968 "Insert M.2 NVMe SSDs into the socket at a 30-degree angle; never force straight down horizontally or you will break the M.2 Key-M connector pins."
2969 ],
2970 steps: [
2971 {
2972 stepNumber: 1,
2973 phase: "Phase 1: Drive Sector Cloning & BitLocker Decryption",
2974 title: "Drive Cloning to Replacement NVMe via External Enclosure",
2975 description: "Insert new NVMe SSD into a USB-C external enclosure, connect to laptop, temporarily suspend BitLocker encryption, and clone all partitions sector-by-sector.",
2976 toolRequired: "USB-C NVMe Enclosure & Macrium Reflect",
2977 torqueSpec: "N/A",
2978 subSteps: [
2979 "Suspend BitLocker encryption on target OS drive in Windows (`manage-bde -protectors -disable C:`).",
2980 "Install new NVMe SSD into USB-C external NVMe enclosure and plug into laptop.",
2981 "Launch Macrium Reflect or Clonezilla.",
2982 "Select source drive > Click `Clone this disk` > Select destination NVMe drive.",
2983 "Drag all partitions (EFI, MSR, Windows OS, Recovery) to destination and extend OS partition to fill total drive capacity.",
2984 "Execute clone process and wait for 100% completion verification."
2985 ],
2986 warnings: ["Ensure you select the correct source vs destination drive to avoid overwriting active data."],
2987 tips: ["Suspending BitLocker before cloning prevents drive locked prompt on first boot."],
2988 checkpoints: ["Cloning process finishes with 100% verified partition copies."],
2989 imageUrl: IMAGES2.nvmeSSD
2990 },
2991 {
2992 stepNumber: 2,
2993 phase: "Phase 2: Power Isolation & Chassis Opening",
2994 title: "Power Isolation & Motherboard Battery Decoupling",
2995 description: "Power down laptop, disconnect AC adapter, remove bottom enclosure, and physically disconnect the internal battery power harness.",
2996 toolRequired: "Torx T5 / Phillips #00 & Spudger",
2997 torqueSpec: "0.20 Nm",
2998 subSteps: [
2999 "Shut down computer and unplug all external cables.",
3000 "Remove bottom casing fasteners and release perimeter clips.",
3001 "Disconnect the internal battery connector from the logic board.",
3002 "Locate the M.2 2280 NVMe slot (and remove copper EMI shield if present)."
3003 ],
3004 warnings: ["Never insert or remove NVMe cards while the battery is connected to prevent +3.3V power surge shorts."],
3005 tips: ["If the laptop has two M.2 slots, check the motherboard silkscreen for `PCIE GEN4 / GEN5` labeling on Slot 1."],
3006 checkpoints: ["Battery disconnected and M.2 slot accessible."],
3007 imageUrl: IMAGES2.screenTeardown1
3008 },
3009 {
3010 stepNumber: 3,
3011 phase: "Phase 3: M.2 NVMe Slot Installation & Heatsink Securing",
3012 title: "30-Degree Angle Slot Insertion, Standoff Fastener & Heatsink Mounting",
3013 description: "Insert the new NVMe SSD firmly into the M.2 Key-M slot at a 30-degree angle, press down gently, fasten the M2x3mm retention screw, and attach copper thermal shield.",
3014 toolRequired: "Phillips #00 Screwdriver",
3015 torqueSpec: "0.15 Nm (M2 Screw)",
3016 subSteps: [
3017 "Align module notch with M.2 Key-M socket key.",
3018 "Slide NVMe card firmly into the socket at a 30-degree upward angle until gold contacts are fully seated.",
3019 "Gently press the card down flat against the chassis standoff post.",
3020 "Install and tighten the single M2x3.5mm retention screw to 0.15 Nm.",
3021 "Apply 1.0mm thermal pad over the NVMe controller and attach the metal heatsink shield."
3022 ],
3023 warnings: ["Do not over-tighten the tiny M2 screw; excessive torque strips the soft brass standoff thread."],
3024 tips: ["High-speed Gen4/Gen5 SSD controllers require thermal pads to prevent thermal throttling above 75\xB0C."],
3025 checkpoints: ["SSD sits completely flat and secure with thermal shield attached."],
3026 imageUrl: IMAGES2.nvmeSSD
3027 },
3028 {
3029 stepNumber: 4,
3030 phase: "Phase 4: Chassis Reassembly & UEFI Boot Priority",
3031 title: "Battery Reconnection, Chassis Closure & UEFI Boot Setup",
3032 description: "Reconnect battery, fasten bottom cover, power on, enter BIOS Setup, and ensure the new NVMe SSD is designated as Primary Boot Option #1.",
3033 toolRequired: "Torx T5 / Phillips #00 & BIOS Setup",
3034 torqueSpec: "0.20 Nm",
3035 subSteps: [
3036 "Reconnect internal battery harness and snap bottom cover in place.",
3037 "Fasten all perimeter chassis screws.",
3038 "Power on system and tap F2/Del to enter BIOS Setup.",
3039 "Navigate to `Boot Options` > set new NVMe SSD (Windows Boot Manager) as `Boot Option #1`.",
3040 "Save changes and exit BIOS."
3041 ],
3042 warnings: ["If system boots to 'No Boot Device Found', verify UEFI boot mode is enabled instead of Legacy CSM."],
3043 tips: ["Enable NVMe Fast Boot in BIOS for sub-6 second cold boot times."],
3044 checkpoints: ["BIOS recognizes new NVMe model and serial with correct capacity."],
3045 imageUrl: IMAGES2.biosScreen
3046 },
3047 {
3048 stepNumber: 5,
3049 phase: "Phase 5: Post-Repair TRIM Verification & Speed Benchmark",
3050 title: "Windows Disk Management, TRIM Verification & CrystalDiskMark Speed Test",
3051 description: "Boot into Windows, verify partition expansion in Disk Management, enable TRIM garbage collection, and benchmark read/write speeds with CrystalDiskMark.",
3052 toolRequired: "Disk Management & CrystalDiskMark",
3053 torqueSpec: "N/A",
3054 subSteps: [
3055 "Boot into Windows desktop.",
3056 "Open Disk Management (`diskmgmt.msc`) and verify full unallocated drive capacity is merged into C: drive.",
3057 "Open Admin Command Prompt and run `fsutil behavior query DisableDeleteNotify` (output `0` confirms TRIM is active).",
3058 "Launch CrystalDiskMark and run 1GB read/write benchmark.",
3059 "Verify sequential read speeds reach rated spec (PCIe 4.0: ~7,000 MB/s, PCIe 5.0: ~12,000 MB/s).",
3060 "Re-enable BitLocker encryption (`manage-bde -protectors -enable C:`)."
3061 ],
3062 warnings: ["Do not run defragmentation on NVMe SSDs; only use TRIM optimization."],
3063 tips: ["Install OEM SSD management software (Samsung Magician / WD Dashboard) for firmware updates."],
3064 checkpoints: ["Sequential reads exceed 7,000 MB/s with full capacity accessible."],
3065 imageUrl: IMAGES2.osRecovery
3066 }
3067 ],
3068 imageUrl: IMAGES2.nvmeSSD
3069 },
3070 {
3071 category: "upgrades",
3072 titleSuffix: "DDR4 / DDR5 Dual-Channel High-Speed RAM Upgrade",
3073 descSuffix: "Start-to-finish memory expansion: isolate power, remove EMI shielding, eject legacy modules, insert matched dual-rank SODIMMs, POST memory training, and MemTest86 validation.",
3074 difficulty: "easy",
3075 estimatedTime: "15-20 min",
3076 tools: ["Plastic Spudger", "Matched Dual-Rank DDR5 SODIMM Memory Kit", "Anti-Static Wrist Strap", "Phillips #00 Screwdriver", "PassMark MemTest86 USB"],
3077 warnings: [
3078 "Ensure laptop is completely powered off and internal battery disconnected before touching memory slots.",
3079 "DDR5 and DDR4 slots have different notch keying; never force a DDR5 module into a DDR4 socket."
3080 ],
3081 steps: [
3082 {
3083 stepNumber: 1,
3084 phase: "Phase 1: Pre-Disassembly Diagnostics & Battery Decoupling",
3085 title: "Power Drain, Enclosure Removal & Battery Isolation",
3086 description: "Shut down laptop, disconnect AC power, remove bottom enclosure, disconnect internal battery harness, and ground yourself on an ESD workstation.",
3087 toolRequired: "Torx T5 / Phillips #00 & Spudger",
3088 torqueSpec: "0.20 Nm",
3089 subSteps: [
3090 "Power off computer and disconnect all external cables.",
3091 "Remove bottom casing screws and pop perimeter retaining clips.",
3092 "Disconnect the internal battery connector from the motherboard.",
3093 "Hold power button for 10 seconds to drain standby voltage from motherboard memory rails."
3094 ],
3095 warnings: ["Touching RAM slots while the battery is connected can bridge VDD/VDDQ power pins and destroy memory controllers."],
3096 tips: ["Always install matched pairs (same capacity, speed, and CAS latency) for optimal dual-channel bandwidth."],
3097 checkpoints: ["Battery disconnected and memory shielding visible."],
3098 imageUrl: IMAGES2.screenTeardown1
3099 },
3100 {
3101 stepNumber: 2,
3102 phase: "Phase 2: EMI Shield Removal & Legacy Module Ejection",
3103 title: "Metal EMI Shield Removal & Module Ejection",
3104 description: "Pry away the metal EMI memory canopy and spread the side metal retention clips outward to allow the SODIMM module to pop up at a 45-degree angle.",
3105 toolRequired: "Plastic Spudger",
3106 torqueSpec: "Hand-release",
3107 subSteps: [
3108 "Use a plastic spudger to gently release the stamped metal EMI shielding canopy covering the RAM slots.",
3109 "Spread the two metal spring retention clips on the sides of the SODIMM slot outward simultaneously.",
3110 "The RAM module will automatically pop upward at a 45-degree angle.",
3111 "Grasp the edges of the module and slide it straight out of the socket."
3112 ],
3113 warnings: ["Never touch the gold connector pins with bare fingers to avoid transferring skin oils and causing memory bit errors."],
3114 tips: ["Store extracted RAM modules in anti-static ESD bags."],
3115 checkpoints: ["Old modules extracted cleanly without bending side retention clips."],
3116 imageUrl: IMAGES2.ramModule
3117 },
3118 {
3119 stepNumber: 3,
3120 phase: "Phase 3: Dual-Rank SODIMM Insertion & Latching",
3121 title: "New SODIMM Alignment, Insertion & Latch Engagement",
3122 description: "Align module notch with socket key, slide firmly into the slot at 45 degrees, and push flat until side metal clips snap locked with an audible click.",
3123 toolRequired: "Hand assembly",
3124 torqueSpec: "Tactile snap",
3125 subSteps: [
3126 "Align the notch on the gold connector edge of the new DDR5 module with the plastic key in the SODIMM socket.",
3127 "Insert the module firmly into the slot at a 45-degree angle until gold pins are fully seated inside the connector.",
3128 "Press the top edge of the module down flat towards the motherboard until both side metal retention clips snap locked with a tactile click.",
3129 "Repeat for Slot 2 to populate dual-channel symmetrical configuration.",
3130 "Re-seat the metal EMI shielding canopy over the memory modules."
3131 ],
3132 warnings: ["If side clips do not snap freely, do not force down; re-align module angle and re-insert."],
3133 tips: ["Verify module is fully seated by checking that gold pins are almost completely hidden inside the socket."],
3134 checkpoints: ["Both modules locked flat and level under side retention springs."],
3135 imageUrl: IMAGES2.ramModule
3136 },
3137 {
3138 stepNumber: 4,
3139 phase: "Phase 4: Reassembly & DDR5 Cold POST Memory Training",
3140 title: "Battery Connection, Chassis Closure & Initial Memory Training",
3141 description: "Reconnect battery, fasten bottom cover, connect AC charger, power on, and allow up to 60-90 seconds for initial DDR5 memory training.",
3142 toolRequired: "Torx T5 / Phillips #00 & AC Charger",
3143 torqueSpec: "0.20 Nm",
3144 subSteps: [
3145 "Reconnect internal battery harness to the motherboard.",
3146 "Snap bottom enclosure in place and torque all perimeter screws.",
3147 "Connect OEM AC power adapter and press the power button.",
3148 "CRITICAL: Allow 30 to 90 seconds for initial DDR5 memory training. The screen will remain black and power LED will pulse while the memory controller calibrates timings.",
3149 "Wait patiently until the OEM logo appears, then tap F2/Del to enter BIOS Setup."
3150 ],
3151 warnings: ["DO NOT force power off while memory training is running on first boot."],
3152 tips: ["DDR5 trains JEDEC timing parameters and signal termination resistances automatically on hardware changes."],
3153 checkpoints: ["BIOS Setup displays full upgraded memory capacity (e.g. 32GB / 64GB) at rated frequency (e.g. 5600 MT/s)."],
3154 imageUrl: IMAGES2.biosScreen
3155 },
3156 {
3157 stepNumber: 5,
3158 phase: "Phase 5: Post-Repair Diagnostic Stress Test & MemTest86",
3159 title: "PassMark MemTest86 4-Pass Stress Test & Windows Memory Diagnostics",
3160 description: "Boot from MemTest86 USB drive, run a 4-pass comprehensive memory test (zero bit errors), boot into Windows, and verify dual-channel bandwidth in CPU-Z.",
3161 toolRequired: "PassMark MemTest86 USB & CPU-Z",
3162 torqueSpec: "N/A",
3163 subSteps: [
3164 "Insert MemTest86 bootable USB drive and boot from UEFI boot menu.",
3165 "Run full 4-pass diagnostic test checking Test 1 through Test 13 (Address test, Moving inversions, Block move, Rowhammer).",
3166 "Confirm zero bit errors reported (0 Errors).",
3167 "Boot into Windows and launch CPU-Z (`Memory` tab).",
3168 "Verify `Channel #` reports `2 x 32-bit` (Dual-Channel) and frequency matches JEDEC/XMP specifications."
3169 ],
3170 warnings: ["If MemTest86 reports even a single bit error, reseat modules or check for incompatible CAS latency."],
3171 tips: ["Run heavy multi-tasking workloads with 50+ browser tabs and 4K video rendering to test stability."],
3172 checkpoints: ["100% zero errors in MemTest86 with full dual-channel bandwidth verified."],
3173 imageUrl: IMAGES2.ramModule
3174 }
3175 ],
3176 imageUrl: IMAGES2.ramModule
3177 },
3178 {
3179 category: "upgrades",
3180 titleSuffix: "Wi-Fi 7 / Wi-Fi 6E BE200 M.2 Wireless Module & Antenna Upgrade",
3181 descSuffix: "Start-to-finish wireless upgrade: isolate power, decouple micro IPEX MHF4 antenna snaps, insert M.2 Key-E card, snap antenna leads, install WHQL drivers, and verify 320MHz channels.",
3182 difficulty: "easy",
3183 estimatedTime: "15-20 min",
3184 tools: ["Phillips #00 Screwdriver", "Plastic Spudger / Nylon Tweezers", "Wi-Fi 7 BE200 M.2 2230 Card", "Anti-Static Wrist Strap", "Official Intel/Qualcomm Wi-Fi 7 Driver Package"],
3185 warnings: [
3186 "Carefully press micro IPEX MHF4 antenna snaps straight down from above; NEVER slide sideways or push with metal tools to avoid crushing delicate connector gold center pins."
3187 ],
3188 steps: [
3189 {
3190 stepNumber: 1,
3191 phase: "Phase 1: Pre-Disassembly Diagnostics & Battery Isolation",
3192 title: "Power Drain, Enclosure Removal & Battery Disconnection",
3193 description: "Power down laptop, disconnect AC adapter, remove bottom enclosure, disconnect internal battery harness, and ground yourself on an ESD workstation.",
3194 toolRequired: "Torx T5 / Phillips #00 & Spudger",
3195 torqueSpec: "0.20 Nm",
3196 subSteps: [
3197 "Power off computer and disconnect all external cables.",
3198 "Remove bottom casing screws and pop perimeter retaining clips.",
3199 "Disconnect the internal battery connector from the motherboard.",
3200 "Locate the M.2 2230 Key-E Wi-Fi module socket."
3201 ],
3202 warnings: ["Disconnect battery before touching wireless card to prevent shorting antenna ground planes."],
3203 tips: ["Note which antenna wire connects to `Main` (Black/Triangle 1) and `Aux` (White/Triangle 2)."],
3204 checkpoints: ["Battery disconnected and Wi-Fi module accessible."],
3205 imageUrl: IMAGES2.screenTeardown1
3206 },
3207 {
3208 stepNumber: 2,
3209 phase: "Phase 2: Antenna Decoupling & Module Extraction",
3210 title: "IPEX MHF4 Antenna Decoupling & Standoff Screw Removal",
3211 description: "Lift IPEX MHF4 micro antenna leads straight up with nylon tweezers, remove the single M2x3mm standoff screw, and slide the old Wi-Fi card out at 30 degrees.",
3212 toolRequired: "Nylon Tweezers & Phillips #00",
3213 torqueSpec: "0.15 Nm",
3214 subSteps: [
3215 "Peel back clear protective Mylar tape covering the antenna connectors.",
3216 "Insert nylon tweezers under the metal collar of the Black (Main) antenna snap and lift vertically straight up.",
3217 "Repeat for White/Gray (Aux) antenna snap.",
3218 "Remove the single M2x3mm Phillips screw holding the card in the standoff.",
3219 "Slide the old Wi-Fi card out of the M.2 Key-E slot at a 30-degree angle."
3220 ],
3221 warnings: ["Do not pull antenna leads by the coaxial wire; always pry under the metal gold connector head."],
3222 tips: ["Store old Wi-Fi card in an anti-static bag for testing backup."],
3223 checkpoints: ["Antenna leads disconnected with gold micro-pins in pristine condition."],
3224 imageUrl: IMAGES2.logicBoard
3225 },
3226 {
3227 stepNumber: 3,
3228 phase: "Phase 3: Wi-Fi 7 Module Insertion & Antenna Snapping",
3229 title: "Wi-Fi 7 M.2 Card Insertion & Precision Antenna Latching",
3230 description: "Slide new Wi-Fi 7 BE200 module into Key-E slot, fasten M2 screw, align micro antenna snaps over gold pads, and press straight down until tactile snap confirms engagement.",
3231 toolRequired: "Phillips #00 & Fingertip / Nylon Tool",
3232 torqueSpec: "0.15 Nm",
3233 subSteps: [
3234 "Insert new Wi-Fi 7 card into the M.2 Key-E slot at a 30-degree angle and press flat against standoff.",
3235 "Fasten the M2x3mm screw to 0.15 Nm.",
3236 "Align the Black (Main) antenna connector precisely over Pin 1 on the Wi-Fi card.",
3237 "Press straight down gently with a fingertip or nylon spudger until you feel a distinct micro-snap click.",
3238 "Align and snap the White/Gray (Aux) antenna connector onto Pin 2.",
3239 "Place protective insulating tape over antenna leads."
3240 ],
3241 warnings: ["If antenna does not click immediately, re-center; pushing off-center crushes the female barrel."],
3242 tips: ["Test antenna retention by giving the wire a very gentle tug; it should stay locked firmly."],
3243 checkpoints: ["Both antenna leads locked securely and flat on the Wi-Fi card."],
3244 imageUrl: IMAGES2.logicBoard
3245 },
3246 {
3247 stepNumber: 4,
3248 phase: "Phase 4: Chassis Closure & Driver Installation",
3249 title: "Chassis Assembly, Boot-up & OEM WHQL Driver Setup",
3250 description: "Reconnect battery, fasten bottom enclosure, boot into Windows, and install the latest official Intel / Qualcomm Wi-Fi 7 and Bluetooth 5.4 driver package.",
3251 toolRequired: "Torx T5 / Phillips #00 & Driver Setup",
3252 torqueSpec: "0.20 Nm",
3253 subSteps: [
3254 "Reconnect internal battery harness and snap bottom cover in place.",
3255 "Torque perimeter chassis screws.",
3256 "Boot into Windows desktop.",
3257 "Launch the official Wi-Fi 7 driver installer package (e.g. `Intel_WiFi_BE200_WHQL.exe`).",
3258 "Launch the official Bluetooth driver installer package (`Intel_BT_WHQL.exe`) and restart system."
3259 ],
3260 warnings: ["Make sure both Wi-Fi and Bluetooth driver packages are installed for full combo card functionality."],
3261 tips: ["Bluetooth communicates over internal USB pins on the M.2 Key-E slot."],
3262 checkpoints: ["Device Manager shows 'Intel(R) Wi-Fi 7 BE200 320MHz' and 'Intel(R) Wireless Bluetooth(R)' with zero warnings."],
3263 imageUrl: IMAGES2.osRecovery
3264 },
3265 {
3266 stepNumber: 5,
3267 phase: "Phase 5: Post-Repair Wireless Throughput & Latency Testing",
3268 title: "6GHz Tri-Band Connection, Throughput & Bluetooth Peripheral QA",
3269 description: "Connect to 6GHz Wi-Fi 7 / 6E network, verify 320MHz channel width, test gigabit throughput, and pair high-resolution Bluetooth 5.4 peripherals.",
3270 toolRequired: "Wi-Fi Analyzer & Speedtest",
3271 torqueSpec: "N/A",
3272 subSteps: [
3273 "Click Wi-Fi icon in taskbar and connect to your 6GHz Wi-Fi 7 SSID.",
3274 "Open Command Prompt and run `netsh wlan show interfaces`.",
3275 "Confirm `Radio type` displays `802.11be` or `802.11ax` and `Receive rate (Mbps)` shows multi-gigabit link rates (2,400 - 5,800 Mbps).",
3276 "Run a local LAN iPerf3 or internet speed test to confirm sub-3ms latency and full gigabit+ throughput.",
3277 "Pair Bluetooth headphones/mouse and verify uninterrupted audio streaming at 10-meter range."
3278 ],
3279 warnings: ["If signal strength is weak (-85 dBm), open chassis and verify antenna cables are not swapped or detached."],
3280 tips: ["Wi-Fi 7 Multi-Link Operation (MLO) transmits across 5GHz and 6GHz simultaneously for ultra-low latency."],
3281 checkpoints: ["Full Wi-Fi 7 multi-gigabit speed achieved with crystal clear Bluetooth audio."],
3282 imageUrl: IMAGES2.terminal
3283 }
3284 ],
3285 imageUrl: IMAGES2.logicBoard
3286 }
3287 ];
3288 var modelTargets2 = [
3289 // Apple
3290 { brand: "Apple", model: 'MacBook Pro 16" M3 Max', type: "laptop" },
3291 { brand: "Apple", model: 'MacBook Pro 14" M3 Pro', type: "laptop" },
3292 { brand: "Apple", model: 'MacBook Air 15" M2 / M3', type: "laptop" },
3293 { brand: "Apple", model: 'MacBook Air 13" M1 Legacy', type: "laptop" },
3294 { brand: "Apple", model: "Mac Studio M2 Ultra", type: "desktop" },
3295 { brand: "Apple", model: 'iMac 24" 4.5K Retina M3', type: "desktop" },
3296 { brand: "Apple", model: "Mac mini M2 Pro", type: "desktop" },
3297 // Dell
3298 { brand: "Dell", model: "XPS 15 9530", type: "laptop" },
3299 { brand: "Dell", model: "XPS 13 Plus 9320", type: "laptop" },
3300 { brand: "Dell", model: "Latitude 5440 Enterprise", type: "laptop" },
3301 { brand: "Dell", model: "Alienware m16 R2 Gaming", type: "laptop" },
3302 { brand: "Dell", model: "OptiPlex 7010 Micro", type: "desktop" },
3303 { brand: "Dell", model: "OptiPlex 5090 SFF", type: "desktop" },
3304 { brand: "Dell", model: "Alienware Aurora R16", type: "desktop" },
3305 // Lenovo
3306 { brand: "Lenovo", model: "ThinkPad X1 Carbon Gen 11", type: "laptop" },
3307 { brand: "Lenovo", model: "ThinkPad T14 Gen 4", type: "laptop" },
3308 { brand: "Lenovo", model: "Legion Pro 7i Gen 9", type: "laptop" },
3309 { brand: "Lenovo", model: "Yoga 9i Dual-Screen", type: "laptop" },
3310 { brand: "Lenovo", model: "ThinkCentre M90q Tiny", type: "desktop" },
3311 { brand: "Lenovo", model: "Legion Tower 7i", type: "desktop" },
3312 // HP
3313 { brand: "HP", model: "Spectre x360 14 (2024)", type: "laptop" },
3314 { brand: "HP", model: "EliteBook 840 G10", type: "laptop" },
3315 { brand: "HP", model: "OMEN Transcend 16", type: "laptop" },
3316 { brand: "HP", model: "OMEN 45L Cryo-Chamber", type: "desktop" },
3317 { brand: "HP", model: "ProDesk 600 G6 SFF", type: "desktop" },
3318 // ASUS
3319 { brand: "ASUS", model: "ROG Zephyrus G14 (2024)", type: "laptop" },
3320 { brand: "ASUS", model: "ZenBook 14 OLED UX3405", type: "laptop" },
3321 { brand: "ASUS", model: "ROG Strix SCAR 16", type: "laptop" },
3322 { brand: "ASUS", model: "ROG Strix G16CH Desktop", type: "desktop" },
3323 // Acer & MSI & Razer & Microsoft & Framework & Custom
3324 { brand: "Acer", model: "Predator Helios 16", type: "laptop" },
3325 { brand: "MSI", model: "Stealth 16 AI Studio", type: "laptop" },
3326 { brand: "Razer", model: "Blade 16 Dual-Mode", type: "laptop" },
3327 { brand: "Microsoft", model: "Surface Laptop 5", type: "laptop" },
3328 { brand: "Framework", model: "Framework Laptop 13 / 16 Modular", type: "laptop" },
3329 { brand: "Samsung", model: "Galaxy Book4 Ultra", type: "laptop" },
3330 { brand: "LG", model: "LG Gram 17 Pro", type: "laptop" },
3331 { brand: "Custom Built", model: "Custom Full/Mid ATX Gaming PC", type: "desktop" },
3332 { brand: "Custom Built", model: "Mini-ITX Small Form Factor SFF", type: "desktop" }
3333 ];
3334 function generateAllComprehensiveGuides() {
3335 const list = [...curatedRepairGuides];
3336 for (const target of modelTargets2) {
3337 for (const template of guideTemplates2) {
3338 list.push({
3339 title: `${target.model}: ${template.titleSuffix}`,
3340 description: `Dedicated start-to-finish ${template.category} teardown and repair protocol for the ${target.brand} ${target.model}. ${template.descSuffix}`,
3341 deviceType: target.type,
3342 category: template.category,
3343 difficulty: template.difficulty,
3344 estimatedTime: template.estimatedTime,
3345 toolsRequired: template.tools,
3346 safetyWarnings: template.warnings,
3347 steps: template.steps,
3348 alternativeSolutions: `Reference ${target.brand} official factory service manuals, board-level schematics, or contact certified bench technicians for OEM warranty support.`,
3349 imageUrl: template.imageUrl
3350 });
3351 }
3352 }
3353 return list;
3354 }
3355 async function seedGuides() {
3356 const existingGuides = await storage.getRepairGuides();
3357 if (existingGuides.length >= 180 && existingGuides.some((g) => g.steps && g.steps[0] && g.steps[0].subSteps)) {
3358 console.log(`Database already has ${existingGuides.length} intimate detailed guides. Skipping generation.`);
3359 return;
3360 }
3361 console.log(`Seeding 180+ comprehensive multi-brand repair guides with start-to-finish intimate details...`);
3362 const allGuides = generateAllComprehensiveGuides();
3363 let totalSeeded = 0;
3364 for (const guide of allGuides) {
3365 try {
3366 await storage.createRepairGuide(guide);
3367 totalSeeded++;
3368 } catch (e) {
3369 }
3370 }
3371 console.log(`Successfully generated and seeded ${totalSeeded} intimate start-to-finish technical guides!`);
3372 }
3373
3374 // server/storage.ts
3375 var DatabaseStorage = class {
3376 async getUser(id) {
3377 if (!db) return void 0;
3378 const [user] = await db.select().from(users).where((0, import_drizzle_orm2.eq)(users.id, id));
3379 return user;
3380 }
3381 async getUserByEmail(email) {
3382 if (!db || !email) return void 0;
3383 const normalized = email.trim().toLowerCase();
3384 const [user] = await db.select().from(users).where(import_drizzle_orm2.sql`lower(${users.email}) = ${normalized}`);
3385 return user;
3386 }
3387 async createUser(userData) {
3388 if (!db) throw new Error("No database");
3389 const [user] = await db.insert(users).values({
3390 ...userData,
3391 email: (userData.email || "").trim().toLowerCase()
3392 }).returning();
3393 return user;
3394 }
3395 async updateUser(id, userData) {
3396 if (!db) return void 0;
3397 const [user] = await db.update(users).set({ ...userData, updatedAt: /* @__PURE__ */ new Date() }).where((0, import_drizzle_orm2.eq)(users.id, id)).returning();
3398 return user;
3399 }
3400 async getUserFavorites(userId) {
3401 if (!db) return [];
3402 return await db.select().from(favorites).where((0, import_drizzle_orm2.eq)(favorites.userId, userId));
3403 }
3404 async addToFavorites(userId, favorite) {
3405 if (!db) throw new Error("No database");
3406 const [newFavorite] = await db.insert(favorites).values({ ...favorite, userId }).returning();
3407 return newFavorite;
3408 }
3409 async removeFromFavorites(userId, itemId, itemType) {
3410 if (!db) return;
3411 await db.delete(favorites).where(
3412 (0, import_drizzle_orm2.and)(
3413 (0, import_drizzle_orm2.eq)(favorites.userId, userId),
3414 (0, import_drizzle_orm2.eq)(favorites.itemId, itemId),
3415 (0, import_drizzle_orm2.eq)(favorites.itemType, itemType)
3416 )
3417 );
3418 }
3419 async isFavorited(userId, itemId, itemType) {
3420 if (!db) return false;
3421 const [favorite] = await db.select().from(favorites).where(
3422 (0, import_drizzle_orm2.and)(
3423 (0, import_drizzle_orm2.eq)(favorites.userId, userId),
3424 (0, import_drizzle_orm2.eq)(favorites.itemId, itemId),
3425 (0, import_drizzle_orm2.eq)(favorites.itemType, itemType)
3426 )
3427 );
3428 return !!favorite;
3429 }
3430 async getRepairGuides(filters) {
3431 if (!db) return [];
3432 const conditions = [];
3433 if (filters?.deviceType) {
3434 conditions.push((0, import_drizzle_orm2.eq)(repairGuides.deviceType, filters.deviceType));
3435 }
3436 if (filters?.category) {
3437 conditions.push((0, import_drizzle_orm2.eq)(repairGuides.category, filters.category));
3438 }
3439 if (filters?.difficulty) {
3440 conditions.push((0, import_drizzle_orm2.eq)(repairGuides.difficulty, filters.difficulty));
3441 }
3442 if (conditions.length > 0) {
3443 return await db.select().from(repairGuides).where((0, import_drizzle_orm2.and)(...conditions));
3444 }
3445 return await db.select().from(repairGuides);
3446 }
3447 async getRepairGuide(id) {
3448 if (!db) return void 0;
3449 const [guide] = await db.select().from(repairGuides).where((0, import_drizzle_orm2.eq)(repairGuides.id, id));
3450 return guide;
3451 }
3452 async createRepairGuide(guide) {
3453 if (!db) throw new Error("No database");
3454 const [newGuide] = await db.insert(repairGuides).values(guide).returning();
3455 return newGuide;
3456 }
3457 async updateViewCount(id) {
3458 if (!db) return;
3459 await db.update(repairGuides).set({ viewCount: import_drizzle_orm2.sql`${repairGuides.viewCount} + 1` }).where((0, import_drizzle_orm2.eq)(repairGuides.id, id));
3460 }
3461 async updateDownloadCount(id) {
3462 if (!db) return;
3463 await db.update(repairGuides).set({ downloadCount: import_drizzle_orm2.sql`${repairGuides.downloadCount} + 1` }).where((0, import_drizzle_orm2.eq)(repairGuides.id, id));
3464 }
3465 async toggleBookmark(id) {
3466 if (!db) return void 0;
3467 const [guide] = await db.update(repairGuides).set({ isBookmarked: import_drizzle_orm2.sql`NOT ${repairGuides.isBookmarked}` }).where((0, import_drizzle_orm2.eq)(repairGuides.id, id)).returning();
3468 return guide;
3469 }
3470 async searchRepairGuides(query) {
3471 if (!db) return [];
3472 const searchTerm = `%${query.toLowerCase()}%`;
3473 return await db.select().from(repairGuides).where(
3474 (0, import_drizzle_orm2.or)(
3475 (0, import_drizzle_orm2.like)(repairGuides.title, searchTerm),
3476 (0, import_drizzle_orm2.like)(repairGuides.description, searchTerm),
3477 (0, import_drizzle_orm2.like)(repairGuides.category, searchTerm)
3478 )
3479 );
3480 }
3481 async getTroubleshootingFlows() {
3482 if (!db) return [];
3483 return await db.select().from(troubleshootingFlows);
3484 }
3485 async getTroubleshootingFlow(id) {
3486 if (!db) return void 0;
3487 const [flow] = await db.select().from(troubleshootingFlows).where((0, import_drizzle_orm2.eq)(troubleshootingFlows.id, id));
3488 return flow;
3489 }
3490 async createTroubleshootingFlow(flow) {
3491 if (!db) throw new Error("No database");
3492 const [newFlow] = await db.insert(troubleshootingFlows).values(flow).returning();
3493 return newFlow;
3494 }
3495 async getDeviceComponents(deviceType) {
3496 if (!db) return [];
3497 if (deviceType) {
3498 return await db.select().from(deviceComponents).where((0, import_drizzle_orm2.eq)(deviceComponents.deviceType, deviceType));
3499 }
3500 return await db.select().from(deviceComponents);
3501 }
3502 async getDeviceComponent(id) {
3503 if (!db) return void 0;
3504 const [component] = await db.select().from(deviceComponents).where((0, import_drizzle_orm2.eq)(deviceComponents.id, id));
3505 return component;
3506 }
3507 async createDeviceComponent(component) {
3508 if (!db) throw new Error("No database");
3509 const [newComponent] = await db.insert(deviceComponents).values(component).returning();
3510 return newComponent;
3511 }
3512 async getDeviceBrands(deviceType) {
3513 if (!db) return [];
3514 const query = db.select().from(deviceBrands);
3515 if (deviceType) {
3516 return await query.where((0, import_drizzle_orm2.eq)(deviceBrands.deviceType, deviceType)).orderBy(import_drizzle_orm2.sql`${deviceBrands.popularity} DESC`);
3517 }
3518 return await query.orderBy(import_drizzle_orm2.sql`${deviceBrands.popularity} DESC`);
3519 }
3520 async getDeviceModels(brandId, deviceType) {
3521 if (!db) return [];
3522 if (brandId) {
3523 return await db.select().from(deviceModels).where((0, import_drizzle_orm2.eq)(deviceModels.brandId, brandId)).orderBy(import_drizzle_orm2.sql`${deviceModels.year} DESC, ${deviceModels.name} ASC`);
3524 }
3525 return await db.select().from(deviceModels).orderBy(import_drizzle_orm2.sql`${deviceModels.year} DESC, ${deviceModels.name} ASC`);
3526 }
3527 async getDeviceModel(id) {
3528 if (!db) return void 0;
3529 const [model] = await db.select().from(deviceModels).where((0, import_drizzle_orm2.eq)(deviceModels.id, id));
3530 return model;
3531 }
3532 async getModelsByBrand(brandId) {
3533 if (!db) return [];
3534 return await db.select().from(deviceModels).where((0, import_drizzle_orm2.eq)(deviceModels.brandId, brandId)).orderBy(import_drizzle_orm2.sql`${deviceModels.year} DESC, ${deviceModels.name} ASC`);
3535 }
3536 async searchDeviceModels(query, deviceType) {
3537 if (!db) return [];
3538 return await db.select().from(deviceModels).where(
3539 (0, import_drizzle_orm2.or)(
3540 (0, import_drizzle_orm2.like)(deviceModels.name, `%${query}%`),
3541 (0, import_drizzle_orm2.like)(deviceModels.series, `%${query}%`)
3542 )
3543 ).orderBy(import_drizzle_orm2.sql`${deviceModels.guideCount} DESC`);
3544 }
3545 async getCompatibleGuides(modelId) {
3546 if (!db) return [];
3547 return await db.select().from(repairGuides).where(import_drizzle_orm2.sql`id IN (SELECT guide_id FROM guide_compatibility WHERE model_id = ${modelId} AND compatibility = 'compatible')`).orderBy(import_drizzle_orm2.sql`${repairGuides.viewCount} DESC`);
3548 }
3549 async getModelCompatibility(guideId) {
3550 if (!db) return [];
3551 return await db.select().from(deviceModels).where(import_drizzle_orm2.sql`id IN (SELECT model_id FROM guide_compatibility WHERE guide_id = ${guideId})`).orderBy(import_drizzle_orm2.sql`${deviceModels.name} ASC`);
3552 }
3553 async createUserGuide(guide) {
3554 if (!db) throw new Error("No database");
3555 const [createdGuide] = await db.insert(repairGuides).values(guide).returning();
3556 return createdGuide;
3557 }
3558 };
3559 var MemStorage = class {
3560 constructor() {
3561 this.users = /* @__PURE__ */ new Map();
3562 this.favorites = /* @__PURE__ */ new Map();
3563 this.repairGuides = /* @__PURE__ */ new Map();
3564 this.troubleshootingFlows = /* @__PURE__ */ new Map();
3565 this.deviceComponents = /* @__PURE__ */ new Map();
3566 this.deviceBrands = /* @__PURE__ */ new Map();
3567 this.deviceModels = /* @__PURE__ */ new Map();
3568 this.guideCompatibility = /* @__PURE__ */ new Map();
3569 this.seedInitialData();
3570 }
3571 seedInitialData() {
3572 const allGuides = generateAllComprehensiveGuides();
3573 allGuides.forEach((g, index2) => {
3574 const id = `guide-${index2 + 1}`;
3575 this.repairGuides.set(id, {
3576 id,
3577 title: g.title,
3578 description: g.description,
3579 deviceType: g.deviceType,
3580 category: g.category,
3581 difficulty: g.difficulty,
3582 estimatedTime: g.estimatedTime,
3583 toolsRequired: g.toolsRequired,
3584 safetyWarnings: g.safetyWarnings,
3585 steps: g.steps,
3586 alternativeSolutions: g.alternativeSolutions || null,
3587 imageUrl: g.imageUrl,
3588 viewCount: Math.floor(Math.random() * 800) + 50,
3589 downloadCount: Math.floor(Math.random() * 200) + 10,
3590 isBookmarked: false
3591 });
3592 });
3593 comprehensiveTroubleshootingFlows.forEach((f, index2) => {
3594 const id = `flow-${index2 + 1}`;
3595 const { category, ...flowData } = f;
3596 this.troubleshootingFlows.set(id, {
3597 id,
3598 type: category,
3599 title: flowData.title,
3600 description: flowData.description,
3601 steps: flowData.steps.map((step) => ({
3602 id: `step-${step.stepNumber}`,
3603 question: step.description,
3604 answers: [{
3605 text: step.solutions?.join(", ") || "Check solutions",
3606 nextStepId: step.stepNumber < flowData.steps.length ? `step-${step.stepNumber + 1}` : void 0
3607 }]
3608 }))
3609 });
3610 });
3611 comprehensiveDeviceComponents.forEach((c, index2) => {
3612 const id = `comp-${index2 + 1}`;
3613 this.deviceComponents.set(id, {
3614 id,
3615 name: c.name,
3616 description: c.description,
3617 deviceType: c.deviceType,
3618 category: c.componentType,
3619 safetyNotes: c.commonIssues || []
3620 });
3621 });
3622 const allBrands = [
3623 // Laptop Brands
3624 { id: "brand-apple-laptop", name: "Apple", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/apple", supportLevel: "official", popularity: 99 },
3625 { id: "brand-dell-laptop", name: "Dell", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/dell", supportLevel: "official", popularity: 96 },
3626 { id: "brand-lenovo-laptop", name: "Lenovo", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/lenovo", supportLevel: "official", popularity: 95 },
3627 { id: "brand-hp-laptop", name: "HP", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/hp", supportLevel: "official", popularity: 93 },
3628 { id: "brand-asus-laptop", name: "ASUS", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/asus", supportLevel: "official", popularity: 90 },
3629 { id: "brand-acer-laptop", name: "Acer", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/acer", supportLevel: "official", popularity: 84 },
3630 { id: "brand-msi-laptop", name: "MSI", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/msi", supportLevel: "official", popularity: 86 },
3631 { id: "brand-razer-laptop", name: "Razer", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/razer", supportLevel: "official", popularity: 87 },
3632 { id: "brand-microsoft-laptop", name: "Microsoft", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/microsoft", supportLevel: "official", popularity: 88 },
3633 { id: "brand-samsung-laptop", name: "Samsung", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/samsung", supportLevel: "official", popularity: 82 },
3634 { id: "brand-framework-laptop", name: "Framework", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/framework", supportLevel: "official", popularity: 85 },
3635 { id: "brand-lg-laptop", name: "LG", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/lg", supportLevel: "official", popularity: 78 },
3636 { id: "brand-gigabyte-laptop", name: "Gigabyte", deviceType: "laptop", logoUrl: "https://cdn.simpleicons.org/gigabyte", supportLevel: "community", popularity: 76 },
3637 // Desktop Brands & Form Factors
3638 { id: "brand-custom-desktop", name: "Custom Built PC", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/pcgamingwiki", supportLevel: "official", popularity: 100 },
3639 { id: "brand-apple-desktop", name: "Apple", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/apple", supportLevel: "official", popularity: 95 },
3640 { id: "brand-dell-desktop", name: "Dell", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/dell", supportLevel: "official", popularity: 94 },
3641 { id: "brand-hp-desktop", name: "HP", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/hp", supportLevel: "official", popularity: 91 },
3642 { id: "brand-lenovo-desktop", name: "Lenovo", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/lenovo", supportLevel: "official", popularity: 89 },
3643 { id: "brand-asus-desktop", name: "ASUS", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/asus", supportLevel: "official", popularity: 88 },
3644 { id: "brand-msi-desktop", name: "MSI", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/msi", supportLevel: "official", popularity: 85 },
3645 { id: "brand-corsair-desktop", name: "Corsair & NZXT", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/corsair", supportLevel: "official", popularity: 90 },
3646 { id: "brand-acer-desktop", name: "Acer", deviceType: "desktop", logoUrl: "https://cdn.simpleicons.org/acer", supportLevel: "community", popularity: 79 }
3647 ];
3648 allBrands.forEach((b) => {
3649 this.deviceBrands.set(b.id, {
3650 ...b,
3651 createdAt: /* @__PURE__ */ new Date()
3652 });
3653 });
3654 const allModels = [
3655 // APPLE LAPTOPS
3656 { id: "model-mbp-16-m3", brandId: "brand-apple-laptop", name: 'MacBook Pro 16" (M3 Pro / M3 Max)', series: "MacBook Pro", year: 2024, specifications: { cpu: "Apple M3 Max 16-Core", ram: "36GB-128GB Unified", storage: "512GB-8TB SSD", display: '16.2" Liquid Retina XDR Mini-LED 120Hz' }, commonIssues: ["Display flex cable strain", "USB-C port wear", "Battery cycle depletion"], guideCount: 16 },
3657 { id: "model-mbp-14-m3", brandId: "brand-apple-laptop", name: 'MacBook Pro 14" (M3 / M3 Pro)', series: "MacBook Pro", year: 2023, specifications: { cpu: "Apple M3 Pro 12-Core", ram: "18GB-36GB Unified", storage: "512GB-4TB SSD", display: '14.2" Liquid Retina XDR' }, commonIssues: ["Fan dust accumulation", "Trackpad haptic alignment", "MagSafe 3 port debris"], guideCount: 14 },
3658 { id: "model-mba-15-m3", brandId: "brand-apple-laptop", name: 'MacBook Air 15" (M3)', series: "MacBook Air", year: 2024, specifications: { cpu: "Apple M3 8-Core", ram: "16GB-24GB Unified", storage: "512GB SSD", display: '15.3" Liquid Retina IPS' }, commonIssues: ["Passive thermal throttling under sustained load", "Keyboard keycap shine"], guideCount: 10 },
3659 { id: "model-mba-13-m2", brandId: "brand-apple-laptop", name: 'MacBook Air 13" (M2)', series: "MacBook Air", year: 2022, specifications: { cpu: "Apple M2 8-Core", ram: "8GB-16GB Unified", storage: "256GB-512GB SSD", display: '13.6" Liquid Retina' }, commonIssues: ["Thermal pad modding", "Audio jack lint"], guideCount: 11 },
3660 { id: "model-mba-13-m1", brandId: "brand-apple-laptop", name: 'MacBook Air 13" (M1 Classic)', series: "MacBook Air", year: 2020, specifications: { cpu: "Apple M1 8-Core", ram: "8GB-16GB Unified", storage: "256GB-2TB SSD", display: '13.3" Retina 2560x1600' }, commonIssues: ["Battery swelling", "Display flexgate repair", "Trackpad cable oxidation"], guideCount: 19 },
3661 { id: "model-mbp-13-intel", brandId: "brand-apple-laptop", name: 'MacBook Pro 13" (Intel Four Thunderbolt)', series: "MacBook Pro Legacy", year: 2020, specifications: { cpu: "Intel Core i5-1038NG7", ram: "16GB LPDDR4X", storage: "512GB SSD", display: '13.3" Retina 2560x1600' }, commonIssues: ["Dual fan thermal paste degradation", "Butterfly/Magic keyboard replacement", "Battery swelling"], guideCount: 18 },
3662 { id: "model-mbp-15-retina", brandId: "brand-apple-laptop", name: 'MacBook Pro 15" Retina (Mid 2015 Legacy)', series: "MacBook Pro Legacy", year: 2015, specifications: { cpu: "Intel Core i7-4870HQ", ram: "16GB DDR3L", storage: "512GB Proprietary PCIe", display: '15.4" Retina 2880x1800' }, commonIssues: ["Staingate anti-reflective coating delamination", "I/O board audio flex ribbon", "Battery pouch cell replacement"], guideCount: 22 },
3663 // DELL LAPTOPS
3664 { id: "model-dell-xps15-9530", brandId: "brand-dell-laptop", name: "XPS 15 9530", series: "XPS", year: 2023, specifications: { cpu: "Intel Core i7-13700H", ram: "32GB DDR5-4800 (Upgradeable)", storage: "1TB M.2 PCIe 4.0", display: '15.6" 3.5K OLED Touch' }, commonIssues: ["Vapor chamber thermal paste drying", "Trackpad pre-travel rattle", "Battery health degradation"], guideCount: 19 },
3665 { id: "model-dell-xps13-plus", brandId: "brand-dell-laptop", name: "XPS 13 Plus 9320", series: "XPS", year: 2023, specifications: { cpu: "Intel Core i7-1360P", ram: "16GB LPDDR5", storage: "1TB NVMe", display: '13.4" 4K UHD+ Touch' }, commonIssues: ["Capacitive function row responsiveness", "Zero-lattice keyboard ribbon seating"], guideCount: 12 },
3666 { id: "model-dell-xps16-9640", brandId: "brand-dell-laptop", name: "XPS 16 9640 (AI Series)", series: "XPS", year: 2024, specifications: { cpu: "Intel Core Ultra 9 185H", ram: "32GB-64GB LPDDR5x", storage: "2TB PCIe 4.0 NVMe", display: '16.3" 4K+ OLED 90Hz' }, commonIssues: ["Seamless glass trackpad calibration", "Vapor chamber heatsink repaste", "Thunderbolt 4 port dock handshake"], guideCount: 15 },
3667 { id: "model-dell-lat-5440", brandId: "brand-dell-laptop", name: "Latitude 5440 Enterprise", series: "Latitude", year: 2024, specifications: { cpu: "Intel Core i5-1345U vPro", ram: "16GB DDR5 (2x SODIMM Slots)", storage: "512GB M.2 2230", display: '14.0" FHD Non-Touch' }, commonIssues: ["SODIMM RAM upgrade", "M.2 2230 to 2280 bracket swap", "CMOS battery reset"], guideCount: 15 },
3668 { id: "model-dell-lat-7440", brandId: "brand-dell-laptop", name: "Latitude 7440 Ultralight", series: "Latitude", year: 2023, specifications: { cpu: "Intel Core i7-1365U vPro", ram: "16GB LPDDR5", storage: "512GB M.2 PCIe", display: '14.0" 16:10 QHD+' }, commonIssues: ["Magnesium casing screw mounts", "Fingerprint reader daughterboard flex", "Wi-Fi 6E antenna clip"], guideCount: 14 },
3669 { id: "model-dell-prec-7780", brandId: "brand-dell-laptop", name: "Precision 7780 Mobile Workstation", series: "Precision Mobile", year: 2023, specifications: { cpu: "Intel Core i9-13950HX vPro", ram: "128GB CAMM / SODIMM DDR5", storage: "4x M.2 PCIe Gen4 NVMe (8TB)", gpu: "NVIDIA RTX 5000 Ada 16GB" }, commonIssues: ["CAMM memory module torque specs", "Vapor chamber thermal pad sizing", "SmartCard reader ribbon replacement"], guideCount: 21 },
3670 { id: "model-dell-alienware-m16", brandId: "brand-dell-laptop", name: "Alienware m16 R2 Gaming", series: "Alienware", year: 2024, specifications: { cpu: "Intel Core Ultra 7 155H", ram: "32GB DDR5 5600MHz", storage: "2TB Dual NVMe", display: '16" QHD+ 240Hz' }, commonIssues: ["Element 31 liquid metal paste migration", "High-RPM fan cleaning", "DC-in barrel jack repair"], guideCount: 22 },
3671 { id: "model-dell-alienware-x14", brandId: "brand-dell-laptop", name: "Alienware x14 R2 Ultra-Slim", series: "Alienware", year: 2023, specifications: { cpu: "Intel Core i7-13620H", ram: "32GB LPDDR5", storage: "1TB M.2 2280", display: '14.0" QHD+ 165Hz' }, commonIssues: ["Dual pull fan debris removal", "Type-C 130W GaN charging negotiation", "RGB Stadium lighting strip repair"], guideCount: 13 },
3672 { id: "model-dell-insp-15", brandId: "brand-dell-laptop", name: "Inspiron 15 3520", series: "Inspiron", year: 2023, specifications: { cpu: "Intel Core i5-1235U", ram: "8GB-16GB DDR4", storage: "512GB NVMe", display: '15.6" 120Hz IPS' }, commonIssues: ["Hinge mounting plastic standoff rupture", "Keyboard membrane replacement", "SATA HDD to SSD migration"], guideCount: 17 },
3673 // LENOVO LAPTOPS
3674 { id: "model-lenovo-x1-c11", brandId: "brand-lenovo-laptop", name: "ThinkPad X1 Carbon Gen 11", series: "ThinkPad", year: 2023, specifications: { cpu: "Intel Core i7-1365U vPro", ram: "32GB LPDDR5", storage: "1TB PCIe Gen4 NVMe", display: '14.0" 2.8K OLED' }, commonIssues: ["Fan dust filter de-clogging", "TrackPoint cap & click buttons replacement", "Wi-Fi 6E antenna routing"], guideCount: 20 },
3675 { id: "model-lenovo-x1-c12", brandId: "brand-lenovo-laptop", name: "ThinkPad X1 Carbon Gen 12", series: "ThinkPad", year: 2024, specifications: { cpu: "Intel Core Ultra 7 165H", ram: "32GB-64GB LPDDR5x", storage: "2TB Gen4 NVMe", display: '14.0" 2.8K OLED 120Hz' }, commonIssues: ["Communications bar webcam flex", "Haptic TouchPad click engine reset", "Dual outlet fan cleaning"], guideCount: 16 },
3676 { id: "model-lenovo-t14-g4", brandId: "brand-lenovo-laptop", name: "ThinkPad T14 Gen 4 (AMD / Intel)", series: "ThinkPad", year: 2023, specifications: { cpu: "AMD Ryzen 7 PRO 7840U", ram: "32GB LPDDR5x", storage: "1TB M.2 2280", display: '14.0" WUXGA Low Power' }, commonIssues: ["Modular keyboard replacement", "Internal 52.5Wh battery swap", "RJ45 Ethernet drop-jaw repair"], guideCount: 21 },
3677 { id: "model-lenovo-p16-g2", brandId: "brand-lenovo-laptop", name: "ThinkPad P16 Gen 2 Workstation", series: "ThinkPad Workstation", year: 2023, specifications: { cpu: "Intel Core i9-13980HX", ram: "128GB DDR5 ECC (4x Slots)", storage: "Dual M.2 Gen4 NVMe", gpu: "RTX 5000 Ada" }, commonIssues: ["Vapor chamber liquid repaste", "4x SODIMM RAM slot sequencing", "SmartCard flex replacement"], guideCount: 24 },
3678 { id: "model-lenovo-legion-pro7", brandId: "brand-lenovo-laptop", name: "Legion Pro 7i Gen 9", series: "Legion", year: 2024, specifications: { cpu: "Intel Core i9-14900HX", ram: "32GB DDR5 5600MHz", storage: "2TB Dual M.2 SSD", display: '16" WQXGA 240Hz 500 nits' }, commonIssues: ["Coldfront 5.0 vapor chamber repaste", "RGB backlight controller firmware", "Dual fan de-dusting"], guideCount: 18 },
3679 { id: "model-lenovo-legion-slim5", brandId: "brand-lenovo-laptop", name: 'Legion Slim 5 14" OLED', series: "Legion Slim", year: 2024, specifications: { cpu: "AMD Ryzen 7 7840HS", ram: "32GB LPDDR5X", storage: "1TB M.2 2280", display: '14.5" 2.8K 120Hz OLED' }, commonIssues: ["Vapor chamber phase-change pad installation", "Right-angle DC-in slim tip port check"], guideCount: 15 },
3680 { id: "model-lenovo-yoga-9i", brandId: "brand-lenovo-laptop", name: "Yoga 9i Dual-Screen / 2-in-1", series: "Yoga", year: 2024, specifications: { cpu: "Intel Core Ultra 7 155H", ram: "16GB LPDDR5x", storage: "1TB Gen4 SSD", display: 'Dual 13.3" 2.8K OLED Touch' }, commonIssues: ["360-degree rotating soundbar hinge tension", "Active stylus digitizer calibration"], guideCount: 13 },
3681 // HP LAPTOPS
3682 { id: "model-hp-spectre-14", brandId: "brand-hp-laptop", name: "Spectre x360 14 (2024)", series: "Spectre", year: 2024, specifications: { cpu: "Intel Core Ultra 7 155H", ram: "32GB LPDDR5x", storage: "2TB NVMe", display: '14.0" 2.8K OLED Touch' }, commonIssues: ["Haptic trackpad calibration", "Bottom cover rubber foot adhesive", "USB-C PD handshake reset"], guideCount: 14 },
3683 { id: "model-hp-spectre-16", brandId: "brand-hp-laptop", name: "Spectre x360 16 OLED", series: "Spectre", year: 2024, specifications: { cpu: "Intel Core Ultra 7 155H", ram: "32GB LPDDR5x", storage: "2TB NVMe", gpu: "RTX 4050 Laptop" }, commonIssues: ["360-degree gear hinge lubrication", "Dual blower fan cleaning", "OLED touch digitizer ribbon"], guideCount: 15 },
3684 { id: "model-hp-elitebook-840", brandId: "brand-hp-laptop", name: "EliteBook 840 G10", series: "EliteBook", year: 2023, specifications: { cpu: "Intel Core i7-1360P", ram: "32GB DDR5 (2x Slots)", storage: "1TB SSD", display: '14.0" WUXGA Anti-Glare' }, commonIssues: ["Smart card reader flex cable", "RAM SODIMM capacity upgrade", "Sure View privacy filter troubleshooting"], guideCount: 16 },
3685 { id: "model-hp-zbook-fury16", brandId: "brand-hp-laptop", name: "ZBook Fury 16 G10 Mobile Workstation", series: "ZBook", year: 2023, specifications: { cpu: "Intel Core i9-13950HX", ram: "128GB DDR5 ECC (4x SODIMM)", storage: "4x M.2 NVMe SSDs (Up to 16TB)", gpu: "NVIDIA RTX 5000 Ada" }, commonIssues: ["Toolless chassis latch mechanism", "Quad M.2 thermal heatsink pad repaste", "BMS battery diagnostic"], guideCount: 22 },
3686 { id: "model-hp-omen-16", brandId: "brand-hp-laptop", name: "OMEN Transcend 16 Gaming", series: "OMEN", year: 2024, specifications: { cpu: "Intel Core i7-14700HX", ram: "32GB DDR5", storage: "1TB PCIe Gen4", display: '16.0" Mini-LED 240Hz' }, commonIssues: ["Tempest Cooling fan shroud cleaning", "Hall-effect lid sensor alignment"], guideCount: 15 },
3687 { id: "model-hp-victus-16", brandId: "brand-hp-laptop", name: "Victus 16 Gaming Laptop", series: "Victus", year: 2023, specifications: { cpu: "AMD Ryzen 7 7840HS", ram: "16GB DDR5", storage: "1TB SSD", gpu: "RTX 4060" }, commonIssues: ["Screen hinge wobble tensioning", "Dual fan air intake foam swap", "DC power barrel socket replacement"], guideCount: 18 },
3688 // ASUS LAPTOPS & HANDHELDS
3689 { id: "model-asus-zephyrus-g14", brandId: "brand-asus-laptop", name: "ROG Zephyrus G14 (2024)", series: "ROG", year: 2024, specifications: { cpu: "AMD Ryzen 9 8945HS", ram: "32GB LPDDR5X", storage: "1TB M.2 NVMe", display: '14.0" 3K OLED 120Hz G-SYNC' }, commonIssues: ["Liquid metal barrier inspection", "AniMe Matrix / Slash Lighting flex cable", "Fan bearing lubrication"], guideCount: 20 },
3690 { id: "model-asus-zephyrus-g16", brandId: "brand-asus-laptop", name: "ROG Zephyrus G16 (2024)", series: "ROG", year: 2024, specifications: { cpu: "Intel Core Ultra 9 185H", ram: "32GB LPDDR5x", storage: "2TB Dual NVMe", display: '16" 2.5K OLED 240Hz' }, commonIssues: ["Tri-Fan cooling module de-dusting", "Vapor chamber repasting", "Type-C 100W PD charging controller"], guideCount: 19 },
3691 { id: "model-asus-strix-scar16", brandId: "brand-asus-laptop", name: "ROG Strix SCAR 16 (2024)", series: "ROG", year: 2024, specifications: { cpu: "Intel Core i9-14900HX", ram: "64GB DDR5 5600MHz", storage: "2TB RAID 0 Gen4", display: '16.0" QHD+ 240Hz Mini-LED' }, commonIssues: ["Tri-Fan cooling module cleaning", "Conductonaut Extreme liquid metal repaste", "Chassis RGB underglow strip swap"], guideCount: 17 },
3692 { id: "model-asus-zenbook-14", brandId: "brand-asus-laptop", name: "ZenBook 14 OLED UX3405", series: "ZenBook", year: 2024, specifications: { cpu: "Intel Core Ultra 7 155H", ram: "16GB-32GB LPDDR5x", storage: "1TB Gen4 SSD", display: '14.0" 3K 120Hz OLED' }, commonIssues: ["NumberPad virtual trackpad driver", "ErgoLift hinge friction adjustment"], guideCount: 11 },
3693 { id: "model-asus-rog-ally-x", brandId: "brand-asus-laptop", name: "ROG Ally X (Handheld Gaming PC)", series: "ROG Ally", year: 2024, specifications: { cpu: "AMD Ryzen Z1 Extreme", ram: "24GB LPDDR5X 7500MHz", storage: "1TB M.2 2280 Full-Size NVMe", battery: "80Wh High-Capacity" }, commonIssues: ["Hall-Effect joystick calibration & swap", "MicroSD slot thermal isolation tape", "Full-size 2280 M.2 SSD installation"], guideCount: 26 },
3694 // ACER & MSI & RAZER & FRAMEWORK & OTHER LAPTOPS
3695 { id: "model-acer-helios-16", brandId: "brand-acer-laptop", name: "Predator Helios 16", series: "Predator", year: 2024, specifications: { cpu: "Intel Core i9-14900HX", ram: "32GB DDR5", storage: "2TB NVMe", display: '16" WQXGA 240Hz IPS' }, commonIssues: ["AeroBlade 3D 5th Gen metal fan cleaning", "Liquid metal barrier reseal", "RGB swappable WASD keycaps"], guideCount: 18 },
3696 { id: "model-acer-swift-go14", brandId: "brand-acer-laptop", name: "Swift Go 14 OLED", series: "Swift", year: 2024, specifications: { cpu: "Intel Core Ultra 7 155H", ram: "16GB LPDDR5X", storage: "1TB Gen4 SSD", display: '14.0" 2.8K OLED 90Hz' }, commonIssues: ["TwinAir dual fan heatsink cleaning", "Secondary M.2 slot NVMe addition"], guideCount: 12 },
3697 { id: "model-msi-stealth-16", brandId: "brand-msi-laptop", name: "MSI Stealth 16 AI Studio", series: "Stealth", year: 2024, specifications: { cpu: "Intel Core Ultra 9 185H", ram: "32GB DDR5", storage: "2TB NVMe SSD", display: '16" UHD+ 120Hz OLED' }, commonIssues: ["Cooler Boost 5 fan cleaning", "Inverted motherboard disassembly order", "Hinge anchor reinforcement"], guideCount: 15 },
3698 { id: "model-msi-titan-18", brandId: "brand-msi-laptop", name: "MSI Titan 18 HX Flagship", series: "Titan Flagship", year: 2024, specifications: { cpu: "Intel Core i9-14900HX", ram: "128GB DDR5 (4x Slots)", storage: "1x PCIe Gen5 + 2x PCIe Gen4 SSDs", display: '18" 4K 120Hz Mini-LED' }, commonIssues: ["Vapor chamber 3D cooling repaste", "Cherry MX mechanical keyboard switch swap", "Quad fan bearing service"], guideCount: 22 },
3699 { id: "model-razer-blade-16", brandId: "brand-razer-laptop", name: "Razer Blade 16 (Dual-Mode Display)", series: "Blade", year: 2024, specifications: { cpu: "Intel Core i9-14900HX", ram: "32GB-64GB DDR5", storage: "2TB NVMe", display: '16" Dual-Mode Mini-LED (4K 120Hz / FHD 240Hz)' }, commonIssues: ["Battery swelling prevention and replacement", "Vapor chamber repaste with PTM7950", "Synapse Chroma RGB controller reset"], guideCount: 23 },
3700 { id: "model-razer-blade-14", brandId: "brand-razer-laptop", name: "Razer Blade 14 (AMD)", series: "Blade", year: 2024, specifications: { cpu: "AMD Ryzen 9 8945HS", ram: "32GB-64GB DDR5 (2x Slots)", storage: "1TB PCIe 4.0", display: '14" QHD+ 240Hz' }, commonIssues: ["Dual blower fan lint de-clogging", "M.2 SSD thermal pad replacement", "Trackpad click stiffness"], guideCount: 17 },
3701 { id: "model-framework-13", brandId: "brand-framework-laptop", name: "Framework Laptop 13 (Modular)", series: "Framework Modular", year: 2024, specifications: { cpu: "AMD Ryzen 7 7840U / Intel Core Ultra", ram: "Up to 64GB DDR5 SODIMM", storage: "Up to 4TB M.2 2280", display: '13.5" 2256x1504 3:2' }, commonIssues: ["Expansion card USB-C slot swap", "Magnetic bezel replacement", "Battery RTC coin cell swap"], guideCount: 25 },
3702 { id: "model-framework-16", brandId: "brand-framework-laptop", name: "Framework Laptop 16 (Discrete GPU Bay)", series: "Framework Modular", year: 2024, specifications: { cpu: "AMD Ryzen 9 7940HS", ram: "64GB DDR5", storage: "2x M.2 (2280 + 2230)", gpu: "Modular Radeon RX 7700S Expansion Bay" }, commonIssues: ["Graphics Module interposer connector latching", "Hot-swappable keyboard and numpad deck re-seating", "Dual fan exhaust module swap"], guideCount: 28 },
3703 { id: "model-ms-surface-laptop5", brandId: "brand-microsoft-laptop", name: "Surface Laptop 5", series: "Surface", year: 2023, specifications: { cpu: "Intel Core i7-1265U", ram: "16GB LPDDR5x", storage: "512GB Removable SSD", display: '13.5" PixelSense Touch' }, commonIssues: ["Magnetic keyboard fabric deck removal", "Removable M.2 2230 SSD upgrade", "Surface Connect port charging diagnostic"], guideCount: 14 },
3704 { id: "model-ms-surface-pro9", brandId: "brand-microsoft-laptop", name: "Surface Pro 9 / 10 2-in-1", series: "Surface Pro", year: 2023, specifications: { cpu: "Intel Core i7-1255U / SQ3 5G", ram: "16GB LPDDR5", storage: "256GB-1TB Removable 2230 SSD", display: '13.0" PixelSense Flow 120Hz' }, commonIssues: ["Magnetic SSD hatch door removal", "Kickstand torque hinge adjustment", "Screen glass adhesive release"], guideCount: 19 },
3705 { id: "model-samsung-galaxy-book4", brandId: "brand-samsung-laptop", name: "Galaxy Book4 Ultra", series: "Galaxy Book", year: 2024, specifications: { cpu: "Intel Core Ultra 9 185H", ram: "32GB LPDDR5X", storage: "1TB Gen4 SSD", display: '16.0" Dynamic AMOLED 2X Touch' }, commonIssues: ["Vapor chamber repasting", "Secondary M.2 slot NVMe expansion"], guideCount: 13 },
3706 { id: "model-lg-gram-17", brandId: "brand-lg-laptop", name: "LG Gram 17 (Ultra-Lightweight)", series: "Gram", year: 2024, specifications: { cpu: "Intel Core Ultra 7 155H", ram: "16GB-32GB LPDDR5x", storage: "1TB Dual M.2", display: '17.0" WQXGA IPS Non-Glare' }, commonIssues: ["Magnesium chassis flex inspection", "Dual M.2 SSD installation", "Battery replacement"], guideCount: 12 },
3707 { id: "model-gigabyte-aorus-16x", brandId: "brand-gigabyte-laptop", name: "GIGABYTE AORUS 16X (2024)", series: "AORUS", year: 2024, specifications: { cpu: "Intel Core i9-14900HX", ram: "32GB DDR5 5600MHz", storage: "1TB + 1TB Dual Gen4", display: '16" 165Hz WQXGA Panton-Validated' }, commonIssues: ["Windforce Infinity cooling overhaul", "RGB Beacon projection light repair", "Wi-Fi 7 BE200 module seating"], guideCount: 16 },
3708 // ==========================================
3709 // DESKTOP MODELS & FORM FACTORS (30+ Desktop Models)
3710 // ==========================================
3711 { id: "model-custom-atx-gaming", brandId: "brand-custom-desktop", name: "Standard Full/Mid ATX Gaming PC", series: "Custom PC", year: 2024, specifications: { cpu: "AMD Ryzen 7 7800X3D / Intel Core i7-14700K", ram: "32GB DDR5 6000MHz", storage: "2TB PCIe 4.0 NVMe", gpu: "NVIDIA GeForce RTX 4080 Super", psu: "850W ATX 3.0 Gold Modular" }, commonIssues: ["PCIe GPU reseating & 12VHPWR seating", "360mm AIO liquid cooler bleeding/pump whine", "RAM XMP/EXPO dual-channel profile stability", "Front panel header / ARGB wiring"], guideCount: 35 },
3712 { id: "model-custom-itx-sff", brandId: "brand-custom-desktop", name: "Mini-ITX Small Form Factor (SFF) Build", series: "Custom SFF", year: 2024, specifications: { cpu: "AMD Ryzen 7 7800X3D", ram: "32GB DDR5 Low-Profile", storage: "2TB M.2 Back-Mounted", gpu: "RTX 4070 Dual-Slot", psu: "SFX 750W Platinum" }, commonIssues: ["PCIe Gen4 riser cable bandwidth errors", "Tight cable routing around CPU cooler", "Small fan curve optimization"], guideCount: 28 },
3713 { id: "model-custom-watercooled", brandId: "brand-custom-desktop", name: "Custom Hardline Liquid Cooling Rig", series: "Custom Enthusiast", year: 2024, specifications: { cpu: "Intel Core i9-14900KS / AMD Ryzen 9 7950X3D", ram: "64GB DDR5 7200MHz", storage: "4TB PCIe Gen5 NVMe", gpu: "RTX 4090 Water Block", cooling: "Dual 360mm Radiators, D5 Pump" }, commonIssues: ["Loop drainage & distilled water flushing", "O-ring seal leak testing with air pressure tester", "Biocide and coolant dye fallout cleanup"], guideCount: 22 },
3714 { id: "model-custom-dual-chamber", brandId: "brand-custom-desktop", name: "Dual-Chamber Fishbowl Panoramic Glass PC", series: "Custom Aesthetic", year: 2024, specifications: { cpu: "Intel Core i9-14900K", ram: "64GB DDR5 RGB", storage: "4TB NVMe", gpu: "RTX 4090 Vertical Mount", fans: "9x Reverse-Blade 120mm PWM" }, commonIssues: ["Tempered glass panel standoff rubber washer check", "Reverse blade fan orientation airflow check", "12V-2x6 cable 90-degree adapter seating"], guideCount: 20 },
3715 // APPLE DESKTOPS
3716 { id: "model-mac-studio-m2", brandId: "brand-apple-desktop", name: "Mac Studio (M2 Max / M2 Ultra)", series: "Mac Studio", year: 2023, specifications: { cpu: "Apple M2 Ultra 24-Core CPU / 76-Core GPU", ram: "64GB-192GB Unified", storage: "1TB-8TB Proprietary SSD Modules", psu: "Internal 370W PSU" }, commonIssues: ["Dual blower fan dust removal", "Proprietary SSD module restoration via Apple Configurator", "Power supply replacement"], guideCount: 14 },
3717 { id: "model-mac-mini-m2", brandId: "brand-apple-desktop", name: "Mac mini (M2 / M2 Pro)", series: "Mac mini", year: 2023, specifications: { cpu: "Apple M2 Pro 12-Core", ram: "16GB-32GB Unified", storage: "512GB-2TB SSD" }, commonIssues: ["Antenna plate removal", "Internal fan replacement", "DC power supply board swap"], guideCount: 16 },
3718 { id: "model-imac-24-m3", brandId: "brand-apple-desktop", name: 'iMac 24" 4.5K Retina (M3)', series: "iMac", year: 2023, specifications: { cpu: "Apple M3 8-Core", ram: "16GB-24GB Unified", storage: "512GB-2TB SSD", display: '23.5" 4.5K Retina 4480x2520' }, commonIssues: ["Display adhesive cutting wheel procedure", "Internal logic board swap", "Magnetic power cord socket cleaning"], guideCount: 12 },
3719 { id: "model-imac-27-intel", brandId: "brand-apple-desktop", name: 'iMac 27" 5K Retina (Intel Legacy)', series: "iMac Legacy", year: 2020, specifications: { cpu: "Intel Core i9-10910 10-Core", ram: "Up to 128GB DDR4 (User Door)", storage: "1TB-8TB SSD", gpu: "Radeon Pro 5700 XT 16GB" }, commonIssues: ["Blade SSD upgrade", "User RAM door 4-stick DDR4 installation", "Display hinge spring snap repair"], guideCount: 25 },
3720 { id: "model-mac-pro-tower", brandId: "brand-apple-desktop", name: "Mac Pro Tower (Apple Silicon / Intel)", series: "Mac Pro", year: 2023, specifications: { cpu: "Apple M2 Ultra / Intel Xeon W", ram: "Up to 1.5TB DDR4 ECC (Intel) / 192GB (M2)", storage: "Internal PCIe Storage", expansion: "7x PCIe Slots" }, commonIssues: ["PCIe card auxiliary power routing", "Stainless steel latch alignment", "MPX module reseating"], guideCount: 15 },
3721 // DELL DESKTOPS
3722 { id: "model-dell-optiplex-7010", brandId: "brand-dell-desktop", name: "OptiPlex 7010 / 7000 Micro Form Factor", series: "OptiPlex Micro", year: 2023, specifications: { cpu: "Intel Core i7-13700T", ram: "16GB-64GB DDR5 SODIMM", storage: "512GB M.2 2280 NVMe" }, commonIssues: ["Blower fan thermal paste refresh", "External 90W/130W Dell power brick testing", 'SATA 2.5" caddy cable replacement'], guideCount: 19 },
3723 { id: "model-dell-optiplex-5090-sff", brandId: "brand-dell-desktop", name: "OptiPlex 5090 / 7090 Small Form Factor (SFF)", series: "OptiPlex SFF", year: 2022, specifications: { cpu: "Intel Core i7-11700", ram: "32GB DDR4 (4x DIMM Slots)", storage: '1TB NVMe + 3.5" HDD', psu: "Dell Proprietary 260W 80+ Platinum" }, commonIssues: ["Low-profile PCIe GPU installation (e.g. RTX 3050 6GB / GTX 1650)", "Proprietary 6-pin motherboard power supply swap", "CMOS CR2032 coin cell replacement"], guideCount: 24 },
3724 { id: "model-dell-optiplex-7000-tower", brandId: "brand-dell-desktop", name: "OptiPlex 7000 Full Tower", series: "OptiPlex Tower", year: 2023, specifications: { cpu: "Intel Core i7-13700", ram: "64GB DDR5", storage: "2TB NVMe + 4TB HDD", psu: "Dell 500W Platinum" }, commonIssues: ["PCIe graphics card bracket lock", "Front intake bezel dust cleaning", "SATA optical drive replacement"], guideCount: 17 },
3725 { id: "model-dell-alienware-r16", brandId: "brand-dell-desktop", name: "Alienware Aurora R16 Gaming Desktop", series: "Alienware Aurora", year: 2024, specifications: { cpu: "Intel Core i9-14900KF", ram: "32GB DDR5 5600MHz", storage: "2TB Gen4 SSD", gpu: "RTX 4080 Super 16GB", psu: "1000W 80+ Gold" }, commonIssues: ["240mm liquid cooler radiator cleaning", "GPU retention bracket removal", "12V-2x6 power cable routing"], guideCount: 20 },
3726 { id: "model-dell-precision-3660", brandId: "brand-dell-desktop", name: "Precision 3660 Tower Workstation", series: "Precision Workstation", year: 2023, specifications: { cpu: "Intel Core i9-13900K", ram: "64GB DDR5 ECC / Non-ECC", storage: "Dual 2TB PCIe Gen4 SSDs", gpu: "NVIDIA RTX A4000 / RTX 4080" }, commonIssues: ["Front air intake dust filter maintenance", "Secondary M.2 PCIe riser card setup", "ECC memory error detection"], guideCount: 21 },
3727 // HP DESKTOPS
3728 { id: "model-hp-omen-45l", brandId: "brand-hp-desktop", name: "OMEN 45L Gaming Desktop (Cryo-Chamber)", series: "OMEN Desktop", year: 2024, specifications: { cpu: "Intel Core i9-14900K", ram: "64GB Kingston FURY DDR5", storage: "2TB WD Black NVMe", cooling: "External Patented Cryo-Chamber 360mm AIO", psu: "1000W 80+ Gold" }, commonIssues: ["Cryo-Chamber radiator dust filter washing", "Standard ATX motherboard/GPU upgrades", "OMEN Gaming Hub RGB lighting sync"], guideCount: 22 },
3729 { id: "model-hp-omen-25l", brandId: "brand-hp-desktop", name: "OMEN 25L Mid-Tower Gaming", series: "OMEN Desktop", year: 2023, specifications: { cpu: "Intel Core i7-13700F", ram: "32GB HyperX DDR5", storage: "1TB SSD", gpu: "RTX 4070" }, commonIssues: ["Rear exhaust fan upgrade", "CPU air cooler tower replacement", "RAM XMP frequency enable in BIOS"], guideCount: 16 },
3730 { id: "model-hp-prodesk-600", brandId: "brand-hp-desktop", name: "ProDesk 600 G6 / G8 SFF", series: "ProDesk", year: 2022, specifications: { cpu: "Intel Core i5-11500", ram: "16GB DDR4", storage: "512GB M.2 SSD", psu: "HP 210W Active PFC" }, commonIssues: ["SFF power supply diagnostic", "Toolless drive bay unlatching", "BIOS admin password jumper clearing"], guideCount: 18 },
3731 { id: "model-hp-elitedesk-mini", brandId: "brand-hp-desktop", name: "EliteDesk 800 G8 / G9 Mini PC", series: "EliteDesk Mini", year: 2023, specifications: { cpu: "Intel Core i7-12700T", ram: "32GB DDR5", storage: "1TB M.2 Gen4" }, commonIssues: ["Flex IO v2 port module swapping (Type-C / DP / HDMI / 2.5GbE)", "Copper heatsink repaste", "Mini-PC fan acoustic balance"], guideCount: 17 },
3732 { id: "model-hp-z4-g5", brandId: "brand-hp-desktop", name: "HP Z4 G5 Workstation Tower", series: "Z Workstation", year: 2024, specifications: { cpu: "Intel Xeon w5-2465X", ram: "128GB DDR5 ECC Registered", storage: "Dual 4TB NVMe SSDs", psu: "1125W 90% Efficient" }, commonIssues: ["Hot-swappable front NVMe drive bays", "Memory cooling shroud latch", "Dual PCIe Gen5 GPU power distribution"], guideCount: 20 },
3733 // LENOVO DESKTOPS
3734 { id: "model-lenovo-m70q-tiny", brandId: "brand-lenovo-desktop", name: "ThinkCentre M70q / M90q Tiny PC", series: "ThinkCentre Tiny", year: 2023, specifications: { cpu: "Intel Core i7-13700T", ram: "16GB-64GB DDR5", storage: "512GB M.2 NVMe", dimensions: "1-Liter Compact Chassis" }, commonIssues: ["Toolless chassis thumbscrew removal", "Dust shield foam replacement", "Thermal paste refresh on direct-mount heatsink"], guideCount: 20 },
3735 { id: "model-lenovo-legion-t7", brandId: "brand-lenovo-desktop", name: "Legion Tower 7i Gen 8", series: "Legion Tower", year: 2024, specifications: { cpu: "Intel Core i9-13900KF", ram: "32GB DDR5 5600MHz", storage: "1TB + 1TB Dual SSD", gpu: "RTX 4080", psu: "850W Gold" }, commonIssues: ["ARGB 120mm fan hub diagnosis", "Legion Coldfront liquid cooler pump curve", "GPU anti-sag bracket mounting"], guideCount: 19 },
3736 { id: "model-lenovo-p360-ultra", brandId: "brand-lenovo-desktop", name: "ThinkStation P360 / P3 Ultra SFF Workstation", series: "ThinkStation", year: 2023, specifications: { cpu: "Intel Core i9-13900", ram: "128GB DDR5 SODIMM", storage: "2x M.2 PCIe Gen4", gpu: "NVIDIA RTX A5000 Mobile 16GB" }, commonIssues: ["Chassis pull-tab clamshell mechanism", "Dual blower fan cleaning", "External 300W high-power brick check"], guideCount: 21 },
3737 // ASUS & MSI & CORSAIR & SPECIALIZED DESKTOPS
3738 { id: "model-asus-rog-g16ch", brandId: "brand-asus-desktop", name: "ROG Strix G16CH Gaming Desktop", series: "ROG Strix", year: 2024, specifications: { cpu: "Intel Core i7-14700F", ram: "32GB DDR5", storage: "1TB M.2 Gen4", gpu: "RTX 4070 Super", psu: "700W 80+ Gold" }, commonIssues: ["Front mesh air intake cleaning", "Glass side panel thumbscrew rubber washer seating", "AURA Sync RGB lighting reset"], guideCount: 18 },
3739 { id: "model-asus-proart-pd5", brandId: "brand-asus-desktop", name: "ProArt Station PD5 Creator Desktop", series: "ProArt", year: 2023, specifications: { cpu: "Intel Core i9-13900", ram: "64GB DDR5", storage: "2TB Gen4 SSD", gpu: "NVIDIA RTX 4070 / RTX A4000" }, commonIssues: ["Lumiwiz LED status bar calibration", "Front I/O headphone latch replacement", "Hard drive hot-swap cage"], guideCount: 15 },
3740 { id: "model-corsair-one-i500", brandId: "brand-corsair-desktop", name: "Corsair ONE i500 Compact Luxury PC", series: "Corsair ONE", year: 2024, specifications: { cpu: "Intel Core i9-14900K", ram: "64GB DDR5", storage: "2TB Gen4 NVMe", cooling: "Dual Independent Closed-Loop Liquid Coolers", chassis: "FSC-certified Real Wood Front" }, commonIssues: ["Dual radiator side-panel dust blowing", "Underglow touch sensor recalibration", "SFX-L power supply cable check"], guideCount: 16 },
3741 { id: "model-msi-trident-x2", brandId: "brand-msi-desktop", name: "MSI MEG Trident X2 (HMI Touchscreen)", series: "MEG Trident", year: 2024, specifications: { cpu: "Intel Core i9-14900KF", ram: "64GB DDR5", storage: "2TB Gen5 + 2TB Gen4", gpu: "RTX 4090 24GB", psu: "1000W PCIe 5.0" }, commonIssues: ['Front 4.5" HMI touchscreen firmware calibration', "Silent Storm Cooling 3 air chamber divider alignment"], guideCount: 17 },
3742 { id: "model-intel-nuc-13-extreme", brandId: "brand-corsair-desktop", name: "Intel NUC 13 Extreme (Raptor Canyon)", series: "Intel NUC", year: 2023, specifications: { cpu: "Intel Core i9-13900K Compute Element", ram: "64GB DDR5 SODIMM", storage: "3x M.2 PCIe 4.0 NVMe", gpu: 'Triple-Slot 12" PCIe GPU', psu: "750W SFX Gold" }, commonIssues: ["NUC Compute Element PCIe x16 daughterboard seating", "SFX power supply fan curve", "Triple M.2 heatsink plate pad repaste"], guideCount: 22 }
3743 ];
3744 allModels.forEach((m) => {
3745 this.deviceModels.set(m.id, {
3746 ...m,
3747 createdAt: /* @__PURE__ */ new Date()
3748 });
3749 });
3750 const guideKeys = Array.from(this.repairGuides.keys());
3751 allModels.forEach((m) => {
3752 guideKeys.slice(0, 6).forEach((gId) => {
3753 const compatId = `compat-${m.id}-${gId}`;
3754 this.guideCompatibility.set(compatId, {
3755 id: compatId,
3756 guideId: gId,
3757 modelId: m.id,
3758 compatibility: "compatible",
3759 notes: "Fully verified compatibility with standard OEM repair procedures.",
3760 createdAt: /* @__PURE__ */ new Date()
3761 });
3762 });
3763 });
3764 try {
3765 const defaultPasswordHash = import_bcrypt.default.hashSync("password123", 10);
3766 const initialUsers = [
3767 {
3768 id: "user-master-tech",
3769 email: "jhustle44@gmail.com",
3770 password: defaultPasswordHash,
3771 firstName: "Master",
3772 lastName: "Technician",
3773 profileImageUrl: null,
3774 role: "admin",
3775 createdAt: /* @__PURE__ */ new Date(),
3776 updatedAt: /* @__PURE__ */ new Date()
3777 },
3778 {
3779 id: "user-tech-lead",
3780 email: "tech@jcrguru.com",
3781 password: defaultPasswordHash,
3782 firstName: "Field",
3783 lastName: "Technician",
3784 profileImageUrl: null,
3785 role: "technician",
3786 createdAt: /* @__PURE__ */ new Date(),
3787 updatedAt: /* @__PURE__ */ new Date()
3788 },
3789 {
3790 id: "user-admin-chief",
3791 email: "admin@jcrguru.com",
3792 password: defaultPasswordHash,
3793 firstName: "Workshop",
3794 lastName: "Admin",
3795 profileImageUrl: null,
3796 role: "admin",
3797 createdAt: /* @__PURE__ */ new Date(),
3798 updatedAt: /* @__PURE__ */ new Date()
3799 },
3800 {
3801 id: "user-guest-demo",
3802 email: "demo@jcrguru.com",
3803 password: defaultPasswordHash,
3804 firstName: "Demo",
3805 lastName: "Technician",
3806 profileImageUrl: null,
3807 role: "user",
3808 createdAt: /* @__PURE__ */ new Date(),
3809 updatedAt: /* @__PURE__ */ new Date()
3810 }
3811 ];
3812 initialUsers.forEach((u) => {
3813 this.users.set(u.id, u);
3814 });
3815 } catch (e) {
3816 console.warn("User seeding notice:", e);
3817 }
3818 }
3819 async getUser(id) {
3820 return this.users.get(id);
3821 }
3822 async getUserByEmail(email) {
3823 if (!email) return void 0;
3824 const target = email.trim().toLowerCase();
3825 return Array.from(this.users.values()).find((u) => u.email.toLowerCase() === target);
3826 }
3827 async createUser(user) {
3828 const id = `user-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
3829 const newUser = {
3830 id,
3831 email: (user.email || "").trim().toLowerCase(),
3832 password: user.password,
3833 firstName: user.firstName || null,
3834 lastName: user.lastName || null,
3835 profileImageUrl: user.profileImageUrl || null,
3836 role: user.role || "user",
3837 createdAt: /* @__PURE__ */ new Date(),
3838 updatedAt: /* @__PURE__ */ new Date()
3839 };
3840 this.users.set(id, newUser);
3841 return newUser;
3842 }
3843 async updateUser(id, user) {
3844 const existing = this.users.get(id);
3845 if (!existing) return void 0;
3846 const updated = { ...existing, ...user, updatedAt: /* @__PURE__ */ new Date() };
3847 this.users.set(id, updated);
3848 return updated;
3849 }
3850 async getUserFavorites(userId) {
3851 return Array.from(this.favorites.values()).filter((f) => f.userId === userId);
3852 }
3853 async addToFavorites(userId, favorite) {
3854 const id = `fav-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`;
3855 const newFav = {
3856 id,
3857 userId,
3858 itemType: favorite.itemType,
3859 itemId: favorite.itemId,
3860 itemTitle: favorite.itemTitle,
3861 itemImageUrl: favorite.itemImageUrl || null,
3862 createdAt: /* @__PURE__ */ new Date()
3863 };
3864 this.favorites.set(id, newFav);
3865 return newFav;
3866 }
3867 async removeFromFavorites(userId, itemId, itemType) {
3868 for (const [id, f] of this.favorites.entries()) {
3869 if (f.userId === userId && f.itemId === itemId && f.itemType === itemType) {
3870 this.favorites.delete(id);
3871 }
3872 }
3873 }
3874 async isFavorited(userId, itemId, itemType) {
3875 return Array.from(this.favorites.values()).some(
3876 (f) => f.userId === userId && f.itemId === itemId && f.itemType === itemType
3877 );
3878 }
3879 async getRepairGuides(filters) {
3880 let list = Array.from(this.repairGuides.values());
3881 if (filters?.deviceType) {
3882 list = list.filter((g) => g.deviceType === filters.deviceType);
3883 }
3884 if (filters?.category && filters.category !== "all") {
3885 list = list.filter((g) => g.category === filters.category);
3886 }
3887 if (filters?.difficulty && filters.difficulty !== "all") {
3888 list = list.filter((g) => g.difficulty === filters.difficulty);
3889 }
3890 return list;
3891 }
3892 async getRepairGuide(id) {
3893 return this.repairGuides.get(id);
3894 }
3895 async createRepairGuide(guide) {
3896 const id = `guide-${Date.now()}`;
3897 const newGuide = {
3898 id,
3899 title: guide.title,
3900 description: guide.description,
3901 deviceType: guide.deviceType,
3902 category: guide.category,
3903 difficulty: guide.difficulty,
3904 estimatedTime: guide.estimatedTime,
3905 toolsRequired: guide.toolsRequired,
3906 safetyWarnings: guide.safetyWarnings,
3907 steps: guide.steps,
3908 alternativeSolutions: guide.alternativeSolutions || null,
3909 imageUrl: guide.imageUrl,
3910 viewCount: 0,
3911 downloadCount: 0,
3912 isBookmarked: false
3913 };
3914 this.repairGuides.set(id, newGuide);
3915 return newGuide;
3916 }
3917 async updateViewCount(id) {
3918 const guide = this.repairGuides.get(id);
3919 if (guide) {
3920 guide.viewCount = (guide.viewCount || 0) + 1;
3921 }
3922 }
3923 async updateDownloadCount(id) {
3924 const guide = this.repairGuides.get(id);
3925 if (guide) {
3926 guide.downloadCount = (guide.downloadCount || 0) + 1;
3927 }
3928 }
3929 async toggleBookmark(id) {
3930 const guide = this.repairGuides.get(id);
3931 if (guide) {
3932 guide.isBookmarked = !guide.isBookmarked;
3933 return guide;
3934 }
3935 return void 0;
3936 }
3937 async searchRepairGuides(query) {
3938 const q = query.trim().toLowerCase();
3939 if (!q) return Array.from(this.repairGuides.values());
3940 return Array.from(this.repairGuides.values()).filter((g) => {
3941 const matchTitle = g.title.toLowerCase().includes(q);
3942 const matchDesc = g.description.toLowerCase().includes(q);
3943 const matchCategory = g.category.toLowerCase().includes(q);
3944 const matchDevice = g.deviceType.toLowerCase().includes(q);
3945 const matchDifficulty = g.difficulty.toLowerCase().includes(q);
3946 const matchTools = g.toolsRequired && g.toolsRequired.some((t) => t.toLowerCase().includes(q));
3947 const matchSteps = g.steps && g.steps.some((s) => s.title.toLowerCase().includes(q) || s.description.toLowerCase().includes(q));
3948 return matchTitle || matchDesc || matchCategory || matchDevice || matchDifficulty || matchTools || matchSteps;
3949 });
3950 }
3951 async getTroubleshootingFlows() {
3952 return Array.from(this.troubleshootingFlows.values());
3953 }
3954 async getTroubleshootingFlow(id) {
3955 return this.troubleshootingFlows.get(id);
3956 }
3957 async createTroubleshootingFlow(flow) {
3958 const id = `flow-${Date.now()}`;
3959 const newFlow = {
3960 id,
3961 type: flow.type,
3962 title: flow.title,
3963 description: flow.description,
3964 steps: flow.steps
3965 };
3966 this.troubleshootingFlows.set(id, newFlow);
3967 return newFlow;
3968 }
3969 async getDeviceComponents(deviceType) {
3970 let list = Array.from(this.deviceComponents.values());
3971 if (deviceType) {
3972 list = list.filter((c) => c.deviceType === deviceType);
3973 }
3974 return list;
3975 }
3976 async getDeviceComponent(id) {
3977 return this.deviceComponents.get(id);
3978 }
3979 async createDeviceComponent(component) {
3980 const id = `comp-${Date.now()}`;
3981 const newComp = {
3982 id,
3983 name: component.name,
3984 description: component.description,
3985 deviceType: component.deviceType,
3986 category: component.category,
3987 safetyNotes: component.safetyNotes
3988 };
3989 this.deviceComponents.set(id, newComp);
3990 return newComp;
3991 }
3992 async getDeviceBrands(deviceType) {
3993 let list = Array.from(this.deviceBrands.values());
3994 if (deviceType) {
3995 list = list.filter((b) => b.deviceType === deviceType);
3996 }
3997 return list.sort((a, b) => (b.popularity || 0) - (a.popularity || 0));
3998 }
3999 async getDeviceModels(brandId, deviceType) {
4000 let list = Array.from(this.deviceModels.values());
4001 if (brandId) {
4002 list = list.filter((m) => m.brandId === brandId);
4003 }
4004 return list.sort((a, b) => (b.year || 0) - (a.year || 0));
4005 }
4006 async getDeviceModel(id) {
4007 return this.deviceModels.get(id);
4008 }
4009 async getModelsByBrand(brandId) {
4010 return Array.from(this.deviceModels.values()).filter((m) => m.brandId === brandId).sort((a, b) => (b.year || 0) - (a.year || 0));
4011 }
4012 async searchDeviceModels(query, deviceType) {
4013 const q = query.trim().toLowerCase();
4014 let list = Array.from(this.deviceModels.values());
4015 if (deviceType) {
4016 const matchingBrandIds = new Set(
4017 Array.from(this.deviceBrands.values()).filter((b) => b.deviceType === deviceType).map((b) => b.id)
4018 );
4019 list = list.filter((m) => matchingBrandIds.has(m.brandId));
4020 }
4021 if (!q) return list;
4022 return list.filter((m) => {
4023 const matchName = m.name.toLowerCase().includes(q);
4024 const matchSeries = m.series ? m.series.toLowerCase().includes(q) : false;
4025 const matchYear = m.year ? m.year.toString().includes(q) : false;
4026 const matchSpecs = m.specifications ? JSON.stringify(m.specifications).toLowerCase().includes(q) : false;
4027 const matchIssues = m.commonIssues ? JSON.stringify(m.commonIssues).toLowerCase().includes(q) : false;
4028 return matchName || matchSeries || matchYear || matchSpecs || matchIssues;
4029 });
4030 }
4031 async getCompatibleGuides(modelId) {
4032 const matchingCompats = Array.from(this.guideCompatibility.values()).filter(
4033 (c) => c.modelId === modelId && c.compatibility === "compatible"
4034 );
4035 const guideIds = new Set(matchingCompats.map((c) => c.guideId));
4036 return Array.from(this.repairGuides.values()).filter((g) => guideIds.has(g.id));
4037 }
4038 async getModelCompatibility(guideId) {
4039 const matchingCompats = Array.from(this.guideCompatibility.values()).filter(
4040 (c) => c.guideId === guideId
4041 );
4042 const modelIds = new Set(matchingCompats.map((c) => c.modelId));
4043 return Array.from(this.deviceModels.values()).filter((m) => modelIds.has(m.id));
4044 }
4045 async createUserGuide(guide) {
4046 return this.createRepairGuide(guide);
4047 }
4048 };
4049 var storage = db ? new DatabaseStorage() : new MemStorage();
4050
4051 // shared/technical-manuals.ts
4052 var TECHNICAL_MANUALS = [
4053 // 1. HARDWARE MANUAL 1: Universal Laptop Teardown & Torque Spec
4054 {
4055 id: "man-hw-01",
4056 category: "hardware",
4057 title: "Universal Laptop Teardown & Screw Torque Specification Manual",
4058 code: "DOC-HW-TEARDOWN-2026",
4059 fileSize: "3.4 MB PDF",
4060 pages: 42,
4061 author: "JCR Bench Engineering Group",
4062 lastUpdated: "2026 Revision 4.2",
4063 summary: "Standard chassis screw torque limits, eDP ribbon connector zero-insertion-force (ZIF) latch protocols, and magnesium frame unibody separation techniques.",
4064 keyTopics: [
4065 "Thread engagement limits for M2/M2.5 chassis standoffs",
4066 "eDP 30-pin and 40-pin ribbon cable pinout safety",
4067 "Trackpad grounding tape and haptic sensor calibration",
4068 "Antenna routing channels and RF isolation shields"
4069 ],
4070 safetyDirectives: [
4071 "Always disconnect battery power harness before lifting motherboard",
4072 "Maintain grounded ESD wrist strap under 1 megohm resistance",
4073 "Never reuse stripped Torx screws on hinge anchors"
4074 ],
4075 recommendedTools: ["Torx T4/T5/T6", "Phillips #00", "Plastic Spudger Kit", "Torque Screwdriver (0.2-0.5 Nm)"],
4076 fastenerTorqueTable: [
4077 { location: "Bottom Cover Perimeter (Magnesium / Aluminum)", screwType: "Torx T5", size: "M2.0 x 3.5mm", torque: "0.20 - 0.25 Nm", threadLock: "Blue Loctite 242 (Low)" },
4078 { location: "Display Hinge Anchor Brackets into Palmrest Standoffs", screwType: "Phillips #00", size: "M2.5 x 5.0mm", torque: "0.45 - 0.50 Nm", threadLock: "Pre-applied Nylon patch" },
4079 { location: "CPU/GPU Heatsink Spring-Loaded Captive Screws (X-Pattern)", screwType: "Phillips #00", size: "M2.0 x 3.0mm Captive", torque: "0.25 Nm (Stop at thread bottom)", threadLock: "None" },
4080 { location: "NVMe M.2 2280 Standoff Retainer", screwType: "Phillips #0", size: "M2.0 x 2.5mm Flat Head", torque: "0.15 Nm", threadLock: "None" },
4081 { location: "Internal Battery Perimeter Screws", screwType: "Phillips #00", size: "M2.0 x 4.0mm Waist", torque: "0.18 - 0.20 Nm", threadLock: "None" },
4082 { location: "Motherboard Logic Board Retaining Screws", screwType: "Phillips #00", size: "M2.0 x 3.0mm Silver", torque: "0.20 Nm", threadLock: "None" }
4083 ],
4084 voltageRails: [
4085 { rail: "+19V_DCIN / +20V_USB_PD", voltage: "19.5V - 20.0V", tolerance: "\xB15%", location: "DC-In Jack / Dual Input MOSFETs", normalImpedance: "> 100 k\u03A9", description: "Primary unregulated DC supply directly after power brick/USB-C negotiation." },
4086 { rail: "+3.3V_ALW (Always-On)", voltage: "3.32V", tolerance: "\xB12%", location: "Coil PL301 near TPS51285", normalImpedance: "> 15 k\u03A9", description: "Powers Super I/O EC controller, power button circuit, and BIOS flash chip." },
4087 { rail: "+5.0V_ALW (Always-On)", voltage: "5.05V", tolerance: "\xB12%", location: "Coil PL302", normalImpedance: "> 20 k\u03A9", description: "Powers USB 5V VBUS switches and audio codec standby circuits." },
4088 { rail: "+1.8V_PRIM / +1.8V_AUX", voltage: "1.80V", tolerance: "\xB13%", location: "Coil PL501 near PCH", normalImpedance: "> 800 \u03A9", description: "Low-voltage system I/O, SPI BIOS ROM buffer, and PCH clock rails." }
4089 ],
4090 chapters: [
4091 {
4092 id: "ch-1",
4093 chapterNumber: 1,
4094 title: "Chassis Fastener Management & Torque Standards",
4095 subtitle: "Preventing stripped threads and stripped plastic boss standoffs",
4096 paragraphs: [
4097 "Modern ultrabooks utilize CNC-milled aluminum or injection-molded magnesium alloy shells with pressed-in brass knurled inserts. Exceeding 0.35 Nm of torque on M2.0 chassis screws will instantly fracture the polycarbonate boss surrounding the brass insert.",
4098 "Always organize fasteners using a magnetized magnetic project grid partitioned into A1-D4 quadrants matching the perimeter layout of the underside."
4099 ],
4100 steps: [
4101 { stepLabel: "1.1", action: "Perimeter Loosening", details: "Loosen all perimeter fasteners in an outside-in counterclockwise sequence before fully removing any individual screw to equalize internal chassis clip tension." },
4102 { stepLabel: "1.2", action: "Prying Tool Engagement", details: "Insert a POM plastic pry blade at the rear vent seam. Never pry from the front audio jack or thin speaker grille openings." }
4103 ]
4104 },
4105 {
4106 id: "ch-2",
4107 chapterNumber: 2,
4108 title: "ZIF and eDP Micro-Connector Handling",
4109 subtitle: "Zero-Insertion-Force ribbon latches and high-speed display flex cables",
4110 paragraphs: [
4111 "Zero-Insertion-Force (ZIF) connectors utilize a pivoting plastic locking lever. Never yank the ribbon cable while the actuator flap is in the locked down position.",
4112 "eDP 40-pin connectors carry both 3.3V logic signaling and high-voltage 19V backlight power (BL_PWR). Pulling the connector at an angle can cause the 19V pin to bridge to an adjacent 3.3V data line, immediately blowing the SOC GPU display controller."
4113 ]
4114 }
4115 ]
4116 },
4117 // 2. HARDWARE MANUAL 2: Motherboard Power Delivery & VRM
4118 {
4119 id: "man-hw-02",
4120 category: "hardware",
4121 title: "Motherboard Power Delivery & DC-In VRM Diagnostic Schematic",
4122 code: "SCHEM-HW-PWR-VRM",
4123 fileSize: "4.8 MB PDF",
4124 pages: 28,
4125 author: "JCR Micro-soldering Team",
4126 lastUpdated: "2026 Revision 2.0",
4127 summary: "Detailed 19V / 20V USB-C Power Delivery handshake verification, 3.3V/5V always-on buck converter testing, and MOSFET short detection.",
4128 keyTopics: [
4129 "USB-C Power Delivery CC1/CC2 communication triggers",
4130 "High-side and low-side switching MOSFET gate measurements",
4131 "Thermal camera hot-spot analysis for shorted SMD capacitors",
4132 "RTC battery discharge circuits and CMOS reset sequences"
4133 ],
4134 safetyDirectives: [
4135 "Use current-limited DC bench power supply when injecting 1V into shorted rails",
4136 "Do not bypass thermal fuses or PPTC resettable fuses"
4137 ],
4138 recommendedTools: ["Digital Multimeter (True RMS)", "DC Bench Power Supply", "Thermal Camera", "Hot Air Rework Station"],
4139 voltageRails: [
4140 { rail: "+19V_DCIN / +20V_USB_PD", voltage: "19.5V - 20.0V", tolerance: "\xB15%", location: "DC-In Jack / Dual Input MOSFETs", normalImpedance: "> 100 k\u03A9", description: "Primary unregulated DC supply directly after power brick/USB-C negotiation." },
4141 { rail: "+3.3V_ALW (Always-On)", voltage: "3.32V", tolerance: "\xB12%", location: "Coil PL301 near TPS51285", normalImpedance: "> 15 k\u03A9", description: "Powers Super I/O EC controller, power button circuit, and BIOS flash chip." },
4142 { rail: "+5.0V_ALW (Always-On)", voltage: "5.05V", tolerance: "\xB12%", location: "Coil PL302", normalImpedance: "> 20 k\u03A9", description: "Powers USB 5V VBUS switches and audio codec standby circuits." },
4143 { rail: "+1.05V_VCCST / VCCSA", voltage: "1.05V", tolerance: "\xB12%", location: "Coil PL701 near CPU Socket", normalImpedance: "15 - 45 \u03A9", description: "System Agent and sustained CPU boot sequence rail." },
4144 { rail: "+VCORE (CPU Core)", voltage: "0.75V - 1.35V Dynamic", tolerance: "\xB11.5%", location: "Multi-phase inductors surrounding CPU", normalImpedance: "1.2 - 8.5 \u03A9 (Low normal)", description: "Dynamic VCORE supplied by PWM controller via high-speed DrMOS power stages." },
4145 { rail: "+V_GFX (Integrated GPU)", voltage: "0.80V - 1.15V Dynamic", tolerance: "\xB12%", location: "PL901 / PL902", normalImpedance: "3.0 - 12.0 \u03A9", description: "Supplies integrated display rendering core." },
4146 { rail: "+1.2V / +1.1V DDR (RAM)", voltage: "1.10V (DDR5) / 1.20V (DDR4)", tolerance: "\xB12%", location: "Coil PL401 near SO-DIMM", normalImpedance: "80 - 250 \u03A9", description: "Main memory module supply rail." }
4147 ],
4148 chapters: [
4149 {
4150 id: "vrm-1",
4151 chapterNumber: 1,
4152 title: "Power-On Sequence & S0/S3/S5 State Transitions",
4153 subtitle: "Tracing standby rails from DC plug insertion to CPU_PWRGD",
4154 paragraphs: [
4155 "When DC power is connected, the Embedded Controller (EC) boots first from +3.3V_ALW. It verifies the AC_PRESENT signal and waits for the power button pulse (NBSWON#) to drop low for at least 150ms.",
4156 "Upon button release, EC asserts PM_SLP_S5# and PM_SLP_S3# to enable main VRM converters in sequential order: +1.8V -> DDR -> VCCSA -> VCORE."
4157 ]
4158 }
4159 ]
4160 },
4161 // 3. SOFTWARE MANUAL 1: BSOD & Kernel Minidump Manual
4162 {
4163 id: "man-sw-01",
4164 category: "software",
4165 title: "Windows Kernel Minidump & BSOD Stop-Code Resolution Manual",
4166 code: "MAN-SW-BSOD-WIN11",
4167 fileSize: "2.8 MB PDF",
4168 pages: 36,
4169 author: "JCR OS Systems Architecture",
4170 lastUpdated: "2026 Revision 3.1",
4171 summary: "Systematic resolution for WHEA_UNCORRECTABLE_ERROR, CRITICAL_PROCESS_DIED, IRQL_NOT_LESS_OR_EQUAL, and DPC_WATCHDOG_VIOLATION.",
4172 keyTopics: [
4173 "WinDbg Preview symbol path setup and '!analyze -v' stack triage",
4174 "PCIe AER (Advanced Error Reporting) WHEA bus crash diagnosis",
4175 "Kernel memory dump conversion and pagefile corruption fix",
4176 "DISM /RestoreHealth and SFC /scannow CBS.log triage"
4177 ],
4178 safetyDirectives: [
4179 "Always backup BitLocker recovery keys prior to BCD and EFI partition repairs",
4180 "Never disable driver signature verification in production environments"
4181 ],
4182 recommendedTools: ["WinDbg Preview", "BluescreenView", "Driver Verifier (verifier.exe)", "DISM / SFC CLI"],
4183 chapters: [
4184 {
4185 id: "bsod-1",
4186 chapterNumber: 1,
4187 title: "WinDbg Kernel Minidump Triage Protocol",
4188 subtitle: "Configuring Microsoft Symbol Server and deciphering exception codes",
4189 paragraphs: [
4190 "Copy minidump files from C:\\Windows\\Minidump to a local scratch folder. Open WinDbg as Administrator and execute '!analyze -v'. Look for FAILURE_BUCKET_ID and MODULE_NAME.",
4191 "If the offending module is ntoskrnl.exe or hal.dll, examine the Arg1 memory pointer: 0x00000000 indicates a null pointer dereference, while 0xFFFFF80... indicates a kernel driver address space crash."
4192 ]
4193 }
4194 ]
4195 },
4196 // 4. SOFTWARE MANUAL 2: UEFI Firmware Recovery Manual
4197 {
4198 id: "man-sw-02",
4199 category: "software",
4200 title: "Blind UEFI/BIOS Crisis Recovery & SPI Flashing Guide",
4201 code: "MAN-SW-UEFI-CRISIS",
4202 fileSize: "3.1 MB PDF",
4203 pages: 24,
4204 author: "JCR Firmware Security Lab",
4205 lastUpdated: "2026 Revision 2.5",
4206 summary: "Crisis key combinations (Fn+R, Win+B, Fn+Esc), FAT32 USB crisis file naming conventions, and external CH341A 3.3V/1.8V SPI clip programming.",
4207 keyTopics: [
4208 "Dell / HP / Lenovo blind USB flash rescue trigger combinations",
4209 "Extracting HDR/CAP/ROM images from OEM executable installers",
4210 "CH341A SPI hardware flashing with NeoProgrammer / Flashrom",
4211 "Clearing Intel ME (Management Engine) region for clean PCH initialization"
4212 ],
4213 safetyDirectives: [
4214 "Ensure CH341A programmer jumper is set to 3.3V or 1.8V (never supply 5V to SPI ROM)",
4215 "Always take 2 identical SPI dumps and MD5 hash verify before writing"
4216 ],
4217 recommendedTools: ["CH341A SPI Programmer", "SOIC8 Test Clip", "NeoProgrammer 2.2", "FAT32 8GB USB Flash Drive"],
4218 chapters: [
4219 {
4220 id: "uefi-1",
4221 chapterNumber: 1,
4222 title: "OEM Blind Crisis Flash Triggers",
4223 subtitle: "Key combinations to force boot-block crisis mode",
4224 paragraphs: [
4225 "HP: Power OFF -> Hold Win + B (or Win + V) -> Hold Power for 3 seconds -> Release Power but keep Win + B held for 15 seconds.",
4226 "Dell: Unplug AC -> Hold Ctrl + Esc -> Plug in AC -> Release keys when power LED blinks 3 amber 3 white.",
4227 "Lenovo ThinkPad: Unplug AC and Battery -> Hold Fn + R -> Plug in AC -> Press Power once."
4228 ]
4229 }
4230 ]
4231 },
4232 // 5. CLEANING MANUAL 1: Cleanroom Laptop Decontamination
4233 {
4234 id: "man-cl-01",
4235 category: "cleaning",
4236 title: "Cleanroom Laptop Decontamination & Ultrasonic Board Cleaning Protocol",
4237 code: "SOP-CL-CLEAN-2026",
4238 fileSize: "2.1 MB PDF",
4239 pages: 18,
4240 author: "JCR Environmental & Cleanroom Ops",
4241 lastUpdated: "2026 Revision 1.9",
4242 summary: "Isolating liquid ingress corrosion, ultrasonic bath temperature / chemistry parameters, and 99.9% anhydrous isopropyl alcohol dehydration.",
4243 keyTopics: [
4244 "Electrochemical migration (dendrite growth) under BGA balls",
4245 "Ultrasonic tank frequency (40kHz vs 80kHz) and Branson EC chemistry",
4246 "Baking board in convection oven at 65\xB0C for 4 hours post-wash",
4247 "Replacing corroded 0402 SMD passives and tinning oxidized pads"
4248 ],
4249 safetyDirectives: [
4250 "Never immerse microphones, speakers, cameras, or touchpad click mechanisms in ultrasonic bath",
4251 "Operate isopropyl alcohol baths in a well-ventilated fume extraction enclosure"
4252 ],
4253 recommendedTools: ["Digital Heated Ultrasonic Cleaner", "99.9% Isopropyl Alcohol", "Anti-static Soft ESD Brushes", "PCB Preheater / Drying Oven"],
4254 chapters: [
4255 {
4256 id: "clean-1",
4257 chapterNumber: 1,
4258 title: "Liquid Damage Triage & Ultrasonic Cycle",
4259 subtitle: "Step-by-step chemical neutralization of sugar, salt, and acidic corrosion",
4260 paragraphs: [
4261 "Liquid spills cause galvanic corrosion when power is applied. First, photograph all component markings.",
4262 "Submerge stripped motherboard in ultrasonic bath containing 90% distilled water + 10% Branson EC cleaner at 50\xB0C for 8 minutes. Rinse with pure distilled water, then flush with 99.9% IPA to absorb moisture, and bake at 65\xB0C for 4 hours."
4263 ]
4264 }
4265 ]
4266 },
4267 // 6. CLEANING MANUAL 2: Thermal Interface & Vapor Chamber
4268 {
4269 id: "man-cl-02",
4270 category: "cleaning",
4271 title: "Thermal Interface Material & Phase-Change (PTM7950) Application Standard",
4272 code: "STD-CL-THERMAL-2026",
4273 fileSize: "2.6 MB PDF",
4274 pages: 22,
4275 author: "JCR Thermal Engineering Lab",
4276 lastUpdated: "2026 Revision 3.0",
4277 summary: "Surface flatness measurement, Honeywell PTM7950 phase-change pad application, thermal putty (Upsiren U6 Pro) gap fill, and heatsink mounting tension.",
4278 keyTopics: [
4279 "Comparing standard paste vs Liquid Metal vs PTM7950 phase-change pad",
4280 "Preventing pump-out effect on direct-die bare silicon laptop CPUs",
4281 "Thermal putty viscosity and compression for VRAM / VRM chokes",
4282 "Delta T thermal dissipation benchmarks under Prime95 + FurMark"
4283 ],
4284 safetyDirectives: [
4285 "If using Liquid Metal (Galinstan), apply Conformal Coating (MG Chemicals 422C) and high-density foam barrier around SMD capacitors",
4286 "Never scrape bare copper coldplates with steel razor blades"
4287 ],
4288 recommendedTools: ["Honeywell PTM7950 (0.25mm)", "Upsiren U6 Pro Thermal Putty", "ArctiClean 1 & 2 Emulsifier", "Torque Driver (0.25 Nm)"],
4289 chapters: [
4290 {
4291 id: "therm-1",
4292 chapterNumber: 1,
4293 title: "PTM7950 Application Protocol",
4294 subtitle: "Eliminating pump-out effect on direct-die gaming laptops",
4295 paragraphs: [
4296 "Honeywell PTM7950 is solid below 45\xB0C and transitions into a viscous gel at operating temperatures, filling micro-voids without pumping out over thermal cycles.",
4297 "Chill the PTM7950 sheet in a refrigerator for 5 minutes before cutting to silicon die dimensions. Peel back one protective plastic film, apply to silicon, rub lightly with finger, then peel top film before mounting heatsink."
4298 ]
4299 }
4300 ]
4301 },
4302 // 7. UPGRADES MANUAL 1: NVMe & PCIe Gen 5 Storage Retrofit
4303 {
4304 id: "man-up-01",
4305 category: "upgrades",
4306 title: "High-Performance NVMe PCIe 4.0/5.0 SSD Retrofitting & Migration Guide",
4307 code: "GDE-UP-NVME-2026",
4308 fileSize: "3.7 MB PDF",
4309 pages: 30,
4310 author: "JCR Storage Solutions Group",
4311 lastUpdated: "2026 Revision 2.8",
4312 summary: "Single-sided vs double-sided 2280 compatibility, thermal pad thickness matching, cloning boot drives with Macrium / Clonezilla, and 4K sector alignment.",
4313 keyTopics: [
4314 "Checking M.2 slot lane bifurcation (x2 vs x4 PCIe lanes)",
4315 "Bare-metal cloning sector-by-sector vs intelligent file copy",
4316 "Fixing INACCESSIBLE_BOOT_DEVICE post-NVMe migration",
4317 "Enabling TRIM and Host Memory Buffer (HMB) in Windows & Linux"
4318 ],
4319 safetyDirectives: [
4320 "Ensure laptop battery is disconnected prior to inserting NVMe into M.2 key slot",
4321 "Do not compress thick 1.5mm thermal pads onto thin 0.5mm clearance laptops"
4322 ],
4323 recommendedTools: ["Macrium Reflect / Clonezilla Bootable USB", "M.2 NVMe USB-C Enclosure", "Kaisi Thermal Pad Assortment (0.5mm - 1.5mm)"],
4324 chapters: [
4325 {
4326 id: "nvme-1",
4327 chapterNumber: 1,
4328 title: "Drive Migration & Sector Realignment",
4329 subtitle: "Zero-downtime OS migration without re-installing Windows",
4330 paragraphs: [
4331 "Connect replacement NVMe SSD via USB 3.2 Gen 2 enclosure. Launch Macrium Reflect, select source OS drive, and click 'Clone this disk'.",
4332 "Ensure partitions are proportionally resized to occupy full replacement capacity. Ensure EFI System Partition (ESP) remains at 100-260MB and 4K sector alignment is checked."
4333 ]
4334 }
4335 ]
4336 },
4337 // 8. UPGRADES MANUAL 2: High-Density DDR5 & SO-DIMM Architecture
4338 {
4339 id: "man-up-02",
4340 category: "upgrades",
4341 title: "High-Density DDR5/LPDDR5 Memory Architecture & Retrofit Guide",
4342 code: "GDE-UP-RAM-DDR5",
4343 fileSize: "2.4 MB PDF",
4344 pages: 20,
4345 author: "JCR Memory Testing Laboratory",
4346 lastUpdated: "2026 Revision 1.5",
4347 summary: "1Rx8 vs 1Rx16 sub-channel ranks, on-die ECC functionality, SPD profile flashing, and memory training POST delays on Intel 13th/14th Gen & AMD 7000/8000.",
4348 keyTopics: [
4349 "Understanding DDR5 dual 32-bit subchannels per channel",
4350 "Recognizing normal 2-3 minute first-boot Memory Training behavior",
4351 "SO-DIMM latch tension and copper EMI shield re-installation",
4352 "MemTest86 4-pass zero-error verification standard"
4353 ],
4354 safetyDirectives: [
4355 "Allow laptop to sit with power disconnected for 60 seconds to drain PMIC capacitors on DDR5 modules",
4356 "Never touch gold fingers directly to avoid skin oil oxidation"
4357 ],
4358 recommendedTools: ["MemTest86 Pro USB", "Plastic Pry Pick", "Kapton Tape", "Anti-Static Wrist Strap"],
4359 chapters: [
4360 {
4361 id: "ram-1",
4362 chapterNumber: 1,
4363 title: "DDR5 Memory Training & First Boot Protocol",
4364 subtitle: "Why the screen stays black for 120 seconds after installing new RAM",
4365 paragraphs: [
4366 "DDR5 features an onboard Power Management IC (PMIC) and executes internal signal calibration (Memory Training) on first power-on with new DIMMs.",
4367 "The power LED may pulse for up to 180 seconds while the BIOS tests sub-timings. Do NOT power cycle the machine during this phase, or you risk corrupting the BIOS NVRAM."
4368 ]
4369 }
4370 ]
4371 }
4372 ];
4373 function getManualById(id) {
4374 return TECHNICAL_MANUALS.find((m) => m.id === id);
4375 }
4376 function getManualsByCategory(category) {
4377 return TECHNICAL_MANUALS.filter((m) => m.category === category);
4378 }
4379
4380 // server/middleware/adminAuth.ts
4381 var requireAdmin = async (req, res, next) => {
4382 const user = req.user;
4383 if (!user || !user.id) {
4384 return res.status(401).json({ message: "Unauthorized: Admin access requires authentication" });
4385 }
4386 try {
4387 const dbUser = await storage.getUser(user.id);
4388 if (!dbUser || dbUser.role !== "admin") {
4389 return res.status(403).json({ message: "Admin access required" });
4390 }
4391 req.adminUser = dbUser;
4392 next();
4393 } catch (error) {
4394 console.error("Error checking admin status:", error);
4395 res.status(500).json({ message: "Failed to verify admin status" });
4396 }
4397 };
4398
4399 // server/auth.ts
4400 var import_passport = __toESM(require("passport"), 1);
4401 var import_passport_local = require("passport-local");
4402 var import_express_session = __toESM(require("express-session"), 1);
4403 var import_bcrypt2 = __toESM(require("bcrypt"), 1);
4404 var isAuthenticated = (req, res, next) => {
4405 if (req.isAuthenticated()) return next();
4406 res.status(401).json({ message: "Unauthorized" });
4407 };
4408 function setupAuth(app2) {
4409 app2.set("trust proxy", 1);
4410 const sessionSettings = {
4411 secret: process.env.SESSION_SECRET || "jcrguru-secret-key-2025",
4412 resave: false,
4413 saveUninitialized: false,
4414 cookie: {
4415 secure: "auto",
4416 sameSite: "lax",
4417 httpOnly: true,
4418 maxAge: 30 * 24 * 60 * 60 * 1e3
4419 // 30 days
4420 }
4421 };
4422 app2.use((0, import_express_session.default)(sessionSettings));
4423 app2.use(import_passport.default.initialize());
4424 app2.use(import_passport.default.session());
4425 import_passport.default.use(
4426 new import_passport_local.Strategy({ usernameField: "email" }, async (rawEmail, password, done) => {
4427 try {
4428 const email = (rawEmail || "").trim().toLowerCase();
4429 if (!email || !password) {
4430 return done(null, false, { message: "Email and password are required." });
4431 }
4432 const user = await storage.getUserByEmail(email);
4433 if (!user) {
4434 return done(null, false, { message: "No account found for this email. Please register or use Quick Demo Sign-In." });
4435 }
4436 const isMatch = await import_bcrypt2.default.compare(password, user.password);
4437 if (!isMatch) {
4438 return done(null, false, { message: "Incorrect password. Please verify your credentials." });
4439 }
4440 return done(null, user);
4441 } catch (err) {
4442 return done(err);
4443 }
4444 })
4445 );
4446 import_passport.default.serializeUser((user, done) => {
4447 done(null, user.id);
4448 });
4449 import_passport.default.deserializeUser(async (id, done) => {
4450 try {
4451 const user = await storage.getUser(id);
4452 done(null, user || null);
4453 } catch (err) {
4454 done(err);
4455 }
4456 });
4457 app2.post("/api/register", async (req, res, next) => {
4458 try {
4459 const { email: rawEmail, password, firstName, lastName, role } = req.body;
4460 const email = (rawEmail || "").trim().toLowerCase();
4461 if (!email || !password) {
4462 return res.status(400).json({ message: "Email and password are required." });
4463 }
4464 const existingUser = await storage.getUserByEmail(email);
4465 if (existingUser) {
4466 return res.status(400).json({ message: "An account with this email already exists. Please sign in." });
4467 }
4468 const hashedPassword = await import_bcrypt2.default.hash(password, 10);
4469 const user = await storage.createUser({
4470 email,
4471 password: hashedPassword,
4472 firstName: firstName?.trim() || "Technician",
4473 lastName: lastName?.trim() || "",
4474 role: role || "user"
4475 });
4476 req.login(user, (err) => {
4477 if (err) return next(err);
4478 res.status(201).json(user);
4479 });
4480 } catch (err) {
4481 next(err);
4482 }
4483 });
4484 app2.post("/api/login", (req, res, next) => {
4485 import_passport.default.authenticate("local", (err, user, info) => {
4486 if (err) return next(err);
4487 if (!user) {
4488 return res.status(401).json({
4489 message: info?.message || "Invalid email or password. Please verify your credentials."
4490 });
4491 }
4492 req.login(user, (loginErr) => {
4493 if (loginErr) return next(loginErr);
4494 return res.json(user);
4495 });
4496 })(req, res, next);
4497 });
4498 app2.post("/api/quick-login", async (req, res, next) => {
4499 try {
4500 const { email: rawEmail } = req.body;
4501 const email = (rawEmail || "Jhustle44@gmail.com").trim().toLowerCase();
4502 let user = await storage.getUserByEmail(email);
4503 if (!user) {
4504 const defaultHash = await import_bcrypt2.default.hash("password123", 10);
4505 user = await storage.createUser({
4506 email,
4507 password: defaultHash,
4508 firstName: email.includes("jhustle") ? "Master" : "Technician",
4509 lastName: "Pro",
4510 role: email.includes("admin") || email.includes("jhustle") ? "admin" : "technician"
4511 });
4512 }
4513 req.login(user, (err) => {
4514 if (err) return next(err);
4515 res.json(user);
4516 });
4517 } catch (err) {
4518 next(err);
4519 }
4520 });
4521 app2.post("/api/logout", (req, res, next) => {
4522 req.logout((err) => {
4523 if (err) return next(err);
4524 res.sendStatus(200);
4525 });
4526 });
4527 app2.get("/api/user", (req, res) => {
4528 if (!req.isAuthenticated() || !req.user) {
4529 return res.status(401).json({ message: "Not authenticated" });
4530 }
4531 res.json(req.user);
4532 });
4533 }
4534
4535 // server/middleware/upload.ts
4536 var import_multer = __toESM(require("multer"), 1);
4537 var import_path = __toESM(require("path"), 1);
4538 var import_fs = __toESM(require("fs"), 1);
4539 var uploadDir = "uploads/profiles";
4540 if (!import_fs.default.existsSync(uploadDir)) {
4541 import_fs.default.mkdirSync(uploadDir, { recursive: true });
4542 }
4543 var storage2 = import_multer.default.diskStorage({
4544 destination: function(_req, _file, cb) {
4545 cb(null, uploadDir);
4546 },
4547 filename: function(_req, file, cb) {
4548 const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9);
4549 cb(null, uniqueSuffix + import_path.default.extname(file.originalname));
4550 }
4551 });
4552 var upload = (0, import_multer.default)({
4553 storage: storage2,
4554 limits: {
4555 fileSize: 5 * 1024 * 1024
4556 // 5MB limit
4557 },
4558 fileFilter: (_req, file, cb) => {
4559 if (file.mimetype.startsWith("image/")) {
4560 cb(null, true);
4561 } else {
4562 cb(new Error("Only image files are allowed!"));
4563 }
4564 }
4565 });
4566
4567 // server/ai-diagnostics.ts
4568 var import_genai = require("@google/genai");
4569 var genAIClient = null;
4570 function getGenAI() {
4571 if (!process.env.GEMINI_API_KEY) {
4572 return null;
4573 }
4574 if (!genAIClient) {
4575 genAIClient = new import_genai.GoogleGenAI({
4576 apiKey: process.env.GEMINI_API_KEY,
4577 httpOptions: {
4578 headers: {
4579 "User-Agent": "aistudio-build"
4580 }
4581 }
4582 });
4583 }
4584 return genAIClient;
4585 }
4586 async function callGeminiWithFallback(fn) {
4587 const models = ["gemini-3.1-flash-lite", "gemini-3.7-flash", "gemini-flash-latest"];
4588 for (const model of models) {
4589 try {
4590 const res = await fn(model);
4591 if (res) return res;
4592 } catch (err) {
4593 continue;
4594 }
4595 }
4596 return null;
4597 }
4598 var SYSTEM_INSTRUCTION = `You are JCR Guide Pro's expert Hardware & Computer Diagnostic Specialist.
4599 Your SOLE purpose is to diagnose, troubleshoot, and provide step-by-step resolution paths for computer hardware, laptops, desktops, operating systems (Windows, macOS, Linux), peripherals, thermals, BIOS/UEFI, and electronic repairs.
4600
4601 STRICT SCOPE DIRECTIVE:
4602 You ONLY assist with device diagnostics, computer repair, hardware upgrades, OS recovery, driver/firmware fixes, component testing, and cleaning.
4603 If a user prompt is unrelated to computer/laptop repair or hardware maintenance (such as general conversational queries, creative writing, cooking, gaming lore, non-PC topics), set "isOutOfScope": true, give a polite 1-sentence refusal in "summary", and leave the other lists empty.
4604
4605 For valid computer repair queries, provide a highly technical, precise, and practical diagnostic analysis adhering to industry standard bench repair practices.`;
4606 async function runAIDiagnostics(reqData) {
4607 const ai = getGenAI();
4608 if (!ai) {
4609 return generateFallbackDiagnostics(reqData);
4610 }
4611 const prompt = `Diagnose the following computer/laptop issue:
4612 Device Type: ${reqData.deviceType || "Laptop/Desktop"}
4613 Brand/Model: ${reqData.brand || "Generic"} ${reqData.model || ""}
4614 Operating System: ${reqData.os || "Any"}
4615 Target Category: ${reqData.category || "Any"}
4616 Reported Symptoms / Error Code: ${reqData.symptoms} ${reqData.errorCode ? `(Error code: ${reqData.errorCode})` : ""}`;
4617 const result = await callGeminiWithFallback(async (modelName) => {
4618 const response = await ai.models.generateContent({
4619 model: modelName,
4620 contents: prompt,
4621 config: {
4622 systemInstruction: SYSTEM_INSTRUCTION,
4623 responseMimeType: "application/json",
4624 responseSchema: {
4625 type: import_genai.Type.OBJECT,
4626 properties: {
4627 isOutOfScope: { type: import_genai.Type.BOOLEAN, description: "True if the question is not about computer or electronics repair" },
4628 summary: { type: import_genai.Type.STRING, description: "High-level summary of the diagnostic finding" },
4629 confidence: { type: import_genai.Type.STRING, enum: ["High", "Medium", "Low"], description: "Diagnostic confidence" },
4630 recommendedCategory: { type: import_genai.Type.STRING, enum: ["hardware", "software", "cleaning", "upgrades"], description: "Primary repair category" },
4631 probableCauses: {
4632 type: import_genai.Type.ARRAY,
4633 items: {
4634 type: import_genai.Type.OBJECT,
4635 properties: {
4636 cause: { type: import_genai.Type.STRING },
4637 likelihood: { type: import_genai.Type.STRING, enum: ["High", "Medium", "Low"] },
4638 explanation: { type: import_genai.Type.STRING }
4639 },
4640 required: ["cause", "likelihood", "explanation"]
4641 }
4642 },
4643 stepByStepPlan: {
4644 type: import_genai.Type.ARRAY,
4645 items: {
4646 type: import_genai.Type.OBJECT,
4647 properties: {
4648 stepNumber: { type: import_genai.Type.INTEGER },
4649 title: { type: import_genai.Type.STRING },
4650 action: { type: import_genai.Type.STRING },
4651 expectedOutcome: { type: import_genai.Type.STRING }
4652 },
4653 required: ["stepNumber", "title", "action", "expectedOutcome"]
4654 }
4655 },
4656 toolsAndSoftware: {
4657 type: import_genai.Type.ARRAY,
4658 items: { type: import_genai.Type.STRING },
4659 description: "Diagnostic tools or software like HWiNFO64, MemTest86, DDU, Multimeter, ESD strap"
4660 },
4661 safetyWarnings: {
4662 type: import_genai.Type.ARRAY,
4663 items: { type: import_genai.Type.STRING },
4664 description: "Safety guidelines regarding power isolation, battery handling, and ESD"
4665 },
4666 preventativeTips: {
4667 type: import_genai.Type.ARRAY,
4668 items: { type: import_genai.Type.STRING }
4669 }
4670 },
4671 required: [
4672 "summary",
4673 "confidence",
4674 "recommendedCategory",
4675 "probableCauses",
4676 "stepByStepPlan",
4677 "toolsAndSoftware",
4678 "safetyWarnings",
4679 "preventativeTips"
4680 ]
4681 }
4682 }
4683 });
4684 const parsed = JSON.parse(response.text || "{}");
4685 return parsed;
4686 });
4687 if (result) {
4688 return result;
4689 }
4690 return generateFallbackDiagnostics(reqData);
4691 }
4692 function generateFallbackDiagnostics(reqData) {
4693 const sym = (reqData.symptoms || "").toLowerCase();
4694 const err = (reqData.errorCode || "").toLowerCase();
4695 let category = "hardware";
4696 let summary = `Diagnostic assessment for ${reqData.brand || "Device"} ${reqData.model || ""}`;
4697 let confidence = "High";
4698 const probableCauses = [];
4699 const stepByStepPlan = [];
4700 const toolsAndSoftware = [];
4701 const safetyWarnings = [
4702 "Always disconnect AC adapter and main battery before touching internal motherboard components.",
4703 "Wear an ESD anti-static wrist strap or ground yourself against bare unpainted metal.",
4704 "Never compress or puncture swollen lithium-ion battery pouches."
4705 ];
4706 const preventativeTips = [
4707 "Keep device firmware/BIOS updated from the official vendor support portal.",
4708 "Perform annual dust cleaning and thermal paste refresh to prevent thermal degradation."
4709 ];
4710 if (sym.includes("blue screen") || sym.includes("bsod") || sym.includes("freeze") || sym.includes("crash") || err.includes("dump")) {
4711 category = "software";
4712 summary = "Kernel Stop Code / System Instability detected. Likely caused by conflicting graphics/chipset drivers or RAM memory bit flips.";
4713 probableCauses.push(
4714 { cause: "Outdated or Corrupted Graphics/Chipset Drivers", likelihood: "High", explanation: "Conflicting kernel-mode drivers crashing Windows kernel (ntoskrnl.exe)." },
4715 { cause: "Failing RAM Memory Module", likelihood: "Medium", explanation: "Defective DDR4/DDR5 memory cell failing read/write validation passes." },
4716 { cause: "System File Corruption (SFC/DISM)", likelihood: "Medium", explanation: "Corrupted system DLLs following incomplete Windows updates." }
4717 );
4718 stepByStepPlan.push(
4719 { stepNumber: 1, title: "Boot Safe Mode & Run DDU", action: "Boot into Safe Mode, run Display Driver Uninstaller (DDU) to wipe old GPU drivers, then install latest WHQL driver.", expectedOutcome: "Clean driver installation without legacy hooks." },
4720 { stepNumber: 2, title: "Run DISM & SFC System File Repair", action: "Execute 'DISM /Online /Cleanup-Image /RestoreHealth' followed by 'sfc /scannow' in Administrator Terminal.", expectedOutcome: "System integrity verified and corrupted DLLs replaced." },
4721 { stepNumber: 3, title: "Execute MemTest86 4-Pass Scan", action: "Create bootable USB with PassMark MemTest86 and test RAM for 4 full passes.", expectedOutcome: "Confirm memory subsystem has zero hardware faults." }
4722 );
4723 toolsAndSoftware.push("Display Driver Uninstaller (DDU)", "PassMark MemTest86", "WinDbg Preview", "CrystalDiskInfo");
4724 } else if (sym.includes("heat") || sym.includes("fan") || sym.includes("temp") || sym.includes("loud") || sym.includes("throttle")) {
4725 category = "cleaning";
4726 summary = "Thermal Throttling & Airflow Restriction detected. CPU/GPU package temperatures exceeding safe operating TJMax thresholds.";
4727 probableCauses.push(
4728 { cause: "Dried Thermal Interface Material (TIM)", likelihood: "High", explanation: "Factory silicone paste pumped out or baked, creating micro-voids between die and coldplate." },
4729 { cause: "Clogged Copper Heatsink Radiator Fins", likelihood: "High", explanation: "Felt-like dust wall trapped between blower fan outlet and copper exhaust fins." },
4730 { cause: "Bearing Wear on Centrifugal Fan", likelihood: "Medium", explanation: "Imbalanced impeller blades or dry sleeve bearings causing RPM drop." }
4731 );
4732 stepByStepPlan.push(
4733 { stepNumber: 1, title: "Disassemble Bottom Chassis & Exhaust", action: "Remove bottom cover, disconnect battery, and remove blower fans and heatpipe assembly.", expectedOutcome: "Exhaust radiators and die exposed for inspection." },
4734 { stepNumber: 2, title: "Clean Fins & Strip Old Paste", action: "Use 99% Isopropyl Alcohol and ESD brush to clear radiator fin walls and remove dried paste from copper coldplates.", expectedOutcome: "Mirror-clean bare silicon die." },
4735 { stepNumber: 3, title: "Apply Honeywell PTM7950 & Re-torque", action: "Cut and apply 0.25mm PTM7950 phase change pad. Torque heatsink screws diagonally (1\u21922\u21923\u21924) to 0.25 Nm.", expectedOutcome: "Optimal core-to-heatsink heat transfer under sustained load." }
4736 );
4737 toolsAndSoftware.push("Honeywell PTM7950 / Arctic MX-6", "99% Isopropyl Alcohol", "ESD Bristle Brush", "HWiNFO64");
4738 } else if (sym.includes("power") || sym.includes("dead") || sym.includes("charge") || sym.includes("turn on") || sym.includes("black screen")) {
4739 category = "hardware";
4740 summary = "Power Delivery & Initial POST failure. The board is failing to complete the power sequence or standby rail handoff.";
4741 probableCauses.push(
4742 { cause: "DC-In Stage or Primary Input MOSFET Short", likelihood: "High", explanation: "High-side DC-in MOSFET (PQ101) shorted to ground, triggering power supply over-current protection." },
4743 { cause: "Standby 3.3V/5V Regulator Circuit Fault", likelihood: "Medium", explanation: "Buck regulator coil (PL301/PL302) damaged or missing enabling signal from Super I/O EC." },
4744 { cause: "Stuck Embedded Controller (EC) Register Lock", likelihood: "Medium", explanation: "Transient electrostatic discharge locking the EC power sequencer state machine." }
4745 );
4746 stepByStepPlan.push(
4747 { stepNumber: 1, title: "15-Second Hard RTC/EC Drain", action: "Disconnect charger and battery. Hold power button firmly for 15 seconds to force residual discharge.", expectedOutcome: "Clear stuck EC register states." },
4748 { stepNumber: 2, title: "Measure Primary DC Input (+19V/+20V)", action: "Connect power supply with multimeter. Measure voltage on the drain and source of input MOSFETs.", expectedOutcome: "Verify +19V or +20V USB-PD reaches the main power rail." },
4749 { stepNumber: 3, title: "Check Standby Always-On Coils", action: "Probe coils PL301 (+3.3V_ALW) and PL302 (+5.0V_ALW) with multimeter in DC voltage mode.", expectedOutcome: "Confirm both 3.3V and 5.0V standby rails are stable." }
4750 );
4751 toolsAndSoftware.push("Digital Multimeter (Fluke/Aneng)", "DC Power Bench Supply", "Torx T5 / Phillips #00 Screwdrivers", "Safety Grounding Strap");
4752 } else {
4753 category = "hardware";
4754 summary = `Hardware diagnostic assessment for reported symptom: "${reqData.symptoms}". Follow structured electrical isolation protocol.`;
4755 probableCauses.push(
4756 { cause: "Loose Internal Cable or Connector Latch", likelihood: "Medium", explanation: "Vibration or impact dislodging eDP display, battery, or ribbon connector." },
4757 { cause: "Power Rail Fault or Drained CMOS RTC", likelihood: "Medium", explanation: "RTC clock lockup preventing board POST cycle." },
4758 { cause: "Component Degradation", likelihood: "Low", explanation: "Capacitor leakage or solder fatigue on mainboard power stages." }
4759 );
4760 stepByStepPlan.push(
4761 { stepNumber: 1, title: "Hard Power Cycle & CMOS Drain", action: "Disconnect power cord and battery, hold power button for 30 seconds, then reconnect.", expectedOutcome: "Clear transient RTC register locks." },
4762 { stepNumber: 2, title: "Minimal POST Test", action: "Disconnect non-essential peripherals, Wi-Fi card, and extra storage drives. Test boot with single RAM stick.", expectedOutcome: "Identify if peripheral short is halting POST." },
4763 { stepNumber: 3, title: "Inspect Connectors Under Light", action: "Check motherboard sockets for bent pins, burn marks, or cracked solder joints.", expectedOutcome: "Confirm physical board integrity." }
4764 );
4765 toolsAndSoftware.push("Precision Toolkit", "Digital Multimeter", "Anti-Static Mat & Wrist Strap", "Magnification Loupe");
4766 }
4767 return {
4768 summary,
4769 confidence,
4770 recommendedCategory: category,
4771 probableCauses,
4772 stepByStepPlan,
4773 toolsAndSoftware,
4774 safetyWarnings,
4775 preventativeTips,
4776 isOutOfScope: false
4777 };
4778 }
4779 async function runTechnicalAIChat(reqData) {
4780 const allGuides = await storage.getRepairGuides();
4781 const manuals = TECHNICAL_MANUALS;
4782 const userMessages = reqData.messages.filter((m) => m.role === "user");
4783 const latestUserMsg = userMessages.length > 0 ? userMessages[userMessages.length - 1].content : "";
4784 const queryLower = latestUserMsg.toLowerCase();
4785 const matchingGuides = allGuides.filter((g) => {
4786 const titleMatch = g.title.toLowerCase().includes(queryLower);
4787 const descMatch = g.description.toLowerCase().includes(queryLower);
4788 const words = queryLower.split(/\s+/).filter((w) => w.length > 2);
4789 const multiMatch = words.length > 0 && words.some((w) => g.title.toLowerCase().includes(w));
4790 return titleMatch || descMatch || multiMatch;
4791 }).slice(0, 5);
4792 const matchingManuals = manuals.filter((m) => {
4793 return m.title.toLowerCase().includes(queryLower) || m.summary.toLowerCase().includes(queryLower) || m.keyTopics.some((k) => k.toLowerCase().includes(queryLower)) || reqData.categoryContext && m.category === reqData.categoryContext;
4794 }).slice(0, 3);
4795 const matchingRails = [];
4796 manuals.forEach((m) => {
4797 if (m.voltageRails) {
4798 m.voltageRails.forEach((r) => {
4799 if (queryLower.includes("rail") || queryLower.includes("volt") || queryLower.includes("power") || queryLower.includes("short") || queryLower.includes("multimeter") || queryLower.includes("pl301") || queryLower.includes(r.rail.toLowerCase().replace(/[^a-z0-9]/g, "")) || queryLower.includes("dead") || queryLower.includes("turn on") || queryLower.includes("boot")) {
4800 if (!matchingRails.some((mr) => mr.rail === r.rail)) {
4801 matchingRails.push({
4802 rail: r.rail,
4803 voltage: r.voltage,
4804 location: r.location,
4805 description: r.description
4806 });
4807 }
4808 }
4809 });
4810 }
4811 });
4812 const ai = getGenAI();
4813 if (ai) {
4814 const contextGuides = matchingGuides.map((g) => `- [Guide ID: ${g.id}] "${g.title}" (${g.category}, ${g.difficulty}, ${g.estimatedTime}): ${g.description}`).join("\n");
4815 const contextManuals = matchingManuals.map((m) => `- [Manual ID: ${m.id}] "${m.title}" (${m.code}): ${m.summary}`).join("\n");
4816 const contextRails = matchingRails.slice(0, 4).map((r) => `- ${r.rail}: ${r.voltage} (${r.location}) - ${r.description}`).join("\n");
4817 const systemPrompt = `You are JCR Guide Pro's Technical AI, the lead master computer hardware technician, electronics diagnostician, and board-level repair assistant.
4818 You have direct access to JCR Guide Pro's full database of 624 verified multi-brand repair guides (Apple, Dell, Lenovo, HP, ASUS, Razer, Framework, MSI, Custom PCs) and 8 comprehensive technical manuals.
4819
4820 YOUR CAPABILITIES & PROTOCOLS:
4821 1. Provide precise, actionable technical instructions with exact fastener torque specs (e.g. 0.20 Nm M2.0), screwdriver bit types (Torx T5, Phillips #00), and test procedures.
4822 2. If the user asks about board-level repair, no-power faults, or charging issues, reference exact voltage rails (e.g. +19V_DCIN, +3.3V_ALW on Coil PL301, +5V_ALW, VCCST, VCORE) and multimeter testing sequences.
4823 3. If the user has a software/BSOD issue, provide exact commands (DDU in Safe Mode, DISM, SFC, WinDbg minidump triage, MemTest86).
4824 4. For thermal problems, detail phase-change PTM7950 application and fan fin cleaning.
4825 5. Provide relevant guide references using markdown bolding or brackets like [Guide: "Device Model: Procedure Name"].
4826 6. Keep your tone professional, authoritative, helpful, and concise.
4827
4828 MATCHING KNOWLEDGE BASE FOR THIS QUERY:
4829 Relevant Guides in Database:
4830 ${contextGuides || "Database contains 624 multi-brand hardware guides for Apple, Dell, Lenovo, HP, ASUS, Razer, Framework, and Custom PCs."}
4831
4832 Relevant Technical Manuals:
4833 ${contextManuals || "Technical manuals available: Universal Laptop Teardown, VRM Power Delivery Schematics, BSOD Minidump Manual, UEFI Crisis Flash, Ultrasonic Decontamination, PTM7950 Thermal Standards, NVMe Retrofits, DDR5 Architecture."}
4834
4835 Key Voltage Rails:
4836 ${contextRails || "+19V_DCIN (Input), +3.3V_ALW (EC/Standby), +5.0V_ALW (Peripherals), +VCORE (CPU Core), +1.1V DDR5"}
4837 `;
4838 const contents = reqData.messages.map((m) => ({
4839 role: m.role === "assistant" ? "model" : "user",
4840 parts: [{ text: m.content }]
4841 }));
4842 const reply = await callGeminiWithFallback(async (modelName) => {
4843 const response = await ai.models.generateContent({
4844 model: modelName,
4845 contents,
4846 config: {
4847 systemInstruction: systemPrompt,
4848 temperature: 0.3
4849 }
4850 });
4851 return response.text;
4852 });
4853 if (reply) {
4854 return {
4855 message: reply,
4856 suggestedGuides: matchingGuides.map((g) => ({
4857 id: g.id,
4858 title: g.title,
4859 category: g.category,
4860 difficulty: g.difficulty,
4861 estimatedTime: g.estimatedTime
4862 })),
4863 suggestedManuals: matchingManuals.map((m) => ({
4864 id: m.id,
4865 title: m.title,
4866 code: m.code,
4867 category: m.category
4868 })),
4869 voltageRailsMentioned: matchingRails.slice(0, 4),
4870 quickActions: [
4871 "Check +3.3V / +5V Always-On Rails",
4872 "Open Matching Teardown Guide",
4873 "Run Minidump / BSOD Triage",
4874 "View Fastener Torque Table"
4875 ]
4876 };
4877 }
4878 }
4879 return generateDeterministicChatReply(reqData, matchingGuides, matchingManuals, matchingRails);
4880 }
4881 function generateDeterministicChatReply(reqData, guides, manuals, rails) {
4882 const query = reqData.messages[reqData.messages.length - 1]?.content.toLowerCase() || "";
4883 let message = "";
4884 if (query.includes("power") || query.includes("turn on") || query.includes("dead") || query.includes("rail") || query.includes("charge")) {
4885 message = `### \u26A1 Power Delivery & No-Power Diagnostic Protocol
4886
4887 When troubleshooting a device that will not power on, follow the standard bench sequence:
4888
4889 1. **DC-In & Input Stage Isolation**:
4890 - Check **+19V_DCIN** or **+20V_USB_PD** after the input MOSFETs. If voltage drops below 19V under load, check for a shorted DC jack or cracked ceramic filter capacitor.
4891 2. **Always-On Standby Rails**:
4892 - Verify **+3.3V_ALW** (Coil PL301) and **+5.0V_ALW** (Coil PL302). The Super I/O Embedded Controller (EC) cannot register the power button if +3.3V_ALW is missing.
4893 3. **Power Button Trigger & RTC Reset**:
4894 - Check that the power button signal (\`NBSWON#\`) pulls down from 3.3V to 0V when pressed.
4895 - Perform a 30-second CMOS/RTC hard drain to reset stuck power state machine registers.
4896
4897 I have matched **${guides.length > 0 ? guides.length : "several"} verified guides** and technical schematics from our 624-guide database below:`;
4898 } else if (query.includes("bsod") || query.includes("blue screen") || query.includes("crash") || query.includes("whea") || query.includes("freeze")) {
4899 message = `### \u{1F6D1} Kernel Crash & BSOD Diagnostic Protocol
4900
4901 For Windows stop codes and system freeze triage:
4902
4903 1. **Clean Driver State**: Boot into Windows Safe Mode and run **Display Driver Uninstaller (DDU)** to remove residual GPU driver hooks, then install clean WHQL drivers.
4904 2. **System File Integrity**: Open Administrator Terminal and execute:
4905 \`\`\`bash
4906 DISM /Online /Cleanup-Image /RestoreHealth
4907 sfc /scannow
4908 \`\`\`
4909 3. **Memory Bus Stress Test**: Launch **PassMark MemTest86** from a bootable USB and complete 4 full passes to rule out defective RAM cells.
4910 4. **Minidump Stack Analysis**: Open \`C:\\Windows\\Minidump\` using **WinDbg Preview** and run \`!analyze -v\` to isolate the faulting \`.sys\` kernel driver module.`;
4911 } else if (query.includes("heat") || query.includes("temp") || query.includes("thermal") || query.includes("fan") || query.includes("loud") || query.includes("paste")) {
4912 message = `### \u{1F525} Thermal Throttling & Dissipation Protocol
4913
4914 To eliminate thermal throttling and direct-die pump-out:
4915
4916 1. **Phase-Change Interface**: Apply **Honeywell PTM7950 (0.25mm)** phase-change pad on bare CPU/GPU silicon dies. Unlike conventional silicone grease, it will not pump out under thermal expansion cycles.
4917 2. **Radiator Exhaust Clearance**: Clear the felt dust wall trapped between the blower fan impeller and the copper radiator fins using 99% IPA and an ESD brush.
4918 3. **Torque Tightening Sequence**: Tighten heatsink retention spring screws in a cross-diagonal sequence (1 \u2192 2 \u2192 3 \u2192 4) to **0.25 \u2013 0.30 Nm** max torque to prevent die cracking.`;
4919 } else if (query.includes("display") || query.includes("screen") || query.includes("black") || query.includes("edp") || query.includes("backlight")) {
4920 message = `### \u{1F5A5}\uFE0F Display & Backlight Troubleshooting Protocol
4921
4922 For black screen, no backlight, or flickering display issues:
4923
4924 1. **Flashlight Test**: Shine a bright light at an angle against the LCD screen while powered on. If icons or text are visible, the LCD panel is receiving video data but the **+19V Backlight Rail (VLED)** or backlight fuse (F1) is open.
4925 2. **eDP Ribbon Connector Inspection**: Disconnect internal battery first. Reseat the 30-pin / 40-pin eDP connector on both motherboard and panel sides. Inspect for pulled pins.
4926 3. **External Display Verification**: Connect to an external HDMI/DisplayPort monitor to isolate whether the fault is in the internal eDP pipeline or the GPU core.`;
4927 } else if (query.includes("ram") || query.includes("memory") || query.includes("beep") || query.includes("post")) {
4928 message = `### \u{1F9E0} RAM & Memory Subsystem Validation
4929
4930 For memory post codes, 3-beep codes, or random memory crashes:
4931
4932 1. **Single-DIMM Isolation**: Remove all RAM sticks. Clean the gold edge connectors with 99% Isopropyl Alcohol. Test each stick individually in Slot A.
4933 2. **SPD / Voltage Verification**: Verify **+1.2V (DDR4)** or **+1.1V (DDR5)** rail across the RAM buck regulator coils.
4934 3. **4-Pass Stress Testing**: Boot into **MemTest86+** or **Linpack Xtreme** to stress test the memory controller and trace buses for memory bit flips.`;
4935 } else {
4936 message = `### \u{1F6E0}\uFE0F Hardware Diagnostic Analysis
4937
4938 I have indexed your query across our **624 multi-brand repair guides** and **8 technical engineering manuals**.
4939
4940 Key technician bench steps:
4941 1. **Power Isolation**: Disconnect AC charger and internal battery header before touching motherboard components.
4942 2. **Electrical Measurements**: Probe standby test points (**+19V_DCIN**, **+3.3V_ALW**, **+5.0V_ALW**) to isolate power sequencer states.
4943 3. **Fastener Torque Standards**: Maintain **0.25\u20130.30 Nm** on heatsink mounts and **0.18\u20130.20 Nm** on M.2 SSD screws.
4944
4945 Explore matching repair procedures and manuals directly below:`;
4946 }
4947 return {
4948 message,
4949 suggestedGuides: guides.map((g) => ({
4950 id: g.id,
4951 title: g.title,
4952 category: g.category,
4953 difficulty: g.difficulty,
4954 estimatedTime: g.estimatedTime
4955 })),
4956 suggestedManuals: manuals.map((m) => ({
4957 id: m.id,
4958 title: m.title,
4959 code: m.code,
4960 category: m.category
4961 })),
4962 voltageRailsMentioned: rails.slice(0, 4),
4963 quickActions: [
4964 "Check Standby Power Rails",
4965 "Run Diagnostic Flowchart",
4966 "Open Software Download Hub",
4967 "View Torque & Fastener Table"
4968 ]
4969 };
4970 }
4971
4972 // server/routes.ts
4973 async function registerRoutes(app2) {
4974 app2.get("/api/health", (_req, res) => {
4975 res.json({
4976 status: "online",
4977 version: "2026.4.2",
4978 guidesCount: 624,
4979 manualsCount: TECHNICAL_MANUALS.length,
4980 timestamp: (/* @__PURE__ */ new Date()).toISOString()
4981 });
4982 });
4983 app2.get("/api/version", (_req, res) => {
4984 res.json({
4985 version: "2026.4.2",
4986 status: "operational",
4987 mode: process.env.NODE_ENV || "development",
4988 features: {
4989 aiAssistant: true,
4990 offlineSync: true,
4991 totalGuides: 624,
4992 totalManuals: 8
4993 }
4994 });
4995 });
4996 app2.get("/api/technical-manuals", (req, res) => {
4997 try {
4998 res.setHeader("Cache-Control", "public, max-age=120, stale-while-revalidate=600");
4999 const { category } = req.query;
5000 if (category && typeof category === "string") {
Showing first 5,000 of 5,647 lines. View raw