TODO updated
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - prefs API:
7      . prefs_assign(content): assign json content as output var
8      . prefs_apply(prefs_new): apply new content to g_prefs and system
9      . prefs_load(content): load json content and apply to g_prefs and system
10
11      . prefs_update: update preferences temporarly
12      . prefs_save: save to the server the new prefs
13
14    - preferences (listen into preferences)
15         // js var, volatile server, (db server || cookie)
16         temporary: js var, volatile server
17         permanent: js var, volatile server, (db server || cookie)
18
19      . data from db OR, if missing, from cookies
20
21      . update values
22      . database change
23      . MANAGE NOT AUTH USERS
24
25    - preferences (with "modifiable S")
26      . Mod. S: new flag into database
27      . graph infrastructure
28      . new box to edit color
29
30   MAJOR |
31  -------+
32    - BUG: some connection to the named socket fails
33    - Not simultaneous more then one stream
34
35
36   MINOR |
37  -------+
38    WIP - try to be more antivirus-friendly
39    - multiple rows between games
40    - packetize and automatize php-ancillary and apache module
41    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
42
43
44   DONE |
45  ------+
46    DONE - temporarly server hung not reflected on user timeouts
47    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
48    DONE - page still opened after the server restart
49    DONE - log_legal address fix
50    DONE - manage too fast reload in xynt-streaming
51    DONE - add xhr as transport layer and manage different streams better
52    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
53    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
54    DONE - save/restore database
55    DONE - into the room local step remains -1
56    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
57    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
58           in the first tentative, the second works
59    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
60           problem was a call to a static parent method instead of the overrided child method,
61           substitute self:: with the dynamically get class::)
62    DONE - garbage management
63
64    DONE/FROZEN - problem with getpeer (HOSTADDR)
65
66    DONE - slow cards distribution
67    DONE - substr to mb_substr
68    DONE - parametrizations:
69           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
70           . parametrization of SITE_PREFIX(_LEN) define
71           . move the name of the named socket into the configuration file
72    DONE - manage and test cross forwarder between table and room
73    DONE - setcookie (for tables only and persist prefs)
74    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
75    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
76    DONE - unneeded garbage_time.expired access
77    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
78    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
79    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
80    DONE - configuration file management
81    DONE - app level keep-alive
82    DONE - index_wr other issues
83    DONE - from room to table
84    DONE - from table to room
85    DONE - chunked
86    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
87    DONE - partial write for normal page management
88    DONE - index_rd_ifra: last_clean issue
89    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
90    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
91    DONE - index_wr.php::chat
92    DONE - index_wr.php::exit
93    DONE - index_rd.php porting
94    DONE - generic var management from internet
95    DONE - index.php auth part
96    ABRT - index_wr.php::reload - reload is js-only function
97    ABRT - keepalive management - not interesting for our purposes
98
99  BRISK4 (mammuth)
100  ======
101
102  - STEP MANAGEMENT VERIFY
103  Slim Paragraph
104  DONE - move the garbage timeout on file
105  DONE - in index_rd load all data only when required
106  - briskin5 alignment
107    DONE . extern del garb_timeout
108    DONE . user_load parameters verify
109    DONE . Bin5::load_data and Bin5::save_data refactoring with
110           data split
111    . move many function into "Bin5 class"
112  - garbaging of .step files
113
114  DB: - initial usage
115      DONE - configurabilità file o db
116      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
117      DONE - travasatore file to pg
118        DONE - travaso punteggi
119        DONE - memorizzazione nuovi i punteggi nel db
120        DONE - gestione classifiche in SQL
121          DONE - produrle
122          DONE - mostrarle
123
124      STEP 1.1
125        DONE - points archiver
126
127      STEP 1.2
128        DONE - partial usability if database go down.
129
130      STEP 1.5
131      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
132
133      STEP 2
134      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
135      - modifica password   
136      - ripristino password 
137
138      STEP 3
139      - comunicazioni di aggiornamento (stato salvato sul server) 
140
141  DONE - var $G_base aggiunta per gestire include in include da path differenti
142
143  BRISK3 (trusty)
144  ======
145   DONE - donameter
146     DONE - G_donors
147     DONE (WOW!) - js object with infos
148     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
149            to prevent fast reload)
150     DONE - cookie per non assillare e visualizz.
151     DONE - graphical donameter
152     WIP content (in conf.)
153
154   DONE - numero di tavoli auth-only nel .brisk-install
155   - isolation
156     TEST - ricalcolo delle persone in piedi quando si cambia modalità
157     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
158     DONE - non leggere le chat di quelli non autenticati (in isolation)
159     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
160     DONE - treni non auth da nascondere 
161     DONE - verso gli altri ??: uguale a prima
162
163   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
164   coniglio
165   only auth strictly
166   placing limits to config file
167
168 Dunque, 
169
170 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
171
172 - cosa cambia tra le tre coppie di classifiche: 
173   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
174   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
175
176 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
177
178 Un esempio per chiarire:
179
180   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
181     -2, 1, 2, 1
182   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
183   
184   a parità di score tra utenti va più in alto chi ha giocato più partite.
185
186 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
187 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
188
189
190   
191
192
193
194
195  BUG
196  ---
197  
198   DONE - paste da demauroparavia
199   DONE - recupero partita per re-login con password
200   DONE - problema "|" nei nomi (manca enhance degli script lato server)
201   - problema col treno se mouse sopra mentre stringe (verif)
202   
203  MINOR
204  -----
205
206  NORMAL
207  ------
208
209   - win test
210   WIP - /listen 
211     DONE - skin della textarea
212     DONE - set cookie 
213     DONE - init client (read from cookie) - ALWAYS BY SERVER
214     DONE - init server
215     DONE - after cookie check auth-only when no-auth case
216     DONE - aggiungi info accanto a "Chat"
217   DONE - /mesgtoadm
218   DONE - img dei comandi
219
220   DONE - form per garantire utenti (accoda in un file nel formato corretto)
221   DONE -   process request
222   DONE -   show form
223   DONE -   close butt
224   DONE -   submit form
225   DONE -   process form js side 
226   DONE -   process form
227   DONE -   documentazione in help
228
229   DONE - user status
230
231   DONE - aggiornare help
232   DONE -   overflow management
233   DONE -   for status
234   -   for password
235
236   DONE - reload home
237   - notify for long pages
238
239   - buddy list
240   - silenziastolti vari (fino al buddy import)
241   - restrict challenge per IP
242   - restricted charset for login
243   - watchdog
244
245   - db (minimal)
246     - db admin page
247     - user db admin
248     - use db 
249     - admin db
250
251     - studiare un anti-dos
252   - login modify
253  DONE  - db (fake)
254  DONE  - display auth
255     - manage preferences 
256
257  minor
258  -----
259    - auth after login
260
261 ----- done ------
262
263  BUG
264  ---
265   DONE   righe troncate
266   DONE - questione "a monte" che:
267   DONE   - lascia fuori il bottone
268   DONE   - scrive &agrave e compagnia
269   DONE - refresh act_table when unauthorized
270   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
271
272  MINOR
273  -----
274   DONE - refactoring of the owner name (auth attr for owner name)
275   DONE   - room
276   DONE     - at chat input line 
277   DONE     - in the chat output line
278   DONE     - deauth management
279   DONE - table
280   DONE   - at chat input line
281   DONE   - in the chat output line
282   DONE   - for user area of other users
283   DONE   - deauth management
284   DONE - alart to one user
285
286
287  NORMAL
288  ------
289   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
290   DONE   - login: se auth      -  verifica solo gli expire per quel nick
291   DONE   -        se non auth  -  verifica gli expire per IP e sessione
292   DONE   - riscrivere messaggi
293
294   DONE - login 
295   DONE   - se pass:
296   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
297   DONE     - lo legge, ci hasha la password
298   DONE     - invia la pass al server hashata
299   DONE   - se non pass:
300   DONE     - check del login e return corretto
301   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
302   DONE     - rename ghost if logged
303   DONE     - onunload_cb e onbeforeunload_cb !!! 
304   DONE   - da change attrs a change class (input field)
305   DONE     - colore del bg per arrivare ad essere omogeneo
306   DONE     - cambiare path e file di config
307   DONE   - login with or without pass
308   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
309   DONE     - segnalare tavoli solo per auth
310   DONE     - rename restriction at auth table
311   DONE     - change nick (strcasecmp)
312   DONE   - refact js tables to handle flags
313   DONE - room javascript refactoring
314
315   DONE - work background
316   DONE - reserved tables
317
318
319  BRISK2 (spawn)
320  ======
321
322    
323    URGENT - tables spawn
324             DONE - link with photos
325             DONE - top banner in Etc file
326             DONE - spawn of a table
327             DONE - data to cookies (removed table_idx from xhr calls also)
328             DONE - set subst to shutdowner/shutdowned
329             DONE - return to index.php
330             DONE - game's token
331             DONE - recover of corrupted table data
332             DONE - closure of a table
333             DONE - flush of the table
334             DONE - security checks for right scope access
335             DONE - garbage collector management
336             DONE -    recursive garbage - howto ?
337             DONE - stat & subst in browser
338             DONE - laccwr setting and exit if all players are unactive for some time
339             DONE - the list of test case
340             DONE - shm dimension
341             DONE - remove unused parts
342             DONE - move images
343             DONE - optimizations
344             DONE - cambiare titolo al tavolo
345             DONE - shutdowning lock tables
346             DONE - topbanner
347             DONE - public announcements
348             DONE - 10 sec to exit from table
349
350             FAR - inheritances
351    
352    TRAIN  -  DONE - add again in reload   
353              DONE - wag_set refact
354              DONE - filtra char speciali per title
355              DONE - chatt_send refact 
356              DONE - elenco dei giocatori
357              DONE - documentazione online
358              DONE - timeout management     
359              LATER - border color a muzzo
360        
361    NORM   - testament
362    NORM   - public announcements
363    NORM   - 10 sec to exit from table
364    NORM   - moving label for tables click
365
366 ----------------- join -----------------
367    NORM   - map
368
369    NORM   - restart preload img
370    NORM   - tools dir with a main and some pages where check briscola tools.
371    NORM   - watchdog
372
373    NORM   - chat vecchie in reload (forse)
374
375  MIDDLE TODO
376  ===========
377
378    - user assistant (with button to enable disable)
379    - documentation
380
381
382  FAR TODO
383  ========
384    NORM - internationalization
385    NORM - img -> div + css
386    
387  WEB
388  ===
389
390    - link to stable/unstable
391
392 -------------------------------------------------------------------
393  DONE
394  ====
395
396    ABORTED - asta: highlight buttons (css hover) - change pointer when over
397    DONE - step proxy
398    DONE - special chars in js
399    DONE - ban temporaneo dai tavoli
400    DONE - flash player to play sound
401    DONEBUG - (aum. il timeout) - carte giocate che restano girate
402          Sembra non migliorare di molto la cosa, gestita la cache
403          correttamente, sono apposto.
404
405    DONE - one player reject a game, to less points (<= 2)
406    DONE - help page
407    DONE - test di download per la cache
408    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
409           Corretto il codice, occorre verificare se questo
410           ingenera qualche problema.
411    DONE - raddoppiato il numero di righe nella chat
412    DONE - corretto bug del /nick
413    DONE - carosello pubblicità altout
414    DONE - smammamorti
415    DONE - unload of the stream
416    DONE - standup centrati
417    DONE - current player - in info
418    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
419    DONE - welcome lines in the chats (room and table)
420    DONE - welcome lines in the chats (room and table)
421    DONE - nomi in primo piano se vai sul quadrato   
422    DONE - to pass explicit config file to INSTALL.sh
423    DONE - flag to create a config file
424    ABRT - bottoni => immagini
425    DONE - aggiungere bottone al login
426    DONE - nomi in primo piano se vai sul quadrato   
427    DONE - installer to set cookie path
428    DONE - change name
429    DONE - automatic and manual logout
430    DONE - cache problems solved via .htaccess
431    DONE - all players out of the auction
432    DONE - time to send cards
433    DONE - hide cards before sends at a new game
434    DONE - well recognization of the browser and O.S.
435    DONE - login consistency !!!!
436    DONE - functionalization of garbage
437    DONE - call garbage function into login
438    DONE - game
439    DONE - manage the reload from scratch of the table page
440    DONE - table reset
441    DONE - sendcard => card_send(idx, ....)
442    DONE - show table for game
443    DONE - points calculation
444    DONE - make-up of the chooser
445    DONE - where place the briscola on the table
446    DONE - users info
447    DONE - show current auction position
448    DONE - table with internal management of the transition between pages.
449    DONE - server side page abort management  
450    DONE - cookie problem with Ajax
451    DONE - spostare il tasto "esco"
452    DONE - to pass explicit config file to INSTALL.sh 
453    DONE - 8 tables
454    DONE - safety out management
455    DONE - info enhancement and related button (how win the last game and
456           with how much points ?)
457
458  WEB
459    DONE - homepage
460    DONE - screenshots
461
462 DOC
463    CHAPTERS
464       HTTP Streaming
465       Local serializer
466       Database on shmem
467       Page abort (reload on http streaming case)
468       Chat
469       Cookies management
470       CSS tricks
471
472 CHECK ON NEW SERVERS
473 .htaccess AllowOverwrite mode for Cache-Control directive
474
475
476
477
478 */
479