Đây là một trình quản lý clipboard cho macOS, nơi các nội dung đã sao chép được xếp lại từng mục để bạn chọn dùng sau.
Tôi làm nó với ý định kiếm tiền. Ngay ngày đầu đã có câu chuyện về giá, và ba ngày sau tôi đã quyết định sẽ bán theo mô hình nào, nên đây không phải kiểu làm chơi cho vui rồi tình cờ đưa lên. Nhưng làm xong thì chính tôi lại là người dùng nhiều nhất. Đó là điểm tôi hài lòng nhất.
Điểm tôi thấy tốt nhất là khi làm việc với AI. Khi chạy nhiều prompt hoặc yêu cầu AI xuất kết quả vào clipboard, các nội dung sẽ được tích lại gọn gàng; trong lúc đó dù tôi làm việc khác cũng không bị bỏ lỡ.
Có thể chỉnh sửa các nội dung đã lưu. Hầu hết trình quản lý clipboard chỉ là lịch sử dạng chỉ đọc, còn ở đây bạn mở một mục ra là sửa trực tiếp được và lưu bằng ⌘S. Có số dòng, tìm bằng ⌘F và thay thế bằng ⌘R. Việc không còn phải chuyển nội dung đã sao chép sang editor để sửa rồi lại sao chép lại hữu ích hơn tôi nghĩ.
Tôi cũng đưa vào những thứ lặt vặt cần khi phát triển. Định dạng JSON·SQL·Mongo, XML↔YAML, giải mã JWT, mã hóa Base64/URL, Unix timestamp, SHA-256, AES, chọn hai thẻ rồi dùng ⌘D để diff theo từng dòng. Đây là những thứ tôi làm vì thấy phiền khi phải mở tab trình duyệt.
Ở trạng thái mặc định, ứng dụng không yêu cầu bất kỳ quyền hệ thống nào. Toàn bộ dữ liệu được mã hóa và chỉ lưu cục bộ, không có phân tích, theo dõi hay máy chủ.
Nhật ký 24 ngày
Tôi làm bằng Claude Code. Vì còn lưu lịch sử trò chuyện nên tôi mở ra xem: trong 24 ngày có 310 lượt, và khi phân loại tính chất thì có 28 lần chỉ ra lỗi, 15 lần từ chối hoặc hoàn tác đề xuất. Sắp theo thời gian thì như sau.
5/7 (30 lượt) — Chỉ thị đầu tiên là “hãy hỏi tôi về yêu cầu rồi cụ thể hóa”. Ngay trong ngày đó tôi đã quyết định tên·bundle ID, thêm base64·beautify và gắn chế độ xem chi tiết bằng ⌘⏎. Cũng trong ngày này có câu chuyện “chẳng phải bán trên App Store giá $4.99 sao”. Và tôi đã bỏ tính năng tự động dán. “Có vẻ sẽ xảy ra việc dán ngoài ý muốn, bỏ đi.”
6/7~7/7 — Câu hỏi “nội dung clipboard được lưu ở đâu?” đã dẫn đến việc đưa vào mã hóa cục bộ. Tôi sửa lỗi khi sao chép từ Excel thì bị nhận diện là hình ảnh, và mất hai ngày để lần theo việc phím tắt ⌘⇧V không hoạt động. Cách làm là tự lấy log bằng log show rồi chuyển log sang.
8/7 — Tôi chốt mô hình bán. Sau khi cân nhắc nên thu phí ngay từ đầu hay phát miễn phí rồi nhận thanh toán bên trong, từ “hay cứ bán trả phí ngay từ đầu? kiểu chỉ miễn phí 30 ngày” → tôi quyết định theo hướng dùng thử 30 ngày. Và tôi khôi phục tính năng tự động dán đã bỏ ba ngày trước. Vì khi tự dùng thì thấy “chọn xong mà không dán ngay thì bất tiện”.
11/7 — Tôi làm tính năng snippet rồi khai tử nó. “Trải nghiệm dùng tệ quá” → “đề xuất hướng cải thiện đi, nếu dở thì bỏ tính năng” → “không, bỏ đi”. Quyết định vứt bỏ thứ đã làm là khó nhất.
12/7~16/7 — Tôi xem xét phân phối license qua Lemon Squeezy·PayPal rồi cuối cùng thu gọn về App Store. Sau đó là chuỗi ngày liên tục gặp chuyện xác minh địa chỉ thất bại, mã ngân hàng, W-8BEN, suy nghĩ về đăng ký kinh doanh. Phần này tốn thời gian hơn viết code.
19/7 — Dù đã gửi lên xét duyệt, khi nhìn ảnh chụp màn hình launcher tôi phát hiện ứng dụng được cài với tên DevClip-AppStore. Tôi hủy bản gửi và build lại.
25/7 — Bị từ chối. Lý do là Guideline 2.4.5 (Performance: Hardware Compatibility).
Bị từ chối, và quyết định khép lại sau 24 ngày
Oái oăm là lý do bị từ chối lại chính là tính năng đó. “Dán ngay” — tính năng tôi đã tự tay bỏ ngày 5/7 vì thấy nguy hiểm, rồi ba ngày sau dùng thấy bất tiện nên khôi phục. Nó dùng quyền Trợ năng (Accessibility), và Apple xem đây là “sử dụng không nhằm mục đích trợ năng”.
Nếu bỏ tính năng thì đơn giản, nhưng vì đây là tính năng tôi đã từng bỏ rồi thấy cần nên khôi phục, lần này tôi quyết định giữ. Thay vào đó, tôi đổi cách yêu cầu quyền.
Ngay từ đầu tính năng này đã mặc định tắt và chỉ yêu cầu khi người dùng tự bật. Vấn đề là trên màn hình không có chỗ nào để người xét duyệt xác nhận điều đó. Vì vậy khi bật toggle, ứng dụng không đi thẳng tới cửa sổ quyền hệ thống, mà trước tiên hiển thị một cửa sổ giải thích trong app. Nội dung kiểu như “chỉ dùng để gửi một lần ⌘V ngay sau khi chọn mục và không đọc nội dung của ứng dụng khác”; chỉ khi bấm “Tiếp tục” mới chuyển sang cửa sổ quyền hệ thống.
Tôi ghi đường dẫn tái hiện trong ghi chú xét duyệt: “hãy trực tiếp bấm trong Cài đặt > Chung để kiểm tra”, rồi gửi lại và được duyệt.
“Đã hoạt động như vậy” và “người dùng có thể xác nhận điều đó” là hai vấn đề khác nhau.
Cách tôi làm việc với AI
Tôi hầu như không trực tiếp viết code. Tôi ở vị trí đọc phần được triển khai từ prompt rồi đưa ra phán đoán; dù là kỹ sư, lần này thực chất tôi tập trung vào hoạch định sản phẩm và QA.
Không phải mọi thứ đều suôn sẻ. Việc kéo ảnh không hoạt động đã được sửa theo phỏng đoán đến ba lần, và lần nào việc kiểm tra cũng là phần của tôi. Chỉ sau khi tôi nói “hãy test đi, để tôi khỏi phải tự kiểm tra từng thứ”, cách làm mới chuyển sang xác minh bằng dữ liệu thật rồi sửa. Sau đó, mỗi bug tôi tìm bằng tay đều được cố định thành test, và khá nhiều trong số 270 test hiện tại được sinh ra như vậy.
Cuối cùng có 87 commit, khoảng 10 nghìn dòng Swift và 3.700 dòng test.
Toàn bộ tính năng miễn phí trong 30 ngày. Sau đó các tính năng cơ bản vẫn tiếp tục miễn phí, còn Pro là trả một lần chứ không phải thuê bao.
2 bình luận
Có vẻ như hầu hết các tính năng có trong Raycast đều được hỗ trợ, vậy không biết điểm khác biệt là gì?
Đúng vậy, nếu chỉ xét riêng lịch sử clipboard thì có khá nhiều điểm trùng lặp. Nhưng Raycast có nhiều chức năng khác ngoài clipboard nên tôi từng cảm thấy hơi quá mức cần thiết.
Những điều tôi chú ý là như sau.
Trước hết, ứng dụng nhẹ và chỉ quản lý lịch sử clipboard; hiện dung lượng khoảng 2 MB.
Ngoài ra, có thể chỉnh sửa nội dung đã lưu trong phần chi tiết. Điều này khá tiện khi xem lại nhiều prompt và chỉnh sửa trước từng chút một.
Tôi cũng chú ý đến tìm kiếm và phân loại theo thư mục. Tôi đã cố gắng giải quyết việc các thông tin cần khi làm việc chỉ dùng một lần hoặc khó tìm lại.
Tôi làm để có thể tìm kiếm theo nội dung, tag, tiêu đề, v.v.
Về sau tôi muốn cho phép gắn trực tiếp chức năng hoặc bố cục thông qua plugin, nhưng phần này vẫn chưa được cụ thể hóa.
Tôi cũng nghĩ Raycast là một ứng dụng tốt, và muốn cố gắng để đây có thể trở thành một lựa chọn tùy theo sở thích.
Cảm ơn bạn đã góp ý.